mikrocontroller.net

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


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.
von Markus W. (elektrowagi78) Benutzerseite


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


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


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


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


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


Bewertung
-1 lesenswert
nicht 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 Markus W. (elektrowagi78) Benutzerseite


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

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.