摘要:本文描述了SOC设计的概念、SOC设计的关键技术以及与之相关的PBD(platform based design,基于平台的设计)设计概念。
关键词:SOC
PBD 系统芯片
集成电路设计从ASIC到SOC
从目前电子工业的发展来看,随着深亚微米(0.18~0.25μm)集成电路制造工艺的普及,大量的逻辑功能都可以通过单一芯片实现。同时一些消费类电子系统如:第三代移动通信、高汪晰度电视、Bluetooth等产品都要求进行百万门级的IC设计。这些系统的设计要求设计时间、产品投放市场的时间(TTM:time-to-market)尽可能短,同时,还要求开发过程有一定的可预测性、产品制造的风险尽量小、产品质量尽可能高。在这种情况下,传统的以元件库(cell library)为基础的ASIC设计方法已跟不上设计的需要,于是一种新的设计概念——SOC产生了。
SOC即系统芯片,是一种专门用来描述高集成器件的术语,也称为“system chip”、“system-on-a-chip”、“system-LSI”、“system-ASIC”、“SLI(system level integration)”等。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模块等。将这些宏模块组装一块芯片上,然后做它们之间的布局和布线(P&G),这样才有可能使设计满足TTM的要求。
设计方法学发展的进程与PBD的产生
首先探讨一下设计方法学的进展。当我们把设计看成是设计者根据设计规范用软件搭接已有的不同模块时,那么早期设计者所使用基础模块是晶体管(transistor based design)。在这一阶段,设计者关心的焦点是如何减小芯片面积,所以这一阶段的设计也称之为按面积驱动的设计——ADD(area driving design)。随着设计方法的改进,出现了以门级模块为基础的设计(gate based design)。随着设计复杂度的加深,在考虑芯片面积的同时,更多关注门级模块之间的延时。这种设计被称为时间驱动的设计——TDD(time driving design)。90年代以后的芯片集成度进一步提高,十万门以上超大规模集成电路的设计增加了开发的复杂度,同时产品投放市场的时间要求越来越短,TTM成为开发时重点考虑的问题,这样以门级模块为基础的设计不能适应IC生产的需要。同时,大量的宏模块的出现,使设计工作无需从最底层做起。已经开发出的宏模块就是通用的IP产品,这些IP产品的重有以在很大程度上减轻我们设计的复杂度和设计所需要的时间。这种以IP模块为基础的设计称为BBD (block based design)设计。
我们现在正处于BBD设计阶段,BBD与以VC为基础的SOC设计相对应。BBD设计取决于我们应用VC单元的能力,以及在DSM(deep submicron)设备上对设计进行固化的能力。在应用BBD方法进行设计的过程中,逐渐产生了另一个难题,这就是在开发完一个产生后,如何能尽快的开发出其系列产品。这种需求驱动一种新的设计方法——PBD的概念产生。我们现在正朝着以PBD为基础的SOC设计过渡。
PBD是一种以平台为基础的设计。在这种设计方法中,“硬件核心”(hardware kernel)的概念对设计至关重要。是否拥有一个硬件核心是BBD与PBD方法的本质区别。硬件核信即为芯片开发所需要达到的最主要的功能。硬件核心一般包括一系列的可编程VC产生、总线以及VC接口。它能控制设计中用到的其他VC并支持其系列产品的开发。硬件核心还应控制系统总线和系统开关,以便测试所开发的系列产品。PBD设计平台应以硬件核心为基础,在开发新产品和系列产品的过程中,硬件核心实现产品的核心功能。PBD设计平台还应包括一些附加的元件,如实时操作系统、由平台所规范的VC与各种程序的接口等。
与以往相比,PBD设计的复杂度和层次化程度有所提高。通过使用能预先验证和预测的标准化接口模块,PBD比BBD设计的重用更有计划且提高了生产能力。PBD是自系统级开始的层次化设计,通常PBD设计划分为四个阶段:模块设计、VC交付、系统综合和软件开发。这种划分不必与开发流程相对应。往往在系统开发过程中,这中个部分是同步进行的。此外,四个开发进程之间还可以进行通信,以便及时进行修改和调整。
在TDD和BBD中,模块设计的方法通常与模块的大小相适应。由于PBD设计是一种系列化的设计,设计者通常只需在模块上加一些功能,或者将已存在的一些功能综合到系统,因此,开发者通常可以较确的预选估计需要使用的模块,以及它和需新开发模块接口结构。
在模块设计中,需要建立两种新的设计概念:标准接口与虚系统设计。标准接口保证模块与系统有良好的接口,接口的标准可以是基于VSI联盟的,也可以在BSI联盟规定的标准上进行简化。模块设计应该为系统服务,既然在模块设计阶段整个系统尚未开发出来,故只能进行虚系统分析,以便获得模块设计的要求。交付的模块应含有各个层次(从系统级到物理级)上开发的结果。
VC的交付指将模块设计的结果包装成符合VSI标准的一系列模块和数据文件,然后将之交付给系统综合者。模块设计和系统综合所使用的开发工具对语法的解释应该尽量保持一致,以免出现异议。此外,VC交付还提供一些保护VC产品知识产权的措施。开发过程的交互性唯开发中的通信,并记录模块开发者在开发过程中进行的修改和系统综合者使用的资源。
系统综合的开发进程与模块设计很相似,只不过两者所使用的“颗粒”不同。模块设计主要从元件库(cell libraries)获取基础模块,而系统综合的设计素材来自于模块设计的宏模块。
软件开发包括选择合适的RTOS(real time operation system,实时操作系统),合适的应用软件。软件开发也要体现层次化,根据功能和模块的划分将软件也划分成几个部分。每个部分之间规定出标准的接口,最后将各个部分综合起来,固化到ROM中去。
使用PBD完成SOC设计的功能-结构协同设计
用PBD方法完成复杂系统的SOC设计,其系统实现方法就是功能-结构协同设计。该方法建立在现有的硬、软件协同设计的基础上,但加了一定程序的扩展。今天集成电路设计通常始开硬件的RTL级和软件的C代码。但功能-结构协同设计的超点是设计的抽象描述,它从设计产品的抽象功能模型开始,建立关于系统结构的框架模型,这样便于系统性能评估。
下图描述了功能结构协同设计的主要阶段:
功能建模
功能建模包括功能和算法的设计与验证(验证是基于仿真的)。在这一阶段明确产品需求,描述产品需求使用C语言和SDL语言等。
结构建模
功能描述之后,可以定义一系列基于系统功能描述的软、硬件结构模型,该模型可能包括微处理器、微控制器、DSP、总线、存储单元、外围设计、RTOS、和其他一些专用的硬件处理单元(如MPEG audio and video decoder)。这些元件应是可重用的VC模块。
映射与分析
这一阶段将功能进行划分并映射到不同的结构模型上去,即将不同的功能映射为不同的软、硬件资源,对于硬件应将一种功能映射为一个精确的硬件模块,对于软件应将一种功能映射为一个针对于特定进程的任务。
映射之后对不同的结构建模方案进行仿真比较,以便于选择最优的方案,同时,也可以对结构建模的结果进行细化。
软件与硬件工具
这一阶段包括设计新的硬件模块,综合重用的硬件VC模块,并开发出相应的软件,我们今天所进行的IC设计大多数开始于这一层次(通常称之为RTL-C LEVEL)。
系统集成
完成了基本的软硬件开发后,一个完整的系统就可以初步建立起来以用于实验室的演示和仿真了。