Hallo zusammen Nach der erfolgreichen Kompilation meines VHDL-Projektes erscheint im Timing Analyzer folgene Meldung (rot)" Total number of failed paths " In der letzten Spalte der Tabelle steht (rot) 4, Meine Frage: Woran liegt das? und in welche Richtung muss ich gehen, um diese Felhermeldung zu beheben? Vielen Dank im voraus
> Woran liegt das? und in welche Richtung muss ich gehen, um diese > Felhermeldung zu beheben? Rückwärts. Das Problem ist, dass die Logik zwischen zwei Flipflops länger braucht als sie (durch den Takt der FFs) Zeit hat. Entweder die Taktfrequenz deines Designs verringern oder dir den fehlgeschlagenen Pfad genau anschauen und da entweder Logik rausnehmen oder noch ein paar FFs zusätzlich einbauen.
erstmal Danke für die antwort wie meinst du, zusätzliche FFs einbauen? ; logisch klingt FFs rausnehmen; würde sich dadurch nicht die Delay -Zeit vergrößern?
Du hast derzeit dieses Problem: Nehmen wir einen Takt von 10ns an.
1 | (Kombinatorik ) |
2 | [FF]--------(Durchlaufzeit )---------[FF] |
3 | ( z.B. 13ns ) |
Das sieht im FPGA dann so aus:
1 | [ ] [ ] |
2 | [FF]-----( LUT )-----( LUT )-----( LUT )--------( LUT )-----( LUT )-----( LUT )------[FF] |
3 | 1ns 1ns 1ns 1ns 1ns 1ns 1ns 1ns 1ns 1ns 1ns 1ns 1ns |
4 | 13ns |
Wenn du jetzt das machst:
1 | [ ] [ ] [ ] |
2 | [FF]-----( LUT )-----( LUT )-----( LUT )--[FF]--( LUT )-----( LUT )-----( LUT )------[FF] |
3 | 1ns 1ns 1ns 1ns 1ns 1ns 1ns 1ns 1ns 1ns 1ns 1ns 1ns 1ns |
4 | 7ns 7ns |
Dann siehst du, dass von FF bis zum FF nur noch etwa die Hälfte der Kombinatorik und Verdrahtungs-Laufzeit anfällt --> dein Design ist schneller geworden. Allerdings hast du dadurch einen Takt Latency (Verzögerung), du bist also nicht schneller fertig!!!
Guten Morgen, Wahnsinn, dass nenn ich mal eine Erklärung. So versteht man was auf anhieb. Ich werde das gleich umsetzen, eine Verzögerung auf dieser Leitung kann ich vernachlässigen. Habe noch drei Fragen: 1.) Bedeutet die Fehlermeldung "failed paths" (rot) im Timing Analyzer das diese Verbindungen nicht gesetzt wurden? Oder vielmehr gesetzt werden, sobald das *.sof file auf den FPGA überspielt wird? 2.) Wie kann ich im Assignment Editor im Quartus für Verbindungen oder Pins einstellen, dass die Verzögerungen durch langes Routing vernachlässigbar sind. also: Leitung ziehen, Länge ist egal 3.) Sind für eine Synchronisation von Signalen zwischen zwei Taktdomains 2 FF nötig oder ist das auch mit weniger machbar? (oder auf einen anderen Weg) Danke für die Antwort im Voraus
1) Das bedeutet, dass das Signal im FPGA unter den worst-case Bedingungen zu langsam ist. Wenn es sich da nur um ganz wenig handelt, kann es durchaus sein dass dein Design bei Raumtemperatur noch geht, aber bei 50° nicht mehr. Oder bei kleinen Spannungsschwankungen aufhört zu funktionieren. Die Pfade sind schon alle da, nur eben zu langsam. Der Timing Analyser läuft ja auch erst übers Design wenn es schon fertig ist und überprüft das nochmal. 2) Wenn du nicht getaktete Logik hast geht das von selber. Sobald du aber getaktete FFs drin hast, muss das Signal rechtzeitig zum Takt am nächsten FF sein. Da hilft nur Design anpassen. 3) 2FFs ist die Standard-Lösung. Im Allgemeinen bleibt zu sagen, dass Probleme mit dem Takt sehr schwierig zu debuggen sein können. Die (nicht delay-annotierte) Simulation geht, der FPGA geht manchmal oder nicht. Wer da irgendwelche seltsamen Sachen einbaut sollte entweder sehr genau wissen was er tut oder wird früher oder später in Probleme laufen
ja das sind alles getaktete FFs. > > .... Da hilft nur Design anpassen. > > 3) 2FFs ist die Standard-Lösung. > Setze in der ersten Taktdomain ein Signal; Ich benutze dazu ein FF in einem Prozess. (also Standart) In der zweiten Taktdomain synchronisiere ich das Signal mittels 2 FFs und setze damit wieder ein signal. Wie soll ich das noch anpassen?
> 2.) Wie kann ich im Assignment Editor im Quartus für Verbindungen oder > Pins einstellen, dass die Verzögerungen durch langes Routing > vernachlässigbar sind. also: Leitung ziehen, Länge ist egal Das Stichwort hier heißt Timing Constraints. Auf welchem Weg du das bei Altera eingibst, weiß ich nicht, aber bei Xilinx gibt es eine User-Constraints Datei, wo z.B. auch die Pinzuordnung stattfindet. Dort kann man dan Pfade angeben, für die das Timing uninteressant ist (z.B. Config-Daten, die sich nicht jeden Takt ändern).
Hallo nochmal > Das Stichwort hier heißt Timing Constraints. Auf welchem Weg du das > bei Altera eingibst, weiß ich nicht, aber bei Xilinx gibt es eine > User-Constraints Datei, wo z.B. auch die Pinzuordnung stattfindet. Dort > kann man dan Pfade angeben, für die das Timing uninteressant ist (z.B. > Config-Daten, die sich nicht jeden Takt ändern). kann mir jemand sagen wo ich diese Timing Constraints im Quartus finde? habe bis eben gesucht, aber nicht wirklich was gefunden. > 2.) Wie kann ich im Assignment Editor im Quartus für Verbindungen oder > Pins einstellen, dass die Verzögerungen durch langes Routing > vernachlässigbar sind. also: Leitung ziehen, Länge ist egal Wie stelle ich dies ( 2.) ) unter den Timing Constraints ein? vielen Dank im voraus
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.