Hallo, bei einem Beispielcode aus dem I-net-Fundus fand ich div. Modul-Varianten für den gleichen Einsatzzweck mit der Begründung, dass die hart kodierte Varianten schneller wären, als die äquivalenten Module mit Generic Parameter. Kann mir bitte jemand das erklären? Ich dachte, Generic wäre ein Weg, Module flexibler und mehrfach verwendbar zu machen. Bei der Synthese muss dann doch alles in HW gepresst werden - und die ist ja wohl nicht variabel.
> Ich dachte, Generic wäre ein Weg, Module flexibler und mehrfach > verwendbar zu machen. Das ist wie im "normalen" Leben auch: Ein "Universalauto" hat einen kleinen Motor (Verbrauch), 7 Sitzplätze (Ausflüge), einen riesigen Kofferraum und eine Anhängekupplung. Warum werden aber ausschliesslich lauter "Spezialautos" gebaut? Wenn du etwas flexibel beschreibst, dann bekommst du ab einer gewissen Komplexität fast automatisch unnötigen Overhead, der von der Toolchain erkannt und rausoptimiert werden muß. Wenn du nur genau das beschreibst, was du brauchst, sind Optimierungen nicht nötig oder zumindest viel einfacher. Ich codiere idR. erst mit harten Werten. Wenn sich das Modul dann bewährt, wird es generisch umgeschrieben. Dann kann ich vergleichen, was es kostet, wenn ich an irgendeiner Schraube drehe... ;-)
hi, also module mit generic parametern sollten modulen mit hart kodierten konstanten defacto gleichwertig sein. in der synthesezeit bzw. elaborationszeit gibt es evtl kleine unterschiede aber das finale resultat sollte equivalent sein. generics sind schliesslich auch nur elaboration time constants! da muss nichts rausoptimiert werden, da ja nur fuer den jeweiligen konstanten wert wirklich synthetisiert wird. btw: noch besser als generics finde ich, module so zu schreiben, dass sie sich automatisch an den einsatz anpassen. also via *_vector, iterationen via 'range, 'left,'right, ... geht leider nicht fuer alles aber wenns es geht generic settings aus input properties abzuleiten ist dies besser als ein generic zu machen. regards
nixda schrieb: > also module mit generic parametern sollten modulen mit hart kodierten > konstanten defacto gleichwertig sein. Ich meinte eigentlich, dass manche durch einen sehr generischen Ansatz dann auch zu einer umständlichen Schreibweise neigen. Und z.B. statt eines Schieberegisters einen Multiplexer einsetzen, einfach nur, weil es sich schöner schreiben lässt...
> Ich meinte eigentlich, dass manche durch einen sehr generischen Ansatz > dann auch zu einer umständlichen Schreibweise neigen. Ok, aber eine prosaische Ader kann man ja nicht dem Generic anlasten. Ich würde genauso vorgehen, wie von Lothar vorgeschlagen, bzw. habe es auch so gemacht. Erst ein Modul fertig gemacht und dann ein, zwei Werte gegen Generics ausgetauscht. Dann ist also die These, dass ein Modul mit Generics langsamer sein soll "Humbug"? > module so zu schreiben, dass sie sich automatisch an den einsatz anpassen. > also via *_vector, iterationen via 'range, 'left,'right, ... geht leider > nicht fuer alles aber wenns es geht generic settings aus input properties > abzuleiten ist dies besser als ein generic zu machen. Hm, ich habe auch schon versucht, Attribute zu verwenden, aber das ableiten von properties ist mir noch nicht klar. Könntest Du dafür bitte mal ein Beispiel geben?
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.