1、第3章 验证、模拟和仿真,南京航空航天大学 信息科学与技术学院 电子工程系,复杂电路设计主要依赖于EDA技术,在EDA工具中,具备模拟和综合功能。,模拟是当前最常用的设计验证手段。,3.1 验证与模拟,3.1.1 模拟的概念,模拟作为设计验证手段,常用工具: EDA工具中的模拟器(Simulator),称为软件模拟; 可编程器件开发系统,模拟“真实的”电路原形设计,硬件仿真器,要模拟电路,首先必须获得以下信息: 描述原形设计的模型 真值表、逻辑表达式、BDD图、HDL表达等 元器件库 在设计的不同抽象级,模拟采用不同的元器件库 施加给模型的激励信号 逻辑值、波形图、伪随机测试图形或Testbe
2、nch 施加激励信号后模型的理想响应,模拟要素,功能模拟 采用元器件的逻辑函数表达式; 结构级模拟 采用的库包含了一系列标准单元,对每个单元的基本逻辑功能及传播延迟都做了描述; 晶体管级模拟 需要生产厂家提供库来进行模拟。,南京航空航天大学 信息科学与技术学院 电子工程系,模拟作为设计验证手段,可分为: 功能模拟 检查原形设计操作的正确性。 时间模拟 检查原形设计时间的正确性和确定关键路径。,3.1.2 验证与模拟的方法,1. 基于模拟的方法,包括: 基于事件的模拟注重于设计的功能与时间的模拟,适合于异步电路的; 基于时钟的模拟只对设计的功能进行分析,适于中规模设计; 基于事务的验证不需要详细
3、的测试平台(testbench),系统中所有模块之间的事务类型都得以列举和系统化测试; 代码覆盖率给定的验证代码施加到具体的设计对象,所对应的功能覆盖范围就是代码覆盖率,通常在RTL级完成; 软硬件协同验证通过软件进行操作和诊断,实际的激励加在硬件设计上; 数模混合验证分别验证混合电路的各个模块,接口部分按数字电路看待,在整个系统集成后再做验证; 硬件加速器用硬接线连接制造好的元器件来模拟原形设计。仿真也是一种硬件验证手段,依赖于可编程器件开发系统。,2. 静态方法,不需要Testbench或测试向量即可进行验证 包括: 格式检查验证设计代码格式的正确性; 静态时间验证对每个存储和锁存单元进行
4、建立、保持和延迟等时间要求的验证。,3. 形式验证方法,采用穷举的方法检查出与特定事件序列相关的错误,不需要Testbench或测试向量 包括: 模型检查用数学的方法验证设计的行为特性; 等效检查验证用数学方法检查同一设计不同版本之间的一致情况。,4. 物理验证和分析方法,考虑电参数和工艺参数对互连寄生参数的影响 包括:时序、信号完整性、串扰、电迁移、功耗分析等,南京航空航天大学 信息科学与技术学院 电子工程系,系统级设计中,系统行为按照设计规格建模,采用行为级Testbench验证。 (行为级Testbench可用HDL、C、C+编制,也可用Vera或Specman Elite之类的Test
5、bench语言编制。) 系统级验证完成后,采用库中的软硬件模块把系统映射成结构或编写成部分设计过程,并进行软硬件划分。结构的功能和性能验证所采用的Testbench是系统行为模拟中所编制的。 行为级Testbench应转换为合适的格式,为硬件RTL代码模拟和软件验证所用。,3.1.3 验证方法,1. 系统级验证,2. 硬件RTL验证,硬件验证中所采用的RTL代码和Testbench来自于系统级设计。Testbench转换为合适的格式以验证RTL代码,被验证的是设计功能。 RTL验证包括格式检查、形式模型检查、逻辑模拟、基于事务的模拟和代码覆盖率分析。,3. 软件验证,4. 网表验证,硬件RTL
6、综合后可生成门级网表,然后一是按参考设计的RTL代码进行形式等效验证,一是按设计实现的门级网表进行形式等效验证,以保证RTL代码和门级网表的逻辑等效。时间验证也在设计的不同步骤中得以执行。,软件模拟产生测试文件、采用软件原形、快速原形系统或软硬件协同验证等完成。,快速原形系统将仿真系统和可重构的原形设计映射到制作在一块板子上的DSP、FPGA等元件上,配合系统连接板,以准确的提供一个真实的原形设计硬件。,5. 物理验证,包括DRC、LVS、工艺的天线效应分析、串扰、IR下降在内的SI检查 。,6. 器件测试,3.2.1 Testbench格式,功能验证过程中生成的测试向量用于器件测试。 方法是
7、用ATPG工具或功能验证中创建的Testbench生成测试向量,如果结果满意,可用于产品测试。,3.2 基于Testbench的验证,Testbench是针对用HDL语言描述的数字电路而编写的、包括施加给CUT的测试图形和CUT相应的理想响应,并进行测试响应分析的HDL代码。,Testbench格式主要有:HDL、可编程语言接口(Programmable Language Interface, PLI)、基于波形的、基于事务的和基于设计参数的。,南京航空航天大学 信息科学与技术学院 电子工程系,用写testbench的方法来做功能验证比画波形图的优点如下: (1)画波形无法产生复杂的激励,只能
8、提供极低的功能覆盖。而testbench以语言的方式描述激励源,容易进行高层次的抽象,可以产生各种激励源。 以PCI转以太网电路设计为例:PCI的配置读写、存储器读写等;以太网的短包、长包等。如果这些激励都用画波形图完成,工作量难以想象;用testbench则可以轻松完成这些工作。 (2) 画波形无法实现验证自动化。对于大规模设计来说,仿真时间很长,如果一个需要仿真1天的设计在检错时仅通过画波形图来观测,将几乎不能检查出任何错误;而testbench是以语言的方式进行描述的,能够很方便地实现对仿真结果的自动比较,并以文字的方式报告仿真结果。 (3) 画波形图难于定位错误。用画波形图进行仿真是一
9、种原始的墨盒验证法,无法使用新的验证技术;而testbench可以通过在内部设置观测点,快速地定位问题。,南京航空航天大学 信息科学与技术学院 电子工程系,(4) 画波形的可重用性和平台移植性极差。如果将一个PCI转100Mb以太网的设计升级到PCI转1000Mb以太网,这时原来画的波形图将不得不重新设计,耗费大量的人力物力及时间;但若使用testbench,只需要进行一些小的修改就可以完成一个新的测试平台,极大地提高了验证效率。 (5) 通过画波形的验证速度极慢。Testbench的仿真速度比画波形图的方式快几个数量级,在Quartus下画波形需半个小时才能跑出来的仿真结果,在ModelSi
10、m下使用testbench可能只需几秒钟就可以完成。,P45是一个二选一多路选择器的Testbanch实例。,3.2.2 Testbench开发语言和工具,Specman Elite和Synopsys Vera都是硬件验证语言,根据这两种语言开发的Testbench简练、易懂、验证效率高。 Synopsys Vera构成目标模型环境,自动生成测试激励、自动检查验证结果和给出覆盖率分析,所产生的Testbench也易于复用。,/module design of mux2 module mux2(in1,in2,out1,sel); input in1,in2,sel; output out1;
11、assign out1=sel ? in2 : in1; endmodule / testbench for mux2 library ieee; use ieee.std_logic_1164.all; entity mux2_tb is end mux2_tb; architecture tb of mux2_tb is component mux2 port ( in1,in2:IN STD_LOGIC; out1:OUT STD_LOGIC; sel:IN STD_LOGIC); end component; signal in1,in2,out1,sel:std_logic; beg
12、in u1:mux2 port map(in1,in2,out1,sel); in1=0after 0 ns,1after 5 ns,0after 10 ns,1after 12 ns,0after 15 ns; in2=1after 1 ns,0after 4 ns,1after 8 ns; sel=1after 0 ns,0after 12 ns; end tb;,3.3 逻辑模拟,在电路的设计与制造流程中,逻辑模拟用来验证设计的正确性。 逻辑模拟可分为两大类: 编译模拟 解释模拟,也称为事件驱动模拟。,3.3.1 编译模拟,编译后:LDA B AND Q INV STA E OR A S
13、TA F STA Q,模拟器把电路的网表转换成机器指令码序列,这些序列完成电路的各种逻辑和算法功能,称为编译码模型。 每次模拟时,模拟器先从激励文件读入原始输入值(测试图形),然后根据编译码模型按层次计算出电路中每一个元件的逻辑值。,南京航空航天大学 信息科学与技术学院 电子工程系,编译模拟的优点:速度快 编译模拟的缺陷:当设计改变时电路需要重新编译;对于每一个测试图形,电路每个部分的行为都要模拟。,3.3.2 事件驱动模拟,在事件驱动模拟过程中,采用电路的结构模型来传播事件。 事件指的是信号逻辑值的改变。原始输入值的变化定义在激励文件中,其它线的事件由被激活的元件(元件中至少有一个输入逻辑值
14、改变)逻辑关系确定。 事件驱动:有事件时模拟器才分析激活元件,确定其它事件。 见P59图,3.3.3 延迟模型,模拟流程图由于其中行为元件采用不同的延迟模型还有多种变例。 延迟模型是决定模拟准确度和模拟程序复杂度的关键因素。如果每个元件都按实际情况分配不同的延迟,那么模拟结果就准确。 静态时间分析(STA)关注关键路径的延迟,根据在最坏的分析条件下各个元件的数据表示计算而得(通过静态时序分析STA得到电路时序是否满足要求)。,STA是一种用于时间模拟的穷尽分析方法。 STA工具将CUT分解成不同的时序路径集合后,首先分析每条路径的门延时和线延时,再计算每条路径总的延时。 它既可分析给定路径的各
15、种延时信息,也可用来分析设计者的时序约束是否满足,最终得到一个完整的STA报告。,基于模拟的设计验证要解决3个相互关联的问题: (1)如何产生输入激励信号值 测试生成 (2)如何判断模拟结果是否正确 测试分析 (3)如何选择输入激励的施加方法 测试施加,南京航空航天大学 信息科学与技术学院 电子工程系,故障模拟 将故障注入设计模块,并对其施加测试集,经模拟器对有故障的设计模型进行模拟,然后分析该模型的响应,达到以下目的: (1)测试给定的故障出现的条件;(2)测试图形生成; (3)衡量给定测试图形的效率;(4)生成故障表(可测的故障 )。,3.4 故障模拟,为了对制造好的电路施加测试图形进行故
16、障测试,应该在设计阶段对故障进行模拟,以生成测试图形及可测故障集。,电路在制造过程中,某些失效带来了物理故障,可以建模为逻辑故障。,南京航空航天大学 信息科学与技术学院 电子工程系,故障模拟器的流程图,进行故障测试生成时: 首先故障模拟器从故障列表中选定1个故障,从测试集中选定输入激励加到设计模型上。如果模拟和测试分析表明有故障和无故障设计模型的响应不同,故障出现的条件也相符合,,则选定的输入激励就是检测该故障的测试图形,保存测试图形并将该故障从故障列表中剔除。选择下1个故障重新进行上述过程; 否则换另1个输入激励,直至模拟和分析结果满意为止。 如果选择测试集中所有的输入激励都不能测出某个故障
17、,则称此故障不可测。,南京航空航天大学 信息科学与技术学院 电子工程系,故障模拟器有两类:编译模拟器和事件驱动模拟器。 故障模拟主要方法有3种: 并行故障模拟 故障注入与处理是并行的 演绎故障模拟 通过演绎的方法一“遍”找出所有可测故障 并发故障模拟 综合并行模拟与演绎模拟 并行故障模拟常采用编译模拟器,演绎故障模拟和并发故障模拟常采用事件驱动模拟器。,3.4.1 并行故障模拟,故障注入 针对所选择的需同时处理的故障子集,构造其能够被故障模拟程序识别与处理的数据结构。模拟过程中,数据结构用于生成所注入故障的效应。,并行模拟的思想是:同时模拟电路中的N个故障。 将串行模拟中N个单固定故障分别对应
18、着的N个电路模型,并成一个含有N个单固定故障的电路模型。,例题:,若电路有N-1个故障和1个无故障的响应值,则可用N bit的字来表示它们。,根据第1列中原始输入值abcd=1010 、门的逻辑关系和第1行所列的各个故障分别计算对应的原始输出值 = 只有故障a/0, f1/1,f3/0,f/1 4个故障可检测得到(在输出f端观察),电路中有9条线,应有18个单固定型故障,如果考虑abcd=1010 ,则有故障14个。,无故障时的响应ff,如果计算机字长为N,那么一个字可表示N-1种故障(另1位表示无故障)。 对于有M个故障、1个原始输出的电路,需处理M/(N-1)次,假如电路有P个原始输出,至
19、少需要计算P*M/(N-1)次。,演绎故障模拟要用到故障表的概念。 一个节点A的故障表LA指与节点A相关联的每一根信号线的列表形式,所有节点的故障表就构成了电路的故障表。 故障模拟时,LA 是引起节点A的逻辑值与正常值不同的所有故障的集合。,3.4.2 演绎故障模拟,x3,南京航空航天大学 信息科学与技术学院 电子工程系,设有一个n输入 的与(非)门,输出为y,输入端的故障分别为 ,施加测试图形 时,它的输出端的故障表为 。令,1. “与”门和“与非”门的故障表计算,若与门的输入是0、1构成的向量,当为1的输入端发生故障0时,在输出端是检测不到的。只有那些所有为0的输入端都发生故障而变成1,才
20、可能在输出端反映这个故障。 若与门的输入向量为全1,则任何1个输入端的故障都会反映在输出端。(与门、与非门的非控制值为1),其中,1*和 0* 在元件为“与”门时分别为1和0,在为“与非”门时分别为0和1。m+p=n。,南京航空航天大学 信息科学与技术学院 电子工程系,2. “或”门和“或非”门的故障表计算,若或门的输入是0、1构成的向量,当为0的输入端发生故障1时,在输出端是检测不到的。只有那些所有为1的输入端都发生故障而变成0,才可能在输出端反映这个故障。 若或门的输入向量全为0,则任何1个输入端的故障都会反映在输出端。(或门、或非门的非控制值为0),设有一个n输入 的或(非)门,输出为y
21、,输入端的故障分别为 ,施加测试图形 时,它的输出端的故障表为 。令,其中,1*和 0* 在元件为“或”门时分别为1和0,在为“或非”门时分别为0和1。m+p=n。,输入激励abcd=1010 由基本门的故障表写出每个节点的故障表, 可测的故障是 a/0,f1/1,f3/0,f/1,例题:,演绎模拟所得故障表与测试图形有关,并非元件固有。,3.4.3 并发性故障模拟,综合了并行模拟和演绎模拟的优点,比其他算法更快,而且使用动态内存分配。,所有的门 无故障情况,南京航空航天大学 信息科学与技术学院 电子工程系,整个模拟过程总结如下:,测试图形是abcd=1010; 门f1:故障b/1被舍去; 门
22、f2:故障c/0被舍去; 门f3:故障c/0被舍去; 门f4:故障b/1被舍去; 门f: 故障d/1、f2/0、f4/1被舍去。,3.4.4 故障模型结果分析,经过故障模拟,故障可分为可测与不可测两种。 若通过施加测试图形,某故障可控或者可观,则称此故障可测。故障电路至少有一个原始输出与无故障电路不相同,否则测试集中所有的输入激励均无法检测出存在的故障。,故障模拟器对故障出现的设计模型施加测试集,进行模拟,然后分析有故障和无故障设计模型的响应,达到测试给定故障出现的条件、测试图形生成、衡量给定测试图形的效率和生成故障表的目的。,南京航空航天大学 信息科学与技术学院 电子工程系,3.5 仿真,对
23、于复杂的系统,最复杂的问题(如对芯片控制和通信问题)只能通过应用仿真之类的验证技术才能发现。验证系统是为芯片设计提供一个与真实环境相同或相似的验证环境。 典型仿真系统为仿真箱、硬件加速器或快速原形系统,其中一个功能是把设计原形映射到阵列处理器或FPGA组成的硬件平台上。,3.5.1 基于阵列处理器的仿真,基于阵列处理器的仿真系统由一系列高速处理器和高速存储器构成,然后连接到主机,原形设计的RTL代码经编译后下载到系统。仿真速度取决于并行运行的处理器的数量。,3.5.2 基于FPGA的仿真,建立仿真系统,可按所示的流程进行仿真。 基于FPGA仿真的缺点是不能对设计的时序和工艺性能进行很好的验证;仿真系统只处理0和1状态,不能处理X和Z状态,影响电路初始化。,南京航空航天大学 信息科学与技术学院 电子工程系,3.6 基于ATPG工具的模拟,通过Synopsys的ATPG工具Tetramax的上机实验,理解ATPG流程和故障模拟流程,理解测试图形的生成和施加方式。,