VHDL: eigene Attribute mit Parameter

Gast #4295289
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.)
Gast #4298427
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
Gast #4299338
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren