SystemVerilog数据类型和操作方法

本文详细介绍了SystemVerilog中的各种数据类型,包括逻辑、双状态、定长数组(包括常量数组和动态数组)、队列、关联数组、链表以及struct、枚举和字符串等,展示了如何声明、初始化和操作这些数据结构。

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

1. 内建数据类型

1.1 逻辑(logic)类型

逻辑类型相当于verilog中reg变量的改进版,是的变量可以被连续赋值、门单元和模块所驱动;任何使用线网的地方都可以使用logic,唯一要注意的是logic不能进行多驱。

logic q,q_l,d,clk,rst_l;

1.2  双状态数据类型

双状态数据类型只有0,1两种取值,没有x和z态,这种类型有助于减少仿真时的内存占用。

bit b;                     //双状态,单比特
bit [31:0] b32;            //双状态,32比特无符号整数
int unsigned ui;           //双状态,32比特无符号整数

int i;                     //双状态,32比特有符号整数
byte b8;                   //双状态,8比特有符号整数
shortint s;                //双状态,16比特有符号整数
longint l;                 //双状态,64比特有符号整数

interger i4;               //四状态,32比特有符号整数
time t;                   //四状态,64比特无符号整数

2.定宽数组

2.1 定款数组的声明和初始化

SV中的定宽数组支持便捷声明方式,可以省略下边界,此时下边界默认为0。

//一维数组
int lo_hi[0:15];             //16个整数[0]...[15]
int c_style[15];             //16个整数[0]...[15]

//二维数组
int array2[0:7][0:3]         //完整的声明,一个8行4列的数组
int array2[8][4];            //紧凑的声明
array2[7][3]=1;              //设置最后一个元素

2.2 常量数组 

在定义数组的同时,可以用一个单引号加大括号来初始化数组。

int ascend[4] = '{0,1,2,3};            //对四个元素进行初始化
int descend[5];

descend = '{4,3,2,1,0};                //为五个元素赋值
descend[0:2] = '{5,6,7};               //为部分元素赋值
descend = '{9,8,default:1};            //{9,8,1,1,1}

2.3 基本的数组操作 

数组中最常用的是for和foreach循环。


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值