2009-02-04 15 views
7

Siguiendo con this pregunta sobre la diferencia entre vectores empaquetados y no empaquetados en SV, ¿por qué querría usar vectores sin empaquetar?
vectores de pic tener estas ventajas que desarmaba vectores no tienen:¿por qué debería usar vectores sin empaquetar en System Verilog?

  • Se pueden realizar operaciones bit a bit en ellos
  • Se pueden realizar operaciones aritméticas sobre ellos
  • Puede tomar rebanadas de ellos
  • puede copiarlos en su conjunto un vector
  • puede hacer cualquier cosa que pueda con la ONU vectores empaquetados (a lo mejor de mi conocimiento)

¿Qué ventaja tienen los vectores sin empaquetar sobre los vectores empaquetados?

Respuesta

9

Hay otra razón por la que me gusta usar desempaquetar. Una vez desempaquetado, no hay tentación (y posibilidad accidental) de tratar el nombre completo de la matriz como una variable, y hacer una asignación errónea. Tampoco hay posibilidad de sangrado de bits de un elemento a otro, cuando puede estar pensando que está accediendo a B bits del elemento N, pero en realidad puede estar accediendo a K bits del elemento N y bits BK del elemento N + -1.

Mi filosofía es mantener solo las cosas que pertenecen juntas como una "unidad de información" en la dimensión empaquetada. Todo lo demás en la dimensión sin embalaje. El pensamiento predeterminado debe desempaquetarse y empacar solo lo que necesita.

Por ejemplo, si tengo 9 puertos, cada uno con 21 bits de información, me gustaría declarará como:

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

La parte 20:0 constituye una unidad de información, asignado y probamos juntos (nominalmente) Dividir esos bits separados destruirá el protocolo o el carácter del puerto. Por otro lado, cambiar el número de puertos de 9 a, por ejemplo, 16, no va a afectar la naturaleza de la información en cada puerto, por lo que los 9 puertos realmente pertenecen a la dimensión no empaquetada en mi mente.

Espero que pueda darle un paradigma para pensar ... En este paradigma, se sorprendería de cuántas cosas comienzan a aparecer sin embalaje que siempre pensó que estaban llenas !!

+0

Esta respuesta es mejor que la respuesta aceptada anterior, porque da * design * razones para esto, por lo que estoy aceptando la suya. –

7

Las matrices desempaquetadas existen por varias razones.

1) Las matrices empaquetadas se almacenan en la memoria como una secuencia continua de bits. Las matrices desempacadas pueden tener cada elemento almacenado de forma independiente, lo que puede producir un mayor rendimiento de simulación.

2) Las matrices desempaquetadas pueden ser de tipos que no son vectores de bits. Las matrices de ints, bytes, eventos, estructuras, clases, etc. solo se pueden desempaquetar.

3) La mayoría de los métodos de manipulación de matrices solo funcionan en matrices desempacadas.

4) Tal vez, solo las matrices desempaquetadas se pueden asignar al uso de literales de matriz. No estoy seguro.

Puede haber otras razones.

Cuestiones relacionadas