第09章3 DRC - LVS - Dracula 联系客服

发布时间 : 星期五 文章第09章3 DRC - LVS - Dracula更新完毕开始阅读

第八章 DRC and LVS

在前面的章节中已经学习了如何从网表(netlist)文件产生版图(layout),以及时序分析等等,在正式流片之前我们还必须作一些其他的工作,例如Design Rule Checking(DRC) 和Logic Versus Schematic(LVS)。其中,DRC是验证设计的几何规则的,它保证版图符合流片厂家的要求,可以保证版图在工艺线上确实可以做出来。事实上,如果不作这一步验证的话, 就有可能发生线条在光刻过程中被刻断等情况,从而导致流片失败。而LVS是把得到的版图和电路原理图进行比较,看它们在是否一致。

能做以上验证的EDA软件主要有mentor的calibre、Cadence的diva和dracula。这里只介绍dracula的使用方法。

DRC

DRC要验证的对象是版图,我们的版图一般是通过两种方法得到的。一种是用virtuoso等版图编辑工具手工绘制。这在模拟设计中较为普遍。另一种是用Cadence的SE等自动布局布线工具(APR)由网表文件自动产生。数字设计中由于电路规模较大且较容易实现计算机辅助设计,所以,版图多为APR产生。 版图文件是可以直接交给半导体加工工厂生产的。但是,在交付厂商之前必须做DRC 验证。因为,为了保证版图能正确制出,流片厂家会根据工艺定义很多的设计规则,只有版图满足厂家的所有的设计规则,才可能被正确的制出。一般说来,设计规则有很多,例如 最小间距、最小孔径等。不符合厂家提出的设计规则要求的版图在工艺线上是不可能被正确生产出来的。

以非门为例,我们制定了以下的规则: n阱(nwell):

n阱的最小宽度 4.8u 阱与阱之间的最小间距 1.8u ndiff 到nwell的最小间距 0.6u pdiff 到nwell的最小间距 1.8u pmos器件必须在nwell内

有源区 (active)

有源区的最小宽度 1.2u 有源区之间的最小间距 1.2u

多晶硅 (poly)

多晶硅的最小宽度 多晶硅之间的最小宽度 多晶硅与有源区的最小间距 多晶硅栅在场区上的最小露头

0.6u 0.6u 0.6u 0.6u

源、漏与栅的最小间距 0.6u

引线孔(contact)

引线孔的最小宽度 0.6u 引线孔之间的最小间距 0.9u

多晶硅覆盖引线孔的最小间距 0.3u metal1覆盖引线孔的最小间距 0.3u

金属1 (metal1)

metal1的最小宽度 1.2u metal1之间的最小间距 0.9u

金属2(metal2)

metal2的最小宽度 1.2u metal2之间的最小间距 1.2u metal2的最小凹槽深度 1.2u

通孔(via)

via的最小宽度 0.6u via之间的最小间距 0.9u via与contact 之间的最小间距 0.6u metal1 overlap(覆盖) via 的最小间距 0.3u metal2 overlap via 的最小间距 0.3u via 与 poly的最小间距 0.3u

先看一下Dracula的工作流程图。

用dracula做DRC,它的输入有两个,一个是版图文件,为GDSII或其他格式,另一个是规则文件(Rule File),Rule File告诉DRC工具怎样做DRC,这个文件十分重要,一般,由流片厂家提供,或者由designer根据流片厂家提供的版图几何规范自己写。

要做版图验证,必须要对各个工艺规则有一定了解。即便不是自己写规则文件,这也是必须的。因为验证结果报错以后,不了解工艺规则就会不知道该怎么去改版图。而如果自己写规

则文件,就对工艺规则的掌握有更高要求了。

对一个dracula DRC的使用者来说,主要有以下几个部分的知识要掌握。第一,工艺规则。要求对芯片在半导体加工工厂里的制造工艺流程有一定程度的了解。第二,rule文件的编写和编辑。第三,dracula输出的DRC信息的使用。其中,第一部分的知识有专门课程讲解,这里将不再详细叙述。以后的部分将主要着重讲解后面两点。

关于rule文件的编写

首先讲述一下rule文件在dracula使用中的作用。Rule文件是一个用unix下的文本编辑工具,例如vi,text editor,ed,emacs等等编写的一个文本文件。它的作用是描述让dracula作什么,例如,读入哪些层,对这些层之间作哪些逻辑运算产生逻辑层,以及在什么样的情况下给出错误提示。可见,rule文件是非常重要的,但是又是非常难写的,因为里面牵涉到很多具体而细致的设计规则,很难写得非常全面。而且,里面的很多参数是工艺相关的。也就是说,不同的半导体加工工厂,要求的设计规则是不同的。所以,很多情况下,规则文件是由半导体加工工厂提供的。规则文件的内容将在后面内容详细介绍。写好规则文件以后还要对它进行处理。有个叫做PDRACULA的工具就是对规则文件进行处理的。它首先检查rule文件有没有语法错误,因为dracula 的rule文件有固定的语法格式。如果没有语法错误的话,PDRACULA就会把rule文件处理成一个脚本文件,这个脚本文件是可执行的。默认的文件名是jxrun.com。再执行这个脚本文件,就可以完成dracla的DRC验证工作。 先看一下rule文件的语法规则。

因为rule文件本身的作用比较单一,所以,语法也比较简单。 编写rule文件的难点不在于语法,而在于非常繁复的规则。由于半导体加工是一个非常

精密复杂的工作,所以与之相关的设计规则也就非常繁多细致。而且由于实际流片一次的费用非常昂贵,所以尽量要求一次流片成功。对后验证的要求也就非常严格。下面介绍一下rule文件的内部结构,并对各模块常用语句做解释。

规则文件通常包括如下几个部分:描述模块(Description Block)、输入层模块(Inputlayer

Block)、操作模块(Operation Block)。每一个模块都有一个标志模块开始的标志和一个用来标志模块结尾的标志(*END)。*END标志通常出现在该模块的最后一行。模块开始标志也由一个*引导,出现在模块的第一行。 描述模块定义了dracula运行的系统环境。它还定义了要被验证的电路。主要包括以下内容:运行模式、基本单元名、输入/输出设备、文件名、格式、图形比例元素、网格大小、输出记录文件、警告消息显示。

输入层模块把布局图的层名或层编号和Dracula的层名对应起来,并提供Dracula进行验证所需的其他关于层的信息。主要是:要输出的层、层名、掩膜顺序、要输出的层、文本层。

操作层定义要进行的操作和应用程序并且标出错误。它定义的操作类型有:逻辑、电气节点、缩放、参数、空间、ERC、DRC、LVS、LPE和PRE。 描述模块(DESCRIPTION BLOCK)常用的语句有: 【语句1】CNAMES-CSEN=YES/NO

这个语句定义了在所有包含层名和文本名的语句中,层名和文本名是否是大小写敏感的。如果仅仅要求定义文本的大小写敏感性,而不包括层名的大小写敏感性,就必须使用另一个语句:TNAMES-CSEN=YES/NO。如果定义CNAMES-CSEN=YES 那么就会把确切的名字和大小写发送到jxrun.com文件中,如果你定义SYSYTEM为CADENCE、CIF、EDGE或者EDIF,那么这将是默认的选择。如果定义CNAMES-CSEN=NO,那么所有的层名和文本都被转换为大写字母。对于定义SYSTEM为APPLE或GDSII,那么这将是默认的。 【语句2】CONVERT-DATABASE=YES/NO 这个语句用于把数据库由一种格式转换到另一种格式。当SYSTEM和SYSOUT语句的格式不一样的时候,就要用这个语句加以转化。这个语句仅仅改变格式,并不改变数据库里的单元的内容。当你使用这个语句的时候,规则文件可以不具备操作模块。另外要提到对不同格式的文件进行比较时,两者的输入文件的SCALE和RESOLUTION参数必须相同。

下面举个例子说明如何把Applicon格式的文件转化为GDSII格式。 *DESCRIPTION

SYSTEM=apple ;输入图形格式 SYSOUT=gds2 ;输出图形格式 OUTDISK=gds2out ;图形输出磁盘文件 PRIMARY=composite ;顶层单元名

INDISK=comp.apl ;图形输入磁盘文件 PRINTFILE=gdsprt ;显示文件名

SCALEIN=0.0000125 mic ;输入图形数据库比例 RESOLUTION=0.5 mic ;输入图形数据库数字单元 SCALEOUT=0.001 mic ;输出图形数据库数字单元 MODE =exec now ;执行模式 CONVERT=yes *INPUT-LAYER layer1=1 text =60 layer2=2 layer3=3 layer4=4 *END