基于平台的SOC设计方法研究<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
摘要:本文简要的介绍了Soc设计的概念、Soc设计的关键技术,并着重介绍并讨论了基于平台的Soc设计---PBD(platform based design,基于平台的设计)的基本概念,研究现状、发展以及存在的一些问题。PBD实际上是VLSI设计方法学的一种改进,因此本文同时还结合一些公司开发的平台来讨论PBD设计思想对VLSI设计带来的作用和影响。
关键词:Soc,Platform,IP核复用
1.引言:
随着半导体工艺以及VLSI制造技术的高速发展,大量的逻辑功能都可以通过单一芯片实现。同时一些消费类电子系统如:<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />3G、数字高清晰电视等产品都要求进行百万门级的IC设计。这些系统的设计要求设计时间、产品投放市场的时间(TTM:time-to-market)尽可能短,同时,还要求开发过程有一定的可预测性、产品制造的风险尽量小、产品质量尽可能高。在这种情况下,传统的以元件库(cell library)为基础的ASIC设计方法已跟不上设计的需要,于是一种新的设计概念——Soc产生了。
Soc(system-on-a-chip)即系统芯片,是一种专门用来描述高集成器件的术语。Soc将系统的主要功能综合到一块或一组芯片中,本质上是在做一种复杂的IC设计。用Soc设计电路的复杂程序一般要超过 10万门。设计百万门测验的集成电路如果采用传统ASIC的TOP-DOWN(自顶向下)设计方法,无论从EDA设计工具的开发,还是从TTM的角度都将遇到麻烦。这使得越来越多的系统级设计都转向Soc,即在芯片上用若干个大型的模块来搭建一个复杂的系统。一般来说,在Soc中的宏模块至少包含一个可编程处理器(Programmable Processor)芯核和一个片上存储器(On-Chip Memory),其它硬件模块包括CPU core、DSP core、Signal Processing和Protocol Control模块以及Analog模块等。将这些宏模块组装一块芯片上,然后做它们之间的布局和布线,这样才有可能使设计满足TTM 的要求。
Soc系统设计中主要有基于模块的设计(Block-Based Design,BBD) 方法和基于平台的设计(Platform-Based Design ,PBD)方法。BBD 方法强调IP( Intellectual Property) 重用,它通过IP核的集成技术构造SoC 系统。对于较大较复杂的SoC 系统设计,由于需集成的IP 数目大、类型繁多、各方提供的IP 核接口不一致等问题,使得利用BBD 方法进行SoC 设计仍然非常复[1]。
2.VLSI系统设计方法的发展
到目前为止,可以说VLSI设计方法经历了四个阶段,如图1。第一个阶段是以门级模块为基础的设计(gate based design),早期设计者所使用基础模块是晶体管,所以这一阶段的设计也称之为按面积驱动的设计——ADD(area driving design),在这一阶段设计者关心的焦点是如何减小芯片面积。第二个阶段是以门级模块为基础的设计(gate based design)。随着设计复杂度的加深,在考虑芯片面积的同时,更多关注门级模块之间的延时,这种设计被称为时间驱动的设计——TDD(time driving design) 。上个世纪90年代随着芯片集成度进一步提高,同时产品投放市场的时间要求越来越短,TTM成为开发时重点考虑的问题,这样以门级模块为基础的设计不能适应IC生产的需要。同时,由于大量的宏模块的出现,使设计工作无需从最底层做起。已经开发出的宏模块就是通用的IP产品,这些IP产品的重用以在很大程度上减轻我们设计的复杂度和设计所需要的时间。这种以IP模块为基础的设计称为BBD (block based design)设计。
在应用BBD方法进行设计的过程中,逐渐产生了另一个难题,这就是在开发完一个产品后,如何能尽快的开发出其系列产品。这种需求驱动一种新的设计方法——PBD的概念产生。与BBD相比PBD设计的复杂度和层次化程度有所提高。通过使用能预先验证和预测的标准化接口模块,PBD比BBD设计的重用更有计划且提高了生产能力。 PBD是自系统级开始的层次化设计,通常PBD设计划分为四个阶段:模块设计、VC交付、系统综合和软件开发。这种划分不必与开发流程相对应。往往在系统开发过程中,这中个部分是同步进行的。此外,四个开发进程之间还可以进行通信,以便及时进行修改和调整。
当前,BBD和PBD两种开发模式都在被广泛应用。个人认为现在我们正处于朝着以PBD为基础的Soc设计过渡阶段。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
图(1)设计方法的发展进程
3.基于平台的Soc设计
基于平台的设计(PBD) 方法由A Ferrari 与A Sangiovanni Vincentelli 于1999 年首次提出[2] 后来又经过详细定义与发展[3] ,VSI 联盟为PBD 给出了较权威的定义[4] 。基于平台的设计是一种面向集成、强调系统级重用的设计方法,此方法在平台的基础上开发复杂的产品,目标是降低开发风险、代价与上市时间。 该方法在无线通信、汽车电子与多媒体应用中获得了较大的成功。例如,TI公司推出的TI OMAP 为无线视频流应用进行了优化,Philips公司的Nexperia 则适合多媒体应用与开发[1]。
平台是关于虚部件与某个体系结构框架的库。在这个体系结构框架中包含:一些集成的并且预先验证的软件IP与硬件IP块、模型、EDA与软件工具、库,以及通过体系结构探索、集成和验证来支持快速产品开发的方法学。这些平台越来越多地显示以下三个主要特性:
l 平台设计有很强的可配置性,但是却不能改变。如果设计中包含一个不用的模块,可以通过设置使这个模块不工作,而不是将它从设计中拿走。改变一个设计需要的费用,比起在非必需逻辑门总数目方面接受很少的一笔费用来,成本要高的多。
l 平台设计使用的是标准的SoC接口,这样就使得采用相同标准接口的辅助IP模块的集成变得很简单了。很多硬件设计者都知道,实际总线接口(如AMBA或OCP)正在被越来越多地使用到很多不同的IP中。依赖于硬件的软件接口标准依然会出现。
l 现在平台设计越来越多地将专用模块集成到设计中,可以特别优化设计以实现该项功能。设计者会评估他们的特殊要求,然后选择那些能最大限度满足他们要求的“内核”平台。
在很多文献中,把平台又划分为硬件平台、软件平台和系统平台。其中,硬件平台是支持软件重用的微体系结构系列,软件平台通过API 使用硬件平台的资源,硬件平台与软件平台共同组成系统平台。在软件平台中,实时操作系统(RTOS) 封装了可编程IP 核与存储子系统,设备驱动程序封装了I/O子系统,网络通信子系统封装了网络连接。图2 说明了文系统平台与PBD 方法的基本思想。
图(2)PBD的思想
4.PBD完成Soc设计的功能-结构协同设计
用PBD 方法完成复杂系统的Soc设计,其系统实现方法就是功能-结构协同设计。该方法建立在现有的硬、软件协同设计的基础上,但加了一定程序的扩展。今天集成电路设计通常始开硬件的RTL级和软件的C代码。但功能-结构协同设计的要点是设计的抽象描述,它从设计产品的抽象功能模型开始,建立关于系统结构的框架模型,这样便于系统性能评估。
下图3描述了功能结构协同设计的主要阶段:
图(3)功能-结构协同设计主要阶段
1)功能建模
功能建模包括功能和算法的设计与验证(验证是基于仿真的)。在这一阶段明确产品需求,描述产品需求使用C语言和HDL语言等。
2)结构建模
功能描述之后,可以定义一系列基于系统功能描述的软、硬件结构模型,该模型可能包括微处理器、微控制器、DSP、总线、存储单元、外围设计、RTOS、和其他一些专用的硬件处理单元(如MPEG audio and video decoder)。这些元件应是可重用的VC模块。
3)映射与分析
这一阶段将功能进行划分并映射到不同的结构模型上去,即将不同的功能映射为不同的软、硬件资源,对于硬件应将一种功能映射为一个精确的硬件模块,对于软件应将一种功能映射为一个针对于特定进程的任务。映射之后对不同的结构建模方案进行仿真比较,以便于选择最优的方案,同时,也可以对结构建模的结果进行细化。
4)软件与硬件工具
这一阶段包括设计新的硬件模块,综合重用的硬件VC模块,并开发出相应的软件,我们今天所进行的IC设计大多数开始于这一层次(通常称之为RTL-C LEVEL)。
5)系统集成
完成了基本的软硬件开发后,一个完整的系统就可以初步建立起来以用于实验室的演示和仿真了。
5.EDA工具的重要性
基于平台的Soc设计,必须有EDA工具的支持,基于平台的设计流程才会行之有效。EDA工具起重要作用的首要领域是IP配置。
由于合成命令文稿(synthesis scripts)、功能验证和其他支持文件都需要修改以便适应设计上的变化,因此在设计阶段,买进来的、相当于手工制作的IP会带来大量的额外工作量。
对于基于平台的设计来说,只能通过和IP配套提供的配置程序,来对IP做许可的修改。这样就保证了,IP的变化局限在原设计者许可的范围和方式内。当IP配置方案选定时,IP和支持文件将会连贯一致地被重新设置。
使用原始设计者的声明(assertion),对IP也非常有益。绝大多数IP打包方式允许其在单独运行的模式下有效运行,但对于IP在设计里是否可以正常运行却提供不了任何帮助。声明允许原始设计者嵌入功能检查,当IP在新的设计中被验证时,功能检查就可以被激活。为了SoC设计团队的利益,原始IP设计者正在有效地将其专门技术和知识打包。
其他很多的设计依赖性不受声明的影响。以特定方式配置的IP,很可能要求设计中的其他IP重新设置以与之相匹配。当然,在一个系统内,IP不可以不兼容。如果不兼容的话,一般不是因为硬件设置不正确,而是因为现有的软件和特定的操作系统可能会不匹配。
这些跨领域的问题很难发现和探测到。但是随着SPIRIT标准(IP的许多不同方面都以XML格式归档)的出现,希望还是有的。因为这个标准将会使得新级别的设计工具能够实现跨领域兼容性,可能还会将大量不同的单独IP配置程序组合到更加统一的设计环境中去。
6.Soc设计平台实例
尽管基于IP的复用设计在上世纪90年代到本世纪初这段时间不断发展,但大多数设计方法在很大程度上仍是基于特定模块,需要进行专门的整合。如果想使用一个预先设计好的模块,必须弄清这个模块的工作原理,以及如何将该模块与设计中的其他部件整合。更麻烦的是,即使是那些已预验证并可商用的第三方IP模块,也会由于缺乏足够的文档和可交付使用的标准而给工程师带来困扰。换言之,采用预先设计好的IP模块并不能保证不经过额外的验证和调试就能一次设计成功。
在过去几年中,有些公司已经改变了设计方法,他们用一种完全集成的通用架构将自己的IP或者虚拟部件和软件标准化,只要具备共同特征的产品都可以基于这种结构创建,这就是所谓的基于平台的设计方法。这些公司将这种基于平台的设计方法作为一种有效策略,解决各种级别的产品复杂性和上市时间等问题。相对于基于特定模块的设计,这种方法有以下优点:仅通过添加几个IP组件就能快速实现衍生设计;集成架构最大程度减小了验证的不确定性,从而大大降低了设计投入及风险。
基于平台的设计是一种可以达到最大程度系统重用的面向集成的设计方法。Soc设计平台至少包括一个处理器核芯以及保证处理器有效工作的必要外设模块。通过重用方法使用验证的IP 核、IP 模块和设计平台,显著地减小设计开发风险、提高产品性价比和快速上市的可能。
基于上述原因,市场上出现了多种的Soc设计平台,下面本文将介绍C*SOC是苏州国芯(China Core)推出的以32位RISC C*Core的Soc设计平台。C*SOC是苏州国芯科技有限公司开发的一个Soc设计平台。C*SOC是一个功能强大、自动化程度高的Soc仿真验证平台,它是针对Soc的设计难点,易于使用,能大大缩短Soc设计的周期,提高设计成功率的新一代Soc设计平台。
C*SOC是以32位RISC 处理器C*Core(C210 和C310)为核心的Soc芯片设计平台。应用C*SOC200 平台,Soc 设计者将更加专注于开发高附加值、面向应用的IP 模块。C*SOC200 不仅能够快速建立Soc 工程,还提供一个灵活、开放的验证环境,降低验证工作量。因此,逻辑仿真与验证是该平台的主要功能,如图4 所示,C*SOC 平台可以用在芯片设计流程的行为仿真、综合后门级仿真以及Layout后仿真三个环节中。[5]
图(4) C*SOC200在芯片设计流程中的应用
C*SOC设计平台是以Soc的设计方法为流程,利用EDA设计工具作为自动化的设计工具。平台主要包含两部分。第一部分是以C*Core的三种设计模型(行为模型、时序模型和版图模型)和C*Bus的总线构成的Soc芯片设计数据库。库内还包含了多个IP模块,比如中断控制、看门狗、I/O接口、同步及异步的串口、时钟等等。这是依据IP重用的设计方法设计的,因此基于该平台以增减IP模块可以事半功倍,在短期内完成芯片设计。
第二部分是支持自动化设计的软件环境。在Soc设计中最花时间的是仿真和验证,而且在设计流程中,有三种类型的仿真和验证:1、综合以前的RTL设计仿真和验证;2、综合以后的门级仿真验证;3、版图设计完成后的后仿真和验证。Soc设计平台能自动架构验证平台,并且有测试和误差报告功能,可帮助工程师准确地解决设计时所面临的问题。为了便利并缩短仿真的时间,Soc设计平面在仿真时能混合使用多种设计语言,如RTL、门级和网级。例如,工程师增加新的IP模块到芯片中时,只有新模块用门级,而其他重用的部分就可使用RTL的描述以加快仿真的速度。
图5给出了CSOC200的设计框架图
图(5) COSC200设计框图
通过C*SOC200平台不但能验证单个IP的正确而且能从系统的角度,在整个芯片的水平上做软件、硬件的协同验证(Co-verification),保证Soc芯片功能得到充分验证。C*SOC 有效支持不同层次的仿真如RTL、Gate Level、functional model 等。同时,C*SOC 还可以支持不同层次IP 的混合仿真。C*SOC平台支持Testbench 的重用。在C*SOC 中提供了多个通用的IP 模块,并且同时提供了丰富的功能验证模块,可以节省设计者宝贵的时间。在C*SOC 中提供C*Bus,通过C*BUS可以很轻松的集成各种IP 模块。C*SOC 平台中包括Master 和Slave 等验证模式,支持软/硬件的协同验证。C*SOC 的结构设置考虑了Soc设计团队的分工。整个平台的目录结构清晰,分工明确。图6描述了Soc的仿真和验证环境。
|
Padring |
RIMS |
PORTS |
IP Bus Interface |
IPB module |
MLB Bus |
IP Bus |
ebimon |
mlbmon |
mlbreporter |
mlb2ipbmon |
ipb_monitor |
rimextmem |
INTC |
rims_std_slave_tasks pmm_tasks |
C*Core |
Verification C & Verilog Stimulus |
图(5) C*SOC 设计平台仿真和验证环境
6.基于平台设计发展
基于平台的设计是一种IP复用策略,它为芯片产业提供了最好的机会去解决SoC设计中固有的生产率和验证问题。供应商正在与IP一起提供设置工具,使设计人员可以快速选择期望的选项以自动设置IP。
然而,自动化的潜力一直难以实现,因为不同IP供应商所采用的IP文件和封装格式大不相同。另外,描述IP的技术通常不是机器可理解的。
现在,许多问题正通过引入SPIRIT联盟的XML方案加以解决。XML是在提供数据以描述IP功能性和可配置性时的规范。 这种以XML代码表示的标准IP元数据描述旨在收集全部IP数据资料和设置信息,以便将IP集成到设计中。其做法是采用一种机器可理解的格式实现整个过程的自动化。IP用户不必费时进行IP的特征化以使其符合他们的设计流程。
除了SoC技术上的挑战以外,还有一些因素人们讨论得较少,但对于能否成功设计平台SoC也很关键。其中之一就是SoC设计团队与外部团队之间的接口问题,这些外部设计团队包括IP提供方、软件开发方、系统设计师、验证小组、EDA工具供应商以及代工厂。不幸的是,现在的平台SoC提供商大多是从只具备一个或两个这类团队的公司发展起来的,这就使得他们与其他团队的沟通成为薄弱环节,从而严重妨碍了SoC设计流程的恰当执行。在理想情况下,SoC设计团队和外部设计团队应该彼此相邻,这样他们就能通过开会讨论来快速解决设计上遇到的问题。
除了大型的综合性半导体集团公司以外,只有少数几个公司能够奢侈到在一栋大楼内拥有许多个这样的外部设计团队。台湾地区就是一个理想的平台SoC孵化地,在台湾新竹工业园区,方圆几平方英里以内就可以找到一条完整的半导体供应链。台湾地区已经拥有许多相当成熟的设计服务公司,拥有包括兼容ARM的32位嵌入式处理器和高速I/O在内的一套完整的虚拟部件组合。
此外,与合适的EDA工具捆绑在一起的平台将为下一次增长提供动力。
参考文献:
[1] 一种基于层次平台的SoC 系统设计方法 2004.11
[2] A Ferrari ,et al . System design :Traditional concepts and new paradigms [A] . ICCD’1999[C] . Austin ,Texas ,1999. 2-12.
[3] L P Carloni , et al . The art and science of integrated systems design [A] . In Proceedings of the 28th European Solid2State Circuits Confer2ence[C] . Firenze ,Italy ,2002. 25 - 36.
[4] Bob Altizer. Platform2based design :the next reuse frontier[A] . Embed2ded Systems Conference[C] . San Francisco ,2002.
[5] 苏州国芯科技有限公司,C*SOC 用户手册 2004.10
[6] Don Bouldin : Platform-Based System-on-Chip Design
[8] Luca P. Carloni a Fernando De Bernardinis a,b Claudio Pinello a Alberto L. Sangiovanni-Vincentelli a Marco Sgroi a,c : Platform-Based Design for Embedded Systems
wang1jin 2007-6-24 23:41
网速太慢了...几十人共一条网线就是不行...
只有明天来公司更新博客了...大家见谅...
用户24070 2007-6-24 16:11
呵呵
路过看一下。
wang1jin 2007-6-18 17:43
用户14980 2007-6-18 13:39
加一句:
如果你只下了”1“ 没下”2“
也会打不开。
两个同时下了,再先解压缩“1”中文件,你就看到东东了,
HE HE (跟斑竹 学的:笑)
用户14980 2007-6-18 13:18
可爱斑竹:
谢谢你哦,我这么笨笨的家伙都知道怎么开你上传的东西了,如果再有人开不了,哎哟。。。。。。。。。
那就无语了
很谢谢, 我已经把你这儿当我的“第二工作室”了,每天上班的
HEHE
只是我现在能力有限,可能还没好东西呈现。。(惭愧)
不过,我加油好了,呵呵
wang1jin 2006-12-30 19:59
用户22791 2006-12-30 15:38
用户30112 2006-11-29 23:07
图片不能附上不知道怎么回事