常量数组
初始化数组:
int ascend[4] = '{0,1,2,3};
int descend[5];
descend = '{4,3,2,1,0};
descend = '{9,8,default:1};//为未显示赋值的元素指定一个缺省值
foreach循环中,只需要指定数组名并在其后方括号中给出索引变量,SV便会自动遍历数组中的元素,索引变量将自动声明,并只在循环内有效
在数组中使用for和foreach
initial begin
bit[31:0] src[5],dst[5];
for(int i=0;i<$size(src);i++)
src[i] = i;
foreach(dst[j])
dst[j] = src[j] * 2;
end
在多维数组中使用for和foreach
int md[2][3] = '{'{0,1,2},'{3,4,5}};
initial begin
foreach(md[i,j])//注意,不同于C语言,不是md[i][j]
$display("md[0%d][0%d]=%0d",i,j,md[i][j]);
end
在多维数组中使用for和foreach
如果不需要遍历数组中所有维度,可以在foreach中忽略掉某些维度
initial begin
byte twoD[4][6];
foreach(twoD[i,j])
twoD[i][j]=i*10+j;
foreach(twoD[i])begin
$write("%2d:",i);
foreach(twoD[,j])
$write("%3d",twoD[i][j]);
$display;
end
end
foreach循环会遍历原始声明中的数组范围 数组f[5]等同于f[0:4] foreach(f[i])等同于
for(int i=0;i<=4;i++),对于数组rev[6:2]来说,foreach(rev[i])等价于for(int i=6;i>=2;i--)