数字系统EDA技术

上传人:jiups****uk12 文档编号:46025826 上传时间:2018-06-21 格式:PPT 页数:34 大小:596.50KB
返回 下载 相关 举报
数字系统EDA技术_第1页
第1页 / 共34页
数字系统EDA技术_第2页
第2页 / 共34页
数字系统EDA技术_第3页
第3页 / 共34页
数字系统EDA技术_第4页
第4页 / 共34页
数字系统EDA技术_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《数字系统EDA技术》由会员分享,可在线阅读,更多相关《数字系统EDA技术(34页珍藏版)》请在金锄头文库上搜索。

1、3.11 测试平台(TestBench)设计1. 仿真验证的重要性(1)仿真验证是必要的仿真验证是FPGA设计过程中非常重要的环节,贯穿于 系统设计实现的整个流程之中。恰当的验证论证了设计的 可信度,验证是证明设计品质的惟一方法。 (2)仿真验证工作占设计总工作量的70%“在这个设计规模达数百万门的ASIC、可复用的知识产 权(IP)和系统芯片(SOC)的时代,仿真验证占到了设计 总工作量的70%左右。设计团队应该配备能够正确描述仿真 验证需求的工程师和专门进行验证的工程师。仿真验证工 程师的数量甚至是RTL设计人员的两倍。” -Writing Testbenches【美】Janick Ber

2、geron2. 验证方法在现代EDA工程中,通常利用EDA工具进行仿真来实现系统功能的验证。 (1)交互式仿真方法大多数的VHDL仿真器允许进行实时交互式的操作,允许在仿真期间对输入信号赋值,指定仿真执行时间,并观察输出波形。 (2)测试平台(TestBench)方法利用测试平台,可以实现自动地对被测试单元输入信号测试矢量,并且通过波形输出、文件记录输出或与测试平台中设定的预期输出进行比较。测试平台待测设计测试平台(TestBench)通常指一段仿真代码,用来为设计产生特定的输入序列,也用来观测设计输出 的响应。测试平台是一个封闭的系统:系统没有来自外部的输入信号,也没有输出信号。测试平台是系

3、统的控 制中心。与交互式仿真方法比较,测试平台具有以下优点 :1、可以简便地对输入和输出矢量进行记录归 档;2、相对于手工方式(逐个处理输入和输出矢 量)而言,它提供了一种更为系统的仿真途径;3、针对原理性模型建立的测试平台,同样可 以应用在实现设计的时序仿真中;4、测试平台与设计实现可以并行进行;5、验证工作可以在更高抽象的层次中进行, 而不是在底层直接和0、1打交道,可以缩短设计 周期。53. 基于VHDL的测试平台VHDL的可综合性和可仿真性VHDL作为一种硬件描述语言,可综合设计只是它的一个子集;VHDL强大的行为建模能力使其能够方便、简洁地用于仿真测试。(1)VHDL的可综合性硬件电

4、路设计的综合是指将HDL或原理图转化为与 门、或门、非门等基本的逻辑单元组成的门级网表。可综合的VHDL语句就是指能够通过EDA工具自动 转化为硬件逻辑的语句。6例如:描述除法行为C ; 时间值表示time类型的数据,可以指定单位为fs ,ps, ns,ms和s等,默认的单位是ns。time类型在standard数据包中的定义为:Type time is range -2147483647 to 2147483647;units fs; ps = 1000 fs; min = 60 sec; hr = 60 min; end uints;11在VHDL仿真程序中,时钟信号经常用 wait fo

5、r语句来描述:constant clk_period: time :=10 ns; clk_process: process beginclk report severity 当执行到assert语句时,若条件为真,则继续 往下执行其它语句;若条件为假,则输出报告信息 和错误级别。报告信息是一段字符;错误级别是VHDL中预定义好的四个级别:FAILURE, ERROR, WARNING, NOTE。14assert (a =1) report “a is not equal to 1” severity ERROR;例如:Assert语句与if语句是相反的,if语句在条件成 立时执行,而ass

6、ert语句在条件不成立的时候执行。if (a /=1) thenassert falsereport “a is not equal to 1”severity ERROR; end if;15仿真激励的产生一般情况下,测试代码的最主要工作就是 描述待测试模块的激励信号。 (1)初始化对于测试代码中的变量和信号,定义时如 果不指定初始值仿真器默认为“X”。初始化原则:待测模块内部的信号和变量由待测模块初 始化;测试代码定义的信号和变量由测试代码完 成初始化。信号和变量的初始化只对仿真有效,综合时被忽略 。16(2)时钟信号constant clk_period: time :=10ns; cl

7、k_process: process beginclk = 0;wait for clk_period/2;clk = 1;wait for clk_period/2; end process; clk_process: process(clk) beginclk = NOT clk after period/2; end process; clk = NOT clk after period/2; 17(3)复位信号复位信号不是周期信号,通常通过延迟赋值语句产生 的值序列来描述。 constant reset_period: time :=20ns; reset = 1,0after res

8、et_period;constant reset_period: time :=20ns; process beginreset = 0;wait until clkevent and clk=1;reset = 1;wait until clkevent and clk=1;reset = 0;wait; end process; 18(4)数据数据既可以通过VHDL时序控制语句来产生 ,也可以通过TEXT IO从文件中读取。使用VHDL语句产生数据主要有两种方式:1)通过延时赋值语句产生的值序列来描述;2)通过进程语句来描述。不规则数据序列,且长度有限有规律的数据序列,长度不限19sign

9、al tmp: std_logic_vector(3 downto 0); Tmp = “0000”,“0010” after 10ns;“0101” after 20ns;stim_proc: process beginwait for 10ns;if (a=255) thena=0;elsea=a+1; end process;stim_proc: process(clk) beginif (clkevent and clk=1) thenif (a=255) then a=0;else a=a+1; end if;end if; end process;基于TEXT IO产生数据的方法见

10、后。20测试程序的设计方法VHDL TestBench是一段专门设计的用于测试 VHDL模块功能是否正确的VHDL代码。主要应该包括: I.例化待验证的模块(Unit Under Test,UUT) II. 通过VHDL语言的行为描述,为UUT提供激励信号; III. 收集UUT的输出结果,必要时将该结果与期望的理想结果进行比较; IV. 根据比较结果自动判断UUT的内部功能结构是否正确。21Resulting Output FileMonitor Program that generates outputProgram that generates StimuliUnit Under Tes

11、tHuman Eye or External Program22例1:验证下述模块功能:4. 应用举例23实体声明, 简单,无外部输 入,端口声明处 空白待测元件 声明24待测元件的 输入输出信 号:称为 testbench的 内部信号元件例化25时钟进程激励信号a在 0255间循环复位信号如何描述?略26在实际应用中,设计者经常面临着测试向量数据量庞大而难以实现的问题。例如,在数字图像处理中,一帧320*240的图 像所产生的测试向量达到320*240*2=1536000个。采用之前的任一种测试方法都难以进行仿真测试4. 基于TEXT IO的VHDL的测试平台应用TEXT IO和Matlab

12、或C语言等来辅助仿真测试27 TEXT IO?TEXT IO是标准库中的一个程序包,包中定义了三个类型:pline类型ptext类型pSide类型访问文件的操作过程:read()、 readline()、write()、writeline()use std.TextIO.all28(1)line类型定义line是Text IO中所有操作的基本单元。读文 件时,先按行(line)读出一行数据,再对行进行操作,以各种数据类型读取其中的数据;写文 件时,先将各种数据组合成line,再将line写入文件。Line类型只能定义变量,不能定义信号variable Dline: line;signal Dl

13、ine: line;29(2)text类型定义text为ASCII文件类型。定义为text类型的文件(file)是长度可变的ASCII文件。(3)side类型两种状态,即right和left,分别表示将数据从左边还是右边写入行变量。file input: TEXT open read_mode is “STD_INPUT”file output: TEXT open write_mode is “STD_OUTPUT”30(4)文件操作过程l procedure READLINE(文件变量;行变量)l procedure WRITELINE(文件变量;行变量)l procedure READ(行变量;数据类型)l procedure WRITE(行变量;数据变量;写入方 式;位宽)write(OutLine, OutData, left, 2) 31 基于Text IO的测试仿真方案Matlab或C语言Test Vectors.inpResult.out (仿真结果输出)测试平台Text IOUUT32例3:Text IO应用3334

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号