运行速度快/拥有成本低 硬件模拟成芯片验证利器
2015-10-20
晶片中整合的电晶体数量不断增加,造成电路设计与验证挑战遽增。面对日益缩短的上市时程压力,晶片设计人员已开始改用运行速度更快且总体拥有成本(Total Cost of Ownership)更低的硬体模拟设备,取代传统电路试验板或软体模拟器,以加速晶片验证与除错速度。
虽然摩尔定律现在规定约两年内使积体电路中的电晶体数目增加一倍,但趋势是设计/器件会继续变得越来越大。
如今,平均设计尺寸达到或超过五千万专用积体电路(ASIC)门,并且有些单个模组已超过一千万门。大部分的开云棋牌官网在线客服公司的高端设计通常超过一亿门。处理器/图形公司的最大设计已达到十亿门,或许在不久的将来会超越这一数量级。
驱动设计复杂性急剧上升的因素是在现有产品中,或在全新设计中添加新特性和新功能的旺盛需求,如果说晶片硬体复杂性骤升得还不够,实现产品差异化的嵌入式软体暴涨又使验证更为复杂。工程团队难以承受让产品更快推向市场的压力,迫使工程人员必须不断创新。
晶片复杂性高 电路试验板无法验证
虽然工程师拥有丰富的验证选项,但其中大多数存在着固有缺点,在数位电路设计初期,晶片复杂性的范围介于几百门到几千门,设计可透过电路试验板进行原型验证。使用嵌有电晶体-电晶体逻辑电路(TTL)逻辑器件(例如SSI/MSI晶片)的电路试验板,可在晶片量产(Tape Out)前在目标系统环境中验证和调试(Debug)设计。由于是在实际运行条件下测试设计,因此可确保功能正确性。
如果晶片复杂性达到一万门,则电路试验板将会无用武之地,并最终被基于事件驱动演算法的逻辑模拟器取代。这一变化催生了电子设计自动化(EDA)行业,EDA是电脑辅助工程(CAE)早期缩影。事件驱动模拟器支援精确的功能和时序验证,目前仍在寄存器传输级(RTL)使用,不过鲜少在逻辑闸(Gate Level)级使用。
RTL软体模拟器易于使用且经济高效,具有先进的调试功能。不过,当设计尺寸达到一亿门时,由于缓存未命中和记忆体交换,执行速度会迅速下降。虽然通过PC伺服器群与平行化软体模拟器可以缓解执行时间骤降,但无法使用其来测试本质上属于串列流程的嵌入式软体。
在设计为在200MHz下运行的一亿门电路中,即时执行1秒将需要执行两亿次回圈。即使对于最快的CPU(具有可观缓存大小和巨量RAM),乐观的假设是,如果每秒可执行一百次回圈,RTL软体模拟器也需要三个多星期才能运行完整个设计。
模拟器执行效能低落会阻止事件驱动软体模拟器有效率的测试设计正确性。事件驱动软体模拟器最适合用于模拟实际电路行为的一小部分,这意味着有些功能性故障会检测不到,工程团队要承担代价高昂的设计返工(Respin)。
针对形式(Formal)或静态验证方法的优点,可产生完全列举的测试向量,却无法针对电路设计的功能面进行验证。采用动态测试是唯一的可用选项,特别是在必须测试嵌入式软体(软体驱动程式、即时操作系统或自订应用程式)的情况下。 硬体验证语言(HVL),例如e语言、Vera以及C/C++类测试功能库,透过批量生成无法手动创建的测试来提高生产效率。功能验证范围工具可以提升工程师对用HVL创建的测试平台的可信度,但不会减少应用这些测试所需的时间量,也无法用于开发嵌入式软体。
硬体辅助验证工具可以缩小工程师目标与传统逻辑验证结果间的差距。以下几种验证工具可协助减少目标与结果的差距:
现场可编程闸阵列(FPGA)原型
基于FPGA的原型可用于处理嵌入式软体验证。原型基本上都是电路试验板,其中用FPGA取代SSI/MSI部件。
由于可程式设计器件问世,内部开发的FPGA原型也已出现。遗憾的是,随着设计尺寸不断加大,FPGA原型开发也呈指数增长。当所需的FPGA数超过十个左右的FPGA晶片时,FPGA原型将变得不可用。调试基于FPGA的原型比较棘手,这迫使工程师处理复杂的FPGA问题想办法让FPGA可容纳晶片设计,而不是花时间调试晶片设计功能。经常听说,当设计已进入投片阶段时,自制的FPGA原型才可使用。
为解决这些缺点,几年前一种家庭作坊式产业应用而生,其目标是提供可扩展的现成FPGA原型,而且这个趋势正获得青睐。此类产业除去繁琐的内部开发流程,这正是其成功的主要原因。但对于最大配置,他们也只能处理具有约一亿门的设计。
具有除晶片外的最快运行速度是FPGA原型验证板的主要卖点。相反,用于将设计映射到原型验证板的漫长布线/合成时间及相当有限的设计可视性是其两个主要缺点。
硬体模拟
硬体模拟正成为一种流行的运行时问题解决方案,基于事件的软体模拟器对此类问题却无能为力。与通过RTL软体模拟器实现的执行速度相比,该解决方案要快五至六个数量级。
硬体模拟器并不是一直受到青睐。以前,高昂的拥有成本限制工程团队采用硬体模拟器来测试最大的设计,例如微处理器和图形晶片。现在,随着新一代硬体模拟器能够处理高达几十亿或以上的ASIC闸并提供较低的总体拥有成本,这种情况已得到改进。这样,工程团队就可为广泛的设计做出最佳选择,而不用考虑复杂性和拓扑结构。
作为终极错误清除利器,硬体模拟可良好运行。就在晶片量产(Tape Out)前验证SoC中硬体功能和测试硬体/软体整合功能正确来说,硬体模拟具有极大价值。 如果硬体设计人员和软体发展人员都使用硬体模拟,则可共用相同系统和电路设计表示方法。由于组合设计的软体和硬体的对晶片功能的解读,因此他们可一起调试硬体和软体间的互动行为正确性,还可以跨越嵌入式软体与底层硬体间的边界跟踪设计问题,以确定是软体还是硬体出问题。
基于多个抽象层次的调试方法从最高层次的嵌入式软体开始,然后逐步下移至低层次的抽象,以跟踪各个硬体元素的行为。从数十亿个时钟周期的资料库开始,软体调试器可以将问题局限在数百万个时钟周期内。在这个层次上,软体团队可识别每个问题根源在软体代码的哪个部分。或者,他们也可通知硬体团队使用软体感知硬体调试方法放大到较低层次的抽象来追踪分析问题。
这种多层次调试方法对RTL软体模拟器并不适用,因为其速度太慢以至于不能有效地执行嵌入式软体。同样,该方法对基于FPGA原型也不适用,因为其缺乏对内部电路设计的可视性和访问性,无法跟踪硬体错误。
当今设计环境中的硬体模拟系统运行速度更快、更容易使用,并且初期拥有成本更低(图1)。这些高度可扩展、经济高效的工具可以处理多达几十亿ASIC门。具有较短的设置时间和编译时间,可为多工平行使用者提供强大的调试环境和支援。机器本身都封装在环保型(较不占空间,耗电低)空间中。
图1 上述RTL软体类比、FPGA原型和硬体模拟的对比是基于性能、设置/编译时间、设计容量和设计调试。
更重要的是,硬体模拟器不仅可以连接真实周边I/O子版(ICE)驱动的模拟系统,也可使用基于软体(由模拟器送出Test Vector)的TestBench驱动的加速系统;硬体模拟针对TestBench可支援多种语言:Verilog、VHDL、SystemVerilog、C++及SystemC语言编写,也包括可合成的测试Testnech或测试Vector直接将其包含在硬体模拟器内。
一千万门设计的典型性能约为2MHz,一亿门设计的最高速度可达1MHz。当设计尺寸增加时,相比于事件驱动电路模拟器,硬体模拟器的性能下降得更少。
随着Time-To-Market压力越来越大,以及强加给工程团队的不断升级的硬体/软体整合和品质问题,使得验证流程成为晶片设计中具有战略意义的重要一步。新一代高性价比硬体模拟器为晶片设计提供理想选择,这就是为什么硬体模拟已成为批量验证神器的原因。