Forum: FPGA, VHDL & Co. Xilinx Timing Constraints


von Jürgen P. (Gast)


Lesenswert?

Hallo zusammen,

ich möchte gerne für ein ise Projekt (Spartan 6) Timing Constraints 
erstellen.

Zunächst ein Überblick über mein System:
Ich habe synchrone 2 Interfaces.
Das erste bringt für Input und Output Daten jeweils eine eigene CLK mit, 
die an das FPGA angeschlossen sind.
Für das zweite liefert das FPGA die CLK, zu der Input und Output Daten 
erstellt werden.

Daraus resultiert folgende CLK Struktur:
DataInClk für Input Daten des ersten Interfaces
DataOutClk für Output Daten des ersten Interfaces

Externe Clk --> nur Input CLK für PLL
PLL/SysClk  --> System Clock, Haupttakt für die interne Logik
PLL/IfClk   --> Interface Clock, Datentakt für das zweite Interface 
(Input und Output), wird an externe Komponente via ODDR2 ausgegeben

Daraus entstehend folgende CLK Constraints:
1
NET "ExtClkC" TNM_NET = "ExtClkC";
2
TIMESPEC TS_iExtClkC = PERIOD "ExtClkC" 25 MHz HIGH 50 %;
3
NET "DataInClk" TNM_NET = "DataInClk";
4
TIMESPEC TS_iPhy1RxcC = PERIOD "DataInClk" 25 MHz HIGH 50 %;
5
NET "DataOutClk" TNM_NET = "DataOutClk";
6
TIMESPEC TS_iPhy1RxcC = PERIOD "DataOutClk" 25 MHz HIGH 50 %;
die PLL macht daraus:
--> SysClk 30 MHz
--> IfClk 25 MHz
--> IfClkN 25 MHz, 180° Phasenverschoben für ODDR2

Aus den Datenblättern kann ich die entsprechenden Setup und Hold Zeiten 
entnehmen.
Für das erste Interface sind die Inputdaten +- 10ns um die steigende 
Flanke stabil.
Dies würde ich über folgendes Constraint abdecken:
1
NET "DataIn<0>" OFFSET = IN 8 ns VALID 16 ns BEFORE "DataInClk" RISING;

Für die Output Daten benötigt das erste Interface eine Setup Zeit von 10 
ns und eine Hold Zeit von 0 ns
Dies würde ich über das folgende Constraint abdecken. (CLK Period = 40 
ns)
1
NET "DataOut<0>" OFFSET = OUT 28 ns AFTER "DataOutClk";

Die Setup und Hold zeiten am Interface 2 können exemplarisch als 
identisch zu Interface 1 angenommen werden.

Nun meine Fragen:
1. Sind meine Timing Constraints so korrekt?
2. Wie kann ich Timing Constraints erstellen, die sich auf meine PLL 
Takte beziehen? Ich habe diese ja nicht als Net zur Verfügung.
3. Wie kann ich Timing Constraints erstellen, die sich auf den CLK 
Ausgangspin beziehen?
4. Wie muss ich Übergänge zwischen den Clk Domains konstrainen? 
Entsprechende Synchonisierungen sind in der FW vorgesehen ("Handshake", 
einsynchronisieren der Handshake Signale)


Viele Grüße,
Jürgen P.

von Duke Scarring (Gast)


Lesenswert?

Jürgen P. schrieb:
> 1. Sind meine Timing Constraints so korrekt?
Das schaust Du Dir am Besten nochmal im Timing Report an.
Da dürfen dann keine 'unconstrained paths' auftauchen und setup und hold 
sollten zu Deinen Vorgaben passen.

> 2. Wie kann ich Timing Constraints erstellen, die sich auf meine PLL
> Takte beziehen? Ich habe diese ja nicht als Net zur Verfügung.
Für DCM und PLL reicht es normalerweise die Frequenz des Eingangstakts 
anzugeben. ISE generiert dann entsprechend den Einstellungen für jeden 
Ausgang ein neues Timing Constraint.

> 3. Wie kann ich Timing Constraints erstellen, die sich auf den CLK
> Ausgangspin beziehen?
Du gibst den Takt mit aus? Dann geht er ja durch die selben IO-Pads wie 
die Daten. Wenn Du noch dafür sorgst, das die Ausgangsdaten aus 
Registern kommen und diese Register im IO-Pad liegen, sollte Dein 
Offset-out Constrain ausreichen.

> 4. Wie muss ich Übergänge zwischen den Clk Domains konstrainen?
> Entsprechende Synchonisierungen sind in der FW vorgesehen ("Handshake",
> einsynchronisieren der Handshake Signale)
Wenn die Übergänge ordentlich asynchron behandelt werden, würde ich TIG 
verwenden.

Duke

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.