SoC设计的可扩展验证解决方案

EDA/IC设计

1051人已加入

描述

为了充分利用系统级芯片(SoC)设计带来的优点,业界需要一种可以扩展的验证解决方案,解决设计周期中各个阶段的问题,缩短验证鸿沟。本文将探讨可扩展验证解决方案为何能够以及如何解决SoC设计目前面临的功能方面的严峻挑战,以达到提高设计生产力、保证设计质量、缩短产品上市时间以及提高投资回报率的目的。

功能验证是电子设计人员目前面临的主要挑战之一,为了使自己的产品在竞争中脱颖而出,人们正在将越来越多的功能集成进自己的产品,其中包括模拟/混合信号内容、嵌入式处理器及其各自的软件,总体系统变得日益复杂。随着设计实现尺寸缩小、集成度提高,验证的复杂性也在大幅上升,测试向量的长度和数量也在增加。如果设计中存在错误,人们将越来越难以发现造成错误的原因,而且日后更改以及重新生产的成本也是非常高昂的。

功能验证危机

功能错误是造成设计重新流片的首要原因,这对投资回报率和产品上市时间造成了不利和负面的影响。在所有芯片设计中,有60%需要至少两次重新流片。而就所有重新流片的设计而言,其中62%是由功能错误造成的。不幸的是,功能验证方法多年以来并未出现任何重大变化,验证技术已经落后于设计和制造能力,形成了一个验证鸿沟,而且这个鸿沟还在不断扩大,使得设计潜能的发挥变得纸上谈兵,虚无缥缈。出于同样的原因,模拟和验证成为整个设计流程的瓶颈,给提高设计生产率造成了障碍(图1)。

soc

为了解决验证鸿沟问题,提高系统级芯片的验证水平,产品经理需要通过积极的态度,将功能验证作为总体设计方法的一个有机组成部分加以解决。实现这一目标的最有效途径就是采用一种能够在不同工具和不同抽象级别之间实现可扩展的验证方法。功能验证策略必须以整个系统为目标,其中包括数字硬件、嵌入式软件和混合信号内容,必须考虑到每个设计层次以及设计流程的每个阶段。

尺寸和复杂性方面的挑战

随着设计在尺寸和复杂性方面稳步发展,功能验证的重要性不断提升。设计的复杂性主要体现在嵌入式软件和模拟电路所占比例正在不断提高。

设计组件不仅越来越多样化,单个芯片上集成的功能组件也越来越多。多样化组件包括高性能RISC CPU、数千兆位高速I/O、RAM、系统时钟管理、模拟/混合信号、嵌入式软件和专用数字信号处理器,因而这些组件之间的互连状况对总体功能性能的影响变得日益重要。它们之间的交互作用已经成为验证工作的关键点。芯片上软件和模拟组件采用量的增加也使得系统复杂性问题日益突出,并对传统的作业方式构成了挑战,数字工程师必须面临和解决其不甚熟悉的模拟问题。众多硬件设计要求采用固件或低层次软件并使其正常工作,以便对RTL功能进行验证处理,这就要固件设计人员在硬件设计中发挥重要作用,并通过细致到位的方式解决硬件和软件之间的相互影响问题。

设计规模意味着庞大的晶体管数目,也就是系统级芯片中的门数概念。2001年,国际半导体组织预测系统级芯片在2006年之前将会包含几十亿个晶体管,而现在一款系统级芯片就已达到了数千万门的规模。设计规模增大意味着出错的可能性也在增加,验证任务的复杂性正以指数函数的速度飙升。

一个单独的工具或者一项单独的技术都无法通过适当的方式解决目前所面临的验证问题,因为这些工具都是针对设计流程中的某个特定对象进行优化的,即使是硬件描述语言(HDL)仿真引擎也需要采用多种解决方案。有些方案在模块级上发挥较好作用,有些则在芯片或系统级上表现较好。因此,设计团队需要通过一套能够相互协同工作的工具,形成一条从RTL仿真到在线仿真乃至形式验证的完整解决方案,这就要求各种验证技术能够在广度和深度上解决日益突出的由设计尺寸、复杂性和性能问题所带来的验证挑战。

soc

可扩展验证解决方案必须支持所有各主要语言,其中包括Verilog、VHDL、C++以及SystemC语言,这样它就可以在所有各个抽象层次上开展工作。它必须是一种采用开放标准的解决方案,以便沿袭和利用原有的和第三方有知识产权的验证IP。验证工具也可以凭借各自的特性而被选用,而不是因为它们适合特定EDA供应商的工具环境。一个理想的工作环境必须能够处理各种不同的设计语言,并支持该行业各个主要标准,从而确保原有设计和测试台可以重复使用。

应对方案

为了解决日益突出的设计尺寸缩小、复杂性和性能日益膨胀的问题,验证方法必须能够在不同的工具和设计层次之间实现扩展。它还需要在各个验证域之间实现扩展,并能在模拟、协同验证、仿真和模数混合模拟之间进行通信。此外,它能够动态适应,并可以自由扩展。例如引入形式等价检查工具就是超大规模设计提出的一项需求,尤其是对于在门级网表上进行众多修改设计。

工具本身具有可扩展性也是必要的,因为不同类型的验证手段覆盖不同的性能范围,提供不同的解决方案。每项解决方案都必须在验证完整性和工作效能之间做出折衷。例如设计人员需要为验证系统级DSP算法采用高级验证工具,针对此类任务运用HDL模拟器就无法发挥作用。反过来讲,对于HDL仿真器可以迅速解决的芯片设计中相当细小的子模块验证问题,用现场仿效验证就不是很适当。认识到哪些工具是执行当前验证任务的最佳选择并获得这些工具,将使设计人员达到最佳效能。下面是设计人员在开展数字设计验证过程中可以采用的备选方案:

·软件模拟:模块级验证的理想选择,因为它具有非常快速的转换和纠错能力。

·软硬件协同模拟:能够将嵌入式软件带入验证环境,为加快处理器、存储器和总线操作验证提供一种途径,它也可以用作在测试台对硬件验证时提供激励。

·协同建模(基于任务的加速仿真):它具有软件测试台的灵活性和仿真的高性能,为系统验证提供了丰富的解决方案。协同建模仿真是连接高级抽象测试平台与整个芯片RTL实现的理想桥梁。

·在线仿真:它在真实的系统内提供大容量和高性能验证,仿真可赋予设计人员充分的信息,使他们自信其芯片将在实际的系统中发挥正确功能。

·形式验证/等效检查:它拥有必要的容量和速度,可以确保在设计流程后期进行的网表修改不会改变其功能特性和行为特征。

有必要指出的是,通过硬件辅助或面向硬件的高性能验证解决方案对我们在系统级实现验证完备性具有关键性意义,现场仿效验证可以彻底避免昂贵的设计重复。

各个抽象层次之间的可扩展性也同样重要。随着验证作业变得越来越抽象,仿真模型和任务处理器的抽象级别日益提高,工程设计团队及早开展验证可对设计决策产生建设性影响。抽象工作通过排除所有不相关信息可加速验证进度,缩短开发时间,加速纠错进程,并使得测试平台更具复用性。

开展抽象工作的重要理由是,就复杂的系统级芯片而言,在RTL或门级上完成所有这一切要耗费太多时间,困难也太大,以至于根本无法实现。人们认识到,在设计中采用更高层次的抽象表示方法变得绝对必要,这项工作不仅针对设计流程,也适用于测试平台的建设。

为了使这项多层次抽象化战略行之有效,仅仅拥有必要的工具还是不够的。IP的积累也同样重要。如果不让设计人员建立在各抽象概念级别之间进行切换并将各抽象级别联系在一起的模型,那么允许开展多抽象层次的仿真技术也就没有用武之地。多抽象层次验证解决方案可将技术和知识产权融为一体。

在将一套任务处理器作为设计的基础界面时,分层验证将成为可能。这样就允许对不同的设计抽象层次进行融合,组装为测试平台或验证环境以便检查某项实现是否能够与更高级别抽象模型功能一致。这种验证策略的优势在于它不要求所有模型都必须以单个级别抽象概念存在,其灵活性允许团队在规定时间范围内获得由不同抽象层次融合起来的一个验证平台。

然后在该系统内部提取单个级别或单个模块(或利用开展任务处理所必需的IP)将它们替代成为更为具体的实现层次。它们可以在系统中作为即时测试平台运行,设计团队立刻就可以实实在在地把它引入到现有的测试平台中,向该子模块提供真实的验证激励。其结果是设计的验证效率和验证质量都得到了保证。

基于任务处理的界面可以在所有抽象系统模型与该设计之间建立链接,提供理想的系统级测试平台。采用协同建模仿真技术和在线仿真验证技术,还可以高速运行基于任务处理的系统级验证环境,其验证速度能够满足在无线数据传输设计中找出误码率,可直接观察MPEG设计的视频处理效果,以及在验证环境中直接运行应用程序代码。

我们认为,验证工作需要采用可扩展的验证解决方案,它必须解决数字、模拟和软件内容的复杂性问题,必须在整个电子系统中支持不同的抽象层次。

·模块级:在模块级上,设计人员的关注重点是功能和时序的细节验证,保证这些模块达到技术规格的要求,没有明显问题存在。其目标是尽可能多地发现设计错误,因为模块级验证是发现并纠正这些错误成本最低和最有效的阶段。模拟和数字电路之间的交互也应该在模块级别上开展验证。在这一阶段中,各种功能和代码将得到全面执行,并完成验证签收工作。HDL仿真器是这一阶段理想的工具,因为它易于使用而且纠错能力强。

·模拟/混合信号模块:采用模拟和混合信号组件的系统级芯片设计产品数量在不断增加,它要求模拟验证环境能够像数字电路的功能验证一样执行相同的验证功能。通过Mentor公司ADVance MS验证套件工具,ModelSim为模拟HDL行为仿真以及模拟模块的SPICE仿真提供了平滑的接口界面。该界面允许在同一个纠错环境中对数字和模拟事件的仿真进程进行同步处理和查看。ADVance MS模拟器针对复杂模拟/混合信号设计的验证工作提供了单一内核的验证环境。

·子系统级:对所有模块完成充分验证之后,将进入模块集成阶段,多个模块组成更高层次的模块,乃至整个芯片集成。在子系统验证阶段,模块间通信、控制、时序和协议实现对确保子系统的功能正确性都是非常重要的;因此,通过执行协议检查或采用断言来验证总线数据交换的工具是非常有用的。硬件加速仿真工具或仿效验证工具可以在这一阶段配置使用,其验证测试平台可以采用HDL、C、System C和Verisity等其它高级验证语言来实现。

·系统级芯片级:芯片级验证涉及各个模块的进一步集成以及设计流程的其余部分,例如设计的嵌入式软件和物理实现的过程。在设计人员将较小模块集成进越来越大的模块过程中,需要仿真的内容越来越多,运行时间越来越长,设计验证要求开展更多仿真工作,提出了多项验证任务的需求,比如芯片和系统的功能测试,设计综合后与布线后结果的验证,验证综合或布线工具的处理并没有改变设计的任何行为特征。

在这一验证层次,也可以使用等效检查、硬件仿真器阵列或仿效验证工具,确保整个设计在后端处理过程中没有改变设计的任何特性——这通常称作回归测试。采用硬件仿真器阵列可以为用户提供比较高的数据吞吐能力,对规模较小的测试向量测试提供完备的解决方案。对于规模较大的测试向量测试则建议采用仿效验证工具(如Vstation),因为它拥有验证大规模芯片设计的能力和容量。硬件仿真器阵列和仿真验证工具是互为补充的解决方案,可以在不同的应用环境中加以有效使用。

绝大多数系统级芯片都采用了嵌入式软件,这也是必须加以验证的,嵌入式软件包括应用程序代码、实时操作系统、器件驱动程序、硬件诊断程序和自启动ROM程序等。在这一阶段,功能性固然是重要因素,但数据吞吐能力以及其它系统级性能问题也同样必须获得重视。我们应用硬件和软件纠错工具以及硬件加速和仿真手段,确保芯片实现正常的功能和性能特性。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分