0%

SystemVerilog验证测试平台编写学习

本节主要记录根据书《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
    7
    int 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}

2.2 基本的数组操作:for和foreach

2.3 基本的数组操作:复制和比较

2.4 合并数组与非合并数组

3.动态数组

欢迎来到ssy的世界