Domanda

A seguito su questo domanda la differenza tra vettori confezionati e sfusi in SV, perché mai dovrei voler utilizzare vettori non imballati?
Pranzo vettori hanno questi vantaggi che spacchettato vettori non hanno:

  • È possibile eseguire operazioni bit per bit su di loro
  • È possibile eseguire operazioni aritmetiche su di essi
  • Si può prendere fette di loro
  • È possibile copiarli nel suo complesso vettore
  • Si può fare tutto quello che può con un vettori confezionati (al meglio delle mie conoscenze)

Che vantaggio fare vettori non imballati sono più di vettori confezionati?

È stato utile?

Soluzione

C'è un altro motivo per cui mi piace usare spacchettato. Con decompresso, non c'è tentazione (e possibilità accidentale) di trattare l'intero nome di matrice come una variabile, e fare un'assegnazione errata. Non v'è inoltre alcuna possibilità di bit-sanguinava da un elemento all'altro, quando si potrebbe pensare si sta accedendo bit B di elemento N, ma in realtà si può essere accedendo K bit di elementi N e BK bit di elemento di N + -1. .

La mia filosofia è quella di mantenere solo le cose che appartengono insieme come una "unità di informazione" nella dimensione imballato. Tutto il resto nella dimensione decompressa. Il pensiero di default dovrebbe venire sballato, e confezionare 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];

Il 20:0 parte costituisce un'unità di informazione, assegnato e campionato insieme (nominalmente). Suddividere i bit parte distruggerà il protocollo o il carattere del porto. D'altra parte, cambiando il numero di porte da 9 a, diciamo, 16, non ha intenzione di influenzare la natura delle informazioni in ogni porto, in modo che le 9 porte appartengono realmente nella dimensione decompressa nella mia mente.

La speranza che potrebbe dare un paradigma per pensare insieme ... In questo paradigma, si sarebbe sorpreso di quante cose iniziano a comparire decompresso che hai sempre pensato erano pieni !!

Altri suggerimenti

Esistono array non imballati per diversi motivi.

1) pranzo matrici vengono memorizzati in memoria, come una sequenza continua di bit. array imballati possono avere ogni elemento memorizzato indipendentemente che può produrre maggiori prestazioni simulazione.

2) array imballati possono essere di un tipo non sono vettori di bit. Array di int, byte, eventi, struct, classi, ecc può essere tolta soltanto.

3) La maggior parte dei metodi di manipolazione di matrice funzionano solo su array sfusi.

4) Forse, solo gli array sfusi possono essere assegnati ad usare letterali array. Non sono sicuro.

Ci possono essere altri motivi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top