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循环。