Hallo Kommunity, ich habe Timing-Probleme (oder Verständnissprobleme :) ) in meinem Design. Es ist mit 25MHz getaktet. Jede 8 CLK-Takte wird einen Clock-Enable-Signal erzeugt. Und es klappt. ISE meldet keine Zeitverletzungen. aber, Ich habe meinen Design geändert und jetzt läuft es mit 50MHz getaktet und Clock-Enable wird jede 16 Takte erzeugt. Jetzt spuckt mir ISE Timing-Warnungen. Warum ist das so? Mein Design läuft in beiden Fällen mit 3.125MHz, nur CLK ist schneller und Clock-Enable entsprechend langsamer. MfG
Dimi S. schrieb: > Jetzt spuckt mir ISE Timing-Warnungen. Welche? > Warum ist das so? Mein Design läuft in beiden Fällen mit 3.125MHz Hast du die Constraints so gesetzt, dass die Tools da wissen? Das Stichwort für dich heißt "Multi-Cycle-Constraint"
ISE meldet folgendes:
1 | ================================================================================ |
2 | Timing constraint: TS_clk50 = PERIOD TIMEGRP "clk50" 20 ns HIGH 50%; |
3 | 4042390 paths analyzed, 1484 endpoints analyzed, 14 failing endpoints |
4 | 14 timing errors detected. (14 setup errors, 0 hold errors, 0 component switching limit errors) |
5 | Minimum period is 20.952ns. |
6 | -------------------------------------------------------------------------------- |
Ich habe hier im Forum mehrere Threads zum Thema "Timing Constraints" gelesen und folgendes gerade ausprobiert... Ich habe "FFS" to "FFS" auf 50ns gesetzt (in meinem Fall habe ich genug Zeit, da FFs nur mit 3.125MHz schalten). Jetzt sind die Warnungen weg! Ob ich es richtig verstanden habe und ob es die richtige Lösung ist weiss ich nicht. MfG
Dimi S. schrieb: > Ich habe "FFS" to "FFS" auf 50ns gesetzt 50ns sind eigentlich noch viel zu anspruchsvoll... > (in meinem Fall habe ich genug Zeit, da FFs nur mit 3.125MHz schalten). Richtig wären da eher 16*20ns. Und diesen Faktor 16 gibst du über den Multi-Cycle-Constraint an... > Jetzt sind die Warnungen weg! Na bitte.
Vielen vielen Dank! Jetzt wird mir einiges klar!!! Noch einen Beispiel, un es richtig zu begreifen: wenn ich in meinem Design eine FSM habe, die mit 100MHz läuft, und z.B. 2 module: eine mit ClockEnable 100MHz/8 und andere mit 100MHz/4. Meine .ucf soll so aussehen:
1 | NET “CLK” TNM_NET = “CLK”; |
2 | TIMESPEC “TS_CLK” = PERIOD “CLK” 10 ns HIGH 50%; |
3 | |
4 | NET “CLK_EN1” TNM_NET = FFS “GROUP1”; |
5 | TIMESPEC TS_GRP1 = FROM “GROUP1” TO “GROUP1” TS_CLK*8; |
6 | |
7 | NET “CLK_EN2” TNM_NET = FFS “GROUP2”; |
8 | TIMESPEC TS_GRP2 = FROM “GROUP2” TO “GROUP2” TS_CLK*4; |
Ist es richtig?? MfG
Dimi S. schrieb: > Ist es richtig?? Die Idee passt. Ob die Syntax stimmt, sagt dir die Toolchain... ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.