(1)systemverilog 数据类型

systemverilog 数据类型

一.数据类型

1.logic

在SV中新引入了一个数据类型logic,SV对经典的reg数据类型进行了改进,使得它除了作为一个变量以外,还可以被连续赋值、门单元和模块所驱动。任何使用线网的地方均可以使用logic,但要求logic不能有多个结构性的驱动。例如在对双向总线建模的时候。此时,需要使用线网类型。

SV作为侧重于验证的语言,并不十分关切logic对应的逻辑应该被综合为寄存器还是线网,因为logic被使用的场景如果是验证环境,那么它只会作为单纯的变量进行赋值操作,而这些变量也只属于软件环境构建。

tips:由于logic类型只能有一个驱动,所以你可以使用它来查找网单中的漏洞。把你所有的信号都声明为logic而不是reg或wire,如果存在多个驱动,那么编译时就会出现错误。

logic相对应的是bit类型,它们均可以构建矢量类型(vector),而它们的区别在于:
logic为四值逻辑,即可以表示0、1、X、Z。
bit为二值逻辑,只可以表示0和1。

2.逻辑类型

SV中的四值逻辑与二值逻辑分类
四值逻辑类型:integer(32)、logic、reg、net-type(例如wire、tri)
二值逻辑类型:byte(8)、shortint(16)、int(32)、longint(64)、bit

tips:
1.括号中的数字代表该类型声明后的数据所占位宽
2.在验证中常用bit去声明时钟信号CLK和复位信号RSTN.

3.符号类型

有符号类型:byte、shortint、int、longint、integer
无符号类型:bit、logic、reg、net-type(例如wire、tri)

4.缺省情况

如果你的代码试图从一个越界的地址中读取数据,那么system verilog将返回数组元素类型的缺省值。也就是说,对于一个元素为四状态类型的数组,例如logic,返回的是X,而对于双状态类型例如int或bit,则返回0。线网在没有驱动的时候输出是z。(线网为上述的net-type)。

5.总结

在遇到这些变量类型时,应该注意它们的逻辑类型和符号类型,因为在变量运算中,应该尽量避免两种不一致的变量进行操作,而导致意外的错误。

二.数组类型

  • 关于数组维度
    高纬度代表行,低纬度代表列
    []都在右侧:左边是高维度
    []都在左侧:左边是高纬度
    []一左一右:右边是高纬度

1.定宽数组

  • 多维数组声明和使用
int array2 [0:7][0:3];  //完整声明
int array3 [8][4]//紧凑声明
array2[7][3]=1;  //设置最后一个元素
//紧凑型声明是新的,上面创建的数组大小都是8行4列
  • 初始化和赋值
int ascend[4]='{
   0,1,2,3
  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数字IC小白的日常修炼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值