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?
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.
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?
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"..
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.
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"
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.
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.
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.