常量数组


初始化数组:

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--)