Forum: FPGA, VHDL & Co. Mirroring Array, Vektor


von Benjamin Hlava (Gast)


Angehängte Dateien:

Lesenswert?

Hallo liebe Foren-Nutzer,

ich beschäftige mich nun schon längere Zeit mit einer Lösung um über 
einen signal_spy die Länge eines Arrays, Vektors oder ähnlichem 
festzustellen. Das Ganze wird in VHDL geschrieben.

Mein Lösungsansatz wäre fürs Erste der, dass ich aus einer Schleife 
herausspringe sobald ich das Bit nicht mehr über ein signal_force auf 
den abgefragten Wert setzen kann. Bsp. siehe Anhang

Hoffe meine Ausdrucksweise ist soweit verständlich

Mit freundlichen Grüßen
Benjamin Hlava

von Duke Scarring (Gast)


Lesenswert?

Abgesehen davon, das ich signal_spy nicht empfehlen kann, da es 
proprietär ist und mit VHDL2008 eine ähnliche Lösung zur Verfügung 
steht:

Die Attribute 'range, 'lfet, 'right, 'high und 'low sind Dir bekannt?

Duke

von Benjamin H. (Firma: Sigmatek GmbH & Co KG) (benjamin_hlava)


Lesenswert?

Also all das findet auf der Testbench-Ebene statt.

Mir geht es in dem Sinn nur darum, dass ich ein Array mit natural range 
<> eingubunden in einer Entity verwende. Je nachdem wie Diese dann im 
Design verwendet wird weist das Array eine andere Größe auf.

In einer anderen Entity möchte ich die Information erhalten wie groß 
dieses Array in dieser Design-Zusammensetzung ist, ohne dieses Signal 
als Eingang zu verwenden. Somit, wenn ich dich richtig verstehe, weiß 
ich nicht wie mir diese Attribute weiterhelfen.

Aber danke für deinen Beitrag :)

LG
Benjamin

von Christoph Z. (christophz)


Lesenswert?

Benjamin Hlava schrieb:
> Mir geht es in dem Sinn nur darum, dass ich ein Array mit natural range
> <> eingubunden in einer Entity verwende. Je nachdem wie Diese dann im
> Design verwendet wird weist das Array eine andere Größe auf.
>
> In einer anderen Entity möchte ich die Information erhalten wie groß
> dieses Array in dieser Design-Zusammensetzung ist, ohne dieses Signal
> als Eingang zu verwenden. Somit, wenn ich dich richtig verstehe, weiß
> ich nicht wie mir diese Attribute weiterhelfen.

Ok ich seh dein Problem. Die Attribute müsstest du mit dem VHDL2008 
Ansatz eigentlich trotzdem nutzen können (Wenn deine Tools das können 
ist das eine super Sache).

Was ein Ansatz sein könnte, dafür kenne ich eure Designs aber zu 
schlecht, ist die Konstanten zu nutzen, die für das Einbinden zuständig 
sind.

Also z. B. hast du ein Package wo all die fraglichen Komponenten 
deklariert sind und vielleicht auch eine Konstante die bei der 
Implementierung die Länge dieses Arrays steuert.

Bei mir gibt es in den neueren Projekten dazu ein globals_pkg.vhd wo die 
Konstanten und Definitionen drin stehen, die zum Top Level gehören bzw. 
Gerätespezifisch sind.

Dieses Package kann ich natürlich in der Testbench einbinden und bekomme 
so z. B. die Information über die Breite des herausgeführten 
Datenbusses.

von Benjamin H. (Firma: Sigmatek GmbH & Co KG) (benjamin_hlava)


Lesenswert?

Nein. Also Konstanten stehen hier nicht zur Debatte :)
Durch die Anzahl an Entities auf der Testbench-Ebene ergibt sich eine 
gewisse Größe des Arrays. Dort wo dieses Array auch als Eingang benutzt 
wird wird dann mithilfe der schon vorher erwähnten Attribute 'length 
'high 'low etc. die Größe ermittelt. Da jedoch derjenige Prozess im 
Hintergrund läuft, ohne Änderungen am schon bestehenden Design vornehmen 
zu müssen, wäre eine Lösung mit Konstanten zu viel Aufwand.

Grundsätzlich funktioniert ja die Lösung example.txt auch schon. Hört 
sich vielleicht blöd an, aber: Es geht mir um die Errormeldung im 
Transcript vom Modelsim, weil das Objekt mit dem nächst höheren Index 
nicht mehr vorhanden ist. Object '...' does not exist. So wollte ich 
fragen ob es vielleicht noch eine andere Möglichkeit/schönere Lösung 
gibt um diese Fehlermeldung zu umgehen.
Ist eine Kleinigkeit aber für mich trotzdem nicht uninteressant :)

LG
Benjamin

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.