2009-02-04 4 views
7

Suite à this question sur la différence entre les vecteurs emballés et déballés dans SV, pourquoi voudrais-je jamais utiliser des vecteurs non emballés?
vecteurs paniers ont ces avantages que les vecteurs déballés n'ont pas:Pourquoi devrais-je utiliser des vecteurs décompressés dans System Verilog?

  • Vous pouvez effectuer des opérations sur les bits sages
  • Vous pouvez effectuer des opérations arithmétiques sur les
  • Vous pouvez prendre des tranches de les
  • vous pouvez les copier comme vecteur ensemble
  • vous pouvez faire tout ce que vous pouvez avec ONU vecteurs emballés (à ma connaissance)

Quel avantage les vecteurs non compressés ont-ils sur les vecteurs surchargés?

Répondre

9

Il y a une autre raison pour laquelle j'aime utiliser déballé. Avec unpacked, il n'y a pas de tentation (et de possibilité accidentelle) de traiter le nom du tableau entier comme une variable, et de faire une affectation erronée. Il n'y a pas non plus de possibilité de saignement d'un élément à un autre, alors que vous pensez avoir accès à B bits de l'élément N, mais en réalité vous pouvez accéder aux bits K de l'élément N et BK de l'élément N + -1. Ma philosophie est de ne garder que les choses qui appartiennent ensemble comme une «unité d'information» dans la dimension emballée. Tout le reste dans la dimension déballée. La pensée par défaut devrait être décompressée, et n'emballer que ce dont vous avez besoin.

Par exemple, si je 9 ports, chacun avec 21 bits d'information, je voudrais déclarer comme:

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

La partie 20:0 constitue une unité d'information, cédé et échantillonné ensemble (nominalement). La séparation de ces bits détruira le protocole ou le caractère du port. D'un autre côté, changer le nombre de ports de 9 à, par exemple, 16, ne va pas affecter la nature de l'information dans chaque port, de sorte que les 9 ports appartiennent vraiment à la dimension déballée dans mon esprit. L'espoir qui pourrait vous donner un paradigme à penser ... Dans ce paradigme, vous seriez surpris de voir combien de choses commencent à apparaître déballées que vous avez toujours pensé étaient emballés !!

+0

Cette réponse est meilleure que la réponse acceptée précédente, car elle donne * design * raisons pour cela, donc j'accepte la vôtre à la place. –

7

Les ensembles non emballés existent pour plusieurs raisons.

1) Les rangées empaquetées sont stockées en mémoire sous la forme d'une séquence continue de bits. Les baies non emballées peuvent avoir chaque élément stocké indépendamment, ce qui peut améliorer les performances de simulation.

2) Les matrices non empaquetées peuvent être de types qui ne sont pas des vecteurs de bits. Les tableaux d'entiers, d'octets, d'événements, de structures, de classes, etc. ne peuvent être décompressés.

3) La plupart des méthodes de manipulation de la matrice ne fonctionnent que sur les baies non empaquetées.

4) Peut-être, seules les matrices non empaquetées peuvent être affectées à l'utilisation de littéraux de tableau. Je ne suis pas sûr.

Il peut y avoir d'autres raisons.