LVS_command_file介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在LVS command file有错误或者需要自行构造一个器件时,我们要对它做适当的修改和添加。

本文档首先会以一个例子来说明LVS command file的结构,然后再举一个构造器件的例子。

一、LVS command file的结构
我们以“st3400”工艺的LVS command file为例(红色为command file执行语句,语句总体上由上至下的循序进行说明,说明文字为黑色字体,有些部分只作节选,为说明问题某些部分并不完全按语句上下循序,而是为了直观,拿到了一起)
#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”、“#DEFINE metal3_process”表示定义了“metal2_process”和“metal3_process”两个名词。

如果配合后边会出现的“#IFDEF----#ENDIF”语句则构成了一个option,即通过“注释”和“非注释”可以选择开启后边的“#IFDEF----#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 "CELLNAME.gds"
LAYOUT PRIMARY "CELLNAME"
LAYOUT SYSTEM GDS2
DRC RESULTS DATABASE "CELLNAME.db" ASCII
SOURCE PATH "CELLNAME.spice"
SOURCE PRIMARY "CELLNAME"
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的mark层,“NOT A B”的逻辑为“A与上B 的非”,所以“*_drc”表示“*”与上“DCTY_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 隔离开。

“mnbn_rec”为mnbn管的识别层,加上适当的尺寸命令就可以定义器件的L、
W(后边会介绍)。

“HOLES A INNER”的逻辑为“中间有空洞的A层次”;“ENCLOSE A B”的逻辑为“将B围起来的A层次”;“NOT INTERACT A B”的逻辑为“不与B相关联的A 层次”,相关联的意思是相交或space=0。

因此,“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”为dnwpwbn管的识别层,加上适当的周长、面积命令就可以定义器件的周长、面积(后边会介绍)。

“HOLES A”的逻辑为“A层次里的空洞”(注意与HOLES 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
以上语句中,“dzpnw”为dzpnw管的识别层,加上适当的周长、面积命令就可以定义器件的周长、面积(后边会介绍)。

“INTERACT A B”的逻辑为“与B相联系的A层次”,相关联的意思是相交或space=0。

(在dzpnw实际版图中TB>ZP>TO>DIODE,因此dzpnw的大小为DIODE所定义。

)“SIZE A 0.8”的逻辑为“将A的尺寸在X、Y轴方向增大0.8”,同理可得:“SIZE A -0.5”的逻辑为“将A的尺寸在X、Y轴方向缩小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”的逻辑为“A与B”;“NOT OUTSIDE A B”的逻辑为“不在B外边的A层次,即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后的层次为A”&“如果C层次与A层次相关联为真,则返回C”。

(此处的“INTERACT C A ==1”的逻辑跟“INTERACT C A ”一样,
只是前者的C或A事先经过“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”、“qlp1d2x2d2bd”的识别层。

“VERTEX A ==4”的逻辑为“顶角有4个的A层次”;“AREA A”的逻辑为“计算A层次的面积”。

//;; 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 metal2_process----#ENDIF”定义了层次间的连接关系,与前边提到的“#DEFINE 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 "mn"
[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 "mn"
[PROPERTY w,fw,simW,l,m
width=PERIMETER_COINCIDE(mnbn_rec, ndifcon)/2
length=PERIMETER_OUTSIDE(mnbn_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(MP) mp_rec pc_con(G) pdifcon(S) pdifcon(D) nwelcon(B) (S D)
NETLIST MODEL "mp"
[PROPERTY w,fw,simW,l,m
width=PERIMETER_COINCIDE(mp_rec, pdifcon)/2
length=PERIMETER_OUTSIDE(mp_rec, pdifcon)/2
w=width*1e-6
fw=width*1e-6
simW=width*1e-6
l=length*1e-6
m=length-length+1
]
DEV LDD(HA) H1Rec_1 gt_con(G) H12S(S) H12D(D) psub(B)
NETLIST MODEL "mn40vt"
[PROPERTY w,fw,simW,l,m,lvsFingers
width=(PERIMETER_COINCIDE(H1Rec_1, H12S)+PERIMETER_COINCIDE(H1Rec_1, H12D))/2
length=PERIMETER(H1Rec_1)/2-width
w=width*1e-6
fw=width*1e-6
simW=width*1e-6
l=length*1e-6
m=length-length+1
lvsFingers=length-length+1
]
DEV Q (PA) paRec psub(C) qvp_b(B) qvp_e(E)
NETLIST MODEL "qvp5x5"
[PROPERTY A,pj
A=AREA(paRec)*1e-12
pj=PERIMETER(paRec)*1e-6
]
DEV Q (PB) pbRec psub(C) qvp_b(B) qvp_e(E)
NETLIST MODEL "qvp10x10"
[PROPERTY A,pj
A=AREA(pbRec)*1e-12
pj=PERIMETER(pbRec)*1e-6
]
DEV Q (PC) pcRec psub(C) qvp_b(B) qvp_e(E)
NETLIST MODEL "qvp20x20"
[PROPERTY A,pj
A=AREA(pcRec)*1e-12
pj=PERIMETER(pcRec)*1e-6
]
DEV Q (NA) naRec bn_nx_nw(C) qvn_b(B) qvn_e(E) NETLIST MODEL "qvn1d2x1d2bd"
[PROPERTY A,pj
A=AREA(naRec)*1e-12
pj=PERIMETER(naRec)*1e-6
]
TRACE PROPERTY M(MN) w w 0
TRACE PROPERTY M(MN) l l 0
TRACE PROPERTY M(MP) w w 0
TRACE PROPERTY M(MP) l l 0
TRACE PROPERTY M(BN) w w 0
TRACE PROPERTY M(BN) l l 0
TRACE PROPERTY LDD(HA) w w 0
TRACE PROPERTY LDD(HA) l l 0
TRACE PROPERTY Q(PA) A A 0
TRACE PROPERTY Q(PB) A A 0
TRACE PROPERTY Q(PC) A A 0
TRACE PROPERTY Q(NA) A A 0
TRACE PROPERTY Q(NB) A A 0
TRACE PROPERTY Q(NC) A A 0
TRACE PROPERTY Q(ND) A A 0
TRACE PROPERTY Q(NE) A A 0
TRACE PROPERTY Q(NF) A A 0
TRACE PROPERTY Q(VA) A A 0
以上定义了由各端口,和由它们组成的器件及尺寸。

“PERIMETER_COINCIDE(A,B)”
的逻辑为“与B相邻的边的长度”;“PERIMETER_OUTSIDE(A,B)”的逻辑为“不与B 相邻的边的长度”。

“TRACE PROPERTY”是申明要检查的尺寸,后边的数字表示容许的偏差,如0为0%,1为1%。

以上就是st3400整个LVS command file的介绍。

二、一个器件构建的例子
由上边介绍的LVS command file结构,我们构建一个新器件,首先得用逻辑关系定义出器件的识别层,该识别层具有唯一性;能通过一定的尺寸命令,计算出器件的尺寸。

然后我们需要定义器件个端口的连接关系。

最后,定义由各端口,和由它们组成的器件及尺寸。

我们要举的例子是,在ST8000 LVS commnd file中构建器件“qvn1d2x1d2bd”、“qvn1d2x1d2bdhnw”,即发射极尺寸为1.2x1.2,基极为pbody,集电极分别为TB、TB&NX 的纵向NPN管。

(前者整个作在TB里边,后者整作在NX和环状TB里边,如下图)在原始文件里,有的逻辑层次已经事先定义出来,我们直接用就可以了。

但为了说明问题,我将它们连同添加的语句一并列于下边。

qvn1d2x1d2bd
qvn1d2x1d2bdhnw LAYER A1 1000
LAYER MAP 7 DATATYPE 0 1000
LAYER A1_text 1001
LAYER MAP 121 TEXTTYPE 0 1001
TEXT LAYER A1_text
LAYER A2 1005
LAYER MAP 9 DATATYPE 0 1005
LAYER A2_text 1006
LAYER MAP 122 TEXTTYPE 0 1006
TEXT LAYER A2_text
LAYER BJT_mark 1018
LAYER MAP 115 DATATYPE 1 1018
LAYER PB 1037
LAYER MAP 89 DATATYPE 0 1037
LAYER SN 1046
LAYER MAP 5 DATATYPE 0 1046
LAYER SP 1047
LAYER MAP 4 DATATYPE 0 1047
LAYER TB 1058
LAYER MAP 1 DATATYPE 0 1058
LAYER DP 1024
LAYER MAP 63 DATATYPE 0 1024
LAYER NX 1036
LAYER MAP 76 DATATYPE 0 1036
LAYER TO 1060
LAYER MAP 2 DATATYPE 0 1060
LAYER W1 1061
LAYER MAP 6 DATATYPE 0 1061
LAYER W2 1062
LAYER MAP 8 DATATYPE 0 1062
LAYER DCTY_mark 1067 LAYER MAP 101 DATATYPE 1 1067
LAYER ZP 1078
LAYER MAP 12 DATATYPE 0 1078 上边是些基本层次
// SN_drc=SN andnot DCTY_mark SN_drc=NOT SN DCTY_mark
// SP_drc=SP andnot DCTY_mark SP_drc=NOT SP DCTY_mark
// TO_drc=TO andnot DCTY_mark TO_drc=NOT TO DCTY_mark
// DP_drc=DP andnot DCTY_mark DP_drc=NOT DP DCTY_mark
// TB_drc=TB andnot DCTY_mark TB_drc=NOT TB DCTY_mark
// PB_drc=PB andnot DCTY_mark
PB_drc=NOT PB DCTY_mark
// ZP_drc=ZP andnot DCTY_mark
ZP_drc=NOT ZP DCTY_mark
// NX_drc=NX andnot DCTY_mark
NX_drc=NOT NX DCTY_mark
// W1_drc=W1 andnot DCTY_mark
W1_drc=NOT W1 DCTY_mark
// W2_drc=W2 andnot DCTY_mark
W2_drc=NOT W2 DCTY_mark
上边将一些层次放置在检查LVS的区域内
//ndiff=SN and TO
ndiff=AND SN_drc TO_drc
//pdiff=SP_drc and TO_drc
pdiff=AND SP_drc TO_drc
// allRes=RES_HR1K_mark or RES_HR2K_mark or RES_NW_mark or RES_mark L1=OR HR_mark RES_mark
allRes=OR L1 RES_NW_mark
// ndifcon=ndiff andnot GT_drc andNot PC_drc andnot allRes
ndifcon=NOT (NOT (NOT ndiff GT_drc) PC_drc) allRes
// pdifcon=pdiff andnot GT_drc andnot PC_drc andnot allRes
pdifcon=NOT (NOT (NOT pdiff GT_drc) PC_drc) allRes
//;; ndiff inside BJT
//ndif_bjt=ndiff and BJT_mark
ndif_bjt=AND ndiff BJT_mark
//ndif_bjtNw=ndif_bjt and TB_drc
ndif_bjtNw=AND ndif_bjt TB_drc
//ndif_bjtHnw=ndif_bjt and NX_drc
ndif_bjtHnw=AND ndif_bjt NX_drc
//tb_ntap=(ndifcon andnot PB_drc) andnot ZP_drc and TB_drc
tb_ntap=AND (NOT (NOT ndifcon PB_drc) ZP_drc) TB_drc
//tb_ntap_hole=Holes tb_ntap
L4=Holes (AND tb_ntap BJT_mark)
tb_ntap_hole=L4 NOT tb_ntap
//nx_not_dp=NX_drc NOT DP_drc
nx_not_dp=NOT NX_drc DP_drc
// nx_ntap=(ndifcon andnot PB_drc) and (NX_drc andnot DP_drc)
nx_ntap=AND (NOT ndifcon PB_drc) nx_not_dp
//nx_ntap_hole=Holes nx_ntap
L3=HOLES nx_ntap
nx_ntap_hole=NOT L3 nx_ntap
以上为一些逻辑层次准备
//;; emitter for qvnbndif_bjtNw inside tb_ntap_hole)
qvnbd_e=AND PB_drc (INSIDE ndif_bjtNw tb_ntap_hole)
//;; qvn1d2x1d2bd rec
//gaRec=qvnbd_e area ==1.44
gaRec=AREA qvnbd_e ==1.44
qvnbdE_con=AND ndifcon qvnbd_e
//;; base for qvnbd
// qvnbd_b=PB_drc enclose qvnbd_e
qvnbd_b=ENCLOSE PB_drc qvnbd_e
qvnbdB_con=AND pdifcon qvnbd_b
//;; collector for qvnbd
//qvnbd_c=TB_drc interact BJT_mark not interact NX_drc
qvnbd_c=NOT (INTERACT TB_drc BJT_mark) NX_drc
qvnbdC_con=NOT (AND ndifcon qvnbd_c) PB_drc
//;; emitter for qvnbdhnw
//qvnbdhnw_e=PB_drc and (ndif_bjtHnw inside nx_ntap_hole) qvnbdhnw_e=AND (NOT PB_drc TB_drc) (INSIDE ndif_bjtHnw nx_ntap_hole)
//;; qvn1d2x1d2bdhnw rec
//naRec=qvnbdhnw_e area ==1.44
naRec=AREA qvnbdhnw_e ==1.44
qvnbdhnwE_con=AND ndifcon qvnbdhnw_e
//;; base for qvnbdhnw
// qvnbdhnw_b=PB_drc enclose qvnbdhnw_e
qvnbdhnw_b=NOT (ENCLOSE PB_drc qvnbdhnw_e) TB_drc
qvnbdhnwB_con=AND pdifcon qvnbdhnw_b
//;; collector for qvnbdhnw
//qvnbdhnw_c=TB_drc interact BJT_mark interact NX_drc
qvnbdhnw_c=INTERACT (INTERACT NX_drc BJT_mark) TB_drc
qvnbdhnwC_con=NOT (AND ndifcon qvnbdhnw_c) PB_drc
以上一步步构造出“qvn1d2x1d2bd”、“qvn1d2x1d2bdhnw”的识别层“gaRec”、“naRec”,并且b、e、c三端也被定义了出来。

//;; define connection section
#IFDEF metal2_process
CONNECT a2_conn a1_conn BY W2_drc
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
SCONNECT ndifcon qvnbd_e BY qvnbdE_con
LVS SOFTCHK qvnbd_e CONTACT
SCONNECT ndifcon qvnbd_c BY qvnbdC_con
LVS SOFTCHK qvnbd_c CONTACT
SCONNECT pdifcon qvnbd_b BY qvnbdB_con
LVS SOFTCHK qvnbd_b CONTACT
SCONNECT ndifcon qvnbdhnw_e BY qvnbdhnwE_con
LVS SOFTCHK qvnbdhnw_e CONTACT
SCONNECT ndifcon qvnbdhnw_c BY qvnbdhnwC_con
LVS SOFTCHK qvnbdhnw_c CONTACT
SCONNECT pdifcon qvnbdhnw_b BY qvnbdhnwB_con
LVS SOFTCHK qvnbdhnw_b CONTACT
ATTACH A2_text a2_conn
ATTACH A1_text a1_conn
#ENDIF
以上定义了连接关系
//;; Vertical NPN qvn1d2x1d2bd
DEV Q (NA) gaRec qvnbd_c(C) qvnbd_b(B) qvnbd_e(E)
NETLIST MODEL "qvn1d2x1d2bd"
[PROPERTY A,pj
A=AREA(gaRec)*1e-12
pj=PERIMETER(gaRec)*1e-6
]
//;; Vertical NPN qvn1d2x1d2bdhnw
DEV Q (VA) naRec qvnbdhnw_c(C) qvnbdhnw_b(B) qvnbdhnw_e(E)
NETLIST MODEL "qvn1d2x1d2bdhnw"
[PROPERTY A,pj
A=AREA(naRec)*1e-12
pj=PERIMETER(naRec)*1e-6
]
TRACE PROPERTY Q(NA) A A 0
TRACE PROPERTY Q(VA) A A 0
以上定义出所需要的器件,及它们的端口和尺寸。

就此,这两个器件构造完成。

相关文档
最新文档