SV 数据类型小结

1.内建数据类型


相比于Verilog 将寄存器类型reg和net(线网)类型区分如此清楚,在SV中引入了logic数据类型。任何使用线网的地方均可以使用logic,但要求logic不能有多个结构性的驱动,例如在对双向总线建模时。此时,需要使用线网类型。
四值逻辑类型有:logic,reg,wire,integer;
二值逻辑类型有:bit, byte,int,shortint,longint;
按照有无符号还可以分为:
有符号类型:integer, byte, int,shortint,longint;
无符号类型:logic,reg,wire,bit;
注意:
在遇到变量类型时,应注意它们的符号类型和逻辑类型,在变量的运算中,尽可能避免两种不一致的变量进行操作。
1.对于有符号类型,例如:byte变量的最大值是127,而不是255(它的范围是-128–127)。
2.对于逻辑变量类型,四值逻辑类型默认值为X,二值逻辑类型的默认值为0。

2.定宽数组

2.1.定宽数组的声明与赋值

//一维定宽数组
int lo_hi[0:4];    //5个整数[0]...[4];
int c_style [5] ='{0,1,2,3,4};     //对5个元素初始化;
lo_hi = '{0,1,2,3,4};  //对5个元素赋值;
lo_hi[0:2] = '{0,1,2};  //对前3个元素赋值;
lo_hi[0:2] = '{3{3}};     //3个值全为3;
lo_hi = '{3,5,default:2};  //{3,5,2,2,2};
//非合并数组
int array1 [0:2][0:1];   //完整声明一个二维数组;
int array [8][4];      //紧凑的声明;
array [7][3]=2;        //设置最后一个元素;
array1 = '{'{0,1},'{1,2},'{2,3}}; //数组赋值;
//合并数组
bit [3:0][7:0] bytes;   //数组大小的定义格式为[msb:lsb],而不是[size];
bytes = 32'hCafe_Dada;  //赋值;
//合并/非合并数组
bit [0:3][0:7]array [3];  //合并3*32比特
bit [31:0] 1w= 32'h0123_4567;  //字
bit [7:0][3:0] nib;         //合并数组;
array[0]=1w;               //使用一个下标,可以得到一个字的数据;
array[0][3]=8'h01;         //使用两个下标,可以得到一个字节的数据;
array[0][1][6]=1'b1;        ////使用三个下标,可以得到一个比特的数据;
nib = array[0];             //复制合并数组的元素值

 注意:当测试平台通过存储器数据的变化来唤醒时,通过@操作符实现,这个操作符只能用于标量或者合并数组。例如上边代码中的非合并数组array,只可以将array[0]或者1w作为敏感信号,但不能用整个array数组,除非把它扩展成:@(array[0] or array[1] or array[2])。

可能用到的系统函数:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

创芯人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值