Verilog HDL数字集成电路设计原理与应用 作者 蔡觉平_ 第5章.pptVIP

  • 117
  • 0
  • 约6.23万字
  • 约 374页
  • 2018-04-02 发布于广东
  • 举报

Verilog HDL数字集成电路设计原理与应用 作者 蔡觉平_ 第5章.ppt

       在Verilog HDL集成电路设计过程中,设计者完成RTL级描述后需要对设计进行设计确认。设计确认是设计者检查设计中是否包含缺陷的过程。在设计中,表述不清的设计规范、设计者的错误或者错误地调用了元件等都可能给设计带来缺陷。 因此,设计确认对于集成电路设计来说具有重要的作用。设计确认可以通过仿真和验证来完成。仿真和验证能确保设计的完整性、可靠性、实效性以及先进性。   仿真,也可以称为模拟,是通过EDA仿真工具,对所设计电路或系统输入测试信号,然后根据其输出信号(波形、文本或者VCD文件)与期望值进行比较,来确认是否得到与所期望一致的正确的设计结果,从而验证设计的正确性。   在设计过程中,仿真是在综合之前完成的,这就是通常所说的行为级仿真、RTL仿真或前仿真。在RTL设计阶段只包含了时钟及其时序,并未包含门延迟和线延迟。因此,RTL仿真对于时钟来说是正确的,并且不用考虑竞争冒险、毛刺、建立和保持时间以及其它一些详细的时序问题,这样RTL仿真就具有较快的速度。   验证是一系列测试平台的集合,是一个证明设计思路如何实现及保证设计在功能上正确的过程。验证在Verilog HDL设计的整个流程中分为4个阶段:   阶段1—功能验证;   阶段2—综合后验证;   阶段3—时序验证;   阶段4—板级验证。   其中前3个阶段是在PC平台上依靠EDA工具来实现的,最后一个阶段则需要在真正的硬件平台(FPGA、CPLD等)上进行,需要借助一些调试工具或者专业性的分析仪来调试,因此本书所介绍的验证仅限于在PC平台上运行的前3个阶段的验证。   在测试验证环节中,要求测试需具备高效、完备的特性。高效是指以最短的时间发现错误,从而能以最短的时间上市;完备是指发现全部的错误,要求测试需达到一定的覆盖率,包括代码的覆盖率和功能的覆盖率。   目前常用的功能验证有三种:黑盒法、白盒法和灰盒法。   1) 黑盒法   黑盒法就是把测试代码看做一个黑盒子,测试人员完全不考虑代码内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。验证人员在RTL级输入端施加激励信号,然后将输出值与期望值相比较,以验证设计的正确性。   黑盒法主要有两个优点:(1) 简单。验证者无需了解RTL级设计的细节,只需根据规格说明书搭建Testbench(测试平台)。(2) 易于实现验证和设计的独立性。由于验证者不了解RTL级设计细节,在搭建Testbench时不会受设计者思路的影响,因此能避免按RTL级设计者的实现思路来验证RTL级设计的情况。   黑盒法的主要缺点是可观测性差。由于验证人员对内部的实现细节不了解,无法插入内部测试点,因此很难对错误进行迅速定位,在大规模设计中难以跟踪错误的根源。黑盒法一般适用于中小规模电路的验证。   2) 白盒法   白盒法也称结构测试或逻辑驱动测试,它是按照RTL级代码内部结构进行测试,通过测试来检测RTL级代码内部实现是否按照设计规格说明书的规定正常执行,检验RTL级代码中的每条路径是否都能按预定要求正确工作。   验证人员是在对内部的设计细节熟悉且能够对内部信号完全控制和观察的情况下进行验证的。   白盒法的优点在于容易观察和控制验证的进展状况,可以根据事先设置的观测点,在错误出现后很快定位问题的根源。 其缺点则是需要耗费很长的时间去了解RTL级的实现细节,且难以实现设计与验证的分离,验证团队可能会受设计团队思路的影响,出现沿着设计思路去验证的现象,结果是无法证明设计的功能是否正确。   3) 灰盒法   灰盒法是介于黑盒法和白盒法之间的一种测试方法。灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注没有白盒法那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状况。在很多测试中经常会出现输出正确、内部错误的情况,如果每次都通过白盒测试来操作,效率会很低,因此可采取灰盒法。    5.2.1 Testbench及其结构   在Verilog HDL中,通常采用测试平台(Testbench)方式进行仿真和验证。在仿真时,Testbench用来产生测试激励给待验证设计(Design Under Verification,DUV),或者称为待测试设计(Design Under Test,DUT),同时检查DUV/DUT的输出是否与预期的一致,从而达到验证设计功能的目的,如图5.2-1所示。      图5.2-1 Testbench结构   应该指出的是,由于Testbench是一个测试平台,信号集成在模块内部,因此没有输入、输出。在Testbench模块内,例化待测设计的顶层模块,并把测试行为的代码封装在内,直接对待测系统提供测试激励。

文档评论(0)

1亿VIP精品文档

相关文档