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 !!
Esta respuesta es mejor que la respuesta aceptada anterior, porque da * design * razones para esto, por lo que estoy aceptando la suya. –