-
在
LVS
command
< br>file
有错误或者需要自行构造一个器件时,我们要对它做适当的修改和
添加。本文档首先会以一个例子来说明
LVS command fi
le
的结构,然后再举一个构造器件的
例子。
< br>
一、
LVS command
file
的结构
我们以“
st3400
”工艺的
LVS command
file
为例(红色为
command file
执行语句,
语句总体上由上至下的循序进行说明,
说
明文字为黑色字体,
有些部分只作节选,
为说
< br>明问题某些部分并不完全按语句上下循序,而是为了直观,拿到了一起)
#DEFINE metal2_process
//#DEFINE metal3_process
// CSMC 0.50um BCD ST3400
//
CALIBRE(r) version 2006.4 LVS file
//
;#################################################
###################
// ; (@) CSMC
CALIBRE LVS COMMAND FILE
// 0.5um 5V
VGS / 25V VDS DPTM BCDMOS Process Design
Rule(version #9E10)
// ; (@)# METAL
LAYER PROCESS: THICK TOP METAL( DPDM )
// ;
NON-THICK TOP METAL( DPSM/DPDM/DPTM )
// ; (@)# DATE: 2010/01/21 wul
// ;##################################
##################################
首先,如
上边红色语句中“
//
”为注释符,意味着在它之后的语句将不
被执行。
最开头的“
#DEFINE
metal2_process
”
、<
/p>
“
#DEFINE
metal3_pr
ocess
”表示定义了
“
metal
2_process
”
和
“
metal3_process
”
两
个
名
词
。
< br>如
果
配
合
后
边
会
出
现
的
“
#IFDEF----#ENDI
F
”语句则构成了一个
option
,
即通过“注释”和“非注释”可以选择
开启后边的“
#IFDE
F----#ENDIF
”语句。很显然我们现在开启的的是“
metal2_process
”
。
对
于“
#IFDEF----#ENDIF
”语句我们在后边会讲
到。
在接下来一大段的被注释掉语句中,我们可以看到上华特
意将这一
command
file
所
适用工艺、版本号等信息列了出来。
//Name
Description
Device Layer
Operation
//
// --------
---------------------------------
--------------------------
---- -- //
//
//
//
MOS Type:
//
//
//
//
M(MN)
5v
normal NMOS
SN*TO*PC
//
// M(MP)
5v normal PMOS
SP*TO*PC*TB
//
// M(BN)
5v
isolation NMOS
SN*TO*PC*BN
//
// LDD(HA)
40v/5v
LDNMOSFET
TO*GT*NM*NG*DP*PB
//
//
RESISTOR Type
//
//
//
// R(RW)
Nwell Resistor
TB*RES_NW_mark
//
// R(RN)
N+
Resistor
SN*TO*RES_mark
//
以上,上华将本
command file
中出现的器件罗列了出来(此处只节选了部分)
,同
样这些
都被注释掉了,只是作为备注信息。
LAYOUT PATH
LAYOUT PRIMARY
LAYOUT SYSTEM
GDS2
DRC RESULTS DATABASE
SOURCE PATH
SOURCE PRIMARY
SOURCE SYSTEM SPICE
EXCLUDE
CELL fuse_m2 INTVCC_DMY OSC_DMY ea_DMY
PRECISION 1000
RESOLUTION 5
UNIT CAPACITANCE FF
UNIT
LENGTH M
TEXT DEPTH PRIMARY
以上定义了版图和电路提取后的路径及文件类型,
同时定义了版图中绘制精度、
最
小格点及单位。
LVS FILTER UNUSED OPTION YC RE RG AB RC
PORT LAYER TEXT 1001 1006 1011 1050
1053 1056
LVS CHECK PORT NAMES YES
LAYER empty 999
LAYER A1 1000
LAYER MAP 7
DATATYPE 0 1000
LAYER A1SLOT_slot 1002
LAYER
MAP 136 DATATYPE 3 1002
LAYER A1_net 1003
LAYER MAP
7 DATATYPE 253 1003
LAYER
A1_pin 1004
LAYER MAP 7 DATATYPE 251
1004
LAYER A2 1005
LAYER MAP 9 DATATYPE 0 1005
LAYER A2SLOT_slot 1007
LAYER MAP 137 DATATYPE 3 1007
LAYER A2_net 1008
LAYER MAP 9 DATATYPE 253 1008
LAYER A2_pin 1009
LAYER MAP 9 DATATYPE 251 1009
以上将绘制版图用到的所有
mask
层次、辅助层次及它们
的数据类型、代号都罗列
出来(此处节选)
。这是最基本的版图
层次信息,我们将以它们为基础,一步步构建出
一个个器件。
// A1SLOT_slot_drc=A1SLOT_slot andnot
DCTY_mark
A1SLOT_slot_drc=NOT
A1SLOT_slot DCTY_mark
//
A2SLOT_slot_drc=A2SLOT_slot andnot DCTY_mark
A2SLOT_slot_drc=NOT A2SLOT_slot
DCTY_mark
//
A3SLOT_slot_drc=A3SLOT_slot andnot DCTY_mark
A3SLOT_slot_drc=NOT A3SLOT_slot
DCTY_mark
// BA_drc=BA
andnot DCTY_mark
BA_drc=NOT BA
DCTY_mark
// BN_drc=BN
andnot DCTY_mark
BN_drc=NOT BN
DCTY_mark
// DP_drc=DP
andnot DCTY_mark
DP_drc=NOT DP
DCTY_mark
// GT_drc=GT
andnot DCTY_mark
GT_drc=NOT GT
DCTY_mark
以上的“
DCTY_mark
”表示不检查
LVS
的
m
ark
层,
“
NOT A B
”的逻辑为“
A
与上
B
的非”
,所以“
*_drc
”表示“
*
”与上“
DC
TY_mark
”的非。
//
bn_innerHole=innerHoles BN_drc
bn_innerHole=HOLES BN_drc INNER
// nw_innerHole=innerHoles
TB_drc
nw_innerHole=HOLES TB_drc INNER
// this rule checks the
completness of BN for full isolation
//
wrong_bn=(BN_drc
enclose
DP_drc)
enclose
(bn_innerHole
notInteract
nw_innerHole)
L38129=ENCLOSE
BN_drc DP_drc
L12582=NOT INTERACT
bn_innerHole nw_innerHole
wrong_bn=ENCLOSE L38129 L12582
// mnbn_rec=(pcngate andnot
mn_rec) andnot wrong_bn
L29776=NOT
pcngate mn_rec
mnbn_rec=NOT L29776
wrong_bn
以上语句是为了形成完全隔离,而要求埋层中间不能出现空洞,即将
isub
与
psub
< br>隔离开。
“
mnbn_rec
”
为
mnbn
管的识别层,
加上适当的尺寸命令就可以定义器件的
L
、
W
(后边会介绍)
。
“
HOLES A INNER
”
的逻辑
为
“中间有空洞的
A
层次”
;
“
ENCLOSE A B
”
的逻辑为“将
B
围起来的
A
层次”
;
“
NOT INTERACT A B
”的逻辑为“不与
B
相关联的
A
层次”
,相关联的意思是相交或
space=0
。
p>
因此,
“
wrong_bn
”意为“中间有空洞,而让
DP
与
psub
相通的
BN
层,且
BN
层不与中间有空洞的
TB
相联系”
。
//
nw_hole=holes TB_drc
L68433=HOLES
TB_drc
nw_hole=NOT L68433 TB_drc
// rec layer for dnwpwbn
// dnwpwbn=(pdiff and DIODE_mark) and
nw_hole and BN_drc
L61121=AND
DIODE_mark pdiff
L81992=AND L61121
nw_hole
dnwpwbn=AND BN_drc L81992
以上语句中,
“
dnwpwbn
< br>”为
dnwpwbn
管的识别层,加上适当的周长、面积
命令
就可以定义器件的周长、面积(后边会介绍)
。
“
HOLES A
”的逻辑为“
< br>A
层次里的空洞”
(注意与
HO
LES A INNER
的区别)
;
“
INSIDE A B
”的逻辑为“包含在
B
内部的
A
层次”
。
// dzpnw=((ZP_drc and
DIODE_mark) inside TB_drc) interact TO_drc
L99810=AND DIODE_mark ZP_drc
L82411=INSIDE L99810 TB_drc
dzpnw=INTERACT L82411 TO_drc
// pdifcon=pdiff andnot
GT_drc andnot PC_drc andnot allRes
L95826=NOT pdiff GT_drc
L91409=NOT L95826 PC_drc
pdifcon=NOT L91409 allRes
// pdiff_dzpnw=pdifcon and ZP_drc
pdiff_dzpnw=AND ZP_drc pdifcon
// anode_dzpnw=pdiff_dzpnw
notInteract RES_mark size 0.8
L5206=NOT
INTERACT pdiff_dzpnw RES_mark
anode_dzpnw=SIZE L5206 BY 0.8
// anode_dzpnw_con=pdifcon
and anode_dzpnw
anode_dzpnw_con=AND
anode_dzpnw pdifcon
以上语句中,
“<
/p>
dzpnw
”为
dzpnw
管的识别层,加上适当的周长、面积命令就可以
定义器件的周长、面积(后边
会介绍)
。
“
INTERACT A
B
”的逻辑为“与
B
相联系的
A
层
次”
,相关联的意
思是相交或
space=0
。
(在
p>
dzpnw
实际版图中
TB>ZP>TO>
DIODE
,因此
dzpnw
的大小为
DIODE
所定义。
)
“
SIZE A 0.8
”的逻辑为“将
A
的尺寸在
X
、
Y
轴方向增
大
0.8
p>
”
,同理可得:
“
SIZE A -0.5
”的逻辑为“将
A
的尺寸在
X
、
Y
< br>轴方向缩小
0.5
”
。
// pcngate=PC_drc and ndiff
pcngate=AND PC_drc ndiff
// mn_rec=pcngate andnot BN_drc
mn_rec=NOT pcngate BN_drc
// pdiff=TO_drc and SP_drc
pdiff=AND SP_drc TO_drc
// pcpgate=PC_drc and pdiff
pcpgate=AND PC_drc pdiff
// mp_rec=pcpgate overlap BN_drc
mp_rec=NOT OUTSIDE pcpgate BN_drc
以上语句中,
“
mn_rec
”
、
“
mp_rec
”分别为
mn
、
mp
的识别层,加上适当的尺寸命
令就可以定义器件的
L
、
W
(后边会介绍)
。
“
AND A B
”<
/p>
的逻辑为
“
A
与
B
”
;
“
p>
NOT OUTSIDE
A B
”的逻辑
为“不在
B
外边的
A
< br>层次,即
B overlap
A
”
。
//
HeRec=((( GT_drc
and
BN_drc
)
interact
((SIZE GT_drc
by 0.5)overlap
==1
PB_drc))
and
TO_drc overlap==1 SP_drc ) notInteract DP_drc
L8776=AND BN_drc GT_drc
L3487=SIZE GT_drc BY 0.5
L34866=INTERACT L3487 PB_drc ==1
L09245=INTERACT L8776 L34866
L32360=AND L09245 TO_drc
L75166=SIZE SP_drc BY -0.002
L75767=INTERACT L32360 L75166 ==1
HeRec=NOT INTERACT L75767 DP_drc
L34676=NOT TO_drc GT_drc
L31160=INTERACT L34676 PB_drc ==1
// HeD=(L31160 interact HeRec ) andnot
GT_drc not overlap ndiff
L3768=INTERACT
L31160 HeRec
L1580=NOT L3768 GT_drc
L26711=INTERACT L1580 ndiff
HeD= NOT L1580 L26711
// mp20vt_Dcon=pdifcon and HeD
mp20vt_Dcon=AND HeD pdifcon
// HeS=( pdifcon notInteract PB_drc)
buttOnly HeRec
L3022=NOT INTERACT
pdifcon PB_drc
HeS=TOUCH L3022 HeRec
// mp20vt_Scon=pdifcon and
HeS
mp20vt_Scon=AND HeS pdifcon
以上语句中“
HeRec
”为“
mp20vt
”管子的识别层。
“
A
=SIZE B 0.5
”
&
“
INTERACT C
A ==1
”的逻辑
为“
B
在
X
、
Y
轴方向增大
0.5
< br>后的层次为
A
”
&
“如果
C
层次与
A
层次相
关联为真,则返回
C
”
。
(此处的“
INTERACT
C A ==1
”的逻辑跟“
INTERACT C A
p>
”一样,
只是前者的
C
或
A
事先经过
“
< br>SIZE
”
命令增大或缩小,
所
以要采用
“
INTERACT C A ==1
”
)
。
“
TOUCH A B
”的逻辑为“与
B
紧挨的
A
部分,即
space=0
”
。
下图为“
mp20vt
”管。
// nw_bjt=TB_drc and BJT_mark
nw_bjt=AND BJT_mark TB_drc
// nwBjt_hole=holes nw_bjt
L96477=HOLES nw_bjt
nwBjt_hole=NOT L96477 nw_bjt
// nw_hole=holes TB_drc
L68433=HOLES TB_drc
nw_hole=NOT L68433 TB_drc
// nwHole_qlp=(nwBjt_hole enclose
pbBjt_hole) and BN_drc and NX_drc
L16040=ENCLOSE nwBjt_hole pbBjt_hole
L67856=AND BN_drc L16040
nwHole_qlp=AND L67856 NX_drc
// pb_qlp=pb_bjt and
nwHole_qlp
pb_qlp=AND nwHole_qlp pb_bjt
// qlp_e=(to_nx and pb_qlp)
vertex==4
L83841=AND pb_qlp to_nx
qlp_e=VERTEX L83841 ==4
// qlp1d2x1d2bd rec layer
//
laRec=qlp_e area ==1.44
laRec=AREA
qlp_e ==1.44
//
qlp1d2x2d2bd rec layer
// lbRec=qlp_e
area ==2.64
lbRec=AREA qlp_e ==2.64
// qlpE_con=pdiff_bjt and
qlp_e
qlpE_con=AND pdiff_bjt qlp_e
// qlp_c=(pb_bjt or
pbBjt_hole)
andnot qlp_e
L26589=OR pbBjt_hole pb_bjt
qlp_c=NOT L26589 qlp_e
// qlpC_con=qlp_c and pdiff_bjt
qlpC_con=AND pdiff_bjt qlp_c
// pb_con=(PB_drc
notInteract RES_mark) notInteract (BJT_mark or
SW_drc)
L7155=NOT INTERACT PB_drc
RES_mark
L78467=OR BJT_mark SW_drc
pb_con=NOT INTERACT L7155 L78467
以上语句中
“
laRec
”
、
“
lbRec
”
为
“
qlp1d2x1d2bd<
/p>
”
、
“
qlp1
d2x2d2bd
”
的识别层。
“
p>
VERTEX
A ==4
”的逻辑为“顶
角有
4
个的
A
层次”
;
“
AREA A
”的逻辑为“计算
A
层次的面积”
< br>。
//;; define connection
section
#IFDEF metal2_process
CONNECT a2_conn a1_conn BY
W2
CONNECT a1_conn ndifcon BY w1_and_nsd
CONNECT a1_conn pdifcon BY w1_and_psd
CONNECT a1_conn gt_con BY w1_gt_not_pc
CONNECT a1_conn pc_con BY w1_and_pc
CONNECT a1_conn pc_cap BY w1_and_pc
CONNECT a1_conn pbHole_dswhnw BY
pbHole_and_A1
SCONNECT
ndifcon nx_conn BY nx_ntap
LVS SOFTCHK
nx_conn CONTACT
SCONNECT ndifcon nwelcon BY tb_ntap
LVS SOFTCHK nwelcon CONTACT
SCONNECT ndifcon MaSD BY MaSDcon
LVS SOFTCHK MaSD CONTACT
SCONNECT ndifcon cathode_dbahnw BY
cathode_dbahnw_con
LVS SOFTCHK
cathode_dbahnw CONTACT
SCONNECT ndifcon JaD BY JaDcon
LVS SOFTCHK JaD CONTACT
SCONNECT ndifcon JbD BY JbDcon
LVS SOFTCHK JbD CONTACT
SCONNECT nx_conn bn_nx BY bn_nxtap
LVS SOFTCHK bn_nx CONTACT
SCONNECT nx_conn bn_nx_nw BY bnNxNw_tap
LVS SOFTCHK bn_nx_nw CONTACT
SCONNECT nwelcon bn_nw BY
bn_tbtap
LVS SOFTCHK bn_nw CONTACT
SCONNECT nwelcon
nwellRes_term BY nwResTerm_con
LVS
SOFTCHK nwellRes_term CONTACT
SCONNECT nwelcon HdSD BY HdSDcon
LVS SOFTCHK HdSD CONTACT
SCONNECT pdifcon qlp_c BY qlpC_con
LVS SOFTCHK qlp_c CONTACT
SCONNECT pdifcon qlp_e BY qlpE_con
LVS SOFTCHK qlp_e CONTACT
SCONNECT pdifcon qvn_b BY qvnB_con
LVS SOFTCHK qvn_b CONTACT
SCONNECT pdifcon qvnba_b BY qvnbaB_con
LVS SOFTCHK qvnba_b CONTACT
SCONNECT pdifcon qvp_e BY qvpE_con
LVS SOFTCHK qvp_e CONTACT
SCONNECT pdifcon DP_drc BY dp_ptap
LVS SOFTCHK DP_drc CONTACT
SCONNECT pdifcon pb_con BY psd_and_pb
LVS SOFTCHK pb_con CONTACT
SCONNECT pdifcon to_ovl_pb BY
psd_and_pb
LVS SOFTCHK to_ovl_pb
CONTACT
SCONNECT
pdifcon psub BY ptap
LVS SOFTCHK
psub CONTACT
SCONNECT
pdifcon anode_dzpnw BY anode_dzpnw_con
LVS
SOFTCHK anode_dzpnw CONTACT
SCONNECT pdifcon resPbase_term BY
resPbaseTerm_con
LVS SOFTCHK
resPbase_term CONTACT
SCONNECT pdifcon resPbody_term BY
resPbodyTerm_con
LVS SOFTCHK
resPbody_term CONTACT
LAYER
A2_text 1006
LAYER MAP 122 TEXTTYPE 0
1006
TEXT LAYER A2_text
LAYER A1_text 1001
LAYER MAP 121 TEXTTYPE 0 1001
TEXT LAYER A1_text
ATTACH A2_text a2_conn
ATTACH A1_text a1_conn
#ENDIF
以上语句(节选)
“
#IFDEF <
/p>
metal2_process----#ENDIF
”定义了层
次间的连接关系,
与前边提到的
“
#D
EFINE metal2_process
”
构成一个
option
,
即当
“
#DEFINE metal2_process
”
为非注释时,后边的“
#IFDEF metal2_process-
---#ENDIF
”被开启;反之,则不会开启。
DEV M(MN) mn_rec pc_con(G) ndifcon(S)
ndifcon(D) psub(B) (S D)
NETLIST MODEL
[PROPERTY w,fw,simW,l,m
width=PERIMETER_COINCIDE(mn_rec,
ndifcon)/2
length=PERIMETER_OUTSIDE(mn_rec,
ndifcon)/2
w=width*1e-6
fw=width*1e-6
simW=width*1e-6
l=length*1e-6
m=length-
length+1
]
DEV
M(BN) mnbn_rec pc_con(G) ndifcon(S) ndifcon(D)
psub(B) (S D)
NETLIST MODEL
[PROPERTY w,fw,simW,l,m
width=PERIMETER_COINCIDE(mnbn_rec,
ndifcon)/2
length=PERIMETER_OUTSIDE(mnbn_rec,
ndifcon)/2
w=width*1e-6
-
-
-
-
-
-
-
-
-
上一篇:A Mysterious Visit
下一篇:原始的PE制作工具大致有三种