Tableaux, structures et unions
Distinguer dimensions packed et unpacked, regrouper des champs et choisir une représentation adaptée au matériel.
Dimensions packed et unpacked
Une dimension placée avant le nom est packed. Ses bits forment un vecteur contigu sur lequel on peut faire des opérations arithmétiques, des comparaisons ou des sélections de tranches.
Une dimension placée après le nom est unpacked. Elle crée une collection d'éléments séparés.
logic [7:0] bytes [0:3];bytes est ici un tableau unpacked de quatre éléments. Chaque élément est un vecteur packed de 8 bits. bytes[2] sélectionne le troisième octet et bytes[2][7] son bit de poids fort.
Cette différence est importante dans les ports et les mémoires :
module sum4 (
input logic [7:0] i_data [0:3],
output logic