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.
Gast #3744040
Lesenswert?
• ▲
▼
Danke für die Vorschläge.

Die Wildcard-Methode funktioniert bei mir leider nicht, obwohl der 
Signalname eindeutig ist. Wer weiß, was die Synthese daraus macht.

Mit keep hierarchie auf soft scheint es erstmal zu funktionieren, muss 
noch ein paar Testläufe machen

Danke.
Markus

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.