Forum: FPGA, VHDL & Co. Vivado Timing Verletzung


von Paul (Gast)


Angehängte Dateien:

Lesenswert?

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

von P. K. (pek)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Paul (Gast)


Angehängte Dateien:

Lesenswert?

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

von P. K. (pek)


Lesenswert?

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).

von Paul (Gast)


Lesenswert?

Ok das leuchtet mir ein. Danke dir!

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.