【问题标题】:Array of arrays systemverilog数组数组 systemverilog
【发布时间】:2017-08-23 10:21:38
【问题描述】:

我有一个这样定义的数组列表:

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

我想创建这些数组的列表以便遍历它们:

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

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

【问题讨论】:

  • 在这种情况下,您假定索引的顺序无效。我猜你的意思是bit[2:0] array[8][16]
  • 你需要用你得到的结果来说明你期望的结果。

标签: arrays system-verilog


【解决方案1】:

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

以下代码将无法正常工作,因为它存在以下问题:

  1. 它将创建一个 16 行和 8 列的数组,而您需要一个 8 行和 16 列的数组。
  2. 预计将 3 位值分配给数组元素 [8][16]。

以下代码可能有助于实现您想要的功能:

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的链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多