然而随着嵌入式系统日益普及,设计危机也逐渐凸现。统计数据显示,近40%的嵌入式系统开发延迟,还有超过9%的开发最终被取消。
这些统计数据的矛头都指向基本工程方法的失败。在传统的开发步骤中,硬件设计要超前软件开发,而嵌入式系统中软件正日益占据关键地位。因而,传统开发步骤在嵌入式系统开发中遭遇失败并不让人意外。何况一个产品的上市时间也越来越短(后文举出的手机开发的例子总开发时间还不到一年),这又给嵌入式系统的开发雪上加霜。很明显,嵌入式设计的方法和工具需要进行一次革命。
也就是说,系统架构、硬件实现和软件实现各阶段之间的关系需要调整,而这种需求恰好正是目前的电子系统级设计(ESL)中最受关注的问题。然而,现有的大多数基于ESL的方法都只能提供部分解决方案。我们需要的是一套全新的设计模式,一套能够对全系统建模的方法,以促进系统架构研究并实现软硬件协同设计,以允许设计人员从原始设计不断改进,直到最终实现系统。
至今为止,大多数将SoC系统级设计自动化为RTL实现的尝试都存在设计精确度和设计生产力不足的缺陷。早期那些力图将C、C++和SystemC自动化为硬件建模语言(能将顺序软件语义翻译为基于状态机的并行硬件语言) 的工具,不但要求开发人员创建并维护功能事务级模型的多个“视角”,而且要添加定时还需要更多的“视角”。维护这些“多视角”本身就有问题,而这些视角之间在时序和功能方面的不一致还会导致验证错误。此外,最终将其转为RTL的过程主要仍是一个手工操作的过程。
要使SoC设计走出困境,很重要的一点就是让设计师们能够采用一种在系统架构阶段设计的定时精确的高性能系统级模型,然后随着开发人员从架构阶段进入软硬件协同开发和验证阶段,改进而不是丢弃这个模型。尽管暂时还没有一种全自动化的工具链能够实现从系统架构到RTL实现这一系列完整的设计任务,但一些嵌入式设计方案供应商已经开始了成功的尝试,其中一种很有前途的技术就是虚拟系统原型技术。
图1:每个公司一年里启动的项目提前完成,推迟完成,按时完成和取消所占的百分比(平均每个公司启动项目所占百分比)。
虚拟系统原型(VSP)是一种基于软件仿真的电子系统模型,其中可以包含一个或多个处理器、总线、硬件外设,甚至可以包含作为整个系统一部分的机械或模拟子系统模型。但最重要的是,VSP运行的是与真实硬件相同的经过编译和链接的目标代码,因而能够准确预测系统在实际情况下的表现。此外,VSP还是一种周期精确(cycle-accurate)的模型,因此,被设计的系统可以根据对实时性的要求建模。
一旦模型建立,硬件和软件开发就可以同时启动,这样一来,既减少了开发所用的总资源,也缩短了开发周期。
传统的“丢弃式”系统级模型在硬件和软件实现阶段就过时了,而VSP仍可继续用于硬件验证。由于这一优秀的模型是周期精确(cycle-accurate)的,因而RTL实现可以在任何时候换入 (swap in) 。而且,在RTL模型换入后, 为了进行性能分析或者更快地运行更大的软件实体,还可以用原来的高级VSP模型将RTL模型换出。系统级测试范例是作为可执行系统规范的一部分生成的,然后,随着软硬件开发过程的进展,再由上至下地生成结构、模块和单元测试。
最后一点,VSP的升级和分发也很容易。对那些在地域上分布较零散的开发团队而言,通过网络发送软件模型也比运送电路板更简单。这样一来,工程师只有在最后的集成阶段才需要真实的硬件和芯片。而且,由于软硬件开发采用的是同一个虚拟系统原型,因此集成起来也更快和更容易。
虚拟系统原型在无线设计中的应用举例
在单芯片系统的开发中,无线系统设计是最复杂也是竞争最激烈的领域。越来越多领先的无线设计公司开始利用虚拟系统原型技术提高设计生产力、缩短上市时间,并降低风险。以下介绍的无线设计在一块芯片中容纳了两个处理器内核、一个DSP、多级存储器、6种复杂的多层总线结构、一个实时操作系统、超过30个外设,外加超过两百万行代码。这款手机的SoC具备GSM控制功能、多媒体功能、二维和三维图形处理功能、相机接口,以及一系列诸如WiFi和USB之类的其他接口。
图2:利用VSP技术,软件开发可以在硬件就绪前9个月甚至更早开始。
以前的项目结束后,这个设计小组决定必须改变传统的“先硬件后软件”的设计方法才能满足日益缩短的上市时间需求。
采用VSP的结果
他们选择了VaST Systems提供的虚拟系统原型方案,这不但是一个高性能的方案,而且丝毫无损设计精度。从系统架构阶段直到软硬件协同开发和验证阶段都可以采用同一个VaST处理器模型(虚拟系统原型的核心)。
根据配置的不同,VaST处理器模型在仿真单处理器时,在保持原有的周期、寄存器和定时精度的同时,速度在50到200MIPS之间;在仿真带分层存储器结构和多级总线的多内核系统时,在保持周期精度的同时速度可达10到100MIPS。
首先,系统架构师利用VSP进行系统架构研究和分析。VSP能够运行基于应用的软件,因此设计师可以据此考虑缓存的大小、处理器的处理能力等性能问题,同时还可以检查出系统中潜在的资源共享、同步和总线带宽问题。此外,利用VSP,设计小组还可以在真实系统的环境下检查第三方IP。
有了VSP,软件开发人员可以提前几个月开始编写系统中的关键函数(例如系统初始化程序、硬件抽象层、RTOS/OS及其相关的设备驱动程序、中间件软件,甚至是嵌入式应用的代码),然后再进入传统的硬件、软件开发流程。
图3:传统的手机设计流程和利用虚拟系统原型的手机设计流程的比较
在使用VSP之后,这家公司发现他们的竞争优势得到了很大提升,于是决定继续将VSP技术作为其首选设计方法。
本文小结
嵌入式系统不论从绝对数量还是从复杂度来说都在飞速地发展,而且在嵌入式系统中,通过软件实现的功能越来越多。
传统的先硬件后软件的设计方法对这种复杂的嵌入式系统开发已不再适用。因为不但从质量还是从生产力的角度说,软件和硬件都必须同时开发和验证。
人们早期所作的用软件来建模硬件系统的尝试存在很多问题,包括要求设计师创建并维护模型的多个“角度”。要解决这些问题,硬件系统的软件模型必需同时具备快速和准确两个特点。具备了这两个特点的模型就有可能既适用于系统架构阶段,又能成为出色的软硬件协同开发参考模型。
VaST Systems提供的技术和方法能够在不损失速度和精度的前提下提供快速准确的虚拟处理器模型(嵌入式系统的核心)。已经有设计团队采用了我们的系统原型,根据配置的不同,该模型在单处理器内核系统中的仿真速度可达50到 200 MIPS,在带分层存储器结构和多级总线的多内核系统中可达10到 100 MIPS。
一家领先的手机嵌入式系统供应商采用了虚拟系统原型 技术,并在硬件就绪之前9个月就开始了软件开发。用他们的话说,采用虚拟系统原型 技术可谓“用更少的成本和更短的开发时间设计出更好的产品”。