Hallo, ich habe hier ein Design, in das ich eine selbstgebaute UART (mit integriertem FIFO) einbaue. Beim Vorher/Nachher-Vergleich der Syntheseergebnisse (Timing und Platzbedarf) ergibt sich da leider ein ziemlicher Einbruch der maximalen Clock-Frequenz von 99MHz auf 46 MHz. Die schnellste Clock hat real 60MHz. Meine Frage ist nun, wie ich erkennen/herausfinden kann, welche Elemente/Zeilen da den größten Einfluss haben, um evtl. noch was zu ändern. Kann ich das irgendwie sehen oder erahnen?
Im Synthesis Report sind die zeitlich laengsten Ketten angegeben, die dann das Timing bestimmen werden. Die sollte man sich durchdenken. Manchmal kann man sie aufbrechen, umformulieren, oder man hat evt ein Clock Enable so das die Kette effektiv mit geringerer Frequenz arbeitet. Das kann man dann mit entsprechenden UCF Constraints fuer ISE versatendlich machen. Hier ein Beispiel fuer einen Bereich, der zwar mi CLK getaktet wird, aber nur alle 4 CLKs ein enable bekommt: NET "CLK" TNM_NET = "CLK"; TIMESPEC "TS_clk" = PERIOD "CLK" 16.1 MHz HIGH 50 %; NET "clk_en" TNM_NET=FFS("calc1/div0/*") CKEN_FFGRP; TIMESPEC "TS_CKEN"=FROM "CKEN_FFGRP" TO "CKEN_FFGRP" TS_clk*4;
Es kommt drauf an welches Tool Du verwendest, aber im Timingreport stehen immer die kritischen Pfade. Da musst Du dann ansetzen um z.B. mit Pipelining die maximal mögliche Taktfrequenz zu erhöhen. Hast Du denn auch die Timing-constraints richtig gesetzt?
Wenn da irgendwas die Taktfrequenz auf 46 MHz drückt, dann ist das idR
eine ziemlich lange kombinatorische Verknüpfung (if ... elsif ... elsif
... end if). Nach dem Routing kommen dann noch Verdrahtungs-Laufzeiten
dazu. Wenn die ungünstig ausfallen, dann passiert sowas schon mal.
Hast du den Tools mit Constraints schon mal deine Wünsche bzgl.
Geschwindigkeit kundgetan? Wissen die Tools, dass du 60MHz willst?
Wenn du da keine Vorgaben machst, dann werden die Komponenten aus der
Synthese vom Plcae&Route einfach irgendwie platziert und dir das
Ergebnis dann berichtet. Fertig. Da wird kein Aufwand betrieben, um das
bestmögliche Ergebnis zu erreichen!!
Wenn du Xilinx verwendest, dann solltest du deine Wünsche mindestens mit
NET "CLK" TNM_NET = "CLK";
TIMESPEC "TS_clk" = PERIOD "CLK" 60 MHz HIGH 50 %;
in der UCF-Datei (Constraints) anbringen.
Hier sage ich: ich habe einen Clock mit 60 MHz und 50% Tastverhältnis.
Wo es dann noch klemmt sagt dir die statische Timing-Analyse ganz genau.
Übrigens, was heisst dein Satz:
>..Die schnellste Clock....
Hast du mehrere Takte im Design?
Falls ja: warum, wieso, weshalb?
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.