Testbench
内容来自启芯-System Verilog视频
==============================================================
目录结构:
1、什么是验证?
2、验证目标?
3、验证过程
4、Testbench架构
5、Testbench搭建
6、个人总结
==============================================================
本章目标:
1、描述达到验证目标的过程
2、创建System Verilogtestbench模板
3、编译和仿真System Verilog testbench
1、什么是验证?
图1、Transformations
从图1可以看出,设计产品经历了以下流程:
想法——>算法C模型——>架构设计——>RTL(功能验证)——>Gate网表静态时序分析——>GDSII后端制造——>ASIC(制造后的芯片测试)——>Product产品验证
所以验证是检验设计流程转换步骤是否正确执行。
一般发者集中在Spec到Gate的过程中。
2、验证目标?
图2、验证结果
设计人员的RTL代码,由验证团队写testbench验证,testbench和RTL均有bug,所以有四种情况,当Testbench验证通过后,如果验证不充分,RTL代码仍有可能有错,这样的情况交付流片后将造成重大损失。
所以,验证的目标是确保设计与定义的功能的一致性。
3、验证过程
图3、验证过程
搭建验证环境(调试testbench)
Broad-Spectrum验证,大规模验证
Corner-case验证,需考虑各种验证条件
4、Testbench架构
图4、UVM的Testbench架构
Testcase:测试案例
Configure:配置
Generator:产生激励
Transactor:数据处理
Driver:驱动DUT,根据时序,协议完成行为级的模型
Interface:Verilog中增加的接口
Monitor:监视数据
Self_Check:自检
Coverage:覆盖率统计,通过Coverage可以驱动Generator产生其他激励
Verilog的testbench结构比较简单,一般有DUT、Clock和testcase。SystemVerilog在Verilog的基础上进行了interface的抽象,可参考IEEE-1800协议标准手册
5、Testbench搭建
图5、文件结构
以上是根据template写出的文件,一般通过对DUT写interface、testbench和testcase。
图6、产生testbench文件结构
产生图5以上文件结构
图7、产生interface文件
图8、定义interface端口
Interface实例的信号数据类型应为logic。
图9、testbench搭建
图10、sampletestbench
图11、驱动同步信号
非阻塞赋值
图12、Monitor采样信号
从设备采集信号。
图13、顶层模块(包含所有的文件例化)
图14、编译RTL仿真NTB
6、个人总结
本节视频主要介绍如何生成完整的文件结构,包含Testbench文件、Interface文件、Testcase文件和DUT。