EDA专家一直警告说,随着设计越来越复杂,验证这些设计的过程也将需要高的成本和大量时间,在很多情况下甚至比设计本身更复杂。在过去几年中,虽然复杂性越来越高,但是随着小型化设计趋势和在一个器件中集成多个功能单元的趋势驱动,用于控制、信号处理和通信等应用的高性能嵌入系统一直不断涌现。
为克服复杂性不断增加所带来的影响,设计师们开始采用可测试性设计方法,其好处在于:在设计过程中对“基于模型的设计”(Model-Based Design)可执行模型进行位真(bit-true)仿真以找到和修正缺陷;自动生成代码以快速建立原型设计;通过协同仿真,利用原始的可执行模型直接验证最终实现结果。本文重点介绍第三项好处,即利用原始可执行模型进行验证和确认,本文还指出通过协同仿真进行系统级验证正在成为验证和确认RTL实现结果的一种行之有效的途径。更高级系统设计环境和高性能 HDL 仿真器之间的快速双向协同仿真接口使这种方法成为可能(见下图1)。
头号设计瓶颈-验证
由于设计的整体复杂性不断增强,设计验证任务也随之变得复杂,硬件验证本身越来越具有挑战性,验证时间正在变得越来越长。根据 Collett International Research作的一项调查表明,只有39%的设计在第一次硅验证时没有缺陷,60%包含逻辑或功能缺陷,20%以上需要三次或者多次硅验证。另外一项 Collett 调查还表明,全部工程时间的约50%是验证时间。
在设计过程后期检测到缺陷带来的成本非常高,除了费用增加、丧失市场机会外,有时甚至会导致项目的放弃。虽然彻底避免 RTL 验证并不现实,但是对占用约 50% 可用设计资源和时间的任务采用简化流程非常有意义。如果执行正确,则对此部分设计流程进行的改进将带来许多好处,包括减少错误、缩短推向市场的时间、降低整体成本。
低级测试基准
由于设计和测试基准(testbench)一般都使用VHDL、Verilog或其它低级语言编写,因此硬件设计师是受到慢速仿真器和更慢接口影响最大的人员。由此,硬件验证目前成为硬件设计过程中最费时的任务。
采用VHDL或Verilog测试基准的不利之处在于,因为 HDL仿真器固有特性而验证过程非常慢。由于快速协同仿真接口的出现,因而可以利用原始系统规范作为测试基准。通过仅对那些将真正合成到硬件中的系统部分在 HDL中仿真,而将其余测试基准仍保留在规格环境中,工程师可以对MATLAB和VHDL或Verilog进行快速协同仿真。一些设计团队已经尝试以 HDL 创建设计并以 C 编写测试基准,从而改进性能和减少验证时间。
图1:在基于模型的设计中,您可以利用快速双向协同仿真接口创建可执行的设计规格,并作为系统级测试基准以测试、验证和确认硬件设计
协同仿真
以 C 或其它语言创建测试基准并用来测试和验证以VHDL或Verilog编写的被测试器件时,将依赖于两个环境的协同仿真处理。对在不同环境中设计的各种设计组件进行仿真并非什么新概念,但是多年以来,这种想法一直受限于不同设计环境之间的性能低下的协同仿真接口,它无法提供足够的能力或合理的仿真速度。
除了协同仿真接口性能低下外,建立和维护C或其它编程测试基准的成本也非常高。此外,测试基准环境中没有内置扩展可用于创建测试激励、使结果可视化以及创建和维护参考设计,以便工程师能够将被测器件的结果或输出与之比较。但是,EDA 业内的一致观点认为如果正确完成,RTL 仿真器和系统级仿真器之间的协同仿真可以显著改善硬件验证瓶颈。
基于模型的设计
解决验证瓶颈问题的关键并不在于如何对设计进行验证,而是在于开始时如何设计一个系统。现在一种得到广泛认知和认可的观点是,通过采用一种针对系统设计的定义、设计和仿真的基于模型的设计方法,设计团队可以得到很多好处,如减少开发时间、降低开发成本以及取得更好的整体设计。
基于模型的设计的一个 并不为大多数人所了解的优点是,如果能够在设计环境和HDL仿真器之间提供一个可行的协同仿真接口,则用于创建“黄金基准”的模型也可用作测试基准。
协同仿真接口
为发挥效用,仿真器和协同仿真接口必须:
1. 在测试基准环境中提供丰富的功能特性以创建和维护黄金基准模型或设计;
2. 为创建复杂的测试基准提供支持,包括测试激励生成和先进的可视化;
3. 具有仿真速度高于传统 HDL 仿真器的更高级的设计环境 ;
4. 在测试基准环境和 HDL 仿真器之间提供快速协同仿真 ;
5. 支持对多个硬件实体进行分布式同时验证 。
基于模型的设计正越来越多地用于对很多硬件系统进行规范定义、设计和仿真,特别是那些实现信号处理和通信等应用的硬件系统。这样,工程师就可以对设计执行 位真仿真以便在设计过程的初期找到和修正设计缺陷。设计一旦完成,就可以用作蓝图在硬件中实现和验证该设计。
这种在允许工程师维护位真可执行规范的环境中开始设计的方法正在赢得更多人的认可,特别是在更复杂的系统设计中。其中一个原因是这种方法可以 缩短的推向市场的时间和保证更好的产品质量 , 提供显著的竞争优势。因此,对推向市场时间或最终产品质量有所考虑的任何设计都可获益于基于模型的设计方法。
显然,如果硬件工程师能够使用同样的更高级别的规格来测试和验证最终实现结果,就能显著减少验证困扰。
从MATLAB验证硬件设计
如前面所提到的,节省大量验证时间的关键在于设计环境本身。大多数信号处理应用都是在MATLAB环境中开始的。因此,大多数信号处理应用的黄金参考也趋向于留在此环境中。现在让我们考虑如何从 MATLAB验证硬件设计。
例如,图2显示对以VHDL实现的Fibonacci随机数字生成器进行的分析和验证。为设置协同仿真,用户选择一个VHDL实体并在 MATLAB 中定义一个回调函数。这通常涉及到选择M-file和时序模型。
图 2:通过“Link for ModelSim”执行的协同仿真在MATLAB中实现可视化、计算和分析
仿真通过MATLAB命令窗口中的命令启动。当仿真开始运行时,协同仿真接口执行快速双向数据传输。MATLAB脚本显示传入的原始数据并计算和绘制柱状图。 利用此方法,工程师在指定和沿用他们的黄金信号处理应用参考模型所使用的MATLAB全面分析和可视化功能,现在也可用于对硬件设计进行可视化、测试、调试和验证。
由于可以直接使用最初的规范,因此与传统方法相比,验证任务变得轻松了。此外,由于测试基准使用高级语言,需要仿真的VHDL代码的数量大量减少,因此验证过程变得更快。利用MATLAB中内置的传统测试基准环境所没有的可视化和分析能力,工程师可以更好地观察他们的硬件实现结果,让他们更容易在设计过程的初期发现潜在的设计缺陷。
系统标准的验证
关于系统级验证的基本好处还可用另一种方式来表述,即以更高级语言创建的测试基准使工程师能够很容易地根据系统标准来验证硬件设计。
在许多设计中,认可和性能的标准是一些量化指标,例如均方误差、信噪比、误码率等。以HDL或C/C++创建测试基准在合理的时间内计算和验证这些标准是非常困难的,在一些情况下甚至不可能实现。
使用基于模型的设计验证硬件
基于模型的设计将系统标准的验证观念在抽象和效率方面提到了一个新的水平。许多工程师团队现在通过同时使用Simulink和基于模型的设计开始更广泛地使用高级语言,如使用MATLAB进行信号处理应用设计。
这样,工程师就可以组合使用多速率、定点、基于帧的信号处理设计组件。工程师首先设计和仿真完整系统,然后使用同一个模型验证实际的硬件实现结果。通过执行这些位真和周期精准的仿真,工程师能够在初期找到和修正大部分设计缺陷。系统设计完毕后,将那些最终会合成到硬件中的一个或几个仿真组件更换成等效RTL实体然后使用RTL仿真器(如ModelSim)协同仿真模型即可完成验证。这样,工程师就不再需要将高级测试基准转换成低级RTL或C/C++测试基准,或者从头开始创建低级测试基准。
例如,图3是一个Manchester接收器,该接收器以VHDL实现,测试基准的其余部分使用Simulink。在这种情况下,初期为了在设计阶段找到和修正缺陷创建了完整的位真和周期精准(cycle-accurate)的端到端系统仿真,该仿真在测试和验证阶段可以直接用作测试基准。
图3:以VHDL实现并以ModelSim仿真的Manchester接收器,在系统级仿真并以Simulink验证
通过对基于模型的设计使用Simulink,工程师可以使用多数据类型和执行多速率仿真。由于仿真速度很快,因此可以容易地确定更改设计参数后的效果。在本例中,设计师可以选择修改因传输信道导致的频率误差,并研究它对误码率的影响。
先进的模块集(Blockset,如信号处理模块集和通信模块集)还可提供更多功能用以创建和维护全面、完整的系统规范,这些规范在硬件验证时也可用作高性能的测试基准。此外,现在可以在系统级加入和量化模型覆盖范围和测试覆盖范围。
混合语言仿真
在过去几年中,工程师可以使用他们原来的C/C++代码以及MATLAB代码在Simulink中进行基于模型的设计并仿真完整系统。由于可以与快速HDL仿真器进行直接协同仿真链接,工程师现在可以向此工具和语言组合中增加VHDL和Verilog。
分布式硬件验证
对硬件验证的速度和效果的另外一个主要提升源于在一个集成仿真中使用了多个HDL仿真器。工程师可以通过在一个系统级测试基准中集成多个HDL实体,在多台机器上同时运行多个 RTL 仿真器来执行分布式硬件验证。但是直至最近,仍没有简单的方法能够使这些不同的HDL实体同步,也没有办法确保HDL实体在仿真期间以正确的间隔时间接收到数据类型正确的准确数据。
对于基于模型的设计,新的协同仿真接口在系统级仿真器和RTL仿真器之间也提供这种支持,使分布式验证对用户是透明的且有效。
图4是三个VHDL实体的简单实例,它们通过Simulink连接在一起,可以使用一个“Link for ModelSim”协同仿真接口在多台机器上的多个 ModelSim 会话中执行。
图4:通过Simulink连接的多个VHDL实体可以配置成在多台机器上的多个ModelSim会话中执行,以显著加快大型硬件设计的验证速度
本文结论
硬件验证是硬件设计过程中最耗费时间的任务,目前也就已经在多个方向取得了重大进展,其中在仿真器和协同仿真接口方面的进展可以为工程师提供关于功能硬件验证的多项重大改进:
在更高级环境中创建和维护比HDL仿真器更快的测试基准;
方便地验证系统性能标准,如均方误差、信噪比以及 BER;
只以HDL实现可综合的设计部分,在系统级和HDL仿真器之间提供快速协同仿真;
支持对多个硬件实体进行分布式验证以明显提高速度。
基于模型的设计正在得到越来越多的工程师关注和应用,因此,很多公司也推出各种相关的产品和技术来帮助硬件工程师在FPGA和ASIC上实现、优化和验证信号处理应用,包括: AccelChip的“AccelChip DSP Synthesis”和“AccelWare DSP libraries”、MathWorks的“Filter-Design HDL Coder”、Xilinx的“System Generator for DSP”、Altera的“DSP Builder” ,以及Synplicity的Synplify DSP。
这种趋势将在未来一段时间内继续。此外,基于模型的设计将扩展以包含和支持更多先进的验证需求,例如在系统级的基于断言和形式的硬件验证。
作者:Arun Mulpur
博士/产品经理
@
MathWorks公司