www.mikrocontroller.net

Forum: FPGA, VHDL & Co. failed paths im Timing analyzer


Autor: Dete Kosschlovsski (dete)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Dete Kosschlovsski (dete)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast derzeit dieses Problem:
Nehmen wir einen Takt von 10ns an.
            (Kombinatorik  )
[FF]--------(Durchlaufzeit )---------[FF]
            (  z.B. 13ns    ) 

Das sieht im FPGA dann so aus:
[  ]                                                                                 [  ]
[FF]-----( LUT )-----( LUT )-----( LUT )--------( LUT )-----( LUT )-----( LUT )------[FF]
     1ns   1ns   1ns   1ns   1ns   1ns    1ns     1ns   1ns   1ns   1ns   1ns    1ns      
                                     13ns

Wenn du jetzt das machst:
[  ]                                      [  ]                                       [  ]
[FF]-----( LUT )-----( LUT )-----( LUT )--[FF]--( LUT )-----( LUT )-----( LUT )------[FF]
     1ns   1ns   1ns   1ns   1ns   1ns 1ns   1ns  1ns   1ns   1ns   1ns   1ns    1ns      
                    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!!!

Autor: Dete Kosschlovsski (dete)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dete Kosschlovsski (dete)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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).

Autor: Dete Kosschlovsski (dete)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.