例如:
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;发布于 2020-05-11 20:45:21
如果按照所有元素在内存中的顺序(或作为位流)排列,那么其索引在每个元素之间发生变化的维度是变化最快的维度。内存布局并不那么重要,因为SystemVerilog没有指针。但是,当您尝试选择数组的部分时,索引选择从最少到最不同都很重要。
v1[2][3]是5个中的2个,其次是10个中的3个。
发布于 2020-05-12 07:26:49
除了@dave_59说的话外,使用foreach也很重要,例如:
module M;
bit [1:10] v1 [1:5];
initial
foreach(v1[i,j])
$display("v1[%0d][%0d]= %b", i, j, v1[i][j]);
endmodulehttps://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维,包装尺寸“变化最快”。
https://stackoverflow.com/questions/61734842
复制相似问题