Forum: FPGA, VHDL & Co. Vivado und die undurchsichtigen Synthese-Einstellungen


von Michael W. (Gast)


Lesenswert?

Wieder mal Überraschendes bei Vivado:

Wir wissen, dass AREA-Optimization zu geringerer Chipfläche führt aber 
mehr Probleme existieren, das timing zu treffen. Ferner führen 
Timing-orientierte Vorgaben zu eventuell getroffenem timing aber oft zu 
erheblich mehr FFs. Die Defauls führen zu einem Kompromiss. Soweit, so 
gut.

Nun habe ich eine Schaltung, die zu folgenden Ergebnissen führte und das 
timing knapp um 1ns bei 100MHz verpasste:

LUT      1588
LUTRAM   7
FF       1722
BRAM     2

Eingestellt waren für Synthese und Implementierung die Defaults.

Da das timing nicht getroffen wurde, habe ich den Fiming optimizedflow 
für die Implementierung eingestellt. Durch eine Unachtsamkeit habe ich 
aber die Synthesis auf Area stehen gelassen.

Ergebnis:

LUT      1472
LUTRAM   7
FF       1694
BRAM     2

und timing knapp getroffen! WNS -1.1ns  hinterher +0.4ns slack.

Die Einstellungen die sich formell strategisch widersprechen, führen als 
zu beiderseits besseren Ergebnissen. Wer erklärt es mir?

Gegencheck: Beides auf Default erzeugt wieder die alten Werte. Wenn ich 
die Synthese auch auf Timing-optimized stelle, wird es kaum besser oder 
schneller, er frisst aber fast 2000 FFs.

?

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


Lesenswert?

Wie viele Logigzellen aht der FPGA denn insgesamt? Ich schaetze die Area 
Optimierunen haben kaum Einfluss wenn noch massig Platz verfuegbar ist.

Wichtige Merkregel: Optimiert wird nur wo optimiert werden muss! Sobald 
ale Contraints erfuellt sind, hoert auch die Optimierung auf.

von Vancouver (Gast)


Lesenswert?

M. W. schrieb:
> Wer erklärt es mir?

Die verwendeten Optimierungsstrategien sind meistens Heuristiken, die 
zwar im Schnitt bei den jeweiligen Optimierungszielen bessere Ergebnisse 
liefern. Das bedeutet nicht, dass sie immer bessere Ergbenisse 
liefern. Es kommt relativ häufig vor, dass ein Area-optimiertes Design 
bessere Timingwerte liefert als eines, das für Timing optimiert wurde. 
Das hängt vom Design ab und ist aufgrund der Komplexität des 
Optimierungsproblems nicht vorhersagbar.
Bei großen Designs mit sehr kritischen Timingconstraints macht man daher 
oftmals viele Synthese-/Implementierungsdurchläufe parallel, die sich in 
den Vorgaben etwas unterscheiden. Das nennt sich 
Entwurfsraumexploration, und ist beim ASIC-Design der normale Weg. Dort 
liefern die ersten Durchläufe meistens katastrophale Timingwerte, die im 
Laufe der Zeit dann nach und nach besser werden.
Wenn du ein Timing- oder Area-kritisches Design hast, musst du immer mit 
verschiedenen Parametern rumexperimentieren bis eine Lösung gefunden 
wurde, die alle Constraints erfüllt. Besonders interessant wird das, 
wenn Synthese und Implementierung unterschiedliche Vorgaben erhalten. 
Das kann, wie in deinem Fall, zu einer richtigen Lösung führen. Wie 
gesagt, Heuristiken.

von svedisk ficklampa (Gast)


Lesenswert?

Jede Synthese wird mit einer Random Seed gestartet.

Du hast einfach nur Gluek gehabt.

"Wer wuerfelt gewinnt!"

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


Lesenswert?

svedisk ficklampa schrieb:
> Jede Synthese wird mit einer Random Seed gestartet.
>
> Du hast einfach nur Gluek gehabt.
>
> "Wer wuerfelt gewinnt!"

Das ist/war beim Mapping, nicht bei der Synthese der Fall und diesen 
Ansatz gibt es bei Vivado auch nicht mehr. Siehe z.B.:

https://www.xilinx.com/support/answers/54776.html

von Tim (Gast)


Lesenswert?

Ich denk mal in den Defaults sind noch gar nicht die Opt-Vorgänge 
aktiviert. Wahrscheinlich haben die dann schon gleich viel gebracht.

von Michael W. (Gast)


Lesenswert?

Tim schrieb:
> Wahrscheinlich haben die dann schon gleich viel gebracht.
Doch, es ändert sich ja. Also haben sie auch eine Auswirkung.

jemand schrieb:
> Jede Synthese wird mit einer Random Seed gestartet.
> Du hast einfach nur Gluek gehabt.
> "Wer wuerfelt gewinnt!"
Nein, die Ergebnisse sind reproduzierbar. Bis aufs FF genau.

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.