Forum: FPGA, VHDL & Co. Timing Constraints härter als Hardware erlaubt


von BF (Gast)


Lesenswert?

Hallo,

Folgende Situation:
FPGA: Spartan6
verwendete Ressourcen: ISERDES2 + IODELAY2
Datenrate: bis 1100 Mbit/s (max. SERDES Geschwindigkeit = 1080 MBit/s)

Für den SERDES braucht man eine PLL die eine VCO Frequenz von 400 bis 
1080 MHz erzeugen kann.

Intern arbeite ich mit einem 10 bit Datenbus, so dass die interne 
Taktrate 1/10 der seriellen Datenrate, also 108 MHz beträgt.

Das Timing Constraint für den internen Clock wurde auf 107.99 MHz 
gesetzt.

Soweit funktioniert auch alles!


Wenn ich nun "härtere" Constraints setzen will, also z.B. statt 107.99 
MHz 120 MHz, dann bekomme ich folgenden DRC Error bei "Map":
1
ERROR:PhysDesignRules:1859 - The computed value for the VCO operating
2
frequency of PLL_ADV instance xxx/pll_base_inst/PLL_ADV is calculated to
3
be 1200.00000 MHz. This falls above the operating range of the PLL VCO
4
frequency for this device of 400.000000 - 1080.000000 MHz. Please adjust
5
either the input frequency CLKIN_PERIOD, multiplication factor
6
LKFBOUT_MULT or the division factor DIVCLK_DIVIDE, in order to achieve a
7
VCO frequency within the rated operating range for this device.


Ich weiß, dass ich mich mit diesem Constraint außerhalb der 
Spezifikation des FPGAs befinde, was aber noch nicht heißen muss, dass 
es nicht geht.

Auch wenn ich innerhalb der 1080MBit bleibe, würde ich die Constraints 
gerne härter setzen.

Ich hoffe jmd. kann mir bei meinem Problem helfen!

Vielen Dank!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

BF schrieb:
> Ich weiß, dass ich mich mit diesem Constraint außerhalb der
> Spezifikation des FPGAs befinde, was aber noch nicht heißen muss, dass
> es nicht geht.
Dann bleibt dir eigentlich nur übrig, das höchstmögliche zu fordern 
(107.99 MHz), und dann dafür zu sorgen, dass das FPGA beim Betrieb mit 
120 MHz nicht an die Grenzen kommt (Temperatur, Spannung...). Denn die 
Tools werden dir immer auf die Finger klopfen, wenn du mehr willst, 
als das Design oder das FPGA (theoretisch) hergibt. Das ist ihre 
Aufgabe.

von BF (Gast)


Lesenswert?

Hallo Lothar,

genau das ist ja mein Problem. Ich würde ja gerne für die nachfolgende 
Logik die Timing Constraints auf 120 MHz setzen, oder nach Map&Route die 
Timing Analyse per Hand checken, was natürlich auf Dauer aufwendig und 
umständlich werden könnte.

Natürlich hat das Vorgehen von Xilinx auch seine Daseinsberechtigung... 
Schade, dass es hierfür keinen einfachen Workaround gibt...

von Matthias (Gast)


Lesenswert?

Ich hab neulich auch mit so einer VCO Freq too high warnung gekämpft und 
hab mir dann halt ein anderes M/N Verhältnis ausdenken müssen, dass 
innerhalb der Specs ist und für mich akzeptable Ausgangsfrequenzen 
erzielt. Dass es mit 10% über der lt Datenblatt maximalen Freq des VCO 
noch funktioniert mag sein, wohl fühlen würde ich mich mit solchem 
Herumgefummel an der Clock allerdings nicht.

von Duke Scarring (Gast)


Lesenswert?

BF schrieb:
> Natürlich hat das Vorgehen von Xilinx auch seine Daseinsberechtigung...
> Schade, dass es hierfür keinen einfachen Workaround gibt...
Frag doch mal bei Xilinx nach. Eventuell gibt es eine Umgebungsvariable 
um den Fehler in eine Warnung zu verwandeln.

Duke

von Klaus F. (kfalser)


Lesenswert?

BF schrieb:
> Ich würde ja gerne für die nachfolgende
> Logik die Timing Constraints auf 120 MHz setzen,

Warum, was soll das bringen?
Die Berechnungen der Durchlaufzeiten von Xilinx sollten schon alle 
möglichen Betriebsbedingungen abdecken, es sollte also nicht nötig sein, 
enger zu constrainen als notwendig.

von Duke Scarring (Gast)


Lesenswert?

Klaus Falser schrieb:
> es sollte also nicht nötig sein,
> enger zu constrainen als notwendig.
Ich mache das z.B., um die potentiell kritischen Pfade zu ermitteln. 
Vielleicht kennt da jemand auch noch eine bessere Methode?

Duke

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Duke Scarring schrieb:
> Ich mache das z.B., um die potentiell kritischen Pfade zu ermitteln.
Da kannst du dir aber schnell was in die Tasche lügen:
Ich habe die Erfahrung gemacht, dass ein zu eng eingeschränktes (und 
damit eigentlich nicht realisierbares) Design keine sinnvollen Aussagen 
zum kritischen Pfad zulässt, weil sich dann P&R irgendwie versteigt.
Evtl. könnte die umgekehrte Version klappen: schrittweise mit 
ansteigender Frequenz so lange implementieren, bis es nicht mehr geht. 
Dann das zuletzt erreichte Timing analysieren...
> Vielleicht kennt da jemand auch noch eine bessere Methode?
Noch nicht...

von Matthias (Gast)


Lesenswert?

Verdammt, da hatte ich nicht richtig gelesen. Aber ich verstehe das 
Vorgehen auch nicht so ganz, wenn die PLL diese Freq nicht mag, was für 
einen Sinn hat es, das nachgelagerte Design so zu bauen, als bekäme es 
eine höhere Input-Frequenz? Erkenntnisgewinn sehe ich auch keinen 
großen, ich weiß ja typischerweise auch so, wo ich viel Kombinatorik 
implementiert habe und wo nicht. Und wie Lothar schon schrieb, das kann 
auch komisch laufen, man dreht ja nicht nur an den kritischen Pfaden 
herum.

Also wenn schon dann die spannenden Unterkomponenten separat 
implementieren und das Timing checken.

Wie läuft das in diesem Fall eigentlich, drehst du nur die Input Freq 
für das Design auf und lässt den Rest dann das Tool machen? Evtl kann 
man in den Timing Constraints die Werte für die derived clock explizit 
überschreiben, dann müsste die PLL mit der tatsächlichen Frequenz 
behandelt werden und der nachgelagerte Teil mit den härteren 
Constraints.

Aber wie gesagt, viel Sinn sehe ich darin auch nicht. Höchstens zur 
Behandlung von clock jitter hat overconstrainen für mich bisher Sinn 
gemacht.

von Willy (Gast)


Lesenswert?

Overconstraining macht bspw. dann Sinn, wenn man einen asymmetrischen 
Eingangstakt verwenden muss, so dass Setup/Hold-Fenster verschoben und 
u.U. verletzt werden.

Willy

von Klaus F. (kfalser)


Lesenswert?

Einen assymetrischen Takt kann man, zumindest bei Xilinx, angeben und 
die Tools können das dann berücksichtigen.
Alle Aussagen, die ich bis jetzt von FPGA-Spezialisten bekommen habe, 
gehen dahin, dass man das Design möglichst genau, aber nicht 
über-constrainen soll, weil die Tools sich sonst an den unwichtigen 
Teilen verrennen.

von Matthias (Gast)


Lesenswert?

Willy schrieb:
> Overconstraining macht bspw. dann Sinn, wenn man einen asymmetrischen
> Eingangstakt verwenden muss, so dass Setup/Hold-Fenster verschoben und
> u.U. verletzt werden.
>
> Willy

Hmm, aber wenn die Timing Parameter von einem FF mal verletzt sind kann 
man die statische Timinganalyse doch ohnehin kübeln, oder?

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.