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

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

【语句4】 OR layer-a layer-b trapfile {OUTPUT c-name l-num {d-num}}

从两个其他的层创建一个新层。由此产生的四边形文件包括这两个层的所有部分。它的各个参数的定义与AND语句完全类似。举个例子:

以上所讲的都是对层进行逻辑操作的语句。下面再举几个关于违反设计规则的错误的定义的语句。

【语句1】AREA layer –a {RANGE/NE/EQ} n1 n2 {trapfile} [OUTPUT c –name l –num {d –num}]

进行最小面积验证。这个语句检查多边形以确定他们的面积是否在一个范围之内。它还

创建若干个在确定的界限内的层。 lyer –a 输入层的名字

RANGE n1 n2 n1

NE 如果指定层的任何一个参数同你指定的值不等,就报错。 EQ 如果指定层的任何一个参数同你指定的值相等,就报错。 tapfile 梯形文件的名字

OUTPUT 把操作的结果送到输出单元中

c-name l-num c-name 是输出单元的名字,可以包含六个或六个以下的字符,且不能包含特殊字符。L-num是由你的CAD系统决定的层号。比如c-name是rule03而l-num 是5,输出的单元名就是rule0305。下面是一个例子:

【语句

LT/LE/EQ/RANGE/SELLT/SELLE/SELGT/SELEQ/SELNE/SELRA n1 {n2}

2】ENC {[]} layer –a {&layer –a}[] layer –b {&layer –b}

{CORNER-CORNER n2 }{CORNER –EDGE n3} {trapfile}{OUTPUT c-name l-num {d-num}}{&}

确定layer-b的多边形局部或全部地包围yer –a 的程度。这个命令通过测量被包围的多边形的外部边界和包围的多边形的内部边界来定值。lyer-a 是包含那个被包围的多边形的层的名字。lyer-b是包含那个包围别的多边形的多边形的层的名字。&layer –al给包含错误标志的层重新命名。原来的层的名字就被恢复到原来的层去。在layer-a和&layer-al中间不要加空格。例如poly&rpoly。&layer-bl和&layer al一样,只不过它指的是layer-b。要完成的是对被包围的多边形的外部边界和包围的多边形的内部边界的测量。然后把测量结果和你定义的范围加以比较并且标出不一致的地方。必须提供下列之一的测量:LT/LE n1 如果选项为LT,则当这两个部分的空间比n1小时,或者如果选项为LE,当这两个部分的空间等于n1时,就报错。假如这两个部分接触或者交叠则不报错。EQ n1 假如这两个部分的空间等于n1时就报错。RANGE n1 n2 假如这两个部分的空间比n2小或者比n1大的时候就报错。如果你不希望锐角被标志出来,就使用范围测量。SELGT/SELGE n1 SELGT 以多边形格式输出当你使用带同样选项的LE测量时没有标出的layer-a上的多边形。使用这个选项的时候就不要使用OUTPUT命令。可以指定一个trapfile名作为代替。SELLT/SELLE n1 SELLT和SELLE以多边形格式输出与你使用相同选项时的LT n1 或者LE n1命令时相同的与错误相关的layer –a上的多边形。指定一个trapfile的名字而不要使用OUTPUT命令。

SELEQ/SELNE n1 SELEQ和SELNE以多边形格式输出与当你使用带相同选项的EQ n1和NE n1命令时相同的与错误相关的layer-a上的多边形。SELRA n1 n2命令输出与使用带相同选项的RANGE n1 n2命令时相同的与错误相关的layer-a的多边形。Trapfile 定义多边形文件的名字。只有在使用R或者R’选项的时候或者使用SELLT、SELLE、SELGT、SELGE或者SELRA操作时才使用。OUTPUT 把结果输出到一个输出单元中。C-name是输出单元的名字,可以有六个或六个以下的字母组成。L-num是由你的CAD图形系统决定的单元层号。例如你的c-name是rule03而l-num 是5,输出的层的名字就是rule0305。D-num是与层号(l-num)相关的输出单元的数据类型号。这个参数仅当输入数据类型为GDSII时被使用。数值可以从0到63。&是联合规则的标志。要注意的是,输出的单元使用多边形格式包含了好的多边形,产生的是简化了的四边形结构行和更加紧凑的单元。trapfile选项和OUTPUT命令是互斥的。

【语句3】LENGTH layer-a {&layer-al} GT/GE/ LT/LE/RANGE n1 {n2} {OUTPUT c-name l-num{d-num}}{&}

这个命令验证长度,并且仅仅用于联合规则。当前一次的尺寸检查失败了,这个命令就检查失败了的那个尺寸。只有当两次验证都出错它才报错。下面介绍一下各个参数的意义:layer-a输入层的名字,&layer-al是给包含错误标志的层重新命名。原来的层的名字被恢复到原来的层。layer-a和&layer-al之间不要加空格。测量选项有如下几个:GT/GE/ GT意味着错误部分的长度比n1要大,由此引发错误。GE表示长度比n1大或者等于n1,并由此产生一个错误。LT/LE/ LT表示长度比n1小,由此引发错误。LE表示长度比n1小或者等于n1时引发错误。RANGE n1 n2 RANGE 表示长度大于n1或者小于n2时引发错误。OUTPUT 是把结果输出到一个输出单元中 c-name是输出单元的名字,可以由六个或者六个以下的字母组成并且不能有特殊字符。L-name是由你的CAD图形系统决定的单元层的序号。例如c-name是rule03而l-num是5,输出层的名字就是rule0305。输出的格式和原来数据库的格式是一样的。D-num 与输出单元的层号相关的数据类型的序号。仅对GDSII格式使用这个选项,值可以从0到63。&是联合规则的标志。下面举一个例子:

注意,用黑线加粗的部分说明此处将给出一个错误标志。 有了上面对于rule文件的语句的基本了解,我们就可以来看一个完整的rule文件了。 *DESCRIPTION

SYSTEM = gds2

INDISK = /export/home/student/wangc/virtuoso_study/amp.gds2 PRIMARY = amp1

OUTDISK = error.gds2 SCALE = .001 MICRON MODE = EXEC NOW

RESOLUTION = .001 MICRON CNAMES-CSEN = NO *END

*INPUT-LAYER poly1 =35 pdiff =2 metal1 =45 nwell=12 ndiff=1 metal2=50 via2=0 cont=55

*END

*OPERATION

AREA poly1 RANGE 0 1000 OUTPUT area 30 *END

下面,对这个文件的语句做一些说明。

这个文件是为了对一个运算放大器电路进行DRC验证而写的。这个放大器有两层金属布线。System语句定义输入版图格式,因为dracula支持的文件格式不止GDS2一种,还有CADENCE、CIF、EDGE、EDIF、APPLE等,所以必须指定输入文件的格式。OUTDISK指定了输出文件名,它也是GDS2格式的。比较容易出问题的是输入层模块,这个模块主要作用是把GDS2文件中的层读进来。在GDS2格式的文件中,层是用数字来标记的,给每个层分配一个整数作为标记。而在dracula的rule文件中,必须给每个层都命名,一般由字母组成,原则上是随便取的,但一般是有一定对应意义的,以方便使用。这就产生了一个问题,那就是,首先,跟在等号右边的数字不是随便取的,它必须是在产生GDS2文件的时候就被定义了的,其次,你必须清楚的知道这个数字对应的是版图中的那个层,不然就没办法写rule文件。事实上,这些层的编号是没有特定要求的,但是在同一个工作组里面,或者说是版图的提供方和使用方之间必须达成一致。要确保双方都清楚版图里的哪些层都分配了哪些编号。一般来说,对于使用DRACULA做验证的人来说,这个层号是由产生版图的人来提供的。而对于自己做版图,同时自己也做验证的人来说,在把其他格式的文件转化为GDS2版图的时候必定是要设定好层的编号的。例如,用virtuoso来画版图,就会有一个编辑层信息的菜单,在那里面可以定义层的编号。或者从icfb中dump出画版图时使用的库的technology file文件,产生一个ASCII的文件,用文本编辑器打开就可以看到对应的层的编号信息。 学习了怎样编写rule文件以后,我们来看看如何把文本文件转化成可执行的脚本文件。这里要用到一个软件工具:PDRACULA。我们首先要找到这个工具安装在什么地方,然后