本节主要记录根据书《SystemVerilog验证测试平台编写指南》学习SV与验证方法的过程。
数据类型
1.内建数据
四状态数据类型(0、1、X、Z):
- logic:reg或wire都可直接声明为logic,logic只能由一个驱动
- integer i4; //四状态,32比特有符号整数
- time t; //四状态,64比特无符号整数
双状态数据类型(0、1):
- bit b; //双状态,无符号单bit
- bit [31 : 0] b32; //双状态,32比特无符号整数
- int unsigned ui; //双状态,32比特无符号整数
- int i; //双状态,32比特有符号整数
- byte b8; //双状态,8比特有符号整数
- shortint s; //双状态,16比特有符号整数
- longint l; //双状态,64比他也有符号整数
- real r; //双状态,双精度浮点数
把双状态变量连接到被测设计,如果被测设计试图产生X或Z,这些值会被转换成双状态值,需要随时检查未知值得传播。可使用
$isunknown操作符,在表达式得任意位置出现X或Z时返回1仿真器通常使用两个或两个以上连续的字来存放logic和integer等四状态类型,这会比存放双状态变量多占用一倍的空间
2.定宽数组
2.1 常量数组
用一个单引号加大括号来初始化数组
1
2
3
4
5
6
7int ascend[4] = '{0,1,2,3}; //对4个元素初始化
int descend[5];
descend = '{4,3,2,1,0}; //为5个元素赋值
descend[0:2] = '{5,6,7}; //为前3个元素赋值
ascend = '{4{8}}; //四个值全部为8
descend = '{9,8,default:1}; //{9,8,1,1,1}