systemVerilog语法(一)
2017-02-11 00:42
162 查看
一、验证导论:
作为一个验证工程师,最重要的原则是“程序漏洞利大于弊”
设计流程:1)阅读硬件规范,解析其中的自然语言表述。2)使用RTL代码之类的机器语言创建相应的逻辑。
验证流程:1)阅读硬件规范,制定验证计划。2)创建测试来检查RTL代码是否实现所有特性。
单一的BFM测试平台:
![](https://img-blog.csdn.net/20170211003448391?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzE5MzU2OTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
多个BFM测试平台:
![](https://img-blog.csdn.net/20170211003508688?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzE5MzU2OTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
二、数据类型:
1、Logic:任何使用wire或者reg的信号在测试平台是都可使用logic。(注意:对于双向总线的信号不能用logic,只能用wire)
2、双状态数据类型:有利于提高仿真器的性能并减少内存。最简单的双状态类型是bit,无符号的。另外4种带符号位的双状态数据类型:byte、shortint、int、longint。
例:
![](https://img-blog.csdn.net/20170211003523563?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzE5MzU2OTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
扩展:对四态信号的检查:($isunknown)
例:对iport信号的检测
![](https://img-blog.csdn.net/20170211003635787?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzE5MzU2OTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3、定宽数组:例:
![](https://img-blog.csdn.net/20170211003648470?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzE5MzU2OTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
如果越界读取数据,则返回元素类型的缺省值,对于logic型的将返回X,对于双状态的则返回0。线网未驱动的输出Z。
4、常量数据:例:
![](https://img-blog.csdn.net/20170211003703001?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzE5MzU2OTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
三、数组操作
1、操作数组的最常见的方式是使用for或foreach循环。Foreach会自动遍历数组中的元素。
例:
![](https://img-blog.csdn.net/20170211003723923?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzE5MzU2OTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2、基本数组操作-复制和比较
例:
![](https://img-blog.csdn.net/20170211003738523?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzE5MzU2OTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3、合并数组
例:
![](https://img-blog.csdn.net/20170211003804836?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzE5MzU2OTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
四、动态数组
动态数组在声明的时候使用空的下标[]。使用时需调用new[]操作符来分配空间。
例:
![](https://img-blog.csdn.net/20170211003817321?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzE5MzU2OTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
五、队列
队列的声明使用带有美元符号的下标:[]。队列元素的编号从0到。
例:
![](https://img-blog.csdn.net/20170211004005924?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzE5MzU2OTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
六、数组的排序
例:
七:使用typedef创建新的类型
例:下图的例子可以适应不同的比特位宽。
![](https://img-blog.csdn.net/20170211004034042?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzE5MzU2OTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
八、枚举类型
由于宏的范围太大,故出现枚举类型,只能用于本模块中。
例:
作为一个验证工程师,最重要的原则是“程序漏洞利大于弊”
设计流程: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创建新的类型
例:下图的例子可以适应不同的比特位宽。
八、枚举类型
由于宏的范围太大,故出现枚举类型,只能用于本模块中。
例:
相关文章推荐
- systemverilog语法(六)
- systemverilog语法(九)
- systemverilog 语法
- systemverilog语法
- SystemVerilog 2005 语法
- systemverilog语法(二)
- systemverilog语法(三)
- systemverilog语法(四)
- systemverilog语法(五)
- systemverilog语法(七)
- VBA语法基础(上)
- 动态sql语句基本语法
- SQLite的SQL语法
- SQL 语法 (一)
- mysql "ON DUPLICATE KEY UPDATE" 语法
- Java语法糖1:可变长度参数以及foreach循环原理
- python数据结构及部分语法笔记
- python基础语法(10)类中
- JAVA的基础语法
- python学习之基础语法(其四)