仿真验证与testbench编写

仿真验证与testbench编写

ID:27651020

大小:1.69 MB

页数:132页

时间:2018-12-05

仿真验证与testbench编写_第1页
仿真验证与testbench编写_第2页
仿真验证与testbench编写_第3页
仿真验证与testbench编写_第4页
仿真验证与testbench编写_第5页
资源描述:

《仿真验证与testbench编写》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第五章仿真验证与Testbench编写7/5/20211MicroelectronicsSchoolXidianUniversity5.1VerilogHDL电路仿真和验证概述仿真,也叫模拟,是通过使用EDA仿真工具,通过输入测试信号,比对输出信号(波形、文本或者VCD文件)和期望值,来确认是否得到与期望所一致的正确的设计结果,验证设计的正确性。验证是一个证明设计思路如何实现,保证设计在功能上正确的一个过程。验证在VerilogHDL设计的整个流程中分为4个阶段:阶段1:功能验证;阶段2:综合后验证;阶段3:时序验证;阶段4:板级验证。7/5/20212

2、MicroelectronicsSchoolXidianUniversity5.2VerilogHDL测试程序设计基础5.2.1Testbench及其结构在仿真的时候Testbench用来产生测试激励给待验证设计(DesignUnderVerification,DUV),或者称为待测设计(DesignUnderTest,DUT)。Testbench平台结构测试程序的一般结构由于Testbench是一个测试平台,信号集成在模块内部,没有输入输出。在Testbench模块内,例化待测设计的顶层模块,并把测试行为的代码封装在内,直接对待测系统提供测试激励。例5

3、.2-1T触发器测试程序示例moduleTflipflop_tb;//数据类型声明regclk,rst_n,T;wiredata_out;TFFU1(.data_out(data_out),.T(T),.clk(clk),.rst_n(rst_n));//对被测模块实例化always//产生测试激励#5clk=~clk;Initialbeginclk=0;#3rst_n=0;#5rst_n=1;T=1;#30T=0;#20T=1;endInitial//对输出响应进行收集begin$monitor($time,"T=%b,clk=%b,rst_n=%b,

4、data_out=%b",T,clk,rst_n,data_out);endendmoduleT触发器的仿真波形和部分文本输出结果:部分文本输出结果:0T=x,clk=0,rst_n=x,data_out=x3T=x,clk=0,rst_n=0,data_out=05T=x,clk=1,rst_n=0,data_out=08T=1,clk=1,rst_n=1,data_out=110T=1,clk=0,rst_n=1,data_out=1从图中可以清晰地看出Testbench的主要功能:(1)为DUT提供激励信号。(2)正确实例化DUT。(3)将仿真数据

5、显示在终端或者存为文件,也可以显示在波形窗口中以供分析检查。(4)复杂设计可以使用EDA工具,或者通过用户接口自动比较仿真结果与理想值,实现结果的自动检查。在编写Testbench时需要注意的问题:(1)testbench代码不需要可综合Testbench代码只是硬件行为描述不是硬件设计。(2)行为级描述效率高VerilogHDL语言具备5个描述层次,分别为开关级、门级、RTL级、算法级和系统级。(3)掌握结构化、程式化的描述方式结构化的描述有利于设计维护,可通过initial、always以及assign语句将不同的测试激励划分开来。一般不要将所有的测

6、试都放在一个语句块中。5.2.2测试平台举例DUT的仿真平台测试平台需要产生时钟信号、复位信号和一系列的仿真向量,观察DUT的响应,确认仿真结果。(1)组合逻辑电路仿真环境的搭建moduleadder1(a,b,ci,so,co);inputa,b,ci;outputso,co;assign{co,so}=a+b+ci;endmodule根据全加器的真值表(表5.2-1)编写的全加器测试程序如下:moduleadder1_tb;wireso,co;rega,b,ci;adder1U1(a,b,ci,so,co);//模块例化initial//测试信号产生

7、begina=0;b=0;ci=0;#20a=0;b=0;ci=1;#20a=0;b=1;ci=0;#20a=0;b=1;ci=1;#20a=1;b=0;ci=0;#20a=1;b=0;ci=1;#20a=1;b=1;ci=0;#20a=1;b=1;ci=1;#200$finish;endendmodule全加器的输入a、b和ci定义为reg型变量;把输出so和co定义为wire型变量用模块例化语句“adder1U1(a,b,ci,so,co);”把全加器设计电路例化到测试仿真环境中;用initial块语句改变输入的变化并生成测试条件,输入的变化语句完全

8、根据全加器的真值表编写仿真结果:(2)时序逻辑电路仿真环境的搭建在于时序逻辑电路

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。