1.1 集成电路的设计流程和设计工具

1.1.1 集成电路的设计流程

集成电路有两种设计思路。一种是自底向上(bottom up),即从工艺开始,先进行单元设计,逐步进行功能块、子系统设计,直至最终完成整个系统设计。模拟集成电路和较简单的数字集成电路,大多采用“自底向上”的设计方法。另一种是自顶向下(top down)。设计者首先进行行为设计,其次进行结构设计,接着把各子单元转换成逻辑图或电路图,最后将电路图转换成版图,用于制造。目前大多数先进数字集成电路都是采用这种“自顶向下”的设计方法。读者可以参考设计方面的专著来深入学习设计知识,如参考文献[1,2]。

“自顶向下”的设计流程可分成三个主要阶段:系统功能设计、逻辑和电路设计、版图设计。整个设计过程中需要使用各种数据库(library),各个阶段的设计都需要验证,包括系统设计验证、逻辑验证、电路验证、版图验证等。系统功能设计的目标是实现系统功能,满足基本性能要求。其过程有功能块划分、行为级描述和行为级仿真。功能块划分的原则是:第一,功能块规模合理,便于各个功能块各自独立设计;第二,功能块之间的连线尽可能少,接口清晰。行为级仿真(pre-sim)是为了验证总体功能和时序是否正确。逻辑和电路设计的任务是确定满足上述系统功能的逻辑或电路结构,其输出是RTL(register transfer level)文件,即采用硬件描述语言(HDL)描述的寄存器传输级电路,它又叫电路网表(net list)。集成电路设计流程中提到的RTL一般是指Verilog/VHDL设计文件。数字电路和模拟电路的设计流程在这里就不完全一样了。数字电路的设计是通过调用单元库(standard cell library)来完成的。单元库是一组单元电路(如反相器、逻辑门、存储器)的集合,它是由集成电路制造公司(foundry)提供的。单元库中的电路经过反复的工艺验证,具有很好的可制造性,即比较容易被工厂制造出来。这种单元电路的组合又叫逻辑综合(logistic synthesis),数字电路的逻辑综合一般依靠专用软件来完成,而模拟电路并没有良好的逻辑综合软件。图1-3是数字集成电路逻辑设计的流程图,其中,Verilog/VHDL仿真器用来检验输出的RTL文件(网表)的正确性;时序分析和优化(static timing analysis,STA)提取整个电路的所有时序路径,计算信号在路径上的传播延时,找出违背时序约束的错误。

这里要特别解释一下电路设计中的“综合”概念,综合(synthesis)是指将高抽象层次的描述自动地转换到较低抽象层次的一种方法。通常,综合可分为三个层次:高层次综合(high-level synthesis)、逻辑综合(logic synthesis)、版图综合(layout synthesis)。其中,版图综合是指将系统电路层的结构描述转化为版图层的物理描述;逻辑综合是指将系统寄存器传输级(register transfer level,RTL)描述转化为门级网表(netlist)的过程;高层次综合是指将系统算法层的行为描述转化为寄存器传输级描述。

图1-3 数字集成电路逻辑设计的流程图

版图设计又称后端设计,它是把门级网表转换成版图,并验证其正确性和可制造性的过程。读者可以参考后端设计方面的专著(如参考文献[3])来进一步学习后端设计的知识。数字电路的版图设计实际上就是基于标准单元库的版图设计,主要是布局布线过程。布局(placement)是把模块布置在芯片适当的位置,即把功能块按连接关系放置好,使芯片面积尽量小。布线(routing)是根据电路的连接关系,在指定的区域完成连线。图1-4是标准单元库中两个单元的版图。模拟电路的版图设计则比较复杂,它是一种全人工的版图设计,首先是人工布局规划每个单元的位置,然后人工布线。这一过程从下向上,从小功能块到大功能块进行。图1-5是采用原理图输入的模拟电路设计流程图。因为没有标准单元库的支撑,所以其版图必须依靠人工生成,即全定制的布局和布线。对于数模混合的电路,可以采用全定制和标准单元混合的设计流程。版图设计完成后,必须要经过一系列的检查和验证,才能发送给集成电路制造厂。这种检查的目的是保证版图的正确性和可制造性。

图1-4 标准单元库中两个单元(左边INV,右边NAND2)的版图(不同深浅的颜色/图例表示不同的光刻层)

图1-5 采用原理图输入的模拟电路设计流程图(其版图必须依靠人工生成)

1.1.2 设计工具(EDA tools)

集成电路的整个设计过程都是在EDA软件平台上进行的,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA工具极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度,降低了设计成本。

目前业界使用的EDA工具主要由Cadence、Mentor、Synopsys三家公司提供。表1-1归纳了芯片设计主要流程中使用的EDA工具及其功能。EDA公司提供的一般都是全套工具,因此EDA集成度高的公司产品更有优势。这三家公司基本上都能提供全套的芯片设计EAD解决方案。Cadence Virtuoso目前使用较为广泛,可作为全流程开发平台。Synopsys有DC、VCS、ICC等一系列产品组成完整的设计流程。关于EDA工具的详细介绍,读者可以查阅参考文献[4]。

(1)Synopsys比较全面,它的优势在于数字前端、数字后端和PT signoff。模拟前端的XA、数字前端的VCS、后端的sign-off tool,还有口碑极好的PT、DC和ICC功能都很强大。Synopsys有市场90%的TCAD器件仿真和50%的DFM工艺仿真。

(2)Cadence的强项在于模拟或混合信号的定制化电路和版图设计,功能很强大,PCB相对也较强,但是Sign off的工具偏弱。

(3)Mentor也是在后端布局布线这部分比较强,在PCB上也很有优势。Calibre signoff和DFT使用非常广泛,但Mentor在集成度上难以与前两家抗衡。

表1-1 芯片设计主要流程中使用的EDA工具及其功能

此外,除销售EDA工具的使用许可(license)外,EDA企业还可以提供IP授权(硬核和软核),这对于很多中小规模的设计公司是很有吸引力的。目前Synopsys的IP业务全球领先,Cadence的IP业务销售额也在逐年增加,Mentor在IP业务上和Synopsys、Cadence相比几乎没有竞争力。

我国也开发了自己的EDA工具,如华大九天的Zeni EDA软件,它包括:

(1)可以支持语言和图形输入的设计工具ZeniVDE;

(2)交互式物理版图设计工具ZeniPDT;

(3)版图正确性验证工具和CAD数据库ZeniVERI。

目前国内EDA工具的第一个短板就是产品不够全,尤其在数字电路方面;第二个短板是与先进工艺结合比较弱。

1.1.3 设计方法介绍

下面简要介绍几种集成电路主要的设计方法。

全定制方法(full-custom design approach),即在晶体管的层次上进行每个单元的性能、面积的优化设计,每个晶体管的布局/布线均由人工设计,并需要人工生成所有层次的掩模。这样设计得到的芯片具有性能最佳、芯片最小、功耗最低的特点。这种全定制方法适合于设计集成度极高且具有规则结构的IC(如各种类型的存储器芯片)、对性价比要求较高且产量大的芯片(如CPU、通信IC等),以及模拟IC和数模混合IC。模拟和数模混合的电路因为受设计软件的限制,通常也采用全定制设计。

半定制方法(semi-custom design approach),即设计者在厂家提供的半成品基础上(半成品硅片又被称为母片)继续完成最终的设计,只需要生成诸如金属布线层等几个特定层次的掩模。根据电路的需求可以采用不同的半成品类型,如门阵列(gate array)方法:在一个芯片上将预先制造完毕的形状和尺寸完全相同的逻辑门单元以一定阵列的形式排列在一起,每个单元内部都含有多个器件,阵列之间有规则的布线通道,用以完成门与门之间的连接。

定制方法,它包括标准单元(standard cell,SC)法和积木块法(building block layout,BB)。SC法是从标准单元库中调用事先经过精心设计的逻辑单元,排列成行,行间留有可调整的布线通道。基本单元具有等高不等宽的结构。再按功能要求将各内部单元以及输入/输出单元连接起来,形成所需的专用电路。芯片中心是单元区,输入/输出单元和压焊块在芯片四周。图1-6(a)是用SC法设计的版图结构示意图。SC法看起来与门阵列法类似,但有若干个基本的不同之处:门阵列法是基于门阵列所具有的单元,而SC法是基于标准单元库中的标准单元;门阵列设计只需要定制部分掩模,而SC法设计后需要定制所有掩模。积木块法又称通用单元设计法,它与SC法不同之处是:第一,它既不要求每个单元(或称积木块)等高,也不要求等宽,每个单元可根据最合理的情况单独进行版图设计,因而可获得最佳性能,设计好的单元存入库中备调用;第二,它没有统一的布线通道,而是根据需要加以分配。图1-6(b)是BB法设计的版图结构示意图。用BB法设计出来的单元一般是较大规模的功能块,如ROM、RAM、ALU、模拟电路等。

图1-6 版图结构示意图

可编程逻辑器件(programmable logic device,PLD)设计方法。可编程逻辑器件(PLD)实际上是没有经过布线的门阵列电路通用器件,用户通过对其可编程的逻辑结构单元进行编程来实现特定的功能。这种用户编程的过程就是利用浮栅(floating gate)来实现熔断或电写入进行现场电路改变,而不需要微电子工艺。有些PLD可多次擦除,易于系统设计和修改。PLD器件主要有EPROM、FPGA等几种类型。在集成度相等的情况下,其价格昂贵,只适用于产品试制阶段或小批量专用产品。

实际上,在专用集成电路(ASIC)系统的设计中,以上方法可以混合使用。把较大规模的功能块(如ROM、RAM或模拟电路单元)像积木一样放置在版图上。每个单元内部仍可以用门阵列、标准单元方法或全定制方法设计,如图1-7所示。

图1-7 混合使用不同设计方法得到的芯片结构示意图

在设计过程中还要考虑将来芯片的可测试性,即要求这种设计使得能够对制造出的芯片做性能测试,并能定位出电路的故障。可测性设计的挑战是:芯片的引脚(PIN)数目有限,大量芯片内部的信息无法访问。所以,必须在尽可能少地增加附加引线脚和附加电路,并使芯片在性能损失最小的情况下,满足电路可控制性和可观察性的要求。