Forum: FPGA, VHDL & Co. Retiming benutzen?


von FPGA zum Spass (Gast)


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?

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


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
von FPGA zum Spass (Gast)


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

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


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
von FPGA zum Spass (Gast)


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.

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


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.

von FPGA zum Spass (Gast)


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.

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

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

von FPGA zum Spass (Gast)


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.

von Markus F. (mfro)


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