Forum: FPGA, VHDL & Co. Optimierer erzeugt unplausible Ergebnisse


von Tomtom (Gast)


Lesenswert?

Moin,

ich habe eine relativ "schmale" Anwendung entwickelt und anschließend 
versucht ein paar Optimierungen durchzuführen.
Witzigerweise sagt mir der Report des Compilers, dass die Anwendung mit 
Performance-Optimierer mehr Logikzellen beansprucht und eine geringere 
maximale Frequenz aufweist, als im platzsparenden und energieeffizienten 
Modus.

Trotz einiger Erfahrung hab ich das vorher noch nie erlebt.. Kann sich 
das jemand erklären und mir etwas erklären?

von Tom Tailor (Gast)


Lesenswert?

Tomtom schrieb:
> Kann sich das jemand erklären und mir etwas erklären

Die Prozesse passen jetzt nicht mehr in die vorher dafür vorgesehene 
Taktzahl, die zufällig komplett ausgefüllt wurde. Durch die Optimierung 
muss jetzt noch ein Takt drangehangen werden, der wiederum eine 
komplette zusätzliche Zelle beansprucht und somit die Frequenz scheinbar 
verlangsamt.
In diesem Fall war die Optimierung leider eine Verschlimmbesserung.

Tomtom schrieb:
> hab ich das vorher noch nie erlebt

Dieser Effekt kommt auch nur selten vor.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tomtom schrieb:
> Witzigerweise sagt mir der Report des Compilers
Welcher Compiler?
Oder machst du was mit FPGAs und meinst den Synthesizer? Falls ja: das 
Timing des Synthesizers kann schon mal nett danebenliegen. Was kommt 
nach der vollständigen Implementierung heraus?

von Tomtom (Gast)


Lesenswert?

Danke euch beiden.

@Lothar: Intel nennt den Synthesizer in der Quartus-Software nunmal 
Compiler :)

Die Implementierung habe ich schon abgeschlossen. Wie bereits 
geschrieben, handelt es sich eher um eine kleine Anwendung mit ca. 250 
Zeilen Code.

Wenn die Verschlimmbesserung durch den Optimierer allerdings daneben 
ging, frage ich mich, warum der Synthesizer das nicht selbstständig 
erkannt und "zurückrudert"..

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


Lesenswert?

Die Toolkette hoert dann auf, wenn alle Contraints erfuellt sind. Einen 
Workflow ala "mach mir mal so schnell wie moeglich" gibt es nicht, 
dafuer gibt es viel zuviele Freiheitsgrade beim P&R und wuerde 
Ewigkeiten dauern.

Dir bleibt nichts anderes uebrig als Timing Constraints zu setzen und 
diese immer weiter nach oben zu schrauben, bis die Implementierung fehl 
schlaegt. Und selbst dann gibt es noch weitere Strategien um da noch 
mehr heraus zukitzeln.

von Christoph Z. (christophz)


Lesenswert?

Tomtom schrieb:
> ich habe eine relativ "schmale" Anwendung entwickelt und anschließend
> versucht ein paar Optimierungen durchzuführen.

Was für Optimierungen? Pipelining? Paralleliesierung? Teilergebnisse 
vorher berechnen?

Optimieren heisst eine Zielgrösse verbessern (Anzahl Ressourcen, 
Stromverbrauch, Taktfrequenz), andere Grössen können dann schlechter 
werden.

Hier hatten wir "lustige" Effekte von Synthesizern bei Zählern 
untersucht:
Beitrag "Re: VHDL Frequenz der Clock durch Code ändern"

von Cyblord -. (cyblord)


Lesenswert?

Tomtom schrieb:
> @Lothar: Intel nennt den Synthesizer in der Quartus-Software nunmal
> Compiler :)

Ist halt komplett falsch. Du kannst einen Baum auch Auto nennen, aber 
damit kann man schlecht Gespräche führen. Außer mit sich selbst.

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


Lesenswert?

Cyblord -. schrieb:
> Tomtom schrieb:
>> @Lothar: Intel nennt den Synthesizer in der Quartus-Software nunmal
>> Compiler :)
>
> Ist halt komplett falsch. Du kannst einen Baum auch Auto nennen, aber
> damit kann man schlecht Gespräche führen. Außer mit sich selbst.

Compiler ist Englisch fuer Uebersetzer. Und genau das passiert ja, Code 
wird in Netzliste uebersetzt.

von Markus F. (mfro)


Lesenswert?

Intel (Altera) nennt die Synthese nicht Compiler.

Es gibt ein "Compile Design" und darunter (u.A.) die Einzelschritte 
"Analysis & Synthesis" (ja, genau), "Fitter", "Assembler" und "Timing 
Analysis".

Ich kann nicht erkennen, was daran falsch sein soll.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tomtom schrieb:
> Intel nennt den Synthesizer in der Quartus-Software nunmal Compiler :)
"High Level Synthesis Compiler", weil in dieser Toolchain neben dem 
Synthesizer (der für die Umsetung in die Hardware zuständig ist) auch 
noch einen Compiler drin hat, der z.B. für die Simulation irgendwas mit 
irgendwelchen C/C++ Datein machen kann:
https://www.intel.com/content/www/us/en/programmable/documentation/ewa1457708982563.html

Aber letztlich ist im diesem Softwarepaket der Synthesizer zuständig, 
wenn es in Richtung Hardware geht.

Wenn es allerdings in Richtung Simulator geht, dann ist dort wirklich 
ein Compiler drin, der aus dem VHDL ausführbaren Code erzeugt. Beim ISIM 
ging das sogar soweit, dass aus der VHDL-Beschreibung samt der Testbench 
eine EXE-Datei erzeugt wurde.

Tobias B. schrieb:
> Compiler ist Englisch fuer Uebersetzer. Und genau das passiert ja, Code
> wird in Netzliste uebersetzt.
Allerdings ist mit "Compiler" eben die gesamte Toolchain von 
Code-Analyzer über Synthesizer, P&R über den Fitter bis hin zur Timing- 
und Poweranalyse gemeint. Denn zumindest stehen diese Tools alle unter 
"Compile Desgin":
https://www.intel.com/content/www/us/en/programmable/documentation/spj1513986956763.html
Und deshalb hat man da nach dem "Compilieren" das fertige Design zum 
Reinladen ins FPGA in der Hand.

So, jetzt haben wir das Haar aber glatt der Länge nach durchgespalten... 
;-)

: Bearbeitet durch Moderator
von Markus F. (mfro)


Lesenswert?

Lothar M. schrieb:
> So, jetzt haben wir das Haar aber glatt der Länge nach durchgespalten...

Nee, längst nicht ;)

Compiler heisst nicht (zumindest nicht nur) Übersetzer (wenn's auch im 
IT-Umfeld meist genau das heisst).

to compile heisst eigentlich "etwas zusammenstellen", "compile design" 
also "den Entwurf zusammenstellen".

Und das passt ja.

Der von dir verlinkte Compiler ist übrigens tatsächlich einer ;).
Den dürften die meisten (oder zumindest viele, ich jedenfalls) hier aber 
noch nie zu Gesicht bekommen haben. Der ist, soweit ich weiss, nur für 
"zahlende Gäste" als Bestandteil von Quartus Prime Pro verfügbar.

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


Lesenswert?

Lothar M. schrieb:
> Tobias B. schrieb:
>> Compiler ist Englisch fuer Uebersetzer. Und genau das passiert ja, Code
>> wird in Netzliste uebersetzt.
> Allerdings ist mit "Compiler" eben die gesamte Toolchain von
> Code-Analyzer über Synthesizer, P&R über den Fitter bis hin zur Timing-
> und Poweranalyse gemeint. Denn zumindest stehen diese Tools alle unter
> "Compile Desgin":
> 
https://www.intel.com/content/www/us/en/programmable/documentation/spj1513986956763.html
> Und deshalb hat man da nach dem "Compilieren" das fertige Design zum
> Reinladen ins FPGA in der Hand.
>
> So, jetzt haben wir das Haar aber glatt der Länge nach durchgespalten...
> ;-)

Das impliziert halt dass ein Compiler etwas erzeugt, was irgendwo im 
Sinne eines Prozessor ausgefuehrt wird. Compiler zu nehmen als das Wort 
was es im Englischen ist, kann auch erstmal nur Uebersetzer sein und 
damit ist es egal ob aus Code eine Netzliste oder FPGA Binary wird. 
Daher kann ich da auch noch den Unterschied zwischen Compile Design, bei 
dem wirklich wie ein Compiler gearbeitet wird mit all seinen Stages 
(Praeprozessor, Optimierung, Uebersetzung, ...) und Translate 
Design/Netlist, bei dem wirklich eine 1:1 Abbildung wie bei einem 
Woerterbuch stattfindet, nachvollziehen.

Aber ansonsten gebe ich dir Recht, ich finde die Terminologie auch 
ungluecklich das Compiler im Zusammenhang beim FPGA entwickeln nennen zu 
wollen. Aber so krass falsch wie es der Cyblord nennt, ist halt Quatsch.

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.