《1 引言》

1 引言

随着专用集成电路技术的发展,集成电路设计逐渐进人了系统级芯片(SoC)设计的时代。片上系统的传统的开发方法是将系统人工划分成软件和硬件两部分,由不同的工程组独立开发,这对于规模较小的系统是可行的。但是随着系统复杂程度的增加,以及产品更新换代的加快,需要一种软件和硬件协调的开发方法,以缩短系统开发周期、降低系统成本、提高系统可靠性,从而在激烈的竞争中占领市场。

现行设计方法学的不适应,已对集成电路产业的发展产生了愈来愈明显的影响。在高层次综合理论之上,人们正积极寻求一种更加优越的面向SoC技术的设计方法学。软硬件协同系统设计技术(HW/SW Co-design)便由此被提出并加以广泛研究[1]

国际上一些著名的EDA公司,已推出了一些系统级的设计工具,如Synopsys公司的CoCentric系列工具、Cadence公司的Virtual Component Co-design系统、Mentor公司的Seamless等,在实际的设计工作中得到了初步的应用。

在系统级的软硬件协同设计和仿真技术的基础上,笔者简要介绍了CoCentric system studio仿真平台的使用,并给出了在该仿真平台下系统级软硬件系统仿真的实例。

《2 硬件协同设计》

2 硬件协同设计

为了满足系统的要求,SoC芯片一般采用嵌人式微处理器+硬件电路的模式,其中嵌人式微处理器可增加系统的灵活性,硬件模块可满足系统实时性的要求,系统总线将嵌人式微处理器和硬件模块联系在一起。

《2.1 协同设计流程》

2.1 协同设计流程

在SoC芯片上,软件和硬件是紧密耦合在一起的。软硬件协同设计流程如图1所示[2]

设计的每一步包括软硬件的划分、调度和通信综合,都进行某种形式的验证和分析。完成这些步骤之后,用EDA工具(如Symopsys公司的CoCentric)创建整个系统的高级算法模型和仿真模型,便可得到软硬件系统仿真所需的可执行的说明文档。系统工程师根据经验和对成本与性能的折中完成软硬件的划分。

硬件和软件的协同仿真使硬件的行为模型和软件的工作模型精化,开发出功能描述详尽的可执行模型。精化的过程持续在整个设计的流程中。

2.2 SystemC一一软硬件协同设计语言

目前的设计方法,在系统级设计时,描述各功

《图1》

图1 SoC设计流程图

Fig.1 SoC design flow gaph

能模块使用的高级程序设计语言,如C语言,与描述硬件的HDL语言时完全不同。SystemC包涵了扩展的C++库和一个支持系统级、行为级、寄存器传输级硬件建模概念的语句。

SystemC的优越性在于系统设计时无需进行代码转换,只需通过局部细化设计来添加必要的硬件和时序约束;无需既精通C语言,又精通HDL语言。在系统的最高层的系统级可以用C/C++描述系统的功能和算法。在系统的硬件实现部分可以在行为级到RTL级用System C的类来描述,系统的软件部分可以用C/C++语言描述。系统的不同部分可以在不同的抽象层次描述,这些描述在系统仿真时可以协同工作,在设计过程的初始阶段进行有效的硬软件联合设计,大大缩短了开发产品的时间,促进了系统软硬件协同设计的发展。

《3 软硬件协同仿真》

3 软硬件协同仿真

仿真是检验系统的软硬件协同设计是否满尸功能和性能要求,在系统的开发中有着重要的意义。

《3.1软硬件协同仿真简介》

3.1软硬件协同仿真简介

软硬件系统仿真技术的提出是因为必须把软件的执行和硬件的模拟联系起来,同时系统模拟软件和硬件、软件的集成和调试可以在设计循环早期就开始,没有必要等到硬件原型被建立起来之后,缩短了设计周期。

软硬件协同仿真系统主要由仿真平台、硬件设计、软件设计3部分组成。根据仿真引擎不同分为软件模拟和混合模拟,根据仿真算法的不同分为事件驱动模拟器、.周期基准模拟器和数据流模拟器。系统级仿真的算法验证是将整个软硬件系统通过信号连接各个功能块组成,即用数据流软件模拟。

《3.2 系统级软硬件协同仿真》

3.2 系统级软硬件协同仿真

软硬件协同仿真是用软件控制硬件的仿真。根据芯片设计的不同阶段,软硬件协同仿真可以分为系统级协同仿真、行为级仿真、RTL仿真和门级仿真[3]。系统级协同仿真主要用于验证算法的正确性和评估系统的整体性能,在芯片的仿真验证中具有重要意义。

Symopsys公司的系统级系统仿真工具CoCentricsyetemstudio,提供了一个协同仿真的接口,为系统级协同仿真和算法验证提供了条件。该接口将SystemC模块仿真环境和HDL模块仿真器可以协同工作,对用不同语言描述的系统进行系统级仿真。它支持不同种类的HDL仿真器,如:Synopays VCS, Synopsys Sciroceo, Cadence Verlog-XL, NC-VHDL, NC-Verlog, ModelSim等仿真。

System C模块仿真环境和HDL模块仿真器的通信如图2所示。图中的DKI(directkemelinterface)是由CCSS工具管理的,而SystemC与HDL仿真器的接口和HDL仿真器与System C的接口则是由系统工具自动生成的,不需要任何设置。在CCSS环境下既可以完成包含HDL模块的System C设计的仿真,也可以完成包含System C模垣的HDL设计。

下面以一个包含HDL模块的SystemC设计为例来说明在CCSS上实现系统级软硬件协同仿真的步骤[4,5]

《4 软硬件协同仿真实例》

4 软硬件协同仿真实例

系统级仿真可分为结构仿真和算法仿真。

在CCSS用VCS仿真器进行仿真时,仿真前需3个条件:具有CCSS的license;具有VCS的license;必须要有Verilog源代码。仿真要分4步进行:

1) 首先编写Verilog源代码FIR-flter.v,并保证源代码没有错误。

2) 建新的workspaces和一个Library。为导人HDL模块作准备。

3) 导入HDL模块。既可以在该库中创建HDL wrapper型的模块,使用图形化界面导入,也可以通过菜单操作方式导入。图形界面在建立model时,指定源文件、顶层的实体、用到的仿真器(例中使用VCS)和其他HDL文档。菜单方式比较简

《图2》

图2 SystemC模块与HDL模块的通信

Fig.2 Communications between System C model and HDL model

单,File→import同样要指定以上内容。而对于包深System C的HDL设计的协同仿真是将System C模块导出,操作方法与导人HDL文件类似。

4) 在同一个库中创建一个数据流图模块(DFC)的模型,作为HDL模型的仿真模型[6],如图3所示,它包括Dirac信号发生器MI的信源,FIR滤波器M2和一个writesignal信宿M3,其中MI和M3这两个模块都由系统工作室提供。

修改模块参数,使各个模块之间的输入输出参数匹配,随后进行算法级仿真。通过DAVIS工具可以看到仿真结果,从而分析算法的正确性。

《图3》

图3 数据流程图模块

Fig.3 Dataflow graph model

《5 结语》

5 结语

随着SoC复杂度的增加,使软硬件协同设计和仿真成为SoC设计的重点和难点,必须利用相应的EDA工具,采取先进的协同仿真技术,才能达到协同仿真的目的。

由集成电路发展和SoC技术引出软硬件协同设计技术,并以一个示例介绍了基于CoCentric system studio的系统级协同仿真方法。这种方法可用于复杂SoC的算法级仿真,具有较强的实用性。