Systemverilog基础语法
2023-04-09 本文已影响0人
ThalesW
1 数据类型及操作
1.1 数据类型
类型 | 取值 | 描述 |
---|---|---|
wire | 0,1,X,Z | 使用assign赋值 |
reg | 0,1,X,Z | 随时钟沿出发 |
logic | 0,1,X,Z | logic可以替代reg/wire,建议验证环境使用logic |
int | 0,1 | 有符号整型 |
bit | 0,1 | 根据位宽定义数据 |
real | 浮点型 |
1.2 运算符
除常见的与或非运算符,要注意有“===”和“==”;其中“===”可识别“0,1,x,z",”==”只能识别“0,1“。验证时一般response使用”===“判断模块输出数据是否符合预期。
1.3 数组和队列
一般使用一维和二维数组,更多维度不建议使用。
一维数组定义:
bit [7:0] arr;
二维数组定义:
- 压缩数组
bit [7:0][15:0] arr; //定义了一个深度为8,宽度为16的数组
压缩数组的优势是可以整体对其赋值,如:
assign arr = {8*16{1'b0}};
- 压缩数组
- 非压缩数组
bit [15:0] arr[7:0]; //定义了一个深度为8,宽度为16的数组
对非压缩数组赋值时要对每个数据单独赋值
assign arr[0] = {16{1'b0}};
- 非压缩数组