SoC设计方法与实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.2 验证的分类及相关工具

SoC设计中验证包含以下几方面:

  • 验证原始描述的正确性;
  • 验证设计的逻辑功能是否符合设计规范的要求;
  • 验证设计结果的时序是否符合原始设计规范的性能指标;
  • 验证结果是否包含违反物理设计规则的错误。

3.2.1 验证方法的分类

验证的方法大体可分为两类:动态验证和静态验证。

1.动态验证

动态验证也叫仿真,是指从电路的描述提取模型,然后将外部激励信号或数据施加于此模型,通过观察该模型在外部的激励信号作用下的实时响应来判断该电路系统是否实现了预期的功能。仿真目前最常用事件驱动的方法,也在发展周期驱动的方法。

2.静态验证

静态验证是指采用分析电路的某些特性是否满足设计要求的方法,来验证电路的正确与否。形式验证是近几年来兴起的一种验证方法,它需要有一个正确的模型作为参考,把待验证的电路与正确的模型进行比较,并给出不同版本的电路是否在功能上等效的结论,它利用理论证明的方法来验证设计结果的正确性。

比较动态验证和静态验证,各有优势和不足。动态仿真主要是模拟电路的功能行为,必须给出适当的激励信号,然而很难选择激励来达到覆盖电路所有功能的目的,同时动态仿真很耗费时间。静态验证是针对模拟电路所有的工作环境,检查电路是否满足正常的性能指标,此类验证只限于数字逻辑电路,其准确性低于动态仿真,偶尔还会提供错误信息。

3.2.2 动态验证及相关工具

仿真流程如图3-1所示,仿真环境包括电路描述的输入、仿真控制命令和仿真结果的显示等3部分。

仿真工具首先要把用户的描述转换为内部表示,即建立模型。激励波形可以同电路描述一起输入,也可以在仿真开始之后通过控制命令输入,或者单独建立激励波形文件输入。

控制命令包括初始值设置、仿真时间指定、仿真过程控制、仿真中断设置、观察仿真状态、设置某些信号或变量值,以及指定继续仿真等。在交互式仿真方式下,控制命令交互输入;在批处理式仿真方式下,控制命令常由控制命令文件(脚本)一次输入。仿真结果主要为各外部输出端和其他观察点的输出波形,以及其他一些检查结果信息。

做验证工作的人应该根据所验证的电路的应用环境给出足够多的激励信号,以验证该电路是否可以正确的工作。当所验证的电路非常复杂时,很难把电路在各种条件下的工作情况都验证到,并且验证的时间将直接影响项目的开发周期。这时,就要求验证人员凭经验给出比较有代表性的激励信号,以尽量少的激励来验证电路的全部功能。

如图3-2所示,d=a&b|c为电路描述,a、b、c的输入值情况为激励描述,欲验证该设计逻辑的完全正确,只需使激励信号实现3个输入信号的8种不同组合即可。

动态验证的工具很多,主要有电路级仿真工具,如SPICE、TimeMill、NanoSim,以及逻辑仿真工具,如VCS、Verilog-XL、NC Verilog、Modelsim等。

图3-1 动态验证流程

图3-2 动态验证举例

1.电路级仿真工具

此类仿真工具模拟晶体管级的电路行为特性,主要用于模拟电路的设计。

(1)SPICE

SPICE作为一种通用的电路描述与仿真语言,最早由加州大学伯克利分校于1972年发明。SPICE是20世纪80年代世界上应用最广的电路设计软件,1998年被定为美国国家标准。因为它的精确性、多功能性和对用户开放,SPICE已经成为电子电路模拟的实施标准。SPICE电路可以模拟电路中实际结构的物理行为,给电路设计者带来了极大的方便。众多的EDA公司对其进行了商业化开发,并在伯克利标准版本的基础上进行了扩展和改进,当今流行的各种EDA软件,如HSPICE、PSPICE、Or CAD、Electronics Workbench等都是基于SPICE开发的。

(2)NanoSim

NanoSim是Synopsys公司开发的,一个针对模拟、数字和混合信号设计验证的晶体管级仿真工具。它是一个稳定而简单易用的工具,为几百万门的片上系统设计提供了较高的仿真能力。对于0.13微米或更小工艺下的设计,它可以达到类似于SPICE的精度。NanoSim结合了TimeMill和PowerMill中最先进的仿真技术,在单独的一个工具里就可以同时完成时序分析和功耗分析。

2.逻辑仿真工具

此类仿真工具可以仿真行为级、RTL级和门级网表的数字电路,此类仿真的特点灵活、快速、易于调试。算法多数采用事件驱动的方式,目前也有周期驱动的方式。

(1)基于事件的仿真器

这些仿真器捕获事件(在时钟内部或在时钟的边界上),并通过设计进行传播,直到实现一个稳定状态为止。

(2)基于周期的仿真器

该仿真器完全不理会时钟内部发生的事件,而是在每个周期中进行一次信号评估。由于执行时间较短,这类仿真器的运行速度往往较快。

① VCS

Synopsys的VCS是编译型Verilog模拟器,它完全支持标准的Verilog HDL语言和SDF,其出色的内存管理能力足以支持千万门级的ASIC设计,而其模拟精度也完全满足深亚微米ASIC Sign-Off的要求。VCS结合了周期算法和事件驱动算法,具有高性能、大规模和高精度的特点,适用于从行为级、RTL到带反标的门级电路仿真。

② ModelSim

Mentor的ModelSim仿真器采用直接优化的编译技术、Tcl/Tk技术和单一内核仿真,支持VHDL和Verilog混合仿真。

3.2.3 静态验证及相关工具

如图3-3所示,静态验证不需要输入激励信息,只需输入电路模型和相关参数及命令,验证工具会自动对该电路模型进行分析,并显示出分析的结果。

图3-3 静态验证流程

由于静态验证是由工具自动完成的,不需要人工过多的干预,所以通常对所设计的电路首先进行静态验证,以纠正一些比较明显的错误,然后再动态仿真,确定其具体的行为是否正确。在当前SoC的设计中,静态验证是必不可少的设计手段。

1.形式验证工具

对于某些电路设计的移植,一般不需要对新电路进行仿真,而直接通过EDA工具来分析该电路的功能是否与原电路一致,此种验证方法可以大量地减少验证时间,提高电路设计的效率。

等效性检查(Equivalence Check)是目前形式验证的主流,用于比较两个电路逻辑功能的一致性。它是通过采用匹配点并比较这些点之间的逻辑来完成等效性检查的。其生成一种数据结构,并将其与相同输入特性曲线条件下的输出数值特性曲线进行比较。如果它们不同,则表示被比较的两个电路是不等效的。工具使用的具体流程如图3-4所示。首先需要给工具提供完整正确的设计、相关的工艺库及准备验证的设计,其次需要对检查过程给定约束条件和设置参数,并确定比较范围和匹配点,如果结果不相等则需要进行诊断。它通常用来比较RTL代码与布局布线后提取的网表逻辑功能是否一致,加入扫描链之前与之后的网表在正常工作模式下的功能是否一致,并对ECO修正之前的网表与ECO修正之后的网表比较。

此类EDA工具软件如Synopsys公司的Formality及Cadence公司的Encounter Conformal Equivalent Checker等。

图3-4 形式验证流程

2.静态时序分析工具

静态时序分析技术的许多基本概念与动态仿真不同。静态时序分析技术通过输入一定的设计约束来静态地检查设计的时序功能,而不需要加入相应的测试向量进行逻辑功能仿真。它是建立在同步数字电路设计基础上的,是一种穷尽的分析方法。静态时序分析工具通过路径计算延迟的总和,并比较相对于预定义时钟的延迟,它仅关注时序间的相对关系而不是评估逻辑功能。与动态仿真比,静态时序分析所需的时间很短。

静态时序分析工具首先要接收用户输入,分析网表并将单元映射进目标库中,根据网表生成具有所有路径的列表,接下来,由延迟引擎计算单元和互连值,然后,时序验证引擎计算相对于预定义时钟域的间隙与约束冲突,输出报表与多种可视工具,并可根据用户要求将结果分类。

静态时序分析工具可识别的时序故障数要比仿真多得多,包括建立/保持时间、最小和最大跳变延时、时钟脉冲宽度和时钟畸变、门级时钟的瞬时脉冲检测、总线竞争与总线悬浮错误、不受约束的逻辑通道。另外,一些静态时序分析工具还能计算经过导通晶体管、传输门和双向锁存的延迟,并能自动对关键路径、约束性冲突、异步时钟域和某些瓶颈逻辑进行识别与分类。时序分析工具种类很多,如Synopsys公司的Primetime是业界普遍作为Sign-off的静态时序分析工具。