数组systemverilog的数组

时间:2017-08-23 10:21:38

标签: arrays system-verilog

我有一个定义如下的数组列表:

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

我想创建一个这些数组的列表,以便迭代它们:

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

但是当我尝试向该数组中的每个数组写入3位长位时,我得到错误的结果。我错过了什么?

1 个答案:

答案 0 :(得分:0)

您必须遍历多维数组才能为其赋值。

以下代码无法解决问题:

  1. 它将创建一个包含16个和8个列的数组,而您需要一个包含8个和16个列的数组。
  2. 期望将3位值分配给数组元素[8] [16]。
  3. 以下代码可能有助于实现您想要的功能:

    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
    

    请找到运行代码here的链接。