Forum: FPGA, VHDL & Co. Timing Summary: Minimum Period!


von Andi P. (jamaram90)


Lesenswert?

Hallo,

ich habe folgendes Verständnisproblem:
In meinem Design speise ich 40 MHz extern ein und erhöhe dann mit dem 
PLL die Frequenz auf 400 MHz.

Wenn ich nun nach Place& Route in den Timing Report schaue bekomme ich 
folgendes heraus:
1
Timing Summary
2
-------------------
3
Design statistics:
4
   Minimum period:  10.000ns{1}   (Maximum frequency: 100.000MHz)
5
   Maximum path delay from/to any node:   1.741ns

Ich habe für den externen Takt den ich einspeise ganz normal ein 
Constraint gesetzt:
1
TIMESPEC TS_CLK_IN1 = PERIOD "CLK_IN1" 25 ns HIGH 50 %;

Ich kann mit weiteren Timing Constraints mein Design optimieren aber in 
dem Timing Summary ändert sich die 'Minimum Period' nicht.
Nehme ich das Constraint für die Clock die ich einspeise aber raus.
Dann sehe ich folgendes in der Timing Summary:
1
Timing Summary
2
-------------------
3
Design statistics:
4
   Minimum period:   1.741ns{1}   (Maximum frequency: 574.383MHz)
5
   Maximum path delay from/to any node:   1.741ns

Kann es sein das bei den Auswertungen erst eine Clock ab 100MHz genutzt 
wird? Wenn man also nun weniger einspeist sagt es eben das man 
mindestens 100 MHz einspeisen muss?!

P.S. Ich nutze übrigens den Spartan 6 und Xilinx ISE Webpack.

von Duke Scarring (Gast)


Lesenswert?

Alex P. schrieb:
> Ich kann mit weiteren Timing Constraints mein Design optimieren aber in
Was verstehst Du unter optimieren?

Normalerweise wird - wie Du es schon getan hast - der Eingangstakt 
'constraint'. Abgeleitete Takte (via DCM oder PLL) werden üblicherweise 
automatisch erkannt und auch automatisch 'constraint'.


> Kann es sein das bei den Auswertungen erst eine Clock ab 100MHz genutzt
> wird?
Nein.

> Wenn man also nun weniger einspeist sagt es eben das man
> mindestens 100 MHz einspeisen muss?!
Die PLL im FPGA kann nicht mit beliebigen Eingangstakten gefüttert 
werden. Es gibt eine untere und eine obere Begrenzung.


Duke

von Andi P. (jamaram90)


Lesenswert?

Duke Scarring schrieb:

> Was verstehst Du unter optimieren?

Das ich mit den Timing Constraints die Wege besser gesagt die 'Delays' 
zwischen zwei Elementen definieren kann. Oder sehe ich da was falsch?


>> Kann es sein das bei den Auswertungen erst eine Clock ab 100MHz genutzt
>> wird?
> Nein.

Warum passiert aber nichts wenn ich das Constraint für den Eingangstakt 
'CLK_IN1' drin habe jedoch, wenn ich es raus nehme dann zeigt es mir auf 
einmal etwas in der Timing Summary an?!

> Die PLL im FPGA kann nicht mit beliebigen Eingangstakten gefüttert
> werden. Es gibt eine untere und eine obere Begrenzung.

Ja.

von berndl (Gast)


Lesenswert?

hmm, hast du in deiner .ucf die clock entsprechend eingetragen?

Und sind deine Angaben aus dem 'Place and Route' report? Ich habe so den 
Verdacht, dass du uns hier nur die Timing-Angaben der 'geschaetzten' 
Synthese ansagst...
Im 'Place and Route' report sagt dir die Toolchain ganz genau, welche 
Clock jetzt zum berechnen des Timings verwendet wird...

von Andi P. (jamaram90)


Lesenswert?

berndl schrieb:
> hmm, hast du in deiner .ucf die clock entsprechend eingetragen?

Ja also die CLK habe ich entsprechnd eingetragen und auch mit dem 
Constraint angegeben welche Frequenz in das System eingespeist wird.

> Und sind deine Angaben aus dem 'Place and Route' report? Ich habe so den
> Verdacht, dass du uns hier nur die Timing-Angaben der 'geschaetzten'
> Synthese ansagst...

Die Timing Summary ist die des Post - PAR Static Timing Report.


> Im 'Place and Route' report sagt dir die Toolchain ganz genau, welche
> Clock jetzt zum berechnen des Timings verwendet wird...

Ich weiß und ich habe auch noch mehr constraints eingetragen um zum 
Beispiel eben die Laufzeiten zwischen den FF zu optimieren. Das passt 
auch alles und es gibt auch keine Fehler.
Es wundert mich aber eben einfach nur, dass wen ich das Constraint für 
die Eingangsclock also CLK_IN1 setze das mir dann ganz am Ende des Post 
- PAR Static Timing Report eine Timing Summary angezeigt wird mit MIn. 
Period von 100 MHz. Nehme ich dieses Constraints aber raus dann wird mir 
eine Min. Period von 574 MHz angezeigt. Wenn ich da dann an den 
Constraints etwas ändere, also zum Beispiel Laufzeiten zwischen dem FF, 
dann ändert sich auch die Min. Periode. Anders wenn ich das Constraints 
mit der CLK_IN1 wieder herein nehme, dann sehe ich die ganze Zeit nur 
100 MHz bei der Min. Period.

von Alter Hase (Gast)


Lesenswert?

Ich hab mal gelernt die Angabe zum minimalen timing komplett zu 
ignorieren.

Die einzige Möglichkeit die maximale taktfrequenz des designs zu 
bestimmen wäre die schrittweise Erhöhung des perioconstraints bis place 
und route bei allen Optimierungen und routing tables nicht mehr 
fehlerfrei durchläuft.

MfG

von berndl (Gast)


Lesenswert?

Alex P. schrieb:
> Ich weiß und ich habe auch noch mehr constraints eingetragen um zum
> Beispiel eben die Laufzeiten zwischen den FF zu optimieren. Das passt
> auch alles und es gibt auch keine Fehler.

Und du bist dir damit ganz sicher?

von meckerziege (Gast)


Lesenswert?

Lass mal auch PAR durchlaufen und schaus dir dann nochmal an. Ich hab 
hier ein Design, da sagt die erste Schätzung eine etwa 15% zu geringe 
Taktrate vorraus. Danach könnte es eigentlich nicht umgesetzt werden.
Wenn man es dann aber mal GANZ durchlaufen lässt, dann klappts plötzlich 
doch - denn dann stehen die Timings genau fest.

von Andi P. (jamaram90)


Lesenswert?

Jetzt funktioniert es!

Ich habe erst folgendes im Constraint stehen gehabt
1
NET "CLK_IN1" TNM_NET = "CLK_IN1";
2
TIMESPEC TS_CLK_IN1 = PERIOD "CLK_IN1" 25 ns HIGH 50 %;

nun aber habe ich es in,
1
NET "CLK_IN1" TNM = "CLK_IN1";
2
TIMESPEC TS_CLK_IN1 = PERIOD "CLK_IN1" 25 ns HIGH 50 %;

geändert.

Einzig allein von TNM_NET zu TNM. Wann genau nutze ich TNM_NET? Ich 
dachte genau das nehme ich wenn ich ein Input Constraint definiere?!

Alter Hase schrieb:

>Ich hab mal gelernt die Angabe zum minimalen timing komplett zu
>ignorieren.

Aber wieso das gibt mir doch eigentlich den schlechtesten Pfad im System 
an, mit der minimalen Taktfrequenz?!

berndl schrieb:

> Und du bist dir damit ganz sicher?

Ich denke schon. Du kannst mich gern eines besseren belehren. Ich habe 
zum Beispiel einen einfachen 4 Bit Zähler und definiere mit INST nun die 
FF's und erstelle dann mit [ FROM ...TO... VALUE ns ] das Delay welches 
ich dazwischen haben möchte.

: Bearbeitet durch User
von greg (Gast)


Lesenswert?

Alex P. schrieb:
> Aber wieso das gibt mir doch eigentlich den schlechtesten Pfad im System
> an, mit der minimalen Taktfrequenz?!

Die Optimierung bei Place & Route orientiert sich an den Constraints. Es 
wird nur so lange optimiert, bis die erfüllt sind. Je nachdem ändert 
sich dann auch der kritische Pfad komplett. Es ist nicht möglich in 
einem Durchlauf Synthese und Implementierung so etwas wie die maximale 
Taktfrequenz herauszufinden oder Ähnliches.

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.