Hallo Leute, ich habe ein problem mit einer Timing Verletzung in einem Vivado (Zynq) Projekt. Ich bekomme eine Kritische Warnung, dass die Timing Requirements nicht erfüllt werden können. Siehe Bild: Message. In der Timing Summery habe ich gesehen das anscheinend der Pfad von einem Reset zum Anderen zulange ist. Wenn ich das richtig verstanden habe -> Bild: timing_verletzung. Liege ich mit meiner Vermutung richtig? Wie kann ich dieses Problem lösen? Danke viemals
Schau Dir den Pfad mal im Detail an (Doppelclick auf die Linie mit dem Pfad). Weil Dein Signal ...aresetn... heisst würde ich mal schauen, was Du wie ein synchronisierst und wie Du allfällige Clockdomain-Border-Crossings angehst, da liegt sicher irgendwo ein Hund begraben. Dein "Information-Hiding-Konzept" (ausweisseln der Pfade) trägt etwas zur Trübung der Kristallkugel bei.
Paul schrieb: > timing_verletzung.JPG Ein JPEG ist ein ganz arg schlechtes Format für einen Screenshot. Stichwort: Kompressionsartefakte... > dass die Timing Requirements nicht erfüllt werden können. Welche Anforderungen hast du gestellt? > Wie kann ich dieses Problem lösen? Nimm keinen asynchronen Reset. Synchronisiere den asynchronen Reset auf die jeweilige Taktdomäne ein.
Hallo Danke erstmal für eure Hilfe Ich habe mal ein Bild von der Pfadbeschreibung angehängt (Doppelklick auf den Pfad). Leider helfen mir diese Infos noch nicht weiter. Da bin ich noch nicht so erfahren. Anhand vom VHDL Code sehe ich das das ext_reset Signal ein synchroner Reset ist:
1 | sync_ext_reset: process(clk_160mhz) |
2 | begin
|
3 | if rising_edge(clk_160mhz) then |
4 | ext_reset <= ps_reset; |
5 | ext_reset_sync <= ext_reset; |
6 | end if; |
7 | end process; |
der ps_reset ist der aresetn. Der aresetn wird von einem PS Reset Generator erzeugt. Welche Anforderungen ich gestellt habe weiss ich leider nicht. Vielleicht ist die ganze Sache ja auch kein Problem. Dachte nur wenn Vivado sagt das die Timing requirements fehlschlagen, kann es so nicht funktionieren... mfg Paul
Was Dir der detaillierte Pfad sagt: Source Clock : clk_fpga_0 Destination Clock : clkout _0 D.h. in Deinem VHDL-Code-Schnipsel ist noch nicht die ganze Wahrheit drin, weil dein PS_reset ja aus einer anderen Clock-Domain kommt. Du solltest also den Eingang Deiner Synchronizer-Kette als "false-path" definieren (das darfst Du, weil Du mit der Synchronizer-Kette ja sicherstellst, dass es da keine Probleme gibt).
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.