Optimierer erzeugt unplausible Ergebnisse

Gast #6291857
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?
Gast #6291910
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.
Gast #6291963
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"..
(Firma: www.elpra.de) Persönliche Seite #6291976
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.
#6294414
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"
(Firma: www.elpra.de) Persönliche Seite #6296208
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.
Moderator (Firma: Titel) Persönliche Seite #6296386
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... 
;-)
#6296456
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.
(Firma: www.elpra.de) Persönliche Seite #6296706
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren