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. ?
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.
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.
Jede Synthese wird mit einer Random Seed gestartet. Du hast einfach nur Gluek gehabt. "Wer wuerfelt gewinnt!"
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
Ich denk mal in den Defaults sind noch gar nicht die Opt-Vorgänge aktiviert. Wahrscheinlich haben die dann schon gleich viel gebracht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.