mikrocontroller.net

Forum: FPGA, VHDL & Co. Retiming benutzen?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: FPGA zum Spass (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich wollte mal in die Runde hören wer Retiming einsetzt und wenn ja mit 
welchen Erfahrungen.

Ich stehe an einem Punkt wo mein Design zu 90% fertig ist, aber jede 
weitere Änderung ist nur noch schwer durchzubringen wegen des Timings.
Mit ein paar Durchläufen geht es meistens, aber es kommt ja auch noch 
ein bischen rein.

Jetzt gibt es 2 Möglichkeiten:
- selbst optimieren
- retiming

Bisher war ich immer sehr skeptisch, weil wenn man sich erstmal auf 
diesen Pfad begibt, dann kommt man nicht allzu schnell zurück und ich 
mache mir Sorgen, wenn ich doch mal ein Problem cyclegenau debuggen 
muss, das ich mich dann selbst veräpple.

Vielleicht habt ihr aber gute Erfahrungen gesammelt?
Oder auch nicht?

Autor: Tobias B. (Firma: www.elpra.de) (ttobsen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was verstehst du unter Retiming? Einfach nur dass sich das Synthese Tool 
um die Reihenfolge der Pipeline Register kuemmert um das Timing 
dazwischen auszubalancieren oder sogar das setzen zusaetzlicher Register 
um sich mehr Luft zu verschaffen?

Im Prinzip ist es immer ein Mix aus allen Loesungen. Was ich noch in den 
Topf werfen wuerde, waere das Auflockern von Timing Constraints, zum 
Beispiel durch Multicycles oder False-Paths (natuerlich nur da wo man es 
sich erlauben kann ;-)).

Ein Beispiel fuer den Mix sind z.B. komplexe Video Algorithmen. Ein paar 
Pipeline Register stoeren in der Regel nicht. Selbst in Echtzeit 
Anwendungen ist das bisschen Latenz das auf den Videostream 
aufgeschlagen wird nicht der Rede wert. Viele Video Algorithmen haben 
Register fuer die Algorithmus Settings und da diese haeufig statisch 
sind (bzw. quasistatisch) kann man diese zu False-Paths machen. Den 
Tools bleiben dann mehr Ressourcen fuer die kritische Pfade.

Mit dieser Strategie fahre ich haeufig ganz gut.

: Bearbeitet durch User
Autor: FPGA zum Spass (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meine nur das Retiming Feature der Place&Route/Fitter Tools.

Siehe auch hier:
https://en.wikipedia.org/wiki/Retiming

Insbesondere die Punkte unter "Problems" machen mir Sorgen.
Die Aussicht auf besseres Timing ohne viel Arbeit ist aber verlockend.


Die anderen, vorgeschlagenen Lösungen sind  auch hilfreich, wenn man sie 
nutzen kann.

In meinem Fall geht es um einen Softcore mit Pipeline. Da helfen mir die 
Varianten alle leider nicht weiter, bzw. würden das schon, reduzieren 
aber den Durchsatz.

Leider kann man wohl reitiming nicht auf bestimmte Register/Module 
beschränken, sonst wäre die Entscheidung einfacher...

Autor: Tobias B. (Firma: www.elpra.de) (ttobsen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FPGA zum Spass schrieb im Beitrag #5869242:
> Insbesondere die Punkte unter "Problems" machen mir Sorgen.
> Die Aussicht auf besseres Timing ohne viel Arbeit ist aber verlockend.

Dann musst du wohl oder uebel eine Post P&R Simulation durchfuehren. Ich 
sehe das Problem in der Praxis jetzt erstmal als nicht so riesig an. 
Klar, wenn du mit Chipscope (oder nenn anderen ILA) das debuggen 
anfaengst, dann ist es erstmal nervig, wenn die Signale nicht mehr 
wirklich zu denen im Code passen. Abhilfe schafft dann aber auch wieder 
ein Blick in die Schematics der Synthese. Dann sieht man ja was geandert 
wurde und kann das entsprechend handhaben.

FPGA zum Spass schrieb im Beitrag #5869242:
> Leider kann man wohl reitiming nicht auf bestimmte Register/Module
> beschränken, sonst wäre die Entscheidung einfacher...

Doch, das geht schon. Du kannst einzelne IPs separat und mit 
unterschiedlichen Settings synthetisieren! Das Synthese Produkt kannst 
du dann in einem uebergeordneten Design (z.B. dem Toplevel) einfach 
einbinden.

Hat natuerlich den Nachteil, dass das Synthesetool nur ueber einen Core 
optimieren kann und nicht ueber mehrere wenn sich diese z.B. gleiche 
Logik teilen.

Da hilft nur probieren und verschiedene Strategien zu fahren. Zum Glueck 
kann man das mittlerweile alles anstaendig automatisieren, z.B. via Tcl 
Skripte. :-)

: Bearbeitet durch User
Autor: FPGA zum Spass (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für die Synthese schon, jedoch ist das Retiming eine Option für den 
Fitter(P&R) und da geht es soweit ich weiß nicht.

Autor: Tobias B. (Firma: www.elpra.de) (ttobsen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FPGA zum Spass schrieb im Beitrag #5869617:
> Für die Synthese schon, jedoch ist das Retiming eine Option für den
> Fitter(P&R) und da geht es soweit ich weiß nicht.

Nope, Retiming ist ueblicherweise ein Synthese Setting. Welches Tool 
nutzt du denn, dass ein Retiming waehrend P&R durchfuehrt?

Ich kann mir zwar vorstellen, dass es Tools gibt die ein Retiming 
erlauben waehrend der P&R Phase, jedoch macht dass dann deine bedenken 
auch wieder obsolet. In dem Fall wuerde ich einfach parallele 
Implementierungslaeufe starten, einmal mit und einmal ohne Retiming. Es 
ist gaengige Praxis, bei Designs die staendig die regelmaessig Probleme 
haben die Timing Constraints einzuhalten, einfach verschiedene 
Strategien/Settings in parallelen durchlaeufen zu starten und das beste 
Ergebnis herauszupicken.

Autor: FPGA zum Spass (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Quartus schreibt dazu:

"Specifies that Quartus should perform physical synthesis optimizations 
on registers, specifically allowing register retiming, during synthesis 
and fitting to increase circuit performance."

Also sowohl Synthese als auch P&R.

Autor: Tobias B. (Firma: www.elpra.de) (ttobsen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, aber trotzdem verstehe ich dein Problem nicht. Wo genau macht dir 
jetzt das Register Retiming Aerger?

Autor: FPGA zum Spass (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe kein konkretes Problem, schrieb ich doch oben.

Es geht mir um Erfahrungswerte von Leuten die es selbst schon länger 
einsetzen.
Etwa ob die Probleme, die auf Wikipedia erwähnt sind, tatsächlich 
auftreten.

Offensichtlich gibt es aber kaum jemanden der es nutzt oder es hat 
keiner Lust zu schreiben.

Autor: Markus F. (mfro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FPGA zum Spass schrieb im Beitrag #5870882:
> Offensichtlich gibt es aber kaum jemanden der es nutzt oder es hat
> keiner Lust zu schreiben.

Das wird praktisch jeder nutzen, der timing-kritische Designs hat, alle 
Mittel des Synthesetools ausspielt, um ein Closure hinzubekommen und 
keine "harten" Anforderungen an die Verifikation hat.

Ich, zum Beispiel. In den meisten Fällen betreffen mich die bei 
Wikipedia genannten Nachteile nicht oder sind mir schlicht wurscht.

: Bearbeitet durch User

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.

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