Hallo zusammen, für meine VHDL Module nutze ich gerne Generics, um Parameter wie beispielsweise Bitbreiten, Betriebsmodi etc. zu definieren. Bisher habe ich neben dem Typen auch immer einen Default Wert mit angegeben. Bei der Instantiierung weise ich den Generics jedoch immer feste Werte zu und verlasse mich nicht auf die Default Werte. Ob man die Default Werte für Generics überhaupt definieren sollte, bin ich mir aber nicht ganz schlüssig. Vorteile: - Man sieht bei einem Modul gleich die "typischen" Werte, mit denen ggf. als erstes simuliert wurde. - Fügt man später ein Generic hinzu, bleibt der Code Lauffähig, auch wenn man die Instanzen nicht anpasst Nachteile: - Da ich eh alle Generics bei der Instanziierung definiere, kommt der Default Wert nie zu Einsatz. - Ist ein Generic bei der Instanziierung nicht definiert, gibt es keine Fehlermeldung, d.h. vielleicht läuft mein Modul mit einer falschen Konfiguration. - Bei der Verwendung von Component gibt es verschiedene Stellen, bei denen ein Generic definiert werden kann: im VHDL Modul, in der Component Declaration, in der Component Instantiierung. Redundante Informationen sind potenzielle Fehlerquellen... Die Argumente sprechen gegen die Default Werte bei Generics, dennoch habe ich das Gefühl, dass ein Code mit Default Werten die sauberere Implementierung ist. Woran ich das festmache, kann ich leider nicht so richtig fassen, es ist eher subjektiv... Wie ist Eure Handhabung diesbezüglich? Habt Ihr einen Codingstyle, der die Zuweisung von Default werten fordert oder verbietet? Welche Argumente sprechen aus Eurer Perspektive für oder gegen Default Werte bei Generics?
Fpga I. schrieb: > Wie ist Eure Handhabung diesbezüglich? Sowohl als auch. > Habt Ihr einen Codingstyle, der die Zuweisung von Default werten fordert > oder verbietet? Nein. Ich mach oft einen Default-Wert hin, damit die Simulation läuft, da ich den Default nicht in der Testbench haben will. > im VHDL Modul, in der Component Declaration, in der Component Instantiierung. Die Component Declaration lasse ich gerne weg. Das Modul wird per "instance_xx: entity library.module" instanziiert. Eine Stelle weniger, wo man Code bei Änderungen anfassen muß. Duke
Duke Scarring schrieb: >> im VHDL Modul, in der Component Declaration, in der Component Instantiierung. > Die Component Declaration lasse ich gerne weg. Das Modul wird per > "instance_xx: entity library.module" instanziiert. Eine Stelle weniger, > wo man Code bei Änderungen anfassen muß. Das handhabe ich nach Möglichkeit ebenso, konnte aber noch nicht all meine Kunden umerziehen :-)
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.