2017-08-23 1 views
0

ich eine Liste der Array haben, die so definiert sind:Array von Arrays SystemVerilog

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

Ich möchte eine Liste dieser Anordnung schaffen, um über sie iterarte:

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

aber wenn Ich versuche, 3 Bit lange Bits zu jedem Array innerhalb dieses Arrays zu schreiben, ich bekomme falsche Ergebnisse. Was vermisse ich?

+0

haben Sie in diesem Fall ungültige Reihenfolge der Indizes angenommen. Ich nehme an, du meintest 'bit [2: 0] Array [8] [16] ' – Serge

+1

Sie müssen die Ergebnisse, die Sie erwarten, mit den Ergebnissen klären, die Sie erhalten. –

Antwort

0

Sie müssen ein mehrdimensionales Array durchlaufen, um ihm Werte zuzuweisen.

Der folgende Code wird nicht funktionieren, da es zu Problemen verfolgt hat:

  1. Es wird eine Reihe von 16rows und 8columns erstellen, während Sie eine Reihe von 8rows und 16columns benötigen.
  2. Es wird erwartet, dass ein 3-Bit-Wert dem Array-Element [8] [16] zugewiesen wird.

Der folgende Code könnte helfen, die Funktionalität, die Sie beabsichtigen, zu erreichen:

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 

Sie finden den Link, um den Code here auszuführen.

Verwandte Themen