Forum: FPGA, VHDL & Co. Default Werte für Generics


von Fpga I. (fpga-ing)


Lesenswert?

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?

von Duke Scarring (Gast)


Lesenswert?

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

von Fpga I. (fpga-ing)


Lesenswert?

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
Noch kein Account? Hier anmelden.