Gast
#5359513
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.