【芯片验证学习纪实】System Verilog语法(1)

继学习了FPGA设计之后,学习IC验证也有一段时间了,学习过程中参考了很多互联网上的优秀资源,在此感谢各位前辈们的无私分享!现在,利用闲暇之余将对自己整个学习过程做个简单的回顾和总结。

首先,在system verilog学习中用到的参考书是绿皮书《system verilog验证——测试平台编写指南》(第二版)。另在回顾时翻阅了相关总结:

https://blog.csdn.net/qq_31935691/article/details/54982105

那么,开始吧。

一、验证导论:
作为一个验证工程师,最重要的原则是“程序漏洞利大于弊”
设计流程:1)阅读硬件规范,解析其中的自然语言表述。2)使用RTL代码之类的机器语言创建相应的逻辑。
验证流程:1)阅读硬件规范,制定验证计划。2)创建测试来检查RTL代码是否实现所有特性。
单一的BFM测试平台:
【芯片验证学习纪实】System Verilog语法(1)

多个BFM测试平台:
【芯片验证学习纪实】System Verilog语法(1)

二、数据类型:
1、Logic:任何使用wire或者reg的信号在测试平台是都可使用logic。(注意:对于双向总线的信号不能用logic,只能用wire)
2、双状态数据类型:有利于提高仿真器的性能并减少内存。最简单的双状态类型是bit,无符号的。另外4种带符号位的双状态数据类型:byte、shortint、int、longint。
例: 【芯片验证学习纪实】System Verilog语法(1)

扩展:对四态信号的检查:($isunknown)
例:对iport信号的检测
【芯片验证学习纪实】System Verilog语法(1)

3、定宽数组:
例:
【芯片验证学习纪实】System Verilog语法(1)

如果越界读取数据,则返回元素类型的缺省值,对于logic型的将返回X,对于双状态的则返回0。线网未驱动的输出Z。
4、常量数据:
例:
【芯片验证学习纪实】System Verilog语法(1)

三、数组操作
1、操作数组的最常见的方式是使用for或foreach循环。Foreach会自动遍历数组中的元素。
例:
【芯片验证学习纪实】System Verilog语法(1)

2、基本数组操作-复制和比较
例:
【芯片验证学习纪实】System Verilog语法(1)

标题3、合并数组

例:
【芯片验证学习纪实】System Verilog语法(1)

四、动态数组
动态数组在声明的时候使用空的下标[]。使用时需调用new[]操作符来分配空间。
例:
【芯片验证学习纪实】System Verilog语法(1)

五、队列
队列的声明使用带有美元符号的下标:[]。队列元素的编号从0到。
例: 【芯片验证学习纪实】System Verilog语法(1)

六、数组的排序
例:
【芯片验证学习纪实】System Verilog语法(1)

七:使用typedef创建新的类型
例:下图的例子可以适应不同的比特位宽。
【芯片验证学习纪实】System Verilog语法(1)

八、枚举类型
由于宏的范围太大,故出现枚举类型,只能用于本模块中。
例: 【芯片验证学习纪实】System Verilog语法(1)

相关文章: