Menu Close

数字集成电路的仿真和验证

数字集成电路的仿真和验证

 

仿真验证

仿真验证就是检验编码设计的正确性,检验的标准就是项目开始时制定的芯片规格。看设计是否精确地满足了规格中的所有要求。规格是设计正确与否的黄金标准,一切违反和不符合规格要求的,就需要重新修改设计和编码。设计和仿真验证是反复迭代的过程,直到验证结果显示完全符合规格标准。仿真验证工具Mentor公司的Modelsim, Synopsys的VCS,还有Cadence的NC-Verilog均可以对RTL级的代码进行设计验证,该部分称为前仿真,接下来逻辑部分综合之后再一次进行的仿真可称为后仿真。

 

仿真5

图 1     仿真

 

仿真( Simulation): 就是计算机根据一定的算法和一定的仿真库对

EDA设计进行模拟,以验证设计,排除错误。主要有以下三类仿真:

行为仿真: 利用HDL仿真器(如 Modelsim) 对顶层系统的行为模型进行

仿真测试,检査模拟结果,继而进行修改和完善。(前仿真)

功能仿真: 直接对HDL描述或其他描述形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求的过程,仿真过程不涉及任何具体器件的硬件特性。(综合前仿真、前仿真)

时序仿真: 就是接近真实器件运行特性的仿真,仿真文件中已包含了器件硬件特性参数,因而,仿真精度高。(综合后仿真)

静态时序分析(Static Timing Analysis,STA)

Static Timing Analysis(STA),静态时序分析,这也属于验证范畴,它主要是在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例(violation)。这个是数字电路基础知识,一个寄存器出现这两个时序违例时,是没有办法正确采样数据和输出数据的,所以以寄存器为基础的数字芯片功能肯定会出现问题。STA工具有Synopsys的Prime Time。

形式验证 Formal Verification

这也是验证范畴,它是从功能上(STA是时序上)对综合后的网表进行验证。常用的就是等价性检查方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描述的电路功能。形式验证工具有Synopsys的Formality。

 

仿真4

图 2     仿真

 

仿真( Simulation) 和验证 (Verification) 的异同点:

仿真( Simulation),泛指基于实验或训练为目的,将原本的真实或抽象的系统、事务或流程,建立一个模型以表征其关键特性(key characteristics)或者行为、功能,予以系统化与公式化,以便进行可对关键特征做出模拟。模型表示系统自身,而仿真表示系统的时序行为。

计算机试验常被用来研究仿真模型(simulation model)。仿真也被用于对自然系统或人造系统的科学建模以获取深入理解。仿真可以用来展示可选条件或动作过程的最终结果。仿真也可用在真实系统不能做到的情景,这是由于不可访问(accessible)、太过于危险、不可接受的后果、或者设计了但还未实现、或者压根没有被实现等。仿真的主要论题是获取相关选定的关键特性与行为的有效信息源,仿真时使用简化的近似或者假定,仿真结果的保真度(fidelity)与有效性。模型验证(verification)与有效性(validation)的过程、协议是学术学习、改进、研究、开发仿真技术的热点,特别是对计算机仿真。

验证 (Verification)

仿真和形式验证之间最显着的区别是,前者需要输入矢量,而后者则不需要。仿真中的思维定势首先是生成输入矢量,然后是导出参考输出。在正式的验证过程中,思维过程是相反的。用户首先说出所需的输出行为,然后让形式检查器证明或反对它。用户根本不关心输入刺激。在某种程度上,基于仿真的方法是输入驱动的,而形式验证方法是输出驱动的。通常,以输入驱动的方式进行思考更容易,这种趋势反映在使用正式检查器时所感觉到的困难中。

形式验证的另一个卖点是完整性,从某种意义上说,它不会错过输入空间中的任何一点,这是仿真所遭受的问题。但是,这种形式化验证的力量有时会导致误解,即一旦对设计进行正式验证,则该设计将100%消除错误。让我们将仿真与形式验证进行比较,并确定形式验证是否正确。 从概念上讲,模拟矢量可以看作是验证输入空间中的一个点。使用此视图,可以将仿真视为通过输入空间采样进行的验证。除非对所有点都进行采样,否则可能会漏掉一个错误而无法进行验证。与在点级别上工作相反,形式验证在属性级别上进行。给定一个属性,形式验证会彻底搜索所有可能的输入和状态条件以查找失败。

如果从输出的角度来看,仿真将一次检查一个输出点。形式验证一次检查一组输出点(一组输出点组成一个属性)。图1.6展示了这种仿真和形式验证的比较视图。从这个角度来看,形式验证方法与仿真的方法不同,它可以验证设计空间中的点组而不是点。因此,要使用形式化方法完全验证设计是否符合其规格,必须进一步证明经过正式验证的一组属性共同构成了规格。形式验证一次检查一组点的事实使形式验证软件不那么直观,因此更难使用。

形式验证软件的一个主要缺点是它需要大量使用内存,并且(有时)需要较长的运行时间才能做出验证决定。当内存容量超过极限时,工具通常无法弄清出了什么问题,也没有给出解决问题的指导。结果,本文撰写的形式验证软件仅适用于中等大小的电路,例如模块或模块。

形式验证是一系列技术的总体术语,这些技术使用基于数学变换的静态分析来确定硬件或软件行为的正确性,而不是诸如仿真之类的动态验证技术。

 

仿真所处阶段和仿真目标:

前仿真 ( 行为仿真 ): 即RTL级仿真,检査有关模块逻辑执行步骤是否正确。

门级验证(Gate- Level Netlist Verification)

确认经综合后的电路是否符合功能需求,

该工作一般利用门电路级验证工具完成

后仿真: 用门级模型做验证,检查门的互连逻辑其功能是否正确。

布局布线后仿真 (后仿真): 与真实的电路最接近的验证。

 

Design flow6

图 3     仿真在芯片设计流程的位置

 

数字芯片设计关键点 (Key Points):

设计创意 + 仿真验证

 

Posted in 文章

发表评论

相关链接