Forum: FPGA, VHDL & Co. Timing Report


von Andi P. (jamaram90)


Lesenswert?

Folgendes steht in meinem Post-PAR Static Timing Report:
1
Data Sheet report:
2
-----------------
3
All values displayed in nanoseconds (ns)
4
5
Setup/Hold to clock CLK_IN1
6
------------+------------+------------+------------+------------+------------------+--------+
7
            |Max Setup to|  Process   |Max Hold to |  Process   |                  | Clock  |
8
Source      | clk (edge) |   Corner   | clk (edge) |   Corner   |Internal Clock(s) | Phase  |
9
------------+------------+------------+------------+------------+------------------+--------+
10
RESET       |    5.674(R)|      SLOW  |   -2.471(R)|      FAST  |clkout0           |   0.000|
11
------------+------------+------------+------------+------------+------------------+--------+
12
13
Clock to Setup on destination clock CLK_IN1
14
---------------+---------+---------+---------+---------+
15
               | Src:Rise| Src:Fall| Src:Rise| Src:Fall|
16
Source Clock   |Dest:Rise|Dest:Rise|Dest:Fall|Dest:Fall|
17
---------------+---------+---------+---------+---------+
18
CLK_IN1        |    2.040|         |         |         |
19
---------------+---------+---------+---------+---------+
20
21
OFFSET = IN 10 ns VALID 10 ns BEFORE COMP "CLK_IN1";
22
Worst Case Data Window 3.203; Ideal Clock Offset To Actual Clock -0.927; 
23
------------------+------------+------------+------------+------------+---------+---------+-------------+
24
                  |            |  Process   |            |  Process   |  Setup  |  Hold   |Source Offset|
25
Source            |   Setup    |   Corner   |    Hold    |   Corner   |  Slack  |  Slack  |  To Center  |
26
------------------+------------+------------+------------+------------+---------+---------+-------------+
27
RESET             |    5.674(R)|      SLOW  |   -2.471(R)|      FAST  |    4.326|    2.471|        0.927|
28
------------------+------------+------------+------------+------------+---------+---------+-------------+
29
Worst Case Summary|       5.674|         -  |      -2.471|         -  |    4.326|    2.471|             |
30
------------------+------------+------------+------------+------------+---------+---------+-------------+

Ist CLK_IN1 nun die Frequenz die mein System im ganzen nutzt? Also Takte 
ich damit alles in meiner Schaltung? Ich habe am Anfang ein DCM mit dem 
ich den Eingangstakt erhöhe. Wie erfahre ich nun welche Frequenz ich 
danach heraus bekomme?

Weiterhin steht noch das mit drin:
1
Timing summary:
2
---------------
3
4
Design statistics:
5
   Minimum period:   3.334ns{1}   (Maximum frequency: 299.940MHz)
6
   Minimum input required time before clock:   5.674ns
Maximum Frequency ist doch die von mir gesuchte Taktfrequenz aber wenn 
ich den Takt mit der DCM auf mehr als 400 MHZ erhöhe ist das dann aber 
schon bisschen dünn. :-/

Ich wäre dankbar, wenn mir das ganze mal jemand kurz und verständlich 
erklären könnte.

Danke

von Duke Scarring (Gast)


Lesenswert?

Alex P. schrieb:
> Setup/Hold to clock CLK_IN1
...
> Clock to Setup on destination clock CLK_IN1
...
> OFFSET = IN 10 ns VALID 10 ns BEFORE COMP "CLK_IN1";
...

> Ist CLK_IN1 nun die Frequenz die mein System im ganzen nutzt?
Sieht so aus.

> Wie erfahre ich nun welche Frequenz ich
> danach heraus bekomme?
Indem Du schaust, wie der DCM konfiguriert ist.

> (Maximum frequency: 299.940MHz)
Die Zahl bezieht sich m.E. auf den Takt, den der DCM bekommt. Es könnten 
ja auch mehrere Takt pro DCM generiert werden.

> ich den Takt mit der DCM auf mehr als 400 MHZ erhöhe
Was für einen Chip verwendest Du konkret? Je nach verwendeter Logik ist 
auch schon eher Schluß, weil die Komponenten (DSP48, BRAM, etc.) nicht 
so schnell können.

Duke

von Andi P. (jamaram90)


Lesenswert?

Duke Scarring schrieb:

>> Ist CLK_IN1 nun die Frequenz die mein System im ganzen nutzt?
> Sieht so aus.

Also CLK_IN1 ist der Takt den ich in rein geben und dieser geht an das 
DCM. Mit diesem erhöhe ich dann den Takt bis 400 MHZ. Dann kann doch 
aber CLK_IN1 nicht schon 2.040 ns, wenn ich erst mit dem DCM 2.5 ns 
generiere.

>>Wie erfahre ich nun welche Frequenz ich
>> danach heraus bekomme?
>Indem Du schaust, wie der DCM konfiguriert ist.

Also bekomme ich nach der DCM mit hoher Wahrscheinlichkeit meine 400MHz 
heraus? Kann ich das auch im Timing Report irgendwo finden? Muss ich das 
über die Constraints vordefinieren, damit ich das dann auch im Report 
sehe? Also eine extra Domain für den Pfad nach der DCM anlegen quasi?!

>> (Maximum frequency: 299.940MHz)
>Die Zahl bezieht sich m.E. auf den Takt, den der DCM bekommt. Es könnten
>ja auch mehrere Takt pro DCM generiert werden.

Sozusagen der Takt der vorn in mein DCM eingespeist wird?!

>Was für einen Chip verwendest Du konkret?

Ich nutze einen Spartan 6. Der sollte damit eigentlich noch zurecht 
kommen.

von Christian R. (supachris)


Lesenswert?

400MHz intern am Spartan 6? Naja...also BRAM, DSP48 usw. läuft ja da nur 
mit 320MHz maximal, und das auch nur bei Rückenwind und freiem Fall und 
SpeedGrade 4. Der CLK_FX Ausgang des DCM macht maximal 375MHz. Der 
Global Clock Tree macht gerade so die 400MHz im höchsten Speed Grade.

von Duke Scarring (Gast)


Lesenswert?

Alex P. schrieb:
> CLK_IN1 nicht schon 2.040 ns
Das ist nur die Setup-Time, die ein taktsynchrones Signal einhalten 
muss, wenn es über einen Eingangspin kommt. Hast Du solche Signale?

> Kann ich das auch im Timing Report irgendwo finden?
Irgendwo gibt es "derived constraints". Dort findest Du die sekundären 
Takte wieder.

> Sozusagen der Takt der vorn in mein DCM eingespeist wird?!
Ja.
Hast Du für diesen Takt ein Constraint angegeben? Das wäre wichtig.

> Ich nutze einen Spartan 6. Der sollte damit eigentlich noch zurecht
> kommen.
Dazu konsultiert man das Datenblatt (ds162.pdf):
CLB (Table 40), F_TOG 500...862 MHz
BRAM (Table 43), F_MAX 150...320 MHz
DSP48 (Table 44), F_MAX 213...390 MHz

Duke

von Andi P. (jamaram90)


Lesenswert?

Jetzt verstehe ich garnichts mehr. Im besagten Datenblatt von Duke steht 
doch aber Maximum PLL VCO Frequency = 1080 MHZ und Minimum PLL VCO 
Frequency = 400 MHZ. Wieso geht dann nun intern vom FPGA nun nicht mehr 
als 400 MHz ...


Christian R. schrieb:

>400MHz intern am Spartan 6? Naja...also BRAM, DSP48 usw. läuft ja da nur
>mit 320MHz maximal, und das auch nur bei Rückenwind und freiem Fall und
>SpeedGrade 4. Der CLK_FX Ausgang des DCM macht maximal 375MHz. Der
>Global Clock Tree macht gerade so die 400MHz im höchsten Speed Grade.


Duke Scarring schrieb:
> Alex P. schrieb:
>> CLK_IN1 nicht schon 2.040 ns
> Das ist nur die Setup-Time, die ein taktsynchrones Signal einhalten
> muss, wenn es über einen Eingangspin kommt. Hast Du solche Signale?

Nein.


>> Sozusagen der Takt der vorn in mein DCM eingespeist wird?!
> Ja.
> Hast Du für diesen Takt ein Constraint angegeben? Das wäre wichtig.

Ja habe ich.

von Achim S. (Gast)


Lesenswert?

Alex P. schrieb:
> Jetzt verstehe ich garnichts mehr. Im besagten Datenblatt von Duke steht
> doch aber Maximum PLL VCO Frequency = 1080 MHZ und Minimum PLL VCO
> Frequency = 400 MHZ. Wieso geht dann nun intern vom FPGA nun nicht mehr
> als 400 MHz ...

Weil der VCO benutzt wird um Frequenzen zu erzeugen, die in einem 
rationalen Verhältnis zu deinem Eingangstakt liegen. D.h. er läuft 
normalerweise auf einem Vielfachen n der Eingangsfrequenz, und die 
erzeugte Ausgangsfrequenz der PLL wird um einen Faktor m kleiner sein 
als die VCO-Frequenz. Nur weil die Zwischenfrequenz des VCO bei 1GHz 
liegen kann bedeutet das nicht, dass alle anderen Elemente im Spartan 6 
(z.B. DSP, ...) auch mit 1GHz laufen.

Das Verhältnis n/m des DCM (also das Verhältnis zwischen 
Eingangsfrequenz und Ausgangsfrequenz des DCM) hast du selbst bei der 
Konfiguration des DCM festgelegt (bzw. bei der Anwendung des 
IP-Wizards). Welchen Faktor hast du eingestellt?

von Andi P. (jamaram90)


Lesenswert?

>Welchen Faktor hast du eingestellt?

Ich gehe mit 40MHz rein und erzeuge 400 MHz mit dem PLL. Also Faktor 10.

Mir ist klar das nicht alle Elemente mit dem Takt laufen können. Da muss 
ich mich entschuldigen das ich das falsch aufgefasst habe.

Der von der PLL erzeugte Takt soll nachher lediglich Zähler takten.

Um mein Anliegen vom Anfang nochmal anders zu formulieren.

Ich möchte gern wissen wie ich durch den Timing Report erfahren kann, 
was ich z.B. für eine Zeit zwischen dem Ausgang der PLL und dem Eingang 
des Zählers habe und was hinter dem Zähler zum BEispiel noch für eine 
Frequenz anliegt. Das nur mal als ein BEispiel. Der Timing Report an 
sich erschlägt mich und ich kann daraus eben nicht so richtig schlau 
werden.

Vllt nochmal zu:
1
Timing summary:
2
---------------
3
4
Timing errors: 0  Score: 0  (Setup/Max: 0, Hold: 0)
5
6
Constraints cover 0 paths, 0 nets, and 0 connections
7
8
Design statistics:
9
   Minimum period:  10.000ns{1}   (Maximum frequency: 100.000MHz)

Wenn ich als Constraint nun mehr als 40 MHz einstelle also zum Beispiel 
100 MHz und dann mit dem PLL einen höheren Takt erzeuge zum Beispiel 800 
MHz steht dann in der Timing Summary knapp 500 MHZ. Ich möchte einfach 
nur verstehen wie ich den Wert deuten kann. Das dies nicht der Takt vor 
der PLL ist mir klar aber es ist ja auch nicht der Takt nach dem PLL.

Was sagt mir der Wert also und wovon ist er Abhängig?

von Achim S. (Gast)


Lesenswert?

Alex P. schrieb:
> Ich gehe mit 40MHz rein und erzeuge 400 MHz mit dem PLL. Also Faktor 10.

Und mit dieser Einstellung des DCM (also CLK_IN1) hast du wirklich 
folgenden Timing-Report erhalten?

Alex P. schrieb:
> Clock to Setup on destination clock CLK_IN1
> ---------------+---------+---------+---------+---------+
>                | Src:Rise| Src:Fall| Src:Rise| Src:Fall|
> Source Clock   |Dest:Rise|Dest:Rise|Dest:Fall|Dest:Fall|
> ---------------+---------+---------+---------+---------+
> CLK_IN1        |    2.040|         |         |         |
> ---------------+---------+---------+---------+---------+

Das kann ich mir nicht vorstellen. Ist CLK_IN1 nicht vielleicht der 
Ausgang des DCM?

Alex P. schrieb:
> Wenn ich als Constraint nun mehr als 40 MHz einstelle also zum Beispiel
> 100 MHz und dann mit dem PLL einen höheren Takt erzeuge zum Beispiel 800
> MHz steht dann in der Timing Summary knapp 500 MHZ.

Das bedeutet wohl, dass die Logik, die du mit dem DCM-Ausgang treiben 
willst, nicht schneller als 500MHz laufen kann (passt auch dazu dem 
timing report für CKL_IN1, sofern das der Ausgang des DCM ist). Du 
kannst dann zwar 100MHz an den Eingang des DCM anlegen und der Ausgang 
wird 800MHZ treiben. Aber die damit getaktete Logik wird nicht richtig 
funktionieren.

In dem Fall solltest du auch die Meldung bekommen haben, dass das 
Timing-Constraint für den DCM-Eingang (100MHz) nicht erfüllt werden 
konnte.

von Achim S. (Gast)


Lesenswert?

ups, Tippfehler. Es sollte heißen:

Und mit dieser Einstellung des DCM (also CLK_IN1 als Eingang des DCM) 
hast du wirklich folgenden Timing-Report erhalten?

von Andi P. (jamaram90)


Lesenswert?

Achim S. schrieb:
> Und mit dieser Einstellung des DCM (also CLK_IN1) hast du wirklich
> folgenden Timing-Report erhalten?

Nein da hatte ich eine höhere Frequenz eingestellt als CLK_IN1. Auch am 
Timing Summary zu sehen welches ja höhere Werte ausgegeben hat.


>Das bedeutet wohl, dass die Logik, die du mit dem DCM-Ausgang treiben
>willst, nicht schneller als 500MHz laufen kann (passt auch dazu dem
>timing report für CKL_IN1, sofern das der Ausgang des DCM ist). Du
>kannst dann zwar 100MHz an den Eingang des DCM anlegen und der Ausgang
>wird 800MHZ treiben. Aber die damit getaktete Logik wird nicht richtig
>funktionieren.

Auch hier habe ich mal ein bisschen mehr probiert um eben zu schauen was 
passiert. Die Erklärung scheint mir aber nun auch plausibel.

Vielen Dank!

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.