Xilinx constraints für Signale in unterer Hierarchieebene

Gast #3735794
Lesenswert?

Hallo,

eine Frage zum Thema constraints bei Xilinx.

Ich habe ein VHDL-Design, welches vom Timing her ziemlich auf Kante 
genäht ist. Das Design umfasst mehrere Hierarchieebenen. Mit der 
Synthese-/Mapoption keep_hierarchy=false wird das gewünschte Timing 
(meist) eingehalten, bei true of nicht.

Nun enthält das Design Xilinx-FIFOs, welche bei Taktübergängen 
setup/hold-Verletzungen anzeigen, die ignoriert werden können (siehe 
auch Beitrag "Constraint Problem am BlockRAM FIFO Xilinx" bzw. im pg057). Da ich 
am Timingreport sehen möchte, ob eine "echte" constraint-Verletzung 
stattgefunden hat bzw. den Tools (PAR) mitteilen möchte, dass sie die 
FIFO-Timings ignorieren können, habe ich es mit dem TIG constraint aus 
o.g. Thread bzw. aus pg057 (in etwa das gleiche für konkrete Signale) im 
ucf versucht. Damit funktioniert es wie gewünscht, dass die 
FIFO-Taktübergänge ignoriert werden.

Mein Problem ist nun, dass ich dafür die Synthese-/Mapoption 
keep_hierarchy=true setzen muss, da sonst die interne Hierarchie und 
damit der Pfad zu den constrainten Taktsignalen beim PAR , wo die ucf 
ins Spiel kommt, nicht mehr bekannt ist (zumindest mir nicht, ich 
schreibe den Hierarchiepfad ins ucf). Wie schon gesagt, klappt dann aber 
das Timing oft nicht.

Gibt es eine Möglichkeit, diese in der Hierarchie vergrabenen Signale 
trotzdem zu constrainen, wenn die Hierarchie durch die Synthese 
plattgemacht wird? Evtl. schon in einer xcf, die von der Synthese 
verarbeitet wird und dann bis zum PAR (automatisch?) "weitergereicht" 
wird? Oder mit irgendeiner Option doch in der ucf?

Danke für Vorschläge.
Markus
Gast #3735909
Lesenswert?

Markus schrieb:
> Gibt es eine Möglichkeit, diese in der Hierarchie vergrabenen Signale
> trotzdem zu constrainen

Normalerweise kann man Wildcards bspw '*' für beliebige Zeichenkette 
verwenden, da benötigt man nicht den kompletten Hierarchiepfad solange 
der Signalname einmalig ist. Also sowas wie

NET "*einmaligersignalname*"    OFFSET = IN 6 ns VALID 7 ns BEFORE 
"sys_clk" HIGH;

sollte passen.

Ansonsten schau mal im constraint guide unter naming oder Wildcards.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren