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

tech2022-12-18  103

【芯片验证学习纪实】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测试平台:

多个BFM测试平台:

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

扩展:对四态信号的检查:($isunknown) 例:对iport信号的检测

3、定宽数组: 例:

如果越界读取数据,则返回元素类型的缺省值,对于logic型的将返回X,对于双状态的则返回0。线网未驱动的输出Z。 4、常量数据: 例:

三、数组操作 1、操作数组的最常见的方式是使用for或foreach循环。Foreach会自动遍历数组中的元素。 例:

2、基本数组操作-复制和比较 例:

标题3、合并数组

例:

四、动态数组 动态数组在声明的时候使用空的下标[]。使用时需调用new[]操作符来分配空间。 例:

五、队列 队列的声明使用带有美元符号的下标:[]。队列元素的编号从0到。 例:

六、数组的排序 例:

七:使用typedef创建新的类型 例:下图的例子可以适应不同的比特位宽。

八、枚举类型 由于宏的范围太大,故出现枚举类型,只能用于本模块中。 例:

最新回复(0)