EDA技术和VHDL设计第8章-仿真测试平台-PPT课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《EDA技术和VHDL设计第8章-仿真测试平台-PPT课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 技术 VHDL 设计 仿真 测试 平台 PPT 课件
- 资源描述:
-
1、1 1第8章 仿真测试平台 第8章 仿真测试平台 8.1 VHDL仿真概述 8.2 几种常见的Test Bench模型 8.3 ASSERT语句 2 2第8章 仿真测试平台 8.1 VHDL仿真概述仿真概述当一个设计完成后,需要对设计的正确性进行测试和验证。前面的章节都是通过Quartus软件自带的图形仿真工具进行仿真验证的。但是,当需要测试的向量很多时,如果仅靠画波形的手工方式,会相当耗费精力。实际上,VHDL作为硬件描述语言,既可以用于电路系统的设计,也可以用于电路系统的测试和验证。这时就可以使用测试平台(TB,Test Bench)来完成测试。TB其实就是一个与所设计的电路系统程序相对应
2、的激励程序,用来为设计提供激励。当然,TB既可以采用VHDL语言,也可以采用Verilog语言来实现。总地来说,VHDL Test Bench就是一段用于验证设计功能正确性的VHDL代码。3 3第8章 仿真测试平台 一般来说,仿真器通常需要两个输入:设计块(即DUT,Design Unit Test)和激励块(即TB,Test Bench)。TB能够完成以下几点目标:(1)在测试中实例化DUT。(2)为DUT产生激励。(3)产生参考输出,并与DUT的输出进行比较。(4)自动提供测试通过或失败的提示。下面先以一个简单的实例来感性认识TB的使用。设计一个具有异步清零功能的十进制计数器,能够完成09
3、的计数,并能够产生进位信号。第6章中曾采用状态机的方式实现该例,本章采用IF语句实现,具体代码见例8-1。4 4第8章 仿真测试平台【例8-1】5 5第8章 仿真测试平台 6 6第8章 仿真测试平台 使用VHDL语言编写TB,由于测试设计只用来进行仿真,不受综合中仅能使用RTL语言子集这样的语法约束。因此它可以使用所有的行为级结构,即所有基本语法都是适用的(包括一些不能被综合的语法)。例8-1的十进制计数器所对应的TB见例8-2。7 7第8章 仿真测试平台【例8-2】8 8第8章 仿真测试平台 9 9第8章 仿真测试平台 从例8-2可总结出TB的基本结构:包含一个不需要定义输入/输出端口的空实
4、体和一个带有被测试元件声明、例化、激励产生的结构体。例8-2的L5L6是TB的实体定义,实体名为cnt_tb,它与外界没有任何接口,只和DUT通过信号进行连接,不需要定义输入/输出端口;L10L15是被测试元件DUT的声明;L17L20声明了与DUT相连接的信号;L23是元件例化;L24确定了时钟信号clk的周期为50 ns,每隔25 ns值取反,其初始值为“1”(由L17定义);L25L27确定了信号reset的取值,初始值为“0”,240 ns后取值为“1”,360ns后取值为“0”。DUT和TB的结构关系如图8-1所示,它们之间通过内部信号进行交互。10 10第8章 仿真测试平台 图8-
5、1 DUT和Test Bench结构示意 11 11第8章 仿真测试平台 从本章开始均采用不再自带图形仿真工具的Quartus11.1版本,直接调用Modelsim完成仿真的形式。本例需要将设计文件cnt.vhd和测试平台文件cnt_tb.vhd都保存于同一文件夹、同一工程内。设置设计文件cnt.vhd为顶层实体,然后选择菜单AssignmentsSettings,打开如图8-2所示对话框。在左边的Category栏中选择EDA Tool SettingsSimulation,即可打开仿真设置对话框。在其中选择Compile test bench,然后单击Test Benches按钮,打开图8
6、-3所示对话框。单击New,添加测试文件,弹出图8-4所示新建测试平台设置对话框。在Test bench name栏中输入测试12 12第8章 仿真测试平台 平台实体的名称,即cnt_tb,则Top level module in test bench栏也会出现相同的名称。在Use test bench to perform VHDL timing simulation前的方框内打勾,则Design instance name in test bench栏变亮,在其中填入例化名u1。Simulation period栏可根据需要选择是根据激励变化确定仿真时间还是自定义仿真时间,本例选择Run
7、simulation until all vector stimuli are used。在File name栏右侧单击“”按钮,添加测试平台文件cnt_tb.vhd。设置完成后,单击OK,会发现图8-3所示的窗口已经包含相关设置信息,如图8-5所示,单击OK返回。13 13第8章 仿真测试平台 图8-2 仿真设置对话框 14 14第8章 仿真测试平台 图8-3 添加测试文件 15 15第8章 仿真测试平台 图8-4 新建测试平台设置 16 16第8章 仿真测试平台 图8-5 已添加测试平台 17 17第8章 仿真测试平台 将顶层设计文件cnt.vhd进行全程编译,无误后选择菜单ToolsRu
8、n Simulation Tool,即可调用Modelsim进行RTL仿真或门级仿真。例8-1的十进制计数器仿真结果见图8-6和图8-7。可以看到,当reset=“1”时,输出立即清零。计数器能够实现09的计数,并产生进位信号cout。相关实验步骤或一些细节可参见EDA技术与VHDL设计实验指导一书的5.3节。该例给读者展示了一个简单使用TB的示范,由于例子比较简单,并不能突出当测试向量巨大时TB的优点。18 18第8章 仿真测试平台 图8-6 例8-1十进制计数器仿真结果(1)19 19第8章 仿真测试平台 图8-7 例8-1十进制计数器仿真结果(2)2020第8章 仿真测试平台 8.2 几
9、种常见的几种常见的Test Bench模型模型TB产生激励的方式,主要有以下三种:(1)激励直接在TB中产生。(2)由其他硬件或软件模型产生激励。(3)从单独的文件中读入激励。21 21第8章 仿真测试平台 很明显,例8-1所采用的形式是激励直接在TB中产生,该方式导致TB的可重用性比较差,只能针对该DUT。对于大型设计,目前比较流行的形式是利用Matlab产生激励文件,由TB读入该激励文件并将相应的激励信息传递给DUT,DUT产生的输出可以以文件的形式进行存储,或直接与Matlab产生的理想输出进行比较。下面以一个移位寄存器的例子来讲解几种不同形式的TB模型。2222第8章 仿真测试平台 8
10、.2.1 简单简单Test Bench1移位寄存器实例移位寄存器实例简单的TB模型中只有相应的DUT被例化,激励在TB中直接产生,其模型结构见图8-8。例8-2即为一个简单的TB模型。例8-3是移位寄存器DUT的VHDL代码,例8-4是其对应的简单TB。2323第8章 仿真测试平台 图8-8 简单TB模型 2424第8章 仿真测试平台【例8-3】2525第8章 仿真测试平台 2626第8章 仿真测试平台【例8-4】2727第8章 仿真测试平台 2828第8章 仿真测试平台 例8-4的仿真结果见图8-9和图8-10。从图8-9中可以明显观察到din变化的时间;图8-10显示在时钟clk的上升沿时
11、,数据依次左移,最右位补“1”的过程。2929第8章 仿真测试平台 图8-10 例8-4TB移位寄存器仿真结果(2)图8-9 例8-4TB移位寄存器仿真结果(1)3030第8章 仿真测试平台 2直接产生激励信号的各种方式直接产生激励信号的各种方式激励信号一般可分为两类:周期性的激励信号和时序变化的激励信号。周期性的激励信号最典型的代表就是时钟信号,而时序变化的激励信号包括复位信号reset、清零信号clear以及其他一些输入信号等。(1)周期性激励信号的产生。时钟信号是最典型的周期性信号,既可以使用并行信号赋值语句来产生,也可以在进程中产生;既可以产生占空比是50%的时钟信号,也可以产生占空比
12、任意的时钟信号。例8-5采用并行信号赋值语句中的条件信号赋值语句建立了一个占空比是75%的时钟信号clk。31 31第8章 仿真测试平台【例8-5】CONSTANT period:TIME:=50 ns;clk=0 AFTER 3*period/4 WHEN clk=1 ELSE 1 AFTER period/4 WHEN clk=0 ELSE 0;3232第8章 仿真测试平台 将例8-5改为在进程中实现,见例8-6。【例8-6】CONSTANT period:TIME:=50 ns;PROCESSBEGINclk=1;WAIT FOR 3*period/4;clk=0;WAIT FOR pe
13、riod/4;END PROCESS;3333第8章 仿真测试平台 仍然以移位寄存器为例,二者仿真结果相同,见图8-11,所不同的是时钟信号clk的占空比由50%变为75%。需要注意的是,如果采用例8-4所示并行信号赋值语句,则时钟信号的初值必须明确声明为“1”或者“0”。例8-7显示了一个周期性的信号,其周期为70 ns,波形见图8-12。一般来说,为实现信号的周期性变化,一般采用WAIT语句。3434第8章 仿真测试平台 图8-11 时钟信号占空比为75%3535第8章 仿真测试平台【例8-7】PROCESSBEGINs=0,1 AFTER 10ns,0 AFTER 20ns,1 AFTE
14、R 40ns,0 AFTER 45ns;WAIT FOR 70ns;END PROCESS;3636第8章 仿真测试平台(2)时序变化的激励信号的产生。时序变化的激励信号也可以通过并行赋值语句和进程两种方式产生。例8-8采用并行赋值语句显示了一个复位信号reset的变化,仿真开始时,其值为“0”;60ns后,其值变为“1”;再经过30ns后,其值变为“0”。例8-9在进程中定义复位信号reset,采用WAIT语句来实现。二者仿真结果完全一致,如图8-13所示。需要注意的是,例8-9中最后一句WAIT语句的作用,如果不加该条语句,仿真结果又会如何变化,请读者自行分析。【例8-8】reset=0,
15、1 AFTER 60ns,0 AFTER 90ns;3737第8章 仿真测试平台【例8-9】PROCESSBEGINreset=0;WAIT FOR 60ns;reset=1;WAIT FOR 30ns;reset=0;WAIT;-一直等待END PROCESS;3838第8章 仿真测试平台 图8-13 例8-8和例8-9复位信号reset仿真结果 3939第8章 仿真测试平台 例8-10显示了使用预定义属性DELAYED来产生一个延时一定时间的激励信号。信号s较信号reset延时50 ns,仿真波形见图8-14。【例8-10】s=resetDELAYED(50ns);还有一类比较特殊的激励信
16、号,称为动态激励信号,即输入的激励信号与DUT的行为相关,受其影响或由其决定。例8-11仍然以例8-3中的移位寄存器为DUT,置数信号load由移位结果控制,当移位结果全1时,load=“1”允许置数。4040第8章 仿真测试平台 图8-14 使用预定义属性产生延时一定时间的激励信号 41 41第8章 仿真测试平台【例8-11】4242第8章 仿真测试平台 4343第8章 仿真测试平台 例8-11的仿真结果见图8-15。可以看到,当q移位为“11111111”时,延时60 ns后,load由“0”变为“1”,允许置数,重新将“00110011”置入;q置数成功后,再次触发进程,此时由于q不等于
17、“11111111”,则执行L32,延时60 ns后,load由“1”变为“0”。4444第8章 仿真测试平台 图8-15 例8-11TB移位寄存器仿真结果 4545第8章 仿真测试平台 8.2.2 带有独立源的带有独立源的Test Bench将产生激励的模块作为一个文件,与DUT一起,在TB中进行例化,就称为带有独立源的TB,其结构模型见图8-16。该模型比较适合于具有复杂输入、简单输出的设计;激励信号由独立源Source产生。4646第8章 仿真测试平台 图8-16 带有独立源的TB模型 4747第8章 仿真测试平台 仍然以例8-3所设计的移位寄存器为DUT,在此,再设计一个计数器,其计数
18、输出作为移位寄存器的置数初值,即移位寄存器的激励由计数器产生,结构模型如图8-17所示。当置数信号load=“1”时,计数器count停止计数,将当前计数结果作为激励信号传递给移位寄存器;同时,由于load=“1”,移位寄存器允许置数,并将在下一个时钟上升沿到来时开始移位操作。计数器的VHDL代码见例8-12,TB见例8-13。4848第8章 仿真测试平台 图8-17 由计数器产生激励信号 4949第8章 仿真测试平台【例8-12】5050第8章 仿真测试平台 51 51第8章 仿真测试平台【例8-13】5252第8章 仿真测试平台 5353第8章 仿真测试平台 例8-13的仿真结果见图8-1
展开阅读全文