一、系统集成芯片(SoC)是IC设计的发展趋势
(1)随着微电子技术和半导体工业的不断创新和发展,超大规模集成电路和集成度和工艺水平不断提高,深亚微米(deep-submicron)工艺,如0.18μm、0.13μm已经走向成熟,使得在一个芯片上完成系统级的集成已成为可能。
(2)各种电子系统出于降低成本、减少体积的要求,对系统集成提出了更高的要求。
(3)高性能的EDA工具得到长足发展,其自动化和智能化程度不断提高,为嵌入式系统设计提供了功能强大的开发集成环境。
(4)计算机硬件平台性能大幅度提高,使得很复杂的算法和方便的图形界面得以实现,为复杂的SoC设计提供了物理基础。
二、何为嵌入式SoC IC
SoC(System on Chip)是指集系统性能于一块芯片上的系统级芯片。它通常含有一个微处理器核(CPU),有时再增加一个或多个DSP核,以及多个或几十个的外围特殊功能模块和一定规模的存储器(RAM、ROM)等。嵌入式SoC更是针对应用所需的性能,将其设计在芯片上而成为系统操作芯片。芯片的规模常常可以达到数百万门甚至上千万门以上,所以嵌入式SoC是满足应用的系统级的集成电路产生,一方面要满足复杂的系统性能的需要,另一方面也要满足市场上日新月异的对新产品的需求,因此嵌入式SoC的设计也代替了高科技的设计方法和程序。只有在不断地发展优化下,嵌入式SoC才能提供设计周期短而性能优异的产品。因此,要掌握嵌入式系统芯片的设计,就要了解其设计方法和流程。
三、嵌入式SoC IC的设计方法和流程
在介绍SoC IC的设计流程之前,先介绍一下“重用”的概念。
“重用”(re-use)指的是在设计新产品时采用已有的各种功能模块,即使进行修改也是非常有限的,这样,可以减少设计人力和风险,缩短设计周期,确保优良品质。
SoC IC的设计原则,就是尽可能重用各种功能模块并集成为所需的系统级芯片。读到设计重用,必须对重用时需要考虑的因素作一些说明。首先,重用的功能模块要有详尽的说明书,对模块的功能和适用范围以及芯片集成时的总线接口进行说明。其次,要提供该模块过去已实现的生产工艺。第三,要提供用于测试该模块的测试程序及测试平台。最后,也是最重要的,就是模块的设计内核。通常提供的设计分为“软模块”和“硬模块”两种。“软模块”只提供RTL语言描述,可以用EDA综合工具产生电路。它的优点是比较灵活,可以根据不同的生产工艺产生对应的电路。“硬模块”提供的是已经完成的电路物理设计(physical design),也就是版图的设计(layout)。它的缺点是一旦生产工艺改变就不能够再使用了,即使是在采用同样生产工艺的情况下,由于模块的物理尺寸已经确定因而也影响了布局(floor-plan)的灵活性;它的优点是在设计采用同样生产工艺的产品并且其物理尺寸不影响芯片布局的情况下,能够直接采用,不用重新设计。由于半导体工艺发展极快,通常重用“软模块”比较多。
目前,在欧洲和北美已经在产业界形成了基于IP(Interllectual Property)总线模块的重用标准,对于重用的各个因素都有明确的规定。我国的IC设计产业正在迅速发展,应该尽快建立自己的重用标准,与国际接轨。
通常SoC IC的设计方法有两种:一种是基于模块(module-based)的设计方法,另一种是“门海”(sea-of-cell)的设计方法。
Module-based的设计方法是指各个单元模块完成各自的RTL和电路综合以及版图设计,然后,在顶层完成整个芯片的版图设计。这种方法的优点是当个别模块进行修改进,不会对整个芯片的设计产生较大的影响。它的设计流程如图1所示。
Sea-of-cell的设计方法指的是在各个单元模块完成RTL后,直接对整个芯片进行综合,产生整个芯片的网表,然后,完成整个芯片的版图设计。它的优点是能够节省芯片面积,缺点是一旦某个模块修改了,整个芯片要重新做综合和版图设计。它的设计流程如图2所示。
四、SoC IC满足的时序要求
无论采用如种设计方法和流程,确保芯片的工作时序要求始终是芯片设计的核心问题。好的设计方法和流程,应该在芯片设计和初级阶段对整个芯片进行时序的控制和分配,以便减少因时序问题造成的反复修改。
由于SoC IC的规模一般都非常大,因此各个模块用于综合(synthesis)的约束条件必须基于整个芯片的时序要求来产生,才不至于对整个芯片的Timing产生影响。Synopsys公司的Design Budgeting工具能够根据芯片顶层的约束条件对整个芯片以及子模块的约束和时序进行分配和控制,并且产生以此为基础的各个子模块的约束条件用于电路综合,由于芯片顶层以及模块之间的时序已经得到平衡考虑,许多时序问题(timing violations)已经预先得到控制,能够减少后期对设计进行反复修改的次数。
在对电路进行验证(verify)的时候,除了验证功能正确外,还要验证工作时序的正确性。通常的方法是编写专门的测试程序,运行EDA仿真工具来完成,这通常称为动态仿真(dynamic simulation)。由于SoC IC的规模比较大,仿真(simulation)运行的时间比较长,尤其是在完成版图设计后做后仿真(postlayout simulation)的时候,因此,我们要引入静态时序分析的方法(static timing analysis)。它是从电路的连接和布线上来推测贪污传输的时序,因此当电路的工作时钟和约束条件确定后,电路中信号传输时的设定时间(setup time)和保持时间(hold time)也已经确定,通过静态时序分析就可以把那些不满足要求的路径或电路单元找出来,提供修改设计的依据。它的特点是运行时间远远少于动态仿真。许多电路的时序问题可以预先发现而不用等到动态仿真完成,因而可以帮助我们缩短设计周期。常用的设计工具有Synopsys公司的Primetime和Cadence公司的Pearl。
五、版图设计
对于复杂的SoC IC,其版图设计(layout)也是非常复杂的。随着半导体工艺的越来越精密,芯片的规模越来越大,版图布线的负荷已成为主要的时序影响因素,所以自动布局布线的时序分析成为设计的重点。无论采用module-based的设计方法还是sea-of-cell的方法,最好要采用时序驱动(timing driven)的版图设计方式,这样,可以确保前端各个层次的设计约束条件延伸到物理设计(physical design)中去。具体做法是将综合电路的约束条件转化为Layout工具可以识别的格式,用来驱动Layout工具完成设计。此外,为了保证电路的时钟到达各时序单元的时间的一致性,需要在各时钟路径上插入时钟树(clocktree),通过一定的约束条件,Layout工具可以通过平衡时钟路径之间的差异(skew),自动完成时钟树的生成。通常的版图设计流程如图3所示。
最后,当布局布线完成之后,还要做DRC和LVS的检查。DRC(Design Rule Check)是检查版图设计定否符号生产工艺的物理规则要求;LVS(Layout Versus Schematic)是检查版图设计是否与电路设计一致。只有当这两项检查都通过后,版图设计的工作才算完成。我们通常采用Cadence或Avanti公司的Layout检查工具。
需要强调一点的是,虽然在设计开始时设定了芯片顶层及模块间的时序约束条件和时钟树,也采用了动态仿真和静态时序分析以及时序驱动的版图设计方法;但是,由于SoC IC设计的复杂和困难,通常以设计工程师和工具合作也要经过多次反复修改才能成功,超过10次的也不少见。所以,在设计开始前应作好设计周期的计划。
再要一提的是,当生产工艺小于0.35μm以下时,尤其在采用同步电路设计方法时,因为布线而造成的时序差异和延迟常常超过模块中电路设计的差异和延迟。因此,在Layout时对布局设计和时钟树生成需要仔细考虑。Layout完成后的时序分板是做好设计的关键。这也是选择基于模块设计方法或是“门海”设计方法时要考虑的因素之一。
对于深亚微米的版图设计,还有两个因素要考虑。一个是当走线过长时产生的天线效应(antennaeffect)会对电路的时序产生影响。解决的办法是在长走线中插入天线二极管(antenna diode),用于抵消天线效应。另一个情况是当两条平行的走线非常靠近的时候,它们之间的偶合效应会产生交叉干扰(cross-talk),也会对电路的时序造成不利影响。解决的办法是在线路中加入buffer来克服,采用Cadence公司的Signal Integrity工具可以分析出交叉干扰出现的电路部分并结合Layout工具自动完成buffer的插入。
对于模块电路的版图设计,现在还无法采用上述的自动布局面线方法而需要人工完成,因而设计的时间和工作量比较大,这一点在作计划时也要考虑。
芯片端口(I/O PAD)的设计也是SoC IC设计的重点,除了要考虑静电保证ESD、驱动能力等因素外,还要考虑到当两个PAD靠得很近的时候,它们之间的耦合效应会形成寄生三极管(parasitic transistor)效应,影响I/O PAD的正常功能。
SoC IC通常都是数模混合电路,版图设计的核心是防止噪声干扰。通常要从两个方面来考虑:一是在布局时尽量使相互容易受干扰的模块分开得远一些;二是数字电路和模拟电路要采用不同的电源和布线。
六、SoC IC的测试设计DFT(Design For Test)
芯片的测试,一方面是为了保证芯片的质量和可靠性,另一方面也要满足低成本的生产目的。过去,传统的测试方法是把我们用于功能仿真的测试程序转化为生产测试程序输入测试仪器。它的缺点是测试时间长,尤其是高覆盖率(test coverage)的要求下,对于大规模的SoC IC,其成本将非常高。现在,通常采用插入测链(scan chain)的方法,使得芯片中的时序单元在测试模式下连接成移位寄存器(shift register),然后,采用ATPG(Automatic Test Pattern Generator)工具产生的测试向量,能够有效地对芯片完成测试。测试时间大大缩短,也能达到高于90%的覆盖率,保证产品的品质和可靠性。许多EDA工具如Synopsys公司的Design Compiler和Mentor公司的DFT Aduvisor/Fastscan都可以帮助完成这一工作,自动化程序相当高。当然,这一方法的代价是会增加芯片的面积。需要指出的是,采用插入测试链的方法只适用于同步电路设计,而且在电路的RTL设计阶段就要把这一因素考虑进去。对于异步电路的测试主要还是通过功能测试完成。
由于SoC IC比较复杂,芯处中需要设有专门的测试控制模块(test control module),将整个芯片分为若干个测试组,每个部分都有独立的测试链完成测试。结合若干个芯片端口完成整个芯片的测试控制。
结束语
好的开始是成功的一半。在开始时要做好设计计划。计划项目列举于下,以作参考。
设计计划考虑项目:
Product Design specification(产品设计规格书)
Design methodology and EDA tools selection(设计方法和设计工具的选择)
Database structure(and choose a Database Manager)(设计数据的存储结构)
Naming convertion(命名规范)
IP Module re-use consideration (IP模块重用的考虑)
Test plan(测试计划)
Chip Integration plan(整个芯片的集成计划)
Design schedule(设计时间表)
Design Resources requirement plan(设计的人力和软硬件需求计划)
Detail design task check off list。(详尽的设计任务完成情况检查表)
SoC IC成为现代电子系统的核心已是不争的事实。总而言之,SoC IC的设计方法和流程是一个不断演变和改进的过程,有效利用“重用”功能模块和强大EDA工个的支持是SoC IC设计的基础,而采用好的设计方法和流程、解决好Timing Closure和Testability是SoC IC设计的核心。同时,我们借此机会呼吁业界同仁的支持和鼓励,尽快设立中国的IP模块重用标准,使国内嵌入式系统和SoC设计能很快得到普及。