软硬件协同设计时代到来
2008-09-24
作者:David
以前曾有过系统设计完全串行化的时代。整个硬件平台" title="硬件平台">硬件平台在经过设计、原型创建、调试和全面完成后才开始软件的开发。当然,这种方法适合市场窗口很宽的年代。每每想起这种有趣的方法都能让人暗自窃笑。
如今情况有了很大的改变。市场窗口已经变得很窄。硬件开发一般都要落后于软件,但没人能够忍耐等待硬件原型出来后才开始考虑系统的驱动程序、操作系统和总线协议。现在软件开发过程必须尽早开始,以便软件和硬件可以同时进行验证。
但在硅片还没有出来、或者使用难度越来越大的情况下如何做到这一点呢?另外,在系统设计周期的早期阶段,最终规范也是一个不断变化的目标,很难为器件建立一个合适的测试平台。而且你所赖于调试和性能分析的信息也不完整。除此之外,硬件平台本身还包含了具有复杂互连、分级存储器体系和多个相互依赖的软件堆栈等特点的异类多内核。
对设计团队来说幸运的是,针对不存在硬件平台的情况下高效验证软件的方法由来已久。当然,解决方案的一部分需要极大地依赖于所谓的平台系统级芯片(SoC),这是从已经建立的、具有良好性能的IP库中生成的通用硬件架构。在进行软件开发时这种方法可以为设计团队提供很大的帮助。
但对于想要在定制的硬件平台上开发软件的激进者来说,软硬件协同设计" title="软硬件协同设计">软硬件协同设计一般需要组装一个高度抽象的硬件平台模型。实现这种技术有多种方式。另外,模拟技术在最近几年有了很大的发展,可以更轻松地用稍加详细的模型运行更多时钟周期的仿真。另外,近来的标准化活动也有助于设计行业用建模取得相同效果。
高层决策
越来越流行的解决协同设计问题的方式是从尽可能高的抽象层开始。在这种方式下,硬件/软件划分问题和哪种实现手段最适合初始算法可以得到同时处理。
MathWorks公司的模型设计概念采用的就是这类方法,它可以自动产生和验证嵌入式处理器的生产代码。因此MathWorks的系列产品采用的是系统级流程,该流程包含了设计、仿真以及在Matlab和Simulink中的系统模型确认(图1)。
借助于Real-Time Workshop和Real-Time Workshop Embedded Coder,设计人员" title="设计人员">设计人员可以自动产生嵌入式处理器的生产代码。这些工具提供C代码产生功能,并且目标代码提供了特殊目标的生成代码扩展。
同时,MathWorks公司的Link产品,如Link for Code Composer Studio或Link for Tasking,可以帮助工程师直接参考原始可执行规范对嵌入式软件进行测试、调试和验证。在硬件侧,工程师同样可以参考原始可执行规范使用Link for ModelSim验证在FPGA上实现的HDL代码或ASIC代码。
模型生成
软硬件协同设计已经成为电子系统级工具和方法的主要应用之一。多家EDA公司已经为创建特定架构的平台模型开发了相当成熟的流程。
Carbon设计系统公司提供的一类工具可以直接从设计的“黄金”RTL描述生成周期精确模型。这种RTL可以用Verilog、VHDL或混合语言的风格编写。这种所谓的“Carbon化”模型针对高性能进行过优化,因此仿真速度比RTL本身要快许多。
对于模型确认,Carbon公司的流程允许用户通过参考原始HDL测试平台的调试来验证单独硬件模型。用Carbon的Model Studio创建的模型可以很容易集成进现有的参考测试套件中以验证接口的周期精确性。所有业界标准的仿真器都可以使用,包括明导的Questa、新思的VCS和Cadence的NC-Sim。
在需要将单独的模型集成进平台时,Carbon的模型可以与系统级集成环境(如CoWare的Platform Architect及其它)集成在一起。它们也可以很容易地与周期级的传统RTL IP集成在一起。在Carbon流程中的这个点上,用户可以用从实际RTL编译生成的精确周期模型代替早期的系统模型。
在组装好平台后,Carbon化模型允许分析和研究硬件架构本身。它们允许使用实际的RTL开展架构分析,并使用现有的系统建模环境确认架构方面的假设。用户可以研究设计实现的性能参数,并验证使用高层系统模型作出的折衷是否值得。
最后,该流程通过在硅片可用之前实现软件调试来完成固件确认。Carbon流程中的固件确认可以充分发挥Carbon化周期级模型的精度优势,而且有利于虚拟平台" title="虚拟平台">虚拟平台向多个设计团队和第三方软件开发人员的推广。
虚拟平台
通过从硬件模型创建虚拟平台可以解决多种软件开发问题。与潜在不稳定的首遍成功的硅片原型相比,虚拟系统可以给设计师提供对系统的更多控制。这样,设计师可以工作在更加具有确定性的情况下。另外,他们能够根据需要任意修改平台,通过增加或减少功能模型和/或改变速度来确定对架构和系统性能的影响。
虚拟硬件在存储器、处理器寄存器和器件状态方面提供了很好的可视性。当你同步处理器时,你可以立即同步所有器件。虚拟化还可以提供对系统执行更强的控制能力。当调试要求全局系统停止时,所有处理器会同时停止,不存在“刹车”效应。当某个处理器正在执行指令时,可以让其它处理器原地等待。内核速度可以慢下来,或完全停止,通信延时可以增加,而来自断点的时序干扰将不复存在。
ESL2.0工具集是CoWare公司推出的一个平台创建工具。借助于CoWare公司的这些工具,SoC设计师可以在周期精确的抽象等级调试和衡量IP及子系统RTL的平台级性能。
CoWare公司声称利用虚拟平台技术可以获得30%到50%的周期时间减少。该技术将加快编辑-编译-调试周期。虚拟平台可以提供包括处理器、总线、外设和环境在内的整个平台的完全可视化和可控制能力,并且具有确定性。
用于协同设计目的的虚拟平台的另外一个优点是消除了对硬件可达性的依赖。就象软件包一样,虚拟平台是全球可访问的-只需几分钟的时间,而且上千个单元都有一致的确定性行为。
虚拟平台还有助于软件开发人员回避由于不断演变的硬件规范而导致的重复工作。CoWare的虚拟平台可以用硬件架构师和开发人员使用的相同技术进行创建。因此,当作出修改时,它们可以立即提供给软件开发人员。
建立基础架构
虚拟平台路线有其优势,但在成功道路上有也障碍。建立虚拟平台是一个十分费力的过程,而且必须与设计过程本身同时进行,这样就带来了硬件模型在各种商用流程之间的互操作性问题。
Imperas是虚拟平台领域的一家新创企业,今年初该公司作出了巨大的技术贡献,承诺为虚拟平台提供开源基础架构" title="基础架构">基础架构。发现缺少宽泛的调试基础架构后,公司在其开放虚拟平台(OVP)网站www.ovpworld.org和SourceForge网站上免费推出了三种技术组件。
第一种组件由用于处理器、外设和平台建模的C语言建模应用编程接口(API)组成,可以帮助设计师建立平台验证基础架构并创建行为与处理器模型。第二个组件是写入API的开源模型库。这些模型能够以预编译对象代码或源代码文件的形式获得。最初的库由ARM、MIPS和OpenRISC OR1K器件的处理器模型组成,今后还会增加其它的处理器。
在上个月举行的第45届设计自动会议上,Imperas发布了与Tensilica公司的合作伙伴关系,允许Tensilica公司的Xtensa和Diamond Standard处理器的快速功能、指令精确模型在基于OVP的虚拟平台上运行。特别是,允许集成Tensilica处理器模型的打包文件现在就可以从www.ovpworld.org上免费下载。这些模型将与Tensilica的TurboXim快速功能仿真器一起运行。TurboXim仿真器的运行速度比传统的指令集仿真器快40到80倍。
三个免费组件中的最后一个是OVP参考仿真器,能够以高达500MIPS的速度运行处理器模型。名为OVPsim的这个仿真器提供GDB接口供设计师调试选择。OVPsim可以通过C/C++/SystemC封包器在其它仿真器中调用。它还能容纳现有的指令集仿真器(ISS)处理器模型(图3)。
硬件的参与
存在用硬件实现模拟中的软硬件协同设计的情况。基于模拟的方法可以极大地帮助对硬件-软件交互行为的检查,因为它比仿真快许多倍,并能使用硬件监视和跟踪功能,还能详细检查问题。
另外,模拟系统可以链接进虚拟平台,从而有助于实现完整的系统验证。例如,当诸如CoWare公司Platform Architect的工具通过总线事务处理器的方式连接到ZeBu系统时,EVE公司的ZeBu系列模拟系统就可以在ESL模拟环境中使用(图4)。
EVE的ZeBu模拟器允许设计人员以1MHz以上的速度执行嵌入式软件,这个速度被许多开发人员认为是确认软件的最低可接受速度。借助于ZeBu技术,设计人员可以通过一个JTAG事务处理器将调试器连接至待测设计(DUT)模式下的处理器进行软件调试,然后停止/开始和逐步运行调试器,中间不会丢失连接。
“这是通过物理的JTAG电缆/插座无法实现的。”EVE-USA公司营销副总裁兼总经理Lauro Rizzatti表示。ZeBu系列产品同样可以让所有寄存器和存储器对设计人员完全可视,无需编译探测电路或对DUT应用仪器。
所有这些开发成果允许开发人员执行软件、运行调试器,并在发生错误时停止运行,查看硬件内部,并详细了解可能是软件缺陷或硬件缺陷的问题。通过保持对软件调试器、硬件寄存器/存储器及两者之间切换的可视性,错误通常可以在相对很短的时间内捕捉到。
不断演进的标准
EVE的ZeBu技术采用的事务处理器是从标准的协同模拟建模接口(SCEMI)改编而来的,它改进了不同硬件和硬件仿真及模拟系统之间的高速、事务级验证性能。SCE-MI标准是在推进EDA相关标准化工作的行业组织Accellera的支持下创建的。
最近,Accellera的董事会批准了2.0版本的SCE-MI标准。据该组织表示,这是向提供在仿真、模拟和快速原型建立环境之间连接和移植事务处理器模型的便利方法迈出的重要一步。
“Accellera的SCE-MI接口试图在模型执行工具(如仿真器、模拟器和测试平台)之间形成基础性软硬件接口,并且尽可能做到统一。”Accellera的接口技术委员会(ITC)主席、拟制SCE-MI 2.0规范的Brian Bailey表示,“2.0版本还参考了SystemVerilog直接编程接口(DPI)标准,确保在已经有合适标准的地方不会创建多余的标准。”
除了在SystemVerilog DPI子集基础上建立的新使用模型外,SCEMI 2.0如今还兼容Open SystemC Initiative(OSCI)的事务级建模(TLM)定义。SCE-MI 2.0保持了与以前1.1版的后向兼容性,它还增加了具有数据整形功能的流接口用于优化模拟速度,增加了仿真与模拟之间的双向模型移植功能,并增加了更加简化的事务处理器建模功能。