Forum: FPGA, VHDL & Co. Timing Verletzung innerhalb einer DDR I/O Zelle


von Matthias (Gast)


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

von Matthias (Gast)


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

von Harald F. (hfl)


Lesenswert?

Na ja, die IO-Zellen des Stratix3 sind schon DDR-tauglich. Welcher Pin 
an welchem Device ist das denn?

von Matthias (Gast)


Lesenswert?

Der Device ist EP3SL110F1152C3, der Pin ist N2.

Ich finde leider auch das Dokument nicht, wo das drinsteht.

lg
Matthias

von Matthias (Gast)


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.

von Matthias (Gast)


Lesenswert?

Das eigentliche Problem habe ich noch nicht lösen können. Hat vielleicht 
jemand eine Idee, wie ich dem ganzen auf die Schliche komme?

lg
Matthias

von Harald F. (hfl)


Lesenswert?

Ich kenn jetzt nicht das ganze Design (und will das auch gar nicht 
kennen) aber es sieht ja so aus als wären beide Nodes innerhalb der 
IO-Zelle und damit außerhalb deines Einflussbereichs. Und damit wäre das 
bei mir ein Fall für mySupport.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.