1、检测4状态变量是否为X或Z,如果是,返回1:
if($isunknown(iport) == 1)begin
$display("@%t:4-state value detected on iport %b",$time,iport);
end
2、数组的定义与初始化
int ascend[4] = '{0,1,2,3}; //对4个元素进行初始化
ascend[2:1] = '{4,5}; //对中间两元素赋值,{0,4,5,3}
ascend = '{4{8}}; //4个值全部为8,{8,8,8,8}
ascend = '{default:0}; //{0,0,0,0}
3、基本数组操作-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
4、合并数组与非合并数组
bit [3:0] [7:0] bytes; //由4个字节组成的合并数组
bit [7:0] data_arrary [3:0]; //多维数组,非合并数组
bytes[3]=8'h01; //对合并数组中的第3个字节赋值
5、动态数组
int data_array[],data_array2[]; //声明动态数组
initial begin
data_array = new[5]; //分配5个元素
foreach(data_array[i]) data_array[i] = i; //对元素进行初始化
data_array2 = data_array; //复制动态数组
data_array2[0] = 5; //修改复制值
$display(data_array[0],data_array2[0]); //显示数值(0和5)
data_array = new[20](data_array ); //分配20个整数值,并进行复制
data_array = new[100]; //分配100个新的整数值,旧值不复存在
data_array.delete(); //删除所有元素
动态数组有一些内建的子程序,例如delete和size。