新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 可配置系统级验证环境加速SoC开发

可配置系统级验证环境加速SoC开发

作者:■ ARC公司 Massimiliano Corba时间:2005-04-27来源:eaw收藏

利用嵌入式硅IP可以缩短设计所需的开发时间,这已成为众所公认的事实。但要从完工后的整个系统角度出发,整合及验证来自多家厂商的元件,需要相当的时间和努力,然而它们却常被忽略。这会对嵌入式软件开发人员造成额外负担,因为他们需要的外围和接口以及处理器的精确模型,才能在设计投片之前,针对正在开发的,迅速完成应用固件的测试及除错。如果SoC平台以可配置处理器和外围IP为基础,这些IP又来自多家供货商,这种情形就更加重要,因为设计人员必须确认在特定配置下,每个元件的功能不会影响到其它元件的工作。
除此之外,可配置SoC的研发人员也需要一个强健可靠的协同仿真和软/硬件协同验证环境,以及能对最终形式的SoC设计进行仿真的可配置测试平台方法。这类方法或环境为研发人员提供并行处理能力,例如当此环境同时执行错误检查、测试覆盖率分析,及在实际条件下进行系统性能分析时,工程师可执行测试程序,对它们进行调试,或当外设收发数据时,在处理器上执行典型应用。

所需技术
IP供应商提供已验证的IP,某些厂商甚至提供工具及验证套件,以将其IP整合到客户的最终系统,并对整合结果进行验证。但是却没有厂商提供灵活的、可扩充的系统级功能验证环境-这是SoC开发流程的一部分;也没有厂商提供能在单一集成环境中执行的软硬件协同验证。理论上,系统级验证环境应该把所需的仿真工作和运行时间降至最低,并使设计人员充分管理复杂系统的相互作用,执行实际软件并确保很高的测试覆盖率。
绝大多数厂商的IP验证策略是单独对每个方块进行测试,而且使用的测试配置也不同于其它IP块。系统测试仅限于基础系统内各个方块的相互作用,包括处理器IP、内存IP、外设IP和公共系统总线。绝大多数测试都属于一般性测试,并只侧重于系统的某些方面。它们不会采用伪随机激励(stimulus),也不会利用参考模型来支持灵活的检测技术,只有IP买方或是为了推出新产品的供货商,才会利用部份周期执行回归测试。此外,没有简单方法可用来试验可配置处理器和外设IP所支持的各种配置;测试方块间复杂的相互作用情况;分析硬件及软件性能;或让用户利用同一仿真平台开发及测试应用程序。
传统的系统级验证解决方案利用Verilog之类的硬件描述语言来开发测试平台。但是以硬件描述语言为基础的测试平台不具备可移植性,这使工程师必须重新开发测试平台和测试内容,才能在最终系统上验证IP。此外,这种平台也缺乏灵活性,无论系统何时被修改都要求很多繁杂的变化。据估计,开发大型而复杂的SoC时,验证会占用70%或更多的时间,因为环境模型的建立、测试平台的设计以及测试内容的撰写都需要很多时间。虽然进行这些测试只需要几个小时,但测试平台和测试内容的开发却需要几个月的时间。另外,传统方法使实时检查以及验证程序代码的重复使用性变得非常困难,这些以硬件描述语言为基础的环境也不适合固件研发人员,他们需要嵌入式软件工具、快速的处理器执行模型 (每秒最高执行1百万个指令) 以及一套软件方法,以便控制测试流程和测试平台实用程序 (testbench utilities)。
一套较好的系统级验证环境若以固件研发人员为支持对象,那么它应包含集成式硬件/软件仿真及调试环境,并允许此环境通过实际界面,连接至控制SoC的测试平台以及最终测试环境内的其它任何组件。这个测试平台可以是简单的内存总线监视程序,也可以是复杂的分组业务生成程序。要对可配置IP进行适当测试,测试平台及其模型也必须可配置,以便适应客户的应用需求。对于固件或应用软件来说,这种完整的系统级环境是一种系统内验证模型或测试平台。举例来说,它能测试以10/100 Mbps速率通过以太网接口与外部系统进行数据收发的处理器,同时对另一个必须执行实时操作系统和协议栈的应用进行测试。因此,开发环境必须包含一组测试平台实用程序来执行硬件检查和诊断,这将使程序库和测试程序变得很简单,并能嵌入应用软件。
此时所需要的是一套验证方法,让SoC设计人员能验证硬件IP,同时提供平台来仿真开发人员的软件IP。测试方法通常包含定向测试,它们会顺序测试不同功能,但验证技术的最新趋势包括:
* 随机产生的系统事件或错误插入,它们能和处理器及外围的测试程序同时执行,以便仿真实际的激励;
* 自动产生的自我检查测试,并使用参考模型和评分表 (scoreboard) 技术,因此,不需在测试代码中嵌入这些功能;
* 特定IP的系统级验证事件,无论这些IP是由使用者自行开发或来自IP供应商,这些验证事件都能重复用于整个SoC。
最适合可配置SoC IP的系统级验证环境应能够:
* 支持处理器和外设的并行处理,进而把硬件及软件协同仿真环境和测试平台集成在一起;
* 由IP供货商设计成使用者能够共享和扩充的公用环境;
* 使用者不必购买昂贵的测试平台设计工具;
* 允许使用者选择特定的IP配置以及配合这些配置的仿真;
* 同时提供定向测试和随机测试的汇编程序码,以及随机性的外围数据流量;
* 提供覆盖率监测和报告,显示IP被测试的程度;
* 可重复用于整个SoC和相关固件的验证;
* 提供实用程序以并行测量硬件和软件性能;
* 可以运行和验证应用程序代码。

系统级协同验证/仿真环境
虽然理想的系统级验证环境很容易转换至原型开发环境,但并不适合用来建立产品原型。尽管如此,它还是能大幅减少原型测试和调试工作,加快产品的上市时间。
International公司执行广泛的系统级验证配置和测试,其主要目的是对包含 IP的系统进行验证,确保它们的功能正常,并且满足客户的系统要求,进而节省开发时间。提供的系统级验证环境(见图1)包括:
* 一套基于Synopsys的Vera测试平台语言的测试平台;
*由基本系统配置组成的待测器件;
* ARC的MetaWare工具链,可利用指令集仿真器 (ISS) 取代处理器的RTL程序代码。
这套系统级验证环境把处理器验证环境和数据流验证环境这两个不同的环境结合在一起(见图2),以提供复杂的系统互动,同时在系统级并行验证ARC可扩展式处理器核心、外设数据流以及可选择的ARC系统配置。这两种环境具有不同的特性和需求,处理器验证环境专注于指令执行流程、分支、条件、中断和跳跃,外设数据流环境则以系统内的数据传送为主。
外设数据流程也可配置,以便支持相同外设或不同外设的组合。利用协同仿真ISS模型,或与CPU的RTL模型相连的ISS调试器,即可同时从MetaWare调试环境以及硬件描述语言仿真器环境对系统进行调试。
使用者可以设定这套系统级验证环境,使其支持ARC工具所能建立的各类系统。这套验证环境的架构也经过特别设计,能在系统级执行硬件和软件检查,将分组数据送入系统,执行一系列复杂指令,检查系统相互作用的情况;它还包含一系列功能测试,例如特定配置的置信度测试 (confidence test)。不同类型的登录信息可对执行的测试进行补充,为使用者提供配置状态、指令执行、总线数据传输、总线利用率统计以及总线协议违规的监测。
这套系统级验证策略还可提供一套灵活的基础设施,使设计人员不需要了解测试平台的实施细节,即可快速确认和执行用户定义的测试方案。一组文本文件可对基本系统测试参数进行控制,每个测试顺序都成为在处理器上面执行测试程序,其优点是,只需一个测试文件,即可控制处理器指令和外设指令的产生。
在此环境中运行的典型测试或应用程序代码包括可配置中断向量表、可配置中断服务例程、包含外设初始化例程的主程序、以及测试顺序例程或应用事件。测试代码也包含最后清理阶段 (clean-up phase),系统的统计信息就是在此阶段搜集的。测试代码的主程序还包含伪随机指令发生器,它会协助产生测试激励和汇编程序。ARC的指令集仿真器可做为参考模型,用于处理器随机指令执行的功能检查,它还能做为协同仿真模型的基础。
这套系统级验证环境和测试结构的开发已考虑面向目标型方法和可重用性,让工程师在自己的测试环境内,扩充部分或全部的测试平台组件及测试内容。开发应用程序时,工程师可以选择协同仿真环境,以便利用ISS处理器模型迅速执行指令。利用这套系统级验证环境的灵活性,工程师还能选择内存映像方式以及硬件和软件仿真的多种同步模式。这套系统级验证也能作为一组验证实用程序,这对固件开发人员很有用:只需在测试程序代码中插入简单的API调用程序,即可从应用程序内调用测试平台。可在测试平台产生复杂的外设分组数据业务,然后由处理器调用这些API进行排序,使得处理器只需较少的cpu周期,即可完成某些动作的执行,例如发送一个输入以太网分组。以RTL作业和平台互动为目标的测试序列则是通过软件API来执行,每个API都能以多种形式提供给设计人员使用,例如汇编语言宏、C/C++或测试平台验证语言的扩展。系统级验证环境还为工程师提供了一组测试文件,使他们更容易控制基本测试参数。

设计范例
以消费类电子产品,如PDA及其嵌入式应用为例,说明设计人员如何利用ARC的系统级验证环境,将应用移植到多个硬件平台,同时将硬件和软件功能分开。典型系统分为三层:一个应用层,一个或多个协议层,和一个物理层。
设计一个消费类电子应用,将它从某个物理实现转到另一个物理实现,并确保它的功能正常,此过程的主要工作在于修改固件。举例来说,从包含MAC物理层的PDA转到另一部同时包含MAC以及USB或无线局域网物理层的PDA,这个过程就需要将应用移植,使它能在不同的协议层工作。同样必要的是在搜集数据的最终环境内,对于性能分析的能力。例如,如果某个RAM复制例程的最初设计目标是作为软件初始化程序的一部分,那么最重要的事就是确定此例程能否在新的物理层所要求的时间内完成工作,这个结果将决定是否需要利用硬件执行这个例程,而不是处理器执行。只要可以确定这个例程能在所要求的时间内完成工作,就能节省开发RAM复制硬件所需的时间和努力。
为了展开设计工作,研发工程师必须先规划PDA硬件架构。假设用户选择ARC所提供的硬件配置,设计应包含处理器、内存子系统和两个物理连接:用来连接至网络的MAC,以及将PDA连接至PC或手机的USB。即使采用这种固定的系统划分方式,使用者仍可选择某些硬件以差异化最终配置。例如内存:储存开机程序的ROM容量、系统内存的种类 (闪存或SRAM) 和数据RAM的容量。某些性能分析对于确定最终系统配置的速度也是很必要的,这包括选择时钟频率以及为系统增加数据高速缓存。核心处理器、USB和MAC的配置也需注意,以便在最后的逻辑门数目和最佳性能之间取得平衡。在这个阶段,系统级验证环境可确认系统工作符合预期要求,测试平台实用程序则用来分析内存数据传输、总线负载以及总线仲裁延迟时间。使用者也能利用MAC应答器确定业务量,并仿真10/100Mbps半双工或全双工分组业务,并且设定外部USB的工作模式为全速或高速,以便将这些业务量传给系统。简单的系统级验证测试可确认硬件在新配置的工作是否正常,这个环境还提供多个实用程序,控制这类外部业务量,并且监测总线协议的违规情形以及分组等待时间。
确定硬件配置和仿真流量负载可以提供适当的系统功能覆盖,研发人员仅须利用系统级验证环境执行协同仿真,即可分析硬件和软件之间的互操作性。固件或软件工程师可利用这个环境测试新的应用功能,ISS和软件调试工具则会提供其它有用信息,除了代码配置数据以及高速缓存的命中和故障外,还包括执行这些功能时,硬件所需的中断服务时间。清楚某些功能所需的执行时间,即可避免发生系统错误,例如不完全的数据传送或分组数据丢失。
系统级验证环境也能用来执行完整的应用程序,验证新的PDA设计和物理连接层是否正常工作。另外,它还能将协议错误加入目标系统,以便了解系统会如何反应以及如何恢复。

结语
随着产品寿命周期不断缩短,SoC的系统级协同验证和协同仿真环境必须继续加强硬件和软件环境的整合。这种整合应该把更多个原型环境元素加入系统级验证环境,以便增加验证精度和系统性能。因此,随着仿真在系统级验证中的不断增加,原型环境和系统级验证环境之间的界限也会转变。■



关键词: ARC SoC ASIC

评论


相关推荐

技术专区

关闭