System Verilog语法技巧

这篇博客详细介绍了Verilog HDL中如何检测和处理4状态变量,数组的定义、初始化及基本操作,包括for和foreach循环。还探讨了合并与非合并数组的使用,以及动态数组的创建、复制、修改和内存管理。动态数组的内建函数如`new`和`delete`也在文中提及。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值