声明和初始化
一维数组声明
int lo_hi[0:15]; //16个整数[0]...[15]
int c_style[16]; //16个整数[0]...[15]
二维数组声明
int array2[0:7][0:3]; //完整的声明
int array3[8][4]; //紧凑的声明
array2[7][3] = 1; //最后一个元素赋值
如果代码从一个越界的地址读取数据,SystemVerilog将会返回数据缺省值,四状态返回X,双状态返回0,线网在没有驱动的时候输出Z。
常量数组
int ascend[4] = '{0,1,2,3}; //对4个元素进行初始化
int descend[5];
descend = '{4,3,2,1,0}; //为5个元素进行 赋值
descend[0:2] = '{5,6,7}; //为前3个元素赋值
ascend = '{4{8}}; //为4个元素全部赋值为8
descend = '{9,8,default:1}; //{9,8,1,1,1}
基本的数组操作——for和foreach
for和foreach循环
initial begin
bit [31:0] src[5],dst[5];
for(int i = 0;i<$size(src);i++) //$size函数返回数组的宽度
src[i] = i;
foreach(dst[j])
dst[j] = src[j] * 2; //dst的值是src的二倍
end
对多维数组使用foreach