Board logo

标题: 应对百万门级系统级芯片验证挑战的可扩展解决方案 [打印本页]

作者: yuyang911220    时间: 2016-12-24 14:41     标题: 应对百万门级系统级芯片验证挑战的可扩展解决方案

本帖最后由 yuyang911220 于 2016-12-29 17:23 编辑

功能验证是电子设计人员目前面临的主要挑战,无论是设计团队还是验证团队,都将超过50%的时间用在纠错上,因此这一领域的技术进展将对缩短产品上市时间产生重大影响。本文探讨基于断言的技术和改进的纠错方法,以及为什么它们能够以及如何应对设计团队面临的重大挑战,其目的是提高设计生产力、改进设计质量、加快产品上市时间以及增加投资回报(ROI)。
        目前的设计和验证方法面临的问题是验证工作必须屈从于设计。出于几项相关原因,现状必须加以改变,特别是我们正在面对一个巨 大和复杂的电子系统。功能性错误是造成设计重复修改的首要原因。用于查找这些错误的功能验证流程是设计流中目前面临的最大瓶颈。一般而言,验证工作在所有 设计活动中一般至少占有50%的份额。然而,验证技术的发展步伐已经远远落后于设计和制造能力,验证鸿沟在进一步扩大(图1)。这一验证鸿沟是限制设计人 员充分发挥其生产力和设计能力的因素。为了弥合这一验证鸿沟,验证必须成为整体设计方法的一个内在组成部分。
        整个设计和验证流必须实现结构化,其基础不仅是如何有利于设计工程师,而且还要考虑如何有利于验证工程师,这对设计分工、模块大小、设计规则以及其它许多我们目前想当然的事情都提出了新的要求。
        在成功开展系统验证方面面临的另一挑战仍然是测试基准。随着设计规模的扩大,验证复杂性正以指数级速度提高。尽管仿真能力总 是伴随设计规模不断提高的,但测试基准的复杂性则不然。其中部分原因是设计规模对设计的可观察性和可控制性所产生的戏剧性效果,它增加了需要运行测试的次 数,而且这些测试的持续时间可能延长,如果哪个地方出了差错,那么查找和发现原因的难度就会大大增加。
        为了解决验证鸿沟和测试基准问题,我们需要采用可扩展验证解决方案,一方面它基于断言的技术,另一方面,它覆盖了验证中的 多种抽象层次以及整个流程各个阶段的验证工具,功能验证策略必须在每个设计层次以及开发流程的每个阶段将验证目标对准整个系统――其中包括数字逻辑、嵌入 式软件以及混合信号内容。
功能验证危机
        功能验证的重要性日益提高,其根本原因就是设计规模和复杂性的不断增长,其中包括设计中的软件和模拟电路比例日益提高。规模 的扩大指的是数量巨大的晶体管以及系统级芯片上的门数。《国际半导体技术线路图》预测,系统级芯片到2006年将包含10亿个晶体管。一片系统级芯片可能 包含数千万门,那么出错的可能性以及验证任务的复杂程度相应也会增加。
        复杂性提高意味着更多性能多样性,在单个芯片上实现更多的性能。元器件的多样性包括高性能RISC CPU、数千兆位高速I/O、块RAM、系统时钟管理、模拟混合信号、嵌入式软件、专用数字信号处理器(DSP)等。因此,这些元器件之间的接口对确保整 体功能和性能的重要性就变得日趋重要。
        片上软件和模拟器件的不断增加不仅使系统复杂性日益加剧,而且也向传统操作方式发出了挑战。数字工程师必须遭遇并不熟悉的 模拟事项。许多硬件设计都需要通过固件和低层次软件来验证RTL功能性。这要求固件设计人员在硬件设计中发挥重要作用,并对硬件和软件之间的相互影响作出 详细解释。
        我们对Collett国际研究公司2001-2003年间的研究数据进行了考察,结果显示:2001年在所有故障和失败 中,47%的故障与逻辑或功能错误相关。然而,在前10位故障原因中,只有一项属于接口问题:混合信号接口,在整个芯片故障中只占4%。反观2003年数 据,逻辑和功能故障的比例已经攀升到67%,并且出现了另外三种故障范畴。模拟故障在芯片故障中占35%的份额,排名第二。混合信号接口故障所占比例则从 4%升至21%,硬件/软件接口故障比例则占13%。
        除了复杂性问题,我们必须解决原有系统和知识产权的重用问题,因为超过50%的设计和测试平台都在重复使用,因此,任何有 意义的解决方案都必须支持所有主要语言――包括Verilog、VHDL、C++以及SystemC――这样它才能在所有抽象层次上工作。开放标准确保旧 有设计和测试平台得到重复使用,可以根据其绝对属性选择验证工具,而并不是因为它们适合某家供应商的工具环境。此外,由于可观察和可控制难度伴随设计复杂 性提高,纠错方法必须能够克服测试基准的复杂性。例如,设计规模扩大一倍,可观察性将减半,可控制性也将减半,那么验证难度大约提高4倍。
        如上所述,为了应对日益庞大的设计规模、复杂性和性能问题,验证方法必须在不同工具和设计层级之间实现可扩展。它必须在不同验证域之间实现扩展,能够在模拟、协同验证、仿真以及模数仿真之间实现通信。它不必局限于动态空间,但必须在静态空间中实现自动移动。
        例如,如果大型设计需要在门层次上开展大量修改工作,那么等效性检查就是一项必须的要求。最后,只有采用更好的测试基准方法,才能够创建更为有效的、更为充分的测试。
各工具之间的可扩展性
        必备的解决方案应包含一套工具,它们能够协同工作形成一个从HDL模拟到电路内仿真的完整路径。这意味着我们需要更好的模拟 器和仿真器,才能在所有集成层次上加速验证流程。工具之间的可扩展性也是必需的,因为不同验证类型在不同的性能范围提供不同的解决方案(图2)。每套解决 方案都会在许多不同属性之间交替使用,比如反复时间、性能、能力、纠错可见性以及成本。
        甚至连HDL执行引擎也需要一整套解决方案。有些在块层次上表现良好,有些则在芯片或系统层次上表现更好。例如,设计人员需 要使用高水平验证工具对系统级DSP算法开展验证,HDL软件仿真器显然无法完成这项工作。反过来说,在线仿真在芯片设计中并非是验证相对较小子模块的合 适解决方案,而HDL软件仿真器则可能迅速轻松地完成同一任务。认识到哪些工具是处理手边验证任务的最优选择,继而获得这些工具,将有助于设计人员实现最 佳生产力。以下举例介绍在设计的数字验证过程中可以使用的各种技术。软件和模拟混合信号验证也存在类似连续体。
        软件模拟是模块级验证的理想选择,因为其周转速度非常迅速,纠错能力较强。硬件/软件协同验证能够将嵌入式软件带入验证流程之中,为加速处理器、记忆体以及总线运算提供途径。它也可以作为测试平台开展硬件验证。
        基于处理程序的协同建模提供了大量多样化解决方案,使系统验证成为可能。协同建模适用于在高级、抽象测试平台与载入仿真器的 整个芯片的RTL实施之间建立链接。在线仿真在真实系统中提供高能力和高性能验证。仿真为设计人员带来自信,确保他们的芯片将在实际系统中正确发挥功能。
        形式验证(等效性检查)的能力和速度能够确保在设计流后续阶段作出的修改不会改变其意图行为。有必要指出的是,高性能、硬件协助或软件导向解决方案对在系统级环境中实现验证完整性具有关键性作用。
各抽象层次之间的可扩展性
        我们非常有必要推动某些方面的功能验证工作向前发展,使其成为设计流程初步阶段的一部分。为了实现这一点,我们必须利用更高层次模型和处理程序(图3)使验证工作变得更为抽象。
        在设计流中前移验证的好处在于:处于这个阶段的模型的编写速度较快,具有较大生产能力,因此可以通过建设性方式影响设计决策。抽象工作可以加速验证进行,它能够剔除无关信息,缩短开发时间,加快纠错进程,并使得测试平台更易重复使用。
        就复杂的系统级芯片而言,如果所有事情都在RTL或门层次上完成则太过费时和困难,我们在这儿绝对有必要在设计中使用更为抽象的表示方法。这并不仅仅是针对设计的,也同样有益于测试平台。
        这种多层次抽象战略要想行之有效,不仅需要必要的工具支持,知识产权(IP)因素也同等重要。如果设计人员无法通过模型在各 个抽象层次之间切换并建立联系的话,那么多抽象模拟就无用武之地。多抽象解决方案将技术与知识产权组合在一起。针对设计的主要接口使用一系列处理程序时, 分层次验证才变得可能。它允许在各种抽象层次上混合各种设计说明。处理程序可以组合为一个测试平台或环境,用于检查某项实施是否符合高层次模型。
        本策略的优势是它无需在一个抽象层次上包含所有模型。这种灵活性允许设计团队混合并匹配在规定时间内所能获得的一切,提供相对于执行时间的必要层次解析。
        基于处理程序的接口可以将所有抽象系统模型链接至设计,提供一个理想的系统层次测试平台。例如,运用基于处理程序的模拟,某 团队可以在高抽象层次上作出系统定义。然后,它们将在高层次系统定义中提取某个层次或某个模块,运用处理程序投入工作所必需的知识产权,替代它们进入更为 详细的实施模型中。
        他们可以在系统原位置处将模型作为即时测试平台运行。该团队就可以立即将现有测试平台投入实际使用,从而向该模块提供自然的刺激。其结果是,验证生产力提高,设计信心提高。
抽象层次
        系统级验证所必需的可扩展解决方案应在整个电子系统中支持抽象:模块、子系统、完整芯片以及系统层次。
        模块层次:在模块层次上,设计人员的关注重点是功能和时序的细节情况,这样他们就能够保证这些模块符合技术规范,不存在明显 问题。其目标是尽可能多地查找错误,因为这在设计流程中是查找这些错误的最廉价和最快速阶段。模拟和数字交互作用在模块层次上进行验证。功能和代码得到全 面演练,验证移交应考虑在这一阶段进行。由于HDL仿真技术易于使用且具纠错能力,因而成为理想的工具。
        模拟/混合信号模 块:系统级芯片设计的能力在不断提升,模拟和混合信号元器件不断加入其中,因此要求模拟环境能够具备与数字逻辑相同的、必需的验证功能。与模拟HDL行为 模拟以及模拟原始模块的Spice模拟顺利实现接口,允许数字和模拟元器件的模拟工作实现同步,并能够在相同的纠错环境中查看。
        子系统层次:所有模块均已验证后,随后进行模块集成,涉及对各模块组或整个芯片进行集成。在子系统阶段,模块间通信、控 制、时序和协议对功能而言具有重要意义;因此,检查协议或应用断言以验证总线处理程序的工具就能发挥作用。硬件断言或仿真可以运用HDL、C或 SystemC 以及Verisity等其它高层次测试平台语言布署在这一阶段。
        系统级芯片层次:系统级芯片层次验证涉及各模块与后端流程的其余部分进一步集成,其中包括设计的物理实现。在设计人员将较小模块集成进入越来越大模块的过程中,需要模拟的内容日益增多,测试时间日益延长,并且需要开展更多模拟来验证设计。
        这对多种验证方法提出了要求,比如芯片和系统功能测试。它还要求验证布图、时钟树或DFT插入会否引入意外更改。等效性检查工具可以验证整个大规模设计,并在每次修改设计后迅速纠错,无需再运行众多漫长的模拟。
        除了等效性检查之外,我们还可能在这一流程中使用硬件加速仿真器和多CPU并行仿真,以确保更改设计期间没有造成任何破坏。 多CPU并行仿真将会缩短测试时间,获得非常高的吞吐能力。就较长时间测试而言,出于验证大规模芯片设计的能力考虑,硬件仿真是我们的首选方法。硬件加速 仿真器和多CPU并行仿真是互为补充的解决方案,可以在不同的环境中得到有效使用。
        绝大多数系统级芯片器件都包含必须验证的嵌入式软件,其中包括应用代码、实时操作系统(RTOS)、器件驱动程序、硬件诊断以及启动ROM代码。功能仍然重要,但吞吐能力以及其它系统级事宜可能也需要获得验证。运行大量软件通常意味着长时间模拟作业。
        硬件/软件协同仿真解决方案提供降低总体负担的途径,同时也提供高效能纠错和分析环境。即便就较长运行时间而言,该设计可能也需要部分或全部移入硬件解决方案之中,但应该保留相同或相当的纠错环境,这样就可以最大限度减少上述执行环境中的迁移。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0