Forum: FPGA, VHDL & Co. Clock-Belaster herausfinden


von Eman (Gast)


Lesenswert?

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?

von Uwe Bonnes (Gast)


Lesenswert?

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;

von Mathi (Gast)


Lesenswert?

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?

von lkmiller (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.