0.前言
相较于verilog,system verilog在验证方面应用更广泛,当下最常用的uvm就是基于sv实现的。sv在verilog的基础上借鉴了一些高级语言的语法,它拥有以下功能:
.设计+验证
.产生随机约束
.功能覆盖率统计分析
.断言(SVA)
.面向对象的验证
这一篇学习笔记用于记录常用的变量类型、过程语句,以便于后续再深入补充。
1.数据类型
(1)两态数据类型:0、1;
sv的数据类型在verilog的基础上,借鉴了C/C++的语法
变量类型 | 位宽 | 符号位 | 状态数 | 备注 |
---|---|---|---|---|
reg | 自定义 | 无 | 4 | 线网型,四态为:0,1,X,Z |
wire | 自定义 | 无 | 4 | 寄存器型, 四态为:0,1,X,Z |
logic | 自定义 | 无 | 4 | 可以代替reg和wire型 |
int | 32位 | 有 | 两态 | 两态为:0,1 |
shortint | 16位 | 有 | 两态 | |
longint | 64位 | 有 | 两态 | |
unsigned int | 32位 | 无 | 两态 | |
byte | 8位 | 有 | 两态 | |
bit | 1位 | 有 | 两态 |
注:X为不确定态;Z为高阻态
(2)枚举类型
enum{
red=2'b0,yellow,green}RGB;
//表示00为red,01为yellow,10为grenn
//当缺省时起点时,默认从0开始
(3)用户自定义类型
typedef unsigned int uint;
uint a,b;
(4)压缩数组
(5)动态数组
dyn[];//可以不声明数组大小
dyn=new[5];//使用new函数声明大小
dyn.delete();//使用完回收空间
(6)关联数组
分