(1)systemverilog 数据类型

本文详细介绍了SystemVerilog中的数据类型,包括logic、逻辑类型、符号类型、数组类型(如定宽数组、动态数组、队列、关联数组、自定义结构)以及枚举类型。强调了logic类型的唯一驱动特性,动态数组的灵活性,队列的高效操作,关联数组的稀疏矩阵存储,以及枚举类型在提高代码可读性和维护性方面的优势。同时提到了类型转换的静态和动态方式。

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

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} ;   //对四个元素初始化,自左向右,从低到高。 
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数字IC小白的日常修炼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值