1.版图设计流程
版图设计在集成电路设计中位于后端的位置,它是集成电路设计的最终目标,版图设计的优劣直接关系到芯片的工作速度和面积,因此版图设计在集成电路设计中起着非常重要的作用。
版图设计的流程是由设计方法决定的,版图设计方法可以从不同的角度进行分类,按照自动化程度,大致可分为三类:全自动设计、半自动设计和手工设计。不管哪一种设计方法,版图设计的一般流程如下:
规则:确定版图设计的基本尺寸和版图设计规则,主要由生产线的实际工艺水平决定。
划分:对于一个大的电路系统,我们通常把它划分为若干个子系统或模块,如果模块太复杂,还可以继续划分。
元器件:确定电路中各元器件的图形和尺寸,在版图设计规则确定之后,就可以根据电路的电参数,通过定性和定量分析,结合工艺实践,确定出电路中各元器件的图形和尺寸。
布局和布线:在电路隔离区划分和元器件图形尺寸确定之后,就可以根据电路的要求进行排版布线。先排出布局草图,然后进行反复比较并优化,最后绘制成比实际图形大若干倍的总图。
优化压缩:进一步优化布局以减小芯片面积。
对于不同的设计方法,版图设计的具体流程会有所不同。下面对三种版图设计的流程进行简单的说明。
(1)全自动版图设计 全自动版图设计方法是指通过计算机辅助设计工具利用电路的结构级网表自动生成版图的设计方法。电路的门级网表可以通过对RTL(寄存器传输级)代码进行综合得到。RTL代码是指用硬件描述语言(VHDL或VerilogHDL)对电路逻辑进行描述的代码。
可以进行全自动版图设计的EDA工具主要有Cadence公司的SE、Synopsys的Apollo等。不同的设计工具其设计流程基本上相同。
全自动版图设计主要包括准备阶段、数据输入、布局规划、布局、布线、时序分析及布线后优化、版图验证、数据输出。
1)准备阶段。在版图设计开始之前,首先要做一些准备工作,包括对版图库的了解,检查结构级网表内容及时序约束文件。
标准单元库一般是由集成电路生产厂商提供,在设计的不同阶段需要使用库中单元不同类型的数据,并且这些数据的格式必须要符合每个阶段所使用的工具所要求的数据格式。类型相同且格式相同的数据分别组成各自独立的库文件,这些库文件的总和就构成了一个完整的设计库。
通常,厂商在提供设计库的同时,会在其中加入关于该库的使用说明文档,这些文档介绍库的内容和基本架构以及库的使用说明。在使用该库之前,必须仔细阅读这些说明文档,并根据文档的介绍检查库的内容是否有数据的缺失或错误。
一个完整的设计库包含的内容很多,其中有电路仿真和综合需要使用的数据文件,也有版图设计需要使用的数据文件。涉及版图设计的库文件主要有:布局布线时需要使用的LEF文件和TLF文件、版图验证时需要用到的库中单元版图数据文件和版图验证命令文件。
版图设计是从电路设计完成并综合产生结构级网表后开始的,在拿到电路设计人员提供的结构级网表后,不要急于使用,应首先检查一下该网表文件的内容,看是否有语法错误或其他书写方面的错误。为了避免因为网表文件书写方式问题影响到版图设计工作的运行,一般要定义一套比较严格的网表书写规则。例如,在书写规则中应该规定:在结构级网表文件中不允许有“无任何连接的节点”,不允许有“无驱动的输入引脚”,所有的命名只允许使用大小写英文字母、数字和下划线,所有命名的第一个字符必须是英文字母,所有命名的长度不能超过1024个字符等。
在自动布局布线阶段需要执行电路的时序分析(Timing Analysis)和时序优化(Timing Optimization),执行这些操作需要前端设计人员提供一个时序约束(Timing Constraint)文件(GCF文件)。
2)数据输入。在自动布局布线开始阶段,首先需要将库文件、门级电路网表文件和时序约束文件读入自动布局布线的EDA工具中进行编译。
3)布局规划。在数据输入完成以后就开始进行布局规划。布局规划阶段需要根据电路门级网表来确定芯片的形状(高度和宽度之比)、大小,并放置输入/输出(I/O)单元、模块及布电源线。在布局规划阶段需要确定好的布局方案,在保证布线成功的前提下减少芯片的面积。(www.xing528.com)
在放置输入/输出单元之前,应由电路设计人员提供管脚排列顺序,根据这个管脚排列顺序来放置。
在放置模块之前,需要和电路设计人员一起,根据运算数据的流向及各个模块的连接关系来确定每一个模块的形状及大体位置。在模块摆放的时候还要注意每个模块的引脚位置、方向、数量及相互之间的对应关系。在放置模块的时候一般先考虑较高层次的模块,然后根据该层模块的需要确定下一层子模块的形状和引脚位置。模块的摆放非常重要,它将在很大程度上影响后续工作。
在布电源线之前,应该先简单估算一下芯片的功耗,根据功耗可以计算出芯片的最大工作电流,有了最大工作电流,还需要知道单位宽度的金属层允许流过的最大电流是多少(这个值由生产厂家提供),然后用最大工作电流除以单位宽度的金属层允许流过的最大电流,再留一些余量就得到需要布的电源线的宽度。
4)布局。在上述步骤完成之后就可以进行自动布局了,自动布局是指根据电路的功能、性能及几何要求等约束条件将各单元放在芯片适当的位置上。自动布局由EDA工具自动完成,在布局的过程中需要加入时钟树。建立时钟树系统是自动布局布线流程中非常重要的一个环节,它是为了解决时钟信号的需要,尽可能同时到达它所连接的每一个寄存器的端口,也就是要求从时钟信号的起点到每一个寄存器端口的路径延时之间的差异必须在规定的时间范围之内。如果时钟信号不能同时到达它所控制的每一个寄存器,就可能会影响到整个电路的正常工作。
在布局完成之后还要对布局的结果进行优化。
5)布线。自动布局完成之后开始进行时钟树的布线和其他信号线的布线。布线是指在满足工艺规则和布线层数限制等约束的条件下,根据电路的逻辑关系,将各个单元之间以及各单元和输入/输出单元之间用金属互连线连接起来,并在保证布线100%布通的情况下使芯片的面积尽量小。
布线中的关键问题是布通率。布线布通是指在保证所有信号线连接的情况下,金属线之间没有短路或违反设计规则的情况出现。布通率表征了布线成功的可能性。
6)时序分析及布线后优化。对布线后的结果需要做时序分析,只有分析结果正确,才能说明布线后结果符合设计要求。时序分析所依据的条件就是前面提到的时序约束文件。如果对布线结果做时序分析,而结果不能满足要求的时候,需要对布线结果做进一步优化,叫做布线后优化。
7)版图验证。版图验证通常包括设计规则检查(Design Rule Checking,DRC)、电学规则检查(Electrical Rule Check,ERC)、电路图和版图一致性检查(Layout Versus Schematic,LVS)。
8)数据输出。在版图设计完成之后需要输出GDSII文件交付给生产厂家进行掩模版的生产。
(2)半自动设计 版图的半自动设计是指通过在计算机上利用符号进行版图输入,符号代表不同层版的版图信息,要通过自动转换程序将符号转换成版图。
(3)人工设计 版图的人工设计主要应用在模拟集成电路的版图设计、版图的单元库文件的建立上和全定制数字集成电路设计中。模拟集成电路因其复杂而无规则的电路形式(相对于数字电路而言),在技术上只适宜于采用全定制的人工设计方法;版图的基本单元因其性能和面积的要求,需要采用全定制设计的人工设计方法;全定制数字集成电路的版图从成本与性能考虑而采用全定制设计方法。
用人工设计版图是指利用版图设计工具,通过编辑基本图形(如连线、矩形和多边形等)得到晶体管和其他基本元器件的版图,通过将这些基本元器件互连生成小规模的单元,通过逐层绘图的方式形成最后的整个集成电路的版图。在这种设计方法下,计算机只是作为绘图与规则验证的工具而起辅助作用,对所设计的版图的每一部分,设计者都要进行反复的比较、权衡、调整和修改,要求得到最佳尺寸的元器件、最合理的版图布局和路径最短的互连线等。不断完善设计,以期把每个元器件和内连接都安排得最紧凑、最适当。在获得最佳芯片性能的同时,也因为芯片面积最小而大大降低每个芯片的生产成本,以低价位而占领市场,但其设计周期要比全自动和半自动设计方法都要长。
2.版图设计的基本图层和图形
根据设计的版图可以制造出相应的掩膜版,但版图和实际的工艺之间又是如何连接的?
分析大多数的CMOS工艺,可以发现都有四种基本的分层类型:①导体,这些层是导电层,能够传送信号电压,如扩散区、金属层和多晶硅层等。②隔离层,这些层是用于隔离的层,它在垂直方向和水平方向上将各个导电层互相隔离开来。③接触孔层,这些层用于确定绝缘层上的切口(Cut),绝缘层用于分隔导电层,并且允许上下层通过接触孔(切口)进行连接。④注入层,这些层并不明确地规定一个新的分层或接触,而是去定制或改变已经存在的导体层的性质。将这四种类型的层结合起来使用就可以创建MOS晶体管器件、电阻和互连等。
在几乎所有的情况下,版图设计师所需绘制的分层数目已经减小到制版工艺所要求的最小数目,这种最小数目的图层称为绘图层。绘图层数目的最小化降低了EDA软件的计算需求,减少了人为错误并简化了分层管理。以N阱CMOS工艺为例,通常情况下所需的绘图层主要有:N阱层、有源区层、多晶硅层、P型选择层、N型选择层、多晶硅接触孔层、有源区接触孔层、通孔层、金属1层和金属2层。
生成光学掩膜的掩膜层或者分层的形状有时会和绘图层不同。首先,这些掩膜层的层数可能比绘图层多很多,在这种情况下,附加的掩膜层是从绘图层中自动生成的;其次,为了适应制造工艺的变化,掩膜层的尺寸可能会根据绘图层做一定的调整,这个调整由制版工艺自动完成。
绘制的每个图形不是以“多边形”(Polygon)的方式输入,就是以“线形”(Path)的方式输入。这两种方式之间有细微的差别,这种差别在一定程度上与计算机处理和加工版图数据的方式有关。多边形是具有N个边的形状,这个形状在几何上具有N(或N+1)个顶点,计算机认定N+1个顶点是因为有一个顶点被重复计数了。多边形主要用于覆盖那些无法用简单矩形覆盖的区域,如单元边界、接触孔、扩散区和晶体管栅极等,多边形用于定义区域的方式非常灵活,可以定义45°角的形状。线形是由起点、终点和中间顶点及宽度值来确定的一种形状,由于线形具有固定一致的宽度,因此它主要用于连接器件,以及点对点的信号传送。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。