UVM已经成为IC验证领域的标准,无数优秀的学子通过学习System Verilog进入芯片设计行业,获得令人羡慕的职业发展机会。
就UVM而言,如何与现在FPGA开发行业融入,一直进展缓慢。我们认为其中有一个原因是工程师对system verilog本身了解还很不够造成。这方面跟FPGA的教学也有一定关系。天川院集成电路设计中心在承担FPGA教学任务中,正在尝试将UVM及verilog教学融入到FPGA教学的项目中。
我们FPGA都是使用MODELSIM来做仿真,而UVM教学都是采用VCS为主。2024我们春节班的学员开始尝试使用MODELSIM来构建较复杂的testbench。数据包的产生、generator、interface、driver、以及 env 、test等等。可喜的是学员能基于system verilog 构建随机激励、并解决了一些代码在modelsim的一些编译问题,在传统FPGA开发的过程中,观察波形实现定向测试,扩充了随机测试的功能。
附上学员的工程地址:https://gitee.com/mikoxxx/system_verilog_selector_test/blob/master/README.md
使用System-Verilog,开发的一个自动测试程序。 功能:实现选择通道输出功能。如果超过设定的地址,则从B通道输出,否则从A通道输出。输出地址与数据,和输入一致. 测试:循环20次,每次输入随机产生的地址和数据
软件架构
1.rtl: 代码存放位置 a.design.sv: 实现一个根据输入地址,选择通道输出功能。如果超过设定的地址,则从B通道输出,否则从A通道输出。输出地址与数据,和输入一致 b.trsaction: 创建一个数据类,里面包含设计模块需要用到的相关数据。 c.generator:创建测试的过程,此程序是自动循环20次,每次给随机地址和数据。 d.driver : 驱动测试过程 e.monitor : 获取测试结果 f.scoreboard:将获取的测试结果与理想请情况的输出进行对比,输出对应的测试日志 g.environment: 将generator driver monitor scoreboard,整合到一个测试环境中 h.test: 例化environment,生成一个测试平台
i.interface: 用于连接测试平台和激励文件的桥梁 j.tb: 例化测试平台和接口。产生对应的时钟,输出到接口。启动测试平台,以及生成对应的测试日志或者vcd文件
2.sim:modelsim仿真工程
直接打开工程文件就能用。
写代码时最大的坑在于,文件的重复引用。在modelsim上编译不通过。
建议: 1.在需要被引用的文件中加入一下代码: ifndef DRIVER_SV
define DRIVER_SV
`endif
前两行放在最开头,`endif放在最后面,“DRIVER_SV”–每个文件都需要用不同的名字
代码参考:https://www.chipverify.com/systemverilog/systemverilog-testbench-example-2
后续还会有更多UVM、SystemVerilog工程实践、欢迎广大FPGA开发者关注。
天川院集成电路中心FPGA培训欢迎在职工程师和在校生参加我们的FPGA实训项目及最近推出的周末实训项目,是很好的提升就业能力的机会。可以咨询王老师:13908037655
发表回复