Frage

Im Anschluss an diese Frage über den Unterschied zwischen verpackter und unverpackten Vektoren in SV, warum sollte ich jemals ausgepackt Vektoren verwenden?
Verpackt Vektoren haben diese Vorteile, die Vektoren entpackt nicht haben:

  • Sie können ausführen bitweise Operationen auf ihnen
  • Sie können auf sie arithmetische Operationen durchführen
  • Sie können Scheiben von ihnen nehmen
  • Sie können sie als Ganzes Vektor kopieren
  • Sie können alles tun, können Sie mit un gepackt Vektoren (nach bestem Wissen und Gewissen)

Welchen Vorteil haben entpackte Vektoren über gepackt Vektoren?

War es hilfreich?

Lösung

Es gibt einen weiteren Grund, warum Ich mag ausgepackt verwenden. Mit ausgepackt, gibt es keine Versuchung (und zufällige Möglichkeit) den gesamten Array-Namen als Variable behandelt und eine fehlerhafte Zuordnung machen. Es gibt auch keine Möglichkeit, Bit-Blutungen von einem Element zum anderen, wenn Sie vielleicht denken Sie B Bits des Elements N zugreifen, aber in Wirklichkeit kann man K Bits des Elements N und BK Bits des Elements N + -1 zugreifen. .

Meine Philosophie ist, nur die Dinge zu halten, die zusammen als „Informationseinheit“ gehören in der gepackten Dimension. Alles andere in der entpackten Dimension. Der Standard Denken sollte ausgepackt werden, und packen Sie nur das, was Sie benötigen.

Zum Beispiel, wenn ich 9 Ports, die jeweils mit 21 Bits von Informationen, würde Ich mag es zu erklären, wie:

input logic [20:0] p1 [9];

Die 20:0 Teil bildet eine Informationseinheit zugeordnet und zusammen abgetastet (nominell). Splitting auseinander diese Bits wird das Protokoll oder den Charakter des Hafens zerstören. Auf der anderen Seite, die Anzahl der Ports von 9 bis etwa 16 zu ändern, wird nicht die Art der Informationen, die in jedem Hafen beeinflussen, so dass das 9-Ports wirklich in der entpackten Dimension in meinem Kopf gehört.

Hoffnung, dass Sie ein Paradigma geben zusammen zu denken ... In diesem Paradigma, würden Sie überrascht sein, wie viele Dinge beginnen, ausgepackt erscheinen, dass Sie immer voll gedacht waren !!

Andere Tipps

Entpackte Arrays aus mehreren Gründen bestehen.

1) gepackten Anordnungen werden im Speicher als eine kontinuierliche Folge von Bits gespeichert. Entpackten Arrays kann jedes Element unabhängig gespeichert haben, die größer ist Simulationsleistung ergeben kann.

2) Entpackte Arrays von Typen sein, die nicht Bitvektoren sind. Arrays von Ints, Bytes, Ereignisse, Strukturen, Klassen, etc. können nur ausgepackt werden.

3) Die meisten der Manipulation Array Methoden nur auf unverpackten Arrays arbeiten.

4) Vielleicht nur ausgepackt Arrays kann zur Verwendung von Array-Literale zugewiesen werden. Ich bin nicht sicher.

Es kann andere Gründe geben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top