* 算法设计与实现
* 行为级综合
* SoC架构设计、仿真及分析
* 构建虚拟系统原型
* 功能-架构协同设计
算法设计工具允许用户对算法进行描述、仿真,并且可以生成算法实现流程的代码描述。比如Mathworks的Matlab和Simlink就是这种工具。目前大部分的工具是使用面向数据流或数据密集型算法进行建模,但是也有一些工具,如Mathworks的StateFlow,允许用户使用有限状态机对控制逻辑进行描述,并可实现自动生成C代码。
行为级综合工具是新一代基于C/C++或SystemC开发的工具,专门为满足算法和软件工程师而非硬件工程师的设计需要而开发的。由于使用C/C++,因此仿真速度比使用传统的RTL方法有了10~1000倍的显著提高。这也为系统硬件、软件和算法的联合仿真开辟了一条新道路。
用户通过SoC的架构设计工具使用传统总线,标准嵌入式处理器库(如MIPS或ARM),以及其他的一些组件(如存储器,特殊的硬件模块和外设等)来构建SoC系统。之后便可以对整个设计进行仿真,通常使用SystemC或C/C++描述的指令集仿真器(ISS)和外围硬件模块联合仿真。这样便可分析得到一些系统级的特性,如总线负荷、竞争,内存访问,处理器负荷等。这些工具可以从CoWare,ARM,Synopsys等公司得到。
虚拟系统原型工具提供单核或多核SoC平台的仿真模型,可以以数十MHz的速度仿真实际系统。系统架构师需要在这样的平台上运行大量的测试序列,并得到系统性能分析的结果,软件开发人员也可在接近实际的仿真模型中测试他们的嵌入式软件。
但现今提供的商业ESL工具没有一种可以在更早的阶段帮助工程师决定系统的基础架构,例如决定整个系统需要使用处理器的数量和种类;需要设计专门的通信机制还是使用传统的分级总线;如何将应用程序划分成多个任务,并分配到不同的处理器上运行;如何有效的探索各种可能的设计方案等。现在的SoC架构设计工具和ISS要在体系架构确定后才有用武之地。
今天的设计要比上世纪90年代末处理器加硬件模块的结构复杂许多。从最小、最简单的手持无线设备到标准的、带有语音视频处理功能的蜂窝电话,直至非常复杂的电子设备,当今的技术已经可以把多颗处理器、多片存储器、复杂的片上通信总线网络,以及由相当可观的硬件模块组成的协同工作子系统集成到一颗SoC中。同时应用软件也愈加复杂,数百万行代码组成的系统软件已是司空见惯了。因此,使用传统方法进行体系结构设计变得日益困难,这一切都使得ESL设计方法学变得越来越必要。尤其是当可配置处理器代替传统的固定指令集处理器,可能的设计方案越来越多时更是如此。
定制指令集处理器(ASIP)
基于特定应用定制指令集处理器(ASIP),这一概念在嵌入式系统设计中变得越来越重要。ASIP的设计方法学和开发工具也在学术界和IP设计领域被提及,并且许多商业的ESL工具已经提供了类似的处理器和协处理器综合工具。处理器的指令集大都采用一种中间形式进行描述。Tensilica提供的XPRES工具也提供这样的功能,由Tensilica定义的TIE语言描述的,并且工程师可以应用这种语言,进一步手动优化处理器的特定配置。
如果SoC的设计是要通过单颗CPU实现,也许再增加一些硬件加速器来提升性能,那么现在的这些工具和设计方??就已经足够了。但事情并非如此简单,如今已有很多的SoC设计使用了至少两颗处理器(一颗是做控制的RISC,另一颗是进行数据处理的DSP),并且下一代SoC设计正朝着6~10颗处理器这一方向前进。在这种情况下,目前显然缺乏设计方??和工具来支持这样的设计。