Gast
#1813890
Hallo, ich bekomme bei meinem Design eine Timing-Verletzung, die ich mir nicht erklären kann. Es geht um ein Interface zwischen zwei Stratix 3 FPGAs, es stehen vier Leitungen zur Verfügung, die ich als 1 x Takt, 1x Enable und 2 x Daten verwenden möchte. Zusätzlich soll mit DDR übertragen werden und ich möchte die DDR Register des FPGA benutzen. Auf der Empfängerseite sollen die DDR Register sowie ein Datenpuffer und eine wenig Logik zum Synchronisieren mit dem vom Sender geschickten Takt laufen, mit einer PLL möchte ich den Takt beim Sender optimal positionieren und damit auf recht hohe Taktraten (ab 125 MHz aufwärts) kommen. Der I/O-Standard ist LVCMOS, außerhalb des FPGA wird mit LVDS-Transceivern differentiell übertragen. Soweit mal der Überblick, was das überhaupt werden soll. In der Simulation läuft es aber in der Synthese bekomme ich Timing-Verletzungen auf den drei DDR Input-Registern, die aus meiner Sicht in der I/O-Zelle liegen. TimeQuest meldet folgendes (für einen der drei Eingänge): Slack: -0.092 From Node: <Übergeordnete_Hierarchie>|spi_ddr_rx:spi_ddr_rx_stage|alt_iddr:\gen_dou t:1:alt_iddr_3|altddio_in:altddio_in_component|ddio_in_sqi:auto_generate d|ddio_ina[0]~DFFLO To Node: <Übergeordnete_Hierarchie>|spi_ddr_rx:spi_ddr_rx_stage|alt_iddr:\gen_dou t:1:alt_iddr_3|altddio_in:altddio_in_component|ddio_in_sqi:auto_generate d|dataout_l[0] Launch Clock: stage_in_clock Latch Clock: stage_in_clock Sorry, dass das so breit ist. Es handelt sich um eine Hold Time Verletzung. Im altddio Megafunction User Guide gibt es auf Seite 12 ein Diagramm der DDR Inputzelle und ich nehme sehr an, dass die Timing Violation zwischen dem DFF und dem Latch im Low-Pfad auftritt. Nachdem ich nicht annehme, dass Altera ihre DDR-Zellen verpfuscht haben muss der Fehler wohl bei mir liegen. Aber welcher könnte es sein (und wie finde ich ihn dann)? lg Matthias