System Verilog视频学习笔记(3)- Language Basic

来源:互联网 发布:linux c 删除文件 编辑:程序博客网 时间:2024/06/06 17:38

Language Basic

内容来自启芯-System Verilog视频

============================================================== 

目录结构:

1、System VerilogTestbench code structure

2、System Verilog语法

--------2.1 2-state(0|1)数据类型

--------2.2 4-state(0|1|x|z)数据类型

--------2.3 字符串数据类型

--------2.4 枚举类型

--------2.5 数据数组

--------2.6 系统函数Randomization

--------2.7 操作符

--------2.8 流程控制

--------2.9 变量作用域

3、总结

 ==============================================================

本章目标:

1、了解System Verilogprogram

2、program内声明变量

3、查看program内的变量等

4、数据流控制实现SystemVerilog验证

 

1System VerilogTestbench code structure

测试代码在program块中,program在顶层harness 文件中。

图1、代码结构

关键字:

program……endprogram

initial begin …………end

task……endtask

右半图是左半图的简单例子

test是testcase

router_test_top是testbench文件

router是dut文件

router_io是interface文件

将以上模块进行端口连接,例化interface文件,将interface传递给testcase,router内部的信号即可使用test这个testcase作为激励。

testcase驱动interface,interface驱动dut,这个结构在上个笔记的testbench架构图中。

 

2System Verilog语法

图2、简单语法

2.1 2-state(0|1)数据类型

以下基本从ppt粘贴而来,比较简单。

图3、2-state(0|1)数据类型1

图4、2-state(0|1)数据类型2


图5、2-state(0|1)数据类型3

2.2 4-state(0|1|x|z)数据类型

图6、4-state(0|1|x|z)数据类型1

图7、4-state(0|1|x|z)数据类型2

2.3 字符串数据类型

图8、字符串数据类型

2.4 枚举类型

图9、枚举类型

2.5 数据数组

图10、数据数组——固定数组

图11、数据数组——动态数组

图12、数据数组——队列(类似堆栈)

图13、队列例子

图14、数据数组——联合数组

数组信号控制foreach

数组操作方法

 

2.6 系统函数Randomization

图15、Randomization函数

 

2.7 操作符

图16、操作符

2.8 流程控制

图17、流程控制

task和function,区别在于task在运行时消耗时间。

function内部调用task,task内部可调用function。

图18、task参数

2.9 变量作用域

图19、变量生存时间(变量作用域在模块内)

Structure结构体:将不同数据类型打包,与C语言相似

SV DPI(Direct Programming Interface):

system verilog 调用C/C++函数,C/C++调用systemverilog函数和task

与C模型连接的简单接口

 

3、总结

本节视频讲了各种数据类型、操作符、流程控制、系统函数等,这类语法类知识在用的时候可从手册查找,一旦使用熟练后基本不用查找,以上一看就很明了。

0 0
原创粉丝点击