Forum: FPGA, VHDL & Co. VHDL: eigene Attribute mit Parameter


von --gast-- (Gast)


Lesenswert?

Hallo,

ich beschäftige mich zur Zeit mit den attributes von VHDL und würde 
gerne wissen, ob es möglich ist eigene Attribute mit Parameter zu 
definieren. Bei den pre-defined attributes gibt es ja einige, z.B. 
character'pos('A') ergibt 65.

Ich hab schon versucht das Attribut ähnlich einer Funktion zu 
definieren:

type arrayOfInt is array(natural range <>) of integer;
constant myList: arrayOfInt(0 to 7) := (3, 1, 4, 1, 5, 9, 2, 7);
attribute myAttribute(myParameter: integer): integer;
attribute myAttribute of myList: constant is myList(myParameter);

aber Vivado stört sich bereits an der Klammer.


Kann mir jemand helfen?
Vielen Dank!!

PS: (Ich weiß, dass dieses Beispiel sinnlos ist. Ich möchte einfach nur 
wissen, ob es überhaupt möglich ist. Eine konkrete Anwendung habe ich 
nicht.)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

--gast-- schrieb:
> aber Vivado stört sich bereits an der Klammer.
An welcher? Und mit welchem Wortlaut?

von --gast-- (Gast)


Lesenswert?

Der Syntax-Check des Parsers beschwert sich bereits beim Abspeichern bei 
der Zeile
attribute myAttribute(myParameter: integer): integer;

Fehler-Meldung: [HDL 9-806] Syntax error near "(".

von Duke Scarring (Gast)


Lesenswert?

Von Attributen mit Parametern habe ich noch nix gehört.
Xilinx verwendet Attribute z.B. so:
1
    signal state,nextstate : StType;
2
   
3
    attribute fsm_encoding : string;
4
    attribute fsm_encoding of state : signal is "gray";
5
    attribute fsm_encoding of nextstate : signal is "gray";

Oder so:
1
    signal adc_dco            : std_ulogic;
2
3
    attribute keep : string;
4
    attribute keep of adc_dco : signal is "true";

Duke

von Sigi (Gast)


Lesenswert?

Die Parametrisierung von Attributen zielt ja
auf das Überschreiben der Typen hinaus, also
das was in C++ als Template bezeichnet wird.
Das gibt's in VHDL nicht (auch Vergleichbares
in Verilog nicht.). Dafür muss je Typ ein
Attribute definiert werden.

Ausserdem gehört ja das Attribute zu einem
Objekt bzw. zu derem Objekt-Typ (beschreibt
z.B. die Länge eines Vektors etc.) und damit
müsste ja auch in diesem Objekt-Typ der
entsprechende Teiltyp überschrieben werden
usw. Also viel zu kompliziert...

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.