- 1、本文档共79页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 设计验证 随着集成度的提高,系统的规模日益庞大且复杂。 强壮的系统应有完备的验证作保障。 验证工作量远大于系统设计工作量 。 验证工作的基本技术和方法。 4.1 验证概述 4.1 验证概述 4.1 验证概述 4.1 验证概述 4.1 验证概述 4.1 验证概述 4.1.4 验证技术 4.1.4 验证技术 (2)基于TestBench的验证(目前主要的验证方式) Testbench——测试平台 即: Testbench产生激励给被验证设计(DUV)或待测设计(DUT),同时检查DUV/DUT输出是否满足要求 4.1.4 验证技术 Testbench功能: 为DUV/DUT提供激励信号 正确实例化DUV/DUT 将仿真数据显示在终端或者存为文件,也可以显示在波形窗口用于分析 复杂设计可以使用EDA工具,自动比较仿真结果与理想值。 4.1.5 仿真工具 4.1.5 仿真工具 4.1.5 仿真工具 4.1.5 仿真工具 4.1.6 验证计划和流程 4.1.6 验证计划和流程 4.1.6 验证计划和流程 4.1.6 验证计划和流程 4.1.6 验证计划和流程 4.2 功能验证 4.2.1 验证程序(TestBench)的组成 编写仿真激励: 1、仿真激励与被测对象的连接 模块实例的端口方式: (1)名称对应:将模块实例外部的信号直接对应于模块的端 口名称。 module halfadd(x,y,sum,cout); …… endmodule 名称对应 halfadd u_halfadd_a(.x(ax),.y(ay),.sum(asum),.cout(acout)); (2)位置对应:外部信号按照该模块端口声明的顺序一一对 应。 Halfadd u_halfadd_b(bx,by,bsum,bcout); 2、使用initial语句和always语句 通常主动产生激励用initial,被动检测响应用always。前者执行一次,后者不断重复执行。在initial中多次运行一个语句块,使用嵌入循环语句:while、repeat、for和forever。 3、时钟、复位写法 (1)普通时钟信号 //产生一个周期为10的时钟 parameter FAST_PERIOD=10; reg clk; initial begin clk=0; forever #(FAST_PERIOD/2) clk=~clk; end 用always产生一个周期为10的时钟 parameter FAST_PERIOD=10; reg clk; initial clk=0; always #(FAST_PERIOD/2) clk=~clk; (2)非50%占空比时钟 parameter Hi_time=5; parameter Lo_time=10; reg clk; always begin #Hi_time clk=0; #Lo_time clk=1; end 由于clk0时刻未初始化,前5纳秒输出为x (3)固定数目时钟 \\产生两个高脉冲 parameter PulseCount=4,PERIOD=10; reg clk; initial begin clk=0; repeat (PulseCount) #(PERIOD/2) clk=~clk; end (4)异步复位信号 parameter PERIOD=10; reg Rst_n; initial begin Rst_n=1; #PERIOD Rst_n=0; #(5*PERIOD) Rst_n=1; end Rst_n为低有效,代码表示10ns时复位,复位延时50ns (5)同步复位: initial begin Rst_n=1; @(negedge clk); //等待时钟下降沿
文档评论(0)