维度列表中的短语 "Varies most rapidly" 是什么意思?

What does the phrase "Varies most rapidly" in a list of dimension mean?

例如:

bit [1:10] v1 [1:5];     //1 to 10 varies most rapidly; compatible with memory arrays
bit v2 [1:5][1:10];      //1 to 10 varies most rapidly, compatible with C;

如果您按内存中的顺序排列所有元素(或作为比特流),其索引在每个元素之间变化的维度是变化最快的维度。内存布局并不重要,因为 SystemVerilog 没有指针。但是,当您尝试 select 数组的一部分时,索引 selecting 从最小到最大变化是很重要的。

v1[2][3] 是 5 个中的 2 个,然后是 10 个中的 3 个。

除了@dave_59说的,用foreach也有关系,eg:

module M;
  bit [1:10] v1 [1:5];
  initial
    foreach(v1[i,j])
      $display("v1[%0d][%0d]= %b", i, j, v1[i][j]);      
endmodule

https://www.edaplayground.com/x/5b9m

显示

# KERNEL: v1[1][1]= 0
# KERNEL: v1[1][2]= 0
# KERNEL: v1[1][3]= 0
# KERNEL: v1[1][4]= 0
# KERNEL: v1[1][5]= 0
# KERNEL: v1[1][6]= 0
# KERNEL: v1[1][7]= 0
# KERNEL: v1[1][8]= 0
# KERNEL: v1[1][9]= 0
# KERNEL: v1[1][10]= 0
# KERNEL: v1[2][1]= 0
# KERNEL: v1[2][2]= 0
...
# KERNEL: v1[5][7]= 0
# KERNEL: v1[5][8]= 0
# KERNEL: v1[5][9]= 0
# KERNEL: v1[5][10]= 0

您可以看到 j 维度、大小 10 维度、packed 维度 "varies most rapidly"。