Probleme bei der Umsetzung von constraints

Gast #5359513
Lesenswert?
• ▲
▼
Hallo Forum! Ich verwende Vivado, um das Timing eines FPGA an einen DSP 
anzupassen. Der DSP arbeitet flankengesteuert und schickt Daten mit 
100MHz bei dem steigenden Takt total synchron. Der FPGA hat eine PLL mit 
100MHz auf 100MHz und noch einige Weitere. Übernommen wird mit dem Takt 
aus dem PLL. Mit diesem Takt läuft die gesamte DSP-Seite.

Ich habe die constraints einmal auf "source" und einmal auf "system" 
probiert und komme mit beiden Methoden auf dieselben Vorgaben im XDC:

set_input_delay -clock [get_clocks CLK_100] -min -add_delay 4.000 
[get_ports
set_input_delay -clock [get_clocks CLK_100] -max -add_delay 6.000 
[get_ports

Meines Erachtens habe Ich damit die SPEC korrekt umgesetzt. (?)

Leider kriegt Vivado das timing nicht hin. Gemeckert wird ausschließlich 
bei den IOs. Konkret wird der Bezug des Eingangstaktes (nicht der aus 
der PLL) zu den IO-Daten bemängelt. Ich gehe davon aus, dass das 
trotzdem formell korrekt ist und einfach der PLL-Takt gemeint ist. (?)

Wie stelle Ich das nun ein?

Ich habe bei der ISE immer den Takt solange verstellt, bis Ich einen 
guten Bezug hinbekommen hatte, also so, dass der Takt aus der PLL immer 
schön auf der Mitte der Daten lag, also inmitten des Auges. ISE hatte 
dazu immer einen timing report, der dann die Zeiten so angab, dass die 
einen etwas zu kurz und die anderen zu lang waren. Dann konnte an das 
budget ablesen und es  zentrieren. Meistens hat es gereicht, die PLL auf 
15° genau einzustellen.

Das gelingt hier nicht! Egal, wie Ich es einstelle und schiebe, es 
entsteht immer eine Violation. Sie wird einfach nicht kleiner.

Der Chip ist ein Artix von Xilinx.
Gast #5360063
Lesenswert?
• ▲
▼
Peder schrieb:
> Das gelingt hier nicht! Egal, wie Ich es einstelle und schiebe, es
> entsteht immer eine Violation. Sie wird einfach nicht kleiner.


Schau dir mal mit FPGA_editor das Routing an. Mglw. ist das ungünstig 
beschrieben, das nicht die IO-FF genutzt werden, sondern das erst über 
ein paar LUT's ins FPGA-Innere geht.
Gast #5360552
Lesenswert?
• ▲
▼
Also, die IO-Delay sind viel zu gering, um das was zu machen und eine 
IO-FFs wird natürlich verwendet. Ist auch gescheckt.

Um es nochmal zu präzisieren, liegt der slack

Bei -60 Grad 7ns
Bei -30 Grad 2ns
Bei   0 Grad 3ns
Bei  30 Grad 12ns

Ich treffe die Null nicht.

Zudem verstehe nicht, warum Ich mehr slack haben kann, als die Periode 
lang ist. Eigentlich sollte der doch auf die andere Flanke gehen, oder?

Macht der was flasch, oder denke Ich was falsch?

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.