数字系统设计及VHDL实践专题讲座1-模拟验证与课件_第1页
数字系统设计及VHDL实践专题讲座1-模拟验证与课件_第2页
数字系统设计及VHDL实践专题讲座1-模拟验证与课件_第3页
数字系统设计及VHDL实践专题讲座1-模拟验证与课件_第4页
数字系统设计及VHDL实践专题讲座1-模拟验证与课件_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字系统设计及VHDL实践专题一模拟验证与形式验证数字系统设计及VHDL实践专题一模拟验证与形式验证1模拟验证与形式验证学习目标:

主要学习模拟验证的模型和算法问题,包括逻辑模拟算法和VHDL模拟算法。要求深入掌握逻辑模拟的概念、模型与算法,掌握VHDL模拟的基本思想,了解VHDL进程模拟算法与层次式模拟算法。

难点重点:

1.模拟验证概念与模拟过程2.逻辑模拟模型3.事件驱动模拟算法4.VHDL模拟模型5.进程模拟算法模拟验证与形式验证学习目标:难点重点:1.模拟验证概念与模2模拟验证与形式验证本章主要内容:一、模拟验证1.1模拟验证概述1.2逻辑模拟算法1.3VHDL模拟二、形式验证模拟验证与形式验证本章主要内容:一、模拟验证1.1模拟验3模拟验证概述1.验证的重要性2.三种验证方法3.模拟系统的构成4.逻辑模拟过程模拟验证概述1.验证的重要性2.三种验证方法3.模拟系统的构4验证的重要性由于集成电路规模增大,单个芯片已经可以包含整个电路系统,因此设计过程的复杂性迅速增加。解决电路设计复杂性的一种方法是进行层次化设计。这种方法从系统级、行为级、寄存器传输级、功能级、门级以及开关级等不同的级别对设计进行描述,每级还可以细化为许多层次,使得设计对象逐级细化。

在如此广阔的设计领域里,每个步骤都有可能发生错误。验证作为保证设计正确性的主要手段,其重要性是不言而喻的,而且,设计人员希望越早发现错误越好,如果要到版图级验证时才发现错误,所造成的损失将是十分巨大的。开发适合于各个设计阶段和设计层次的验证工具,帮助设计人员尽早发现和排除错误,是EDA的一个重要研究课题。

在目前流行的设计方法和实际设计流程中,设计正确性的验证通常采用的是模拟验证方法(SimulationVerificationMethod)。所谓模拟验证,是指从电路描述(语言描述或图形描述)中提取出模型,然后将外部激励信号或数据施加于该模型,进行计算并观察输出结果,判断该电路描述是否实现了预期的功能。

验证的重要性由于集成电路规模增大,5三种验证方法1.模拟(simulation):从电路的描述(语言描述或图形描述)抽象出模型,然后将外部激励信号或数据施加于此模型,通过观察该模型在外部激励信号作用下的反应来判断该电路系统是否实现预期的功能。模拟方法是目前常用的方法。根据不同的电路级别,有不同的模拟工具。

(目前验证电路正确性的主要手段)2.规则检查(DesignRuleChecking):分析电路设计结果中各种数据的关系是否符合设计规则。3.形式验证(FormalVerification):它利用理论证明的方法和数学的方法来验证设计结果的正确性。形式验证基于严密的理论体系,理论上可以证明电路正确与否。三种验证方法1.模拟(simulation):从电路的描6模拟系统的构成模拟系统的基本数据包括电路模型、外部输入激励波形、输出响应波形三部分组成。

硬件描述语言模拟数据数据库激励波形控制命令模拟器输出波形原理图输入编译转换模拟系统的构成模拟系统的基本数据包括电路模型、外部输入激励波7模拟系统的构成1.电路模型不用实际元件而用表示电路结构或行为的内部数据表示。设计者可以用硬件描述语言将所设计电路的结构或功能输入计算机,也可以用图形描述的方法输入电路模型。内部模型还可以通过数据库统一管理。2.在输入端施加作为外部激励波形的数据。3.计算机根据这些激励波形和内部电路模型计算出各点的响应,得到输出波形数据。模拟系统的构成1.电路模型不用实际元件而用表示电路结构或8逻辑模拟的过程原理图编辑硬件描述语言激励波形编辑数据库启动读电路数据生成模拟驱动程序得到激励波形模拟模拟结果波形显示观察修改模拟状态模拟运行准备工作编译转换编译或转换继续模拟逻辑模拟的过程原理图编辑硬件描述语言激励波形编辑数据库启读生9逻辑模拟的过程1.模拟启动前,须完成的工作:(1)用硬件描述语言描述被模拟电路,经过编译形成中间格式的内部数据。对逻辑电路来说,常用逻辑图编辑器对要模拟的电路进行编辑生成内部数据。所生成的内部数据存入数据库中。(2)用波形描述语言写出输入波形文件或者用波形编辑器编辑波形,并放在当前目录。2.在同一个EDA系统中,用硬件描述语言输入的内部数据格式与图形编辑器输入的内部数据是一致的。不同级别的内部数据在结构上往往有较大的差别。例如,逻辑电路的内部数据是有元件模型组成的网表结构,而行为描述的内部数据是复杂的数据结构,用以表示各种语言的组成要素。数据库将各级内部描述有机地组织在一起。逻辑模拟的过程1.模拟启动前,须完成的工作:2.在同一个10逻辑模拟的过程3.启动模拟器运行之后首先从数据库中读入中间格式的内部模型数据及波形数据。4.所生成的模拟程序启动运行之后,首先读入激励波形和模拟控制命令,接着就在这些激励波形和模拟控制命令的控制下进行模拟。5.模拟结果包括输出波形文件和电路错误报告。电路错误报告保存模拟过程中得到的检查结果,例如竞争冒险情况,时序检查结果,以及由控制命令描述规定的信号状态显示等,供设计者参考。

逻辑模拟的过程3.启动模拟器运行之后首先从数据库中读入中间11逻辑模拟算法1.内部电路模型2.事件驱动模拟算法逻辑模拟算法1.内部电路模型2.事件驱动模拟算法12内部电路模型逻辑模拟的对象是由门和功能块等元件组成的逻辑电路。为了对逻辑电路进行模拟,要对被模拟的电路建立模型。模拟模型反映实际电路的特性。越接近于真实电路,模拟结果越精确,但往往也增加了复杂度。选取什么样的模型,取决于模拟的目的和对模拟的精度要求。主讲内容:电路结构模型、信号状态值模型、延迟模型、元件模型。内部电路模型逻辑模拟的对象是由门和功能块等元件组成的逻辑电路13内部电路模型电路结构模型:e1,XOR,(X,Y),S1;

e2,XOR,(Cin,S1),Sum;

e3,AND,(X,Y),S2;

e4,AND,(S1,Cin),S3;

e5,OR,(S2,S3),Cout;在对硬件描述语言描述编译之后,首先产生一个中间数据格式的文件,可放在数据库中,然后由模拟程序读取。这样的中间数据用最基本的信息描述电路。逻辑电路的中间数据模型一般用称为网表(Netlist)的一个元件集合表示电路结构。如果指定了每个元件各端口所连接的信号,就可以唯一确定电路连接关系。此外,每个元件还应指明其元件模型。这样,一个元件E的描述至少应有元件名N、模型M、输入端信号PI、输出端信号PO四部分组成,即

E=(N,M,PI,PO)内部电路模型电路结构模型:e1,XOR,(X,Y),14内部电路模型电路结构模型:

一般逻辑模拟器中,除了基本门外,还包括三态门、传输门、触发器、寄存器以及自定义功能模块等。每个元件需要纪录其逻辑连接关系,如输入信号,输出信号,还需要纪录其性能特性:所用的模型、延迟时间、最大负载系数等。对于指定功能的逻辑功能模块,还要指定其内部记忆变量、建立时间和保持时间、以及信号值配合的禁止情况等。内部电路模型电路结构模型:一般15内部电路模型电路结构模型:

网表的连接关系隐含在各元件的信号名中,模拟程序中使用很不便。为此,模拟程序在读入网表之后要对网表进行重新组织。模拟程序中,电路主要由元件表和信号表两个表组成。每个元件的输入信号和输出信号都指向相应的信号节点。在模拟时需要频繁查找每个信号后面所接的元件,称为负载元件或扇出元件。为此,需要找出各信号负载元件表,指向相应的元件节点。信号节点还需要有其性能特性的纪录,以及信号强度、信号值波形等,纪录模拟结果。内部电路模型电路结构模型:网表的连接关系隐含16内部电路模型信号状态值模型:在逻辑电路中,信号值一般用布尔值(0和1)表示。除此之外,为了表示信号波形的各种状态,在模拟系统中经常增加一些特殊用途的值。选取不同值的组合,就构成各种功能的模拟器信号模型。主要讲三种模型:二值模型、三值模型和四值模型。内部电路模型信号状态值模型:在逻辑电路中,信号值一般用布尔值17内部电路模型信号状态值模型:二值模型:只使用0和1两个值的模型称为二值模型。二值模型假定逻辑元件都完成理想的布尔运算,可以检验数字系统的逻辑功能,可以检查电平配合、时序配合等问题。内部电路模型信号状态值模型:二值模型:只使用18三值模型:在二值的基础上再增加一个值X,即形成三值模型。X可以表示下列三种情况:(1)表示不确定状态,如未赋初值的信号值和某些初值。具有相同强度,不同逻辑值的输出端驱动同一个信号节点时,不能区分0或1,该信号值也用'X'表示。

(2)处在跳变过程中的过渡态。信号从一个稳态过渡到另一个稳态,都要经历一段短暂时间。在此期间信号状态值未定,或处于0和1。

(3)表示无关紧要的信号。内部电路模型信号状态值模型:三值模型:在二值的基础上再增加一个值X,即形成三值模型。X可19信号状态值模型:高阻值Z常用在CMOS电路中,晶体管截止时常出现高阻状态。三态门在控制信号为‘0’时其输出呈现高阻状态,它相当于把连线断开。在CMOS电路中,常遇到两个或多个输出端直接连接在一起的情况,称为线连接(WiredConnection),如图所示。这种情况下,通常只允许一个输出端为稳态值,其余端均应为'Z'。这时线或运算的最后结果就等于该稳态值。由0,1,X,Z组成的信号值模型称为四值模型,常用来实现对MOS电路的模拟。

四值模型:信号状态值模型:高阻值Z常用在CMOS电路中,晶体管截止时常20内部电路模型延迟模型:每个信号在通过元件时都会有延迟。延迟时间的计算是逻辑模拟的重要功能。通过计算延迟时间得到的波形可以更精确地反映实际电路的情况,从而检查时序配合是否满足设计要求,是否能在规定的时间内完成规定的操作。根据需要对元件的延迟赋予不同的值,可以得到不同的延迟模型。延迟模型一般支持传输延迟和惯性延迟。内部电路模型延迟模型:每个信号在通过元件时都会有延迟。延迟时21内部电路模型延迟模型:零延迟模型。所有的元件其传输延迟均设定为0。这种模型与实际电路相差很大。使用这种模型可以检验组合逻辑电路的正确性,而不便于处理异步时序电路。单位延迟模型。电路中所有元件都赋予相同的延迟值,并取值为1,称为单位延迟模型。用这种模型可以模拟异步时序电路。但随着引入功能块作元件,其延迟与简单门的延迟相差甚远,不能正确体现时序关系,目前已很少使用。标准延迟模型。根据元件特性,对每种元件规定一个标准延迟数值,通常按产品目录中给定的数据为依据。它不考虑同类元件的参数分散性,与真实情况仍有差别。但由于在逻辑设计阶段还不能确定参数分散情况,因而标准延迟模型对于大多数电路已经足够精确。内部电路模型延迟模型:零延迟模型。所有的元件其传输延迟均设定22内部电路模型延迟模型:上升/下降延迟模型。进一步区分信号在正跳变和负跳变的不同延迟时间。在对于某些元件上升、下降延迟区别较大的情况下,可以更加精确地反映实际情况。模糊延迟模型。为了反映参数的分散性,延迟时间不是给定一个值,而是给定一个范围,即给出延迟最小值和最大值。在这个范围内,其信号值不定(用'X'表示)。即有一个模糊区域,故称之为模糊延迟模型。这种方式一般适用于小规模电路的精确模拟,也称为最坏情况模拟。

内部电路模型延迟模型:上升/下降延迟模型。进一步区分信号在正23内部电路模型元件模型:元件模型给出各类元件的内部功能、参数及特性,如输入输出端个数、延迟时间、扇入扇出系数等。为了提高模拟效率,常把电路中具有一定功能的部分电路网络作为一个模拟元件。这样的元件称为功能块(FunctionalBlock)。功能块的模型用功能和行为来描述,而不关心其内部结构和组成。常见的寄存器、存储器、译码器、加法器、PLA以及其它形式的电路网络均可作为功能块。

内部电路模型元件模型:元件模型给出各类元件的内部功能、参数及24事件驱动模拟算法事件驱动模拟算法(EventDrivenSimulationAlgorithm)建立在内部表示电路结构的静态数据结构基础上,在外部激励信号的作用下,逐渐得到各级元件的响应。

节点信号的每一次变化称为一个事件(Event)。由事件驱动该信号的负载元件,根据元件的功能计算元件输出端的逻辑值,并且得到新的事件。这样逐级传播,直到不再存在新的事件,或者到达指定的结束时刻为止。

事件驱动模拟算法事件驱动模拟算法(EventDriven25事件驱动模拟算法事件驱动,其意义就是当信号值变化时才去计算该信号作为输入信号的元件(即扇出元件)。如果一个元件的输入端的值均未变化,则该元件没有必要计算。为了表示信号波形和元件延迟的作用,模拟程序建立一个虚拟的模拟时钟(Simulationclock)。起始点是0时刻。

模拟过程从零时刻开始。首先把外部输入激励信号作为原始的事件,驱动相关元件的功能计算。计算得到的元件输出端的信号值并不是当前时刻的值,有一定的延迟,是将来时刻的值,我们称之为将来值。模拟器需要把这些将来值的发生时刻和信号值记录下来。

事件驱动模拟算法事件驱动,其意义就是当信号值变化时才去计算该26事件驱动模拟算法事项处理三个要素:信号节点指针、信号值、事项处理发生时间,记为

e=(s,v,t)

其意义为:信号s将要在将来的t时刻得到值v。在实际模拟程序中,时间t可以用绝对时间表示,也可以用相对时间表示。记录和管理事项处理采用时间映射的链表。每一时刻的事项处理各排成一个链表,各个时刻排成一个时间队列表(TQ表)。

事件驱动模拟算法事项处理三个要素:信号节点指针、信号值、事项27事件驱动模拟算法模拟过程:开始模拟处理激励信号事项处理表结束模拟活跃元件集合处理事项处理接收信号值激活负载元件元件计算无事件事件驱动模拟算法模拟过程:开处理事结束活跃处理事项处理元无事28事件驱动模拟算法模拟过程:

当一个新的模拟时刻开始后,首先把当前事项处理表中记录的各信号值接收到各信号节点,如果新的值与原来的值相同,表示该信号的值没有变化,实际上不是一个真正的事件,则把该事项处理删除,不再对它进行处理。如果新值与老值不同,则新值构成一个事件,则需要把新值记录在该信号节点的波形表中,同时查找该节点的负载元件,安排这些元件的计算。需要计算的元件称为活跃元件。由于可能有多个信号驱动同一个元件计算,为了避免重复计算,把需要计算的元件放在一个集合中,称为活跃元件集合。待到所有的信号都处理完毕之后,再集中对所有活跃元件进行计算。计算之后又产生新的事项处理,再放到事项处理表中。对每个时刻都重复这个过程,形成模拟周期(SimulationCycle)。事件驱动模拟算法模拟过程:当一个新的模拟时刻开始后,首先把29事件驱动模拟算法事项处理冲突的处理:举例:一个非门,其上升延迟为4,下降延迟为2。当给定图b所示的输入端的波形后,得到正常的波形(图c)。当给出图d的输入波形后,则在9时刻安排事项处理e11=(b,1,11)时发生了事项处理冲突现象(图e)。这时需要把8时刻安排的事项处理e12=(a,0,12)删去,但其后的输入波形得到正常的输出波形。事件驱动模拟算法事项处理冲突的处理:举例:一个非门,其上升延30事件驱动模拟算法产生冲突的原因:在处理上升/下降延迟时,由于出现了不同的延迟参数,有时会遇到事项处理冲突的情况。在功能块的计算中,由于各端口延迟时间不同,也常常会出现事项处理冲突现象。处理方法:对于一个信号s,设前面已安排了一个事项处理e1=(s,v1,t1)尚未处理,现在又安排了一个新事项处理e2=(s,v2,t2),且t1≥t2,则称发生了事项处理冲突。处理方法:删去e1,安排新事项处理e2。

总结:事件驱动模拟算法产生冲突的原因:在处理上升/下降延迟时,由于31事件驱动模拟算法惯性延迟冲突的处理:产生冲突的原因:对于一个信号s,设前面已安排了一个事项处理e1=(s,v1,t1)尚未处理,现在又安排了一个新事项处理e2=(s,v2,t2),且t1<t2,v1≠v2,则称发生了惯性延迟冲突。处理方法:把前面安排的事项处理e1删去,而安排新事项处理e2。

事件驱动模拟算法惯性延迟冲突的处理:产生冲突的原因:对于一个32模拟实例:下面举一个简单的例子。对图(a)所示的电路,用事件驱动算法进行模拟,求出图中各点在t0-t30的波形。图(b)为输入激励波形。设延迟时间为:异或门-4,与或非门-3,非门-2。

事件驱动模拟算法模拟实例:事件驱动模拟算法33模拟实例:模拟实例:34

当t=0时,有外部输入的事项处理(a,‘0’,0),(b,‘0’,0),还有作为初始值其它各点的信号事项处理(c,‘0’,0),(d,‘0’,0),(e,‘0’,0),(f,‘0’,0)。各信号当前值均为‘0’。事项处理(a,‘0’,0),(b,‘0’,0)引起C计算,得(c,‘1’,3);(b,‘0’,0),还引起D计算,得(d,‘1’,2);(c,‘0’,0),(d,‘0’,0)引起E计算,得(e,‘0’,4);(c,‘0’,0),(e,‘0’,0)引起F计算,得(f,‘1’3)。计算完毕,将当前事项处理删除(图中未做删除标志,但应认为已不存在)。事件驱动模拟算法当t=0时,有外部输入的事项处理(a,‘0’,035

当t=1时,无外部输入事项处理,也无当前事项处理。于是时钟直接走到下一周期,t=2。当t=2时,有当前事项处理(d,‘1’,2),接收状态值d=‘1’,其余信号值不变。该事项处理引起E计算,因此时c=‘0’,故得新事项处理(e,‘1’,6)。注意此时事项处理表中存在事项处理(e,‘0’,4),属惯性延迟冲突,应将(e,‘0’,4)删除,安排(e,‘1’,6)。当t=3时,有(c,‘1’,3),(f,‘1’,3)两个事项处理,接收新状态值c=‘1’,f=‘1’。c引起E,F的计算,得(e,‘0’,7),(f,‘1’,6)。这时可看到(e,‘1’6)属惯性延迟,删除(e,‘1’,6),安排(e,‘0’,7),(f,‘1’,6)。当t=4时,无当前事项处理。当t=5时,有外部输入信号事项处理(a,‘1’,5),接收a=‘1’,引起C计算,得(c,‘1’,8)。

当t=6时,有事项处理(f,‘1’,6)。此时f值未变,删除该事项处理。当t=7时,有事项处理(e,‘0’,7),此时e值未变,删除该事项处理。当t=8时,有事项处理(c,‘1’,8)。此时c值未变,删除该事项处理。当t=1时,无外部输入事项处理,也无当前事项处理。于36当t=10时,有外部输入信号事项处理(b,‘1’,10),接收b=‘1’,引起C,D计算,得(c,‘0’,13),(d,‘0’,12)。

当t=12时,有外部输入信号事项处理(a,‘0’,12),有事项处理(d,‘0’,12),接收a=‘0’,d=‘0’,引起C,E计算,得(e,‘1’,16),(c,‘1’,15)。这时(c,‘0’,13)属惯性延迟,删除(c,‘0’,13)。

当t=15时,有事项处理(c,‘1’,16)。c值未变,删除。

当t=16时,有事项处理(e,‘1’,16)。接收e=‘1’,引起F计算,得(f,‘0’,19)。当t=18时,有外部输入信号事项处理(a,‘1’,18),接收a=‘1’,引起C计算,得(c,‘0’,21)。

当t=19时,有事项处理(f,‘0’,19),接收f=‘0’,无需要计算的元件。

当t=20时,有外部输入信号事项处理(b,‘0’,20),接收b=‘0’,引起C,D计算,得(c,‘1’,23),(d,‘1’,22)。这时(c,‘0’,21)属惯性延迟,删除(c,‘0’,21)。当t=10时,有外部输入信号事项处理(b,‘1’,37当t=22时,有事项处理(d,‘1’,22),接收d=‘1’,引起E计算,得(e,‘0’,26)。当t=23时,有事项处理(c,‘1’,23)。此时c值未变,删除该事项处理。当t=26时,有事项处理(e,‘0’,26),接收e=‘0’,引起F计算,得(f,‘1’,29)。当t=29时,有事项处理(f,‘1’,29),接收f=‘1’。此时,已无任何未处理事项处理,模拟结束。

数字系统设计及VHDL实践专题讲座1-模拟验证与课件38VHDL模拟1.VHDL模拟概述

2.VHDL模拟系统的组成

3.VHDL模拟器的实现方法4.VHDL内部模型VHDL模拟1.VHDL模拟概述2.VHDL模拟系统的39VHDL模拟概述

高层次硬件描述是指比逻辑结构描述更抽象的描述方法,最主要的有寄存器传输级和行为算法级。寄存器传输级的基本描述对象是寄存器,包括触发器、存储器、加法器、计数器等。这些元器件的数据一般为由多个位组成的位串,也称为数组。寄存器传输级语言描述数据在这些元件中的传播过程和条件,描述状态的转换。行为和算法级的描述比寄存器传输级更为抽象。描述时不考虑具体电路元件,只有一些抽象的信号和变量。这些信号和变量具有各种可能的数据结构。可以是二进制位和位串,也可以是任意枚举类型,整数和实数,甚至可以是记录和数组。描述时主要考虑数字系统的行为和动作,描述各种操作,描述系统流程。硬件描述语言是高层次系统设计的主要描述方法。VHDL是覆盖多个级别的多级混合的硬件描述语言。本节以VHDL语言为代表,介绍高层次模拟技术。

VHDL模拟概述高层次硬件描述是指比逻辑结构描述更抽象40VHDL模拟系统的组成一个完整的VHDL模拟系统包括设计的输入、语言的编译、模拟数据的生成、模拟、模拟结果的波形显示,以及功能较强的高级图形调试器等部分。VHDL集成模拟环境的示意图如下。

VHDL模拟系统的组成一个完整的VHDL模拟系41VHDL模拟器的实现方法

VHDL模拟器有不同的实现方法。大致有以下两种方式。

(1)解释型模拟方式

(2)编译型模拟方式

VHDL模拟器的实现方法VHDL模拟器有不同的实现方法。大42VHDL模拟器的实现方法解释型:基本保持描述风格,按内部的层次化结构模型,做成内部静态数据结构。整个电路系统由若干模块组成,模块可以嵌套,形成类树型结构。每个基本模块(叶结点)为纯行为模型。需要预先做的工作是根据配置的指定将各模块组成一个完整的电路描述。在模拟时,对这些数据分析、解释、执行,实现模拟。VHDL模拟器的实现方法解释型:基本保持描述风格,按内部的43VHDL内部模型

VHDL中各个实体(Entity)及其结构体(Architecture)由一系列并行语句组成。从模拟实现的角度来看,并行语句可分为三类:

(1)进程类语句:进程语句(Process)、并行信号赋值语句(<=)、并行过程调用语句、并行断言语句(Assert)。后三种简单并行语句可看做简化的进程语句,在行为模型中作为进程对待。(2)模块调用类语句:元件例化语句、块语句(Block)。(3)生成语句:条件生成语句(IfGenerate)、循环生成语句(ForGenerate)。

根据模拟算法的不同,可以将层次化描述的电路做成展开的平面化纯行为进程模型和层次化的结构模型两种模型。VHDL内部模型VHDL中各个实体(Entity44纯行为的进程模型:VHDL内部模型

由此可见,一个电路系统实质上是进程的集合。每个进程定义一个完整的独立操作。一个数字系统由若干独立的、并行执行的进程组成。每个进程是由一组顺序语句组成的过程,相当于一段程序。信号是协调各进程之间通讯机制的数据通路,由信号的值控制各进程的运行,并确定系统的输入和输出,得到各信号的新状态值,即得到新的信号事件。进程有挂起和激活两种状态。设计者可以在进程中安排挂起和激活的位置和条件,包括挂起时间、激活条件和等待某些信号的事件。激活进程的信号即敏感信号,反映了系统的状态。

纯行为的进程模型:VHDL内部模型由此可见,一个电路系统实45上图为进程模型示意图。它是一个主从链表,主链表是进程链表,每个进程结点各挂有一个顺序语句链表。

VHDL内部模型上图为进程模型示意图。它是一个主从链表,主链表是进46层次化结构模型:VHDL内部模型子模块层次结构:

在VHDL中,子模块层次结构一般通过模块的例化调用(InstanceReference)和配置(Configuration)描述。配置指明各例化语句所使用的模块(Entity及其某一Architecture)。由例化语句、元件模板说明(Component)与配置三个方面唯一确定一个电路系统的层次结构和组成。经过配置,将若干个独立的实体Entity(Architecture)按照配置的指定链接起来,构成一个完整的电路。层次化结构模型:VHDL内部模型子模块层次结构:47简化层次结构:

Block语句是一种复合并行语句,是在Architecture中的并行语句嵌套描述,是一种简化的层次结构描述。整个Block语句相当于一个元件模块,语句的端口和类属参数相当于元件模块的端口和类属参数,端口匹配和类属参数匹配相当于元件例化调用的端口匹配和类属参数匹配。因而Block语句和实体描述用统一模型表示。

层次化结构模型:VHDL内部模型简化层次结构:层次化结构模型:VHDL内部模型48VHDL内部模型VHDL内部模型49VHDL模拟算法基于进程的事件驱动算法:

进程模型是VHDL描述的基本模型。在纯行为模型中,整个电路的行为用进程的集合来表示。在层次化结构模型中,通过调用,最终是一个纯行为的模块。

进程之间是并行执行的。对进程模型的模拟算法用顺序执行各进程来模拟其并行性。保证并行性的方法是采用与逻辑模拟类似的事件驱动算法。它同样采用基于时间顺序的时间映射的事件驱动方法,所不同的是以进程为驱动对象。

与逻辑模拟算法类似,一个信号的变化形成一个事件。所不同的是:事件不是驱动元件的计算,而是激活进程。被激活的进程在运行之后又产生新的事件,并在遇到等待语句后挂起。每一次处理事件、激活和执行进程组成一个模拟周期。

进程计算的并行性与逻辑元件的并行性的实现基本是相同的。但进程计算比较复杂。其关键一点是进程激活条件比逻辑模拟器中激活元件计算的条件复杂得多。

VHDL模拟算法基于进程的事件驱动算法:进程模型是VHDL50形式验证模拟验证的不足:

模拟验证采用仿真运行的手段,为设计人员提供了可行的判别数据,在实际设计中发挥着巨大的作用。但是,这种技术的不足之处也是十分明显的,主要表现在:

1.模拟方法严重依赖于测试向量的选取。合理而充分地选取测试向量本身就是一个十分艰巨的课题。

2.模拟方法的效率不高。VLSI的设计常常需要反复修改,而每次修改后都需要模拟,以确认本次修改达到了预期目的且没有引入新的错误,因此设计人员用在模拟验证上的时间常常是设计时间的2至3倍。

形式验证模拟验证的不足:51形式验证的引出:

电路规模较小的时候,这些不足所造成的影响还不太明显;随着电路规模的迅速增长,模拟验证的不足便突出地摆在了设计人员面前,如测试向量的选择愈加困难,测试向量集的规模呈指数级增加,模拟时间变得不可忍受等。人们开始认识到,必须提供多种设计正确性的验证手段,来解决设计人员所处的这种不利环境。于是,人们提出了一种新的验证方法──形式验证(FormalVerification)。

所谓形式验证,是指从数学上完备地证明或验证电路的实现方案(简称实现)是否确实实现了电路设计描述(简称描述)的功能。

形式验证形式验证的引出:形式验证52形式验证的优点:

1.首先,由于形式验证技术是借用数学上的方法将待验证电路和功能描述或参考设计直接进行比较,因此测试者不必考虑如何获得测试向量。

2.其次,形式验证是对指定描述的所有可能的情况进行验证,而不是仅仅对其中的一个子集进行多次试验,因此有效地克服了模拟验证的不足。

3.此外,形式验证可以进行从系统级到门级的验证,而且验证时间短,有利于尽早、尽快地发现和改正电路设计中的错误,有可能缩短设计周期。

形式验证形式验证的优点:

1.首先,由于形式验证技术是借用数53形式验证形式验证的缺点:

形式验证到目前为止仍然不能有效的验证电路的性能,如电路的时延和功耗等。然而,形式验证的作用正是补充了模拟验证的不足,二者各有优势,互为补

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论