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验证
1、System 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架构图中。
2、System 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、总结
本节视频讲了各种数据类型、操作符、流程控制、系统函数等,这类语法类知识在用的时候可从手册查找,一旦使用熟练后基本不用查找,以上一看就很明了。
- System Verilog视频学习笔记(3)- Language Basic
- System Verilog视频学习笔记(1)- Device Under Test
- System Verilog视频学习笔记(2)- Testbench
- System Verilog视频学习笔记(5)- Concurrency
- System Verilog视频学习笔记(6)- OOP-Encapsulation
- System Verilog视频学习笔记(7)- OOP-Virtual Interface
- System Verilog视频学习笔记(8)- Randomization
- System Verilog视频学习笔记(9)- Inheritance
- System Verilog视频学习笔记(10)- Inter-Thread Communication
- System Verilog视频学习笔记(11)- Functional converage
- System Verilog视频学习笔记(12)- VMM预览
- System Verilog视频学习笔记(4)- Stimulus driven and received
- system verilog MATLAB学习笔记
- system verilog学习笔记--time slot division
- system verilog学习笔记assertion & debug
- system verilog学习笔记---coding style
- system verilog学习笔记---intersting Q&A
- verilog学习笔记(一)
- 实现天猫查看物流功能
- 深度优先搜索算法
- caffe2 安装教程
- qt: exec()的用法,accept()和accepted的概念
- bootstrap+vue=动态添加删除用户数据
- System Verilog视频学习笔记(3)- Language Basic
- 启动和停止mysql服务
- Unity Cloud Build With Git
- 检测提取是否失败并修复它
- 用List集合传递学生信息
- KVM虚拟机实现在线迁移
- 将jar包安装到本地repository中的命令
- 项目总结:spring+mybatis整合
- 使用Python通过win32 COM打开Excel并添加Sheet