Timing Verletzung innerhalb einer DDR I/O Zelle

Gast #1813890
Lesenswert?

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
Gast #1813926
Lesenswert?

Kann es evtl sein, dass ich Schwammerl übersehen habe, dass gar nicht 
alle Pins DDR Input können? Jetzt wo ich einen Fehler bzgl dieser Pins 
in meinem SDC gefixt habe bricht der Fitter mit folgender Fehlermeldung 
ab:

Error: Can't assign node 
...|spi_ddr_rx:spi_ddr_rx_stage|alt_iddr:\gen_dout:1:alt_iddr_3|altddio_ 
in:altddio_in_component|ddio_in_sqi:auto_generated|ddio_ina[0]"  to 
location IOPAD_X91_Y42_N0 -- node is type Double data rate I/O input 
circuitry


Das würde evtl Sinn ergeben, dass es vorher in Logikzellen implementiert 
wurde und dann kann es wohl sein, dass es da zu einer Timing Violation 
kommt.


lg
Matthias
Gast #1814080
Lesenswert?

Ok, sorry, der Fit-Fehler ist erklärt. Ich wollte mir das Problem im 
Chip Planner anschauen und habe dabei anscheinend unabsichtlich ein 
Location Assignment geändert. Damit erklärt sich die Fehlermeldung.

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