2016-03-25 3 views
1

dekodieren Ich habe eine Registerzuordnung, die mit einem Skript generiert wird. Die Ausgabe des Moduls ist eine riesige gepackte Struktur. Dies ist normalerweise kein Problem, aber wenn ich meinen Code Fussel ich Warnungen wie folgt aus:Name des gepackten Strukturelements basierend auf Bitposition

* W, UNCONO (./module_name.v,158) :: 'reg [1415]' ist nicht angeschlossen.

So kann ich sehen, dass eines meiner Registerbits nicht verwendet wird, was schlecht ist, aber welches ist es? Wie ordne ich die Bitposition in der gepackten Struktur dem benannten Strukturelement zurück?

Um zu klären suche ich nach einer Funktion irgendeiner Art, die eine Bitposition als Eingabe nimmt und den Namen des Strukturelements als Ausgabe zurückgibt.

Antwort

0

In einer gepackten Struktur sind die Bits von rechts nach links nummeriert, 0 bis N-1. Also, wenn Sie haben

typedef struct packed { 
logic sign; 
logic [7:0] exponent; 
logic [22:0] mantissa; 
} Float32; 

Float32 F; 

dann

assert (F.sign === F[31]); 
assert (F.exponent === F[30:23]); 
assert (F.mantissa === F[22:0]); 
+0

Ja, ich verstehe das, aber in diesem Fall hat meine Struktur Tausende von Elementen so dass ich von einem einfachen Weg bin nicht sicher, Bit # 1415 zur Karte zu einem Mitglied der Struktur ohne zu zählen. – nguthrie