2009-02-04 14 views
7

Seguito su this domanda sulla differenza tra i vettori imballati e decompressi in SV, perché dovrei voler utilizzare mai vettori decompressi?
Pranzo vettori hanno questi vantaggi che spacchettato vettori non hanno:perché dovrei usare i vettori decompressi in System Verilog?

  • È possibile eseguire operazioni bit-saggio su di loro
  • È possibile eseguire operazioni aritmetiche su di essi
  • Si può prendere fette di loro
  • È possibile copiare nel suo complesso vettore
  • si può fare tutto quello che può con delle Nazioni Unite vettori confezionati (al meglio delle mie conoscenze)

Che vantaggio hanno i vettori non confezionati sopra i vettori imballati?

risposta

9

C'è un altro motivo per cui mi piace usare spacchettato. Con scompattato, non vi è alcuna tentazione (e possibilità accidentale) di considerare l'intero nome dell'array come una variabile e fare un assegnamento errato. Non vi è inoltre alcuna possibilità di emettere bit da un elemento a un altro, quando si può pensare di accedere ai bit B dell'elemento N, ma in realtà si può accedere ai bit K dell'elemento N e ai bit BK dell'elemento N + -1.

La mia filosofia è di mantenere solo le cose che appartengono insieme come una "unità di informazioni" nella dimensione imballata. Tutto il resto nella dimensione scompattata. Il pensiero predefinito dovrebbe essere decompresso e racchiudere solo ciò che è necessario.

Ad esempio, se ho 9 porte, ciascuna con 21 bit di informazione, desidero dichiarare come:

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

La parte 20:0 costituisce un'unità di informazione, assegnato e campionamento insieme (nominalmente). La divisione di questi bit distruggerà il protocollo o il carattere della porta. D'altro canto, la modifica del numero di porte da 9 a, diciamo, di 16, non influenzerà la natura delle informazioni in ciascuna porta, quindi le 9 porte appartengono davvero alla dimensione non compressa nella mia mente.

Spero che questo possa darti un paradigma per riflettere ... In questo paradigma, ti sorprenderebbe vedere quante cose iniziano ad apparire spacchettate che hai sempre pensato fossero imballate !!

+0

Questa risposta è migliore della risposta accettata in precedenza, perché fornisce * design * ragioni per questo, quindi accetto invece il tuo. –

7

Gli array decompressi esistono per diversi motivi.

1) Gli array compressi vengono archiviati in memoria come una sequenza continua di bit. Gli array decompressi possono avere ciascun elemento memorizzato in modo indipendente, il che può produrre prestazioni di simulazione più elevate.

2) Gli array non imballati possono essere di tipi che non sono bit vettori. Le matrici di interi, byte, eventi, strutture, classi, ecc. Possono essere decompresse.

3) La maggior parte dei metodi di manipolazione della matrice funziona solo sugli array decompressi.

4) Forse, solo gli array decompressi possono essere assegnati all'utilizzo di letterali di array. Non ne sono sicuro.

Ci possono essere altri motivi.