2017-08-23 1 views
0

J'ai une liste de réseau qui sont définis de manière:Tableau de tableaux SystemVerilog

bit [2:0] Param1[8]; 
. 
. 
bit [2:0] Param16[8]; 

Je veux créer une liste de ces tableau afin de iterarte sur eux:

bit [2:0] array[16][8] = {Param1, Param2 ... Param16}; 

mais quand J'essaie d'écrire des bits longs de 3 bits à chaque tableau à l'intérieur de ce tableau, j'ai de faux résultats. Qu'est-ce que je rate?

+0

vous avez supposé un ordre d'index invalide dans ce cas. Je suppose que vous vouliez dire 'bit [2: 0] array [8] [16]' – Serge

+1

Vous devez clarifier les résultats que vous attendez avec les résultats que vous obtenez. –

Répondre

0

Vous devez parcourir un tableau multidimensionnel pour lui assigner des valeurs.

Le code suivant ne fonctionne pas comme il a la suite aux questions:

  1. Il va créer un tableau de 16rows et 8columns alors que vous avez besoin d'un tableau de 8rows et 16columns.
  2. Il s'attend à ce qu'une valeur de 3 bits soit affectée à l'élément de tableau [8] [16].

Le code suivant peut aider à obtenir la fonctionnalité que vous souhaitez:

module test(); 

bit [2:0] Param1[8]; 
bit [2:0] Param2[8]; 
bit [2:0] Param3[8]; 
bit [2:0] Param4[8]; 
bit [2:0] Param5[8]; 
bit [2:0] Param6[8]; 

int i=0; 
int j=0; 

bit [2:0] array [8][6]; 

initial begin 
    array[0][0] = 'd1; 
    array[0][1] = 'd1; 
    array[0][2] = 'd1; 

foreach(array[i,j]) 
    $display("array[%0d][%0d] = %0d",i,j,array[i][j]); 

for(i=0;i<6;i++) 
    array[0][i] = Param1[i]; 

foreach(array[i,j]) 
    $display("array[%0d][%0d] = %0d",i,j,array[i][j]); 

end 

endmodule 

S'il vous plaît trouver le lien pour exécuter le code here.