blob: 6920346a5abfcb1c2ef6d14bcbe3e54d188e2f38 [file] [log] [blame]
#----------------------------------------------------------
# Copyright (c) 2020 R. Timothy Edwards
# Revisions: See below
#
# This file is an Open Source foundry process describing
# the SkyWater sky130 hybrid 0.18um / 0.13um fabrication
# process. The file may be distributed under the terms
# of the Apache 2.0 license agreement.
#
#----------------------------------------------------------
# This file is designed to be used with magic versions
# 8.3.24 or newer.
#----------------------------------------------------------
tech
format 35
sky130A
end
version
version 20200508
description "SkyWater SKY130: PRE ALPHA Vendor Open Source rules and DRC"
end
#----------------------------------------------------------
# Status 7/10/20: Rev 1 (alpha):
# First public release
#--------------------------------------------------------------
#--------------------------------------------------------------
# Supported device types
#--------------------------------------------------------------
# device name magic ID layer description
#-------------------------------------------------------------
# nshort nfet standard nFET
# nshort scnfet standard nFET in standard cell**
# npd npd special nFET in SRAM cell
# npass npass special nFET in SRAM cell
# nlowvt nfetlvt low Vt nFET
# sonos_p/e nsonos SONOS nFET
# pshort pfet standard pFET
# pshort scpfet standard pFET in standard cell**
# ppu ppu special pFET in SRAM cell
# plowvt pfetlvt low Vt pFET
# phighvt pfethvt high Vt pFET
# ntvnative --- native nFET
# phv mvpfet thickox pFET
# nhv mvnfet thickox nFET
# nhvnative mvnnfet thickox native nFET
# ndiode ndiode n+ diff diode
# ndiode_h mvndiode thickox n+ diff diode
# pdiode pdiode p+ diff diode
# pdiode_h mvpdiode thickox p+ diff diode
# ndiode_native nndiode diode with nndiff
# ndiode_lvt ndiodelvt low Vt n+ diff diode
# pdiode_lvt pdiodelvt low Vt p+ diff diode
# pdiode_hvt pdiodehvt high Vt p+ diff diode
# nwdiode --- nwell diode
# dnwdiode_psub --- deep nwell diode to substrate
# dnwdiode_pw --- deep nwell diode to pwell
# xcmimc1 mimcap MiM cap 1st plate
# xcmimc2 mimcap2 MiM cap 2nd plate
# mrdn rdn n+ diff resistor
# mrdn_hv mvrdn thickox n+ diff resistor
# mrdp rdp p+ diff resistor
# mrdp_hv mvrdp thickox p+ diff resistor
# mrl1 rli local interconnect resistor
# mrp1 npres n+ poly resistor
# xhrpoly_* ppres (*) p+ poly resistor (300 Ohms/sq)
# uhrpoly_* xres (*) p+ poly resistor (2k Ohms/sq)
# xcnwvc varactor varactor (low Vt?)
# xcnwvc2 varactorhvt high Vt varactor
# xchvnwc mvvaractor thickox varactor
# xpwres rpw pwell resistor (in deep nwell)
#
# (*) Note that ppres may extract into some generic type
# called "xhrpoly", but only specific sizes of xhrpoly are
# allowed, and these are created from fixed layouts like the
# types below.
#
# (**) nFET and pFET in standard cells are the same as devices
# outside of the standard cell except for the DRC rule for
# FET to diffusion contact spacing (which is 0.05um, not 0.055um)
#
# To avoid creating a large number of types, a few ID layers are
# used in conjunction with standard devices types: "lvt" for
# low threshold voltage, and "hvt" for high threshold voltage.
# "dnwell" is used as an identifier layer where appropriate.
# Layer HVI (thick oxide) is treated differently, and types
# "mv*" are defined where thick oxide is required.
#
#-------------------------------------------------------------
# The following devices are not extracted but are represented
# only by script-generated subcells in the PDK.
#-------------------------------------------------------------
# nshortesd ESD nFET
# nhvesd ESD thickox nFET
# nhvnativeesd ESD native nFET
# phvesd ESD thickox pFET
# fnpass flash nFET device
# npnpar1x* parasitic NPN
# npn_1x1_2p0_hv thickox gated parasitic NPN
# pnppar parasitic PNP
# pnppar5x parasitic PNP
# xesd_ndiode_h_*** ESD n+ diode
# xesd_pdiode_h_*** ESD p+ diode
# reslocsub local substrate island indicator
# xcmvpp Vpp cap
# xcmvpp_2 Vpp cap
# xcmvpp_* Vpp cap
# xcmvpp* Vpp cap
# balun balun inductor
# ind4 inductor
# fuse metal fuse device
#--------------------------------------------------------------
#-----------------------------------------------------
# Tile planes
#-----------------------------------------------------
planes
dwell,dw
well,w
active,a
locali,li1,li
metal1,m1
metal2,m2
metal3,m3
cap1,c1
metal4,m4
cap2,c2
metal5,m5
metali,mi
block,b
comment,c
end
#-----------------------------------------------------
# Tile types
#-----------------------------------------------------
types
# Deep nwell
dwell dnwell,dnw
# Wells
well nwell,nw
-well pwell,pw
-well rpw,rpwell
-well obswell
# Transistors
active nmos,ntransistor,nfet
-active scnmos,scntransistor,scnfet
-active npd,npdfet,sramnfet
-active npass,npassfet,srampassfet
active pmos,ptransistor,pfet
-active scpmos,scptransistor,scpfet
-active ppu,ppufet,srampfet
-active nnmos,nntransistor
active mvnmos,mvntransistor,mvnfet
active mvpmos,mvptransistor,mvpfet
-active mvnnmos,mvnntransistor,mvnnfet,nnfet
-active varactor,varact,var
-active mvvaractor,mvvaract,mvvar
-active pmoslvt,pfetlvt
-active pmoshvt,pfethvt
-active nmoslvt,nfetlvt
-active varactorhvt,varacthvt,varhvt
-active nsonos,sonos
# Diffusions
active ndiff,ndiffusion,ndif
active pdiff,pdiffusion,pdif
-active mvndiff,mvndiffusion,mvndif
-active mvpdiff,mvpdiffusion,mvpdif
active ndiffc,ndcontact,ndc
active pdiffc,pdcontact,pdc
-active mvndiffc,mvndcontact,mvndc
-active mvpdiffc,mvpdcontact,mvpdc
active psubdiff,psubstratepdiff,ppdiff,ppd,psd
active nsubdiff,nsubstratendiff,nndiff,nnd,nsd
-active mvpsubdiff,mvpsubstratepdiff,mvppdiff,mvppd,mvpsd
-active mvnsubdiff,mvnsubstratendiff,mvnndiff,mvnnd,mvnsd
active psubdiffcont,psubstratepcontact,psc
active nsubdiffcont,nsubstratencontact,nsc
-active mvpsubdiffcont,mvpsubstratepcontact,mvpsc
-active mvnsubdiffcont,mvnsubstratencontact,mvnsc
-active obsactive
-active mvobsactive
# Poly
active poly,p,polysilicon
active polycont,pc,pcontact,polycut,polyc
active xpolycontact,xpolyc,xpc
# Resistors
-active npolyres,npres,mrp1
-active ppolyres,ppres,xhrpoly
-active xpolyres,xpres,xres,uhrpoly
-active ndiffres,rnd,rdn,rndiff
-active pdiffres,rpd,rdp,rpdiff
-active mvndiffres,mvrnd,mvrdn,mvrndiff
-active mvpdiffres,mvrpd,mvrdp,mvrpdiff
-active rmp
# Diodes
-active pdiode,pdi
-active ndiode,ndi
-active nndiode,nndi
-active pdiodec,pdic
-active ndiodec,ndic
-active nndiodec,nndic
-active mvpdiode,mvpdi
-active mvndiode,mvndi
-active mvpdiodec,mvpdic
-active mvndiodec,mvndic
-active pdiodelvt,pdilvt
-active pdiodehvt,pdihvt
-active ndiodelvt,ndilvt
-active pdiodelvtc,pdilvtc
-active pdiodehvtc,pdihvtc
-active ndiodelvtc,ndilvtc
# Local Interconnect
locali locali,li1,li
-locali corelocali,coreli1,coreli
-locali rlocali,rli1,rli
locali viali,vial,lic,licon,m1c,v0
-locali obsli1,obsli
-locali obsli1c,obslic,obslicon
# Metal 1
metal1 metal1,m1,met1
-metal1 rmetal1,rm1,rmet1
metal1 via1,m2contact,m2cut,m2c,via,v,v1
-metal1 obsm1
-metal1 padl
-metal1 m1fill
# Metal 2
metal2 metal2,m2,met2
-metal2 rmetal2,rm2,rmet2
metal2 via2,m3contact,m3cut,m3c,v2
-metal2 obsm2
-metal2 m2fill
# Metal 3
metal3 metal3,m3,met3
-metal3 rmetal3,rm3,rmet3
-metal3 obsm3
metal3 via3,v3
-metal3 m3fill
-cap1 mimcap,mim,capm
-cap1 mimcapcontact,mimcapc,mimcc,capmc
# Metal 4
metal4 metal4,m4,met4
-metal4 rmetal4,rm4,rmet4
-metal4 obsm4
metal4 via4,v4
-metal4 m4fill
-cap2 mimcap2,mim2,capm2
-cap2 mimcap2contact,mimcap2c,mim2cc,capm2c
# Metal 5
metal5 metal5,m5,met5
-metal5 rm5,rmetal5,rmet5
-metal5 obsm5
-metal5 m5fill
-metal5 mrdlcontact,mrdlc
-metali metalrdl,mrdl,metrdl
-metali obsmrdl
# Miscellaneous
-block glass
-block fillblock
-comment comment
-comment obscomment
end
#-----------------------------------------------------
# Magic contact types
#-----------------------------------------------------
contact
pc poly locali
ndc ndiff locali
pdc pdiff locali
nsc nsd locali
psc psd locali
ndic ndiode locali
ndilvtc ndiodelvt locali
nndic nndiode locali
pdic pdiode locali
pdilvtc pdiodelvt locali
pdihvtc pdiodehvt locali
xpc xpc locali
mvndc mvndiff locali
mvpdc mvpdiff locali
mvnsc mvnsd locali
mvpsc mvpsd locali
mvndic mvndiode locali
mvpdic mvpdiode locali
lic locali metal1
obslic obsli obsm1
via1 metal1 metal2
via2 metal2 metal3
via3 metal3 metal4
via4 metal4 metal5
stackable
# MiM cap contacts are not stackable!
mimcc mimcap metal4
mim2cc mimcap2 metal5
padl m1 m2 m3 m4 m5 glass
mrdlc metal5 mrdl
end
#-----------------------------------------------------
# Layer aliases
#-----------------------------------------------------
aliases
allwellplane nwell
allnwell nwell,obswell
allnfets nfet,npass,npd,scnfet,mvnfet,mvnnfet,nfetlvt,nsonos
allpfets pfet,ppu,scpfet,mvpfet,pfethvt,pfetlvt
allfets allnfets,allpfets,varactor,mvvaractor,varhvt
allnactivenonfet *ndiff,*nsd,*ndiode,*nndiode,*mvndiff,*mvnsd,*mvndiode,*ndiodelvt
allnactive allnactivenonfet,allnfets
allnactivenontap *ndiff,*ndiode,*nndiode,*mvndiff,*mvndiode,*ndiodelvt,allnfets
allnactivetap *nsd,*mvnsd,var,varhvt,mvvar
allpactivenonfet *pdiff,*psd,*pdiode,*mvpdiff,*mvpsd,*mvpdiode,*pdiodelvt,*pdiodehvt
allpactive allpactivenonfet,allpfets
allpactivenontap *pdiff,*pdiode,*mvpdiff,*mvpdiode,*pdiodelvt,*pdiodehvt,allpfets
allpactivetap *psd,*mvpsd
allactivenonfet allnactivenonfet,allpactivenonfet
allactive allactivenonfet,allfets
allactiveres ndiffres,pdiffres,mvndiffres,mvpdiffres
allndifflv *ndif,*nsd,*ndiode,ndiffres,nfet,npass,npd,scnfet,nfetlvt,nsonos
allpdifflv *pdif,*psd,*pdiode,pdiffres,pfet,ppu,scpfet,pfetlvt,pfethvt
alldifflv allndifflv,allpdifflv
allndifflvnonfet *ndif,*nsd,*ndiode,*nndiode,ndiffres,*ndiodelvt
allpdifflvnonfet *pdif,*psd,*pdiode,pdiffres,*pdiodelvt,*pdiodehvt
alldifflvnonfet allndifflvnonfet,allpdifflvnonfet
allndiffmv *mvndif,*mvnsd,*mvndiode,*nndiode,mvndiffres,mvnfet,mvnnfet
allpdiffmv *mvpdif,*mvpsd,*mvpdiode,mvpdiffres,mvpfet
alldiffmv allndiffmv,allpdiffmv
allndiffmvnontap *mvndif,*mvndiode,*nndiode,mvndiffres,mvnfet,mvnnfet
allpdiffmvnontap *mvpdif,*mvpdiode,mvpdiffres,mvpfet
alldiffmvnontap allndiffmvnontap,allpdiffmvnontap
allndiffmvnonfet *mvndif,*mvnsd,*mvndiode,*nndiode,mvndiffres
allpdiffmvnonfet *mvpdif,*mvpsd,*mvpdiode,mvpdiffres
alldiffmvnonfet allndiffmvnonfet,allpdiffmvnonfet
alldiffnonfet alldifflvnonfet,alldiffmvnonfet
alldiff alldifflv,alldiffmv
allpolyres mrp1,xhrpoly,uhrpoly,rmp
allpolynonfet *poly,allpolyres,xpc
allpolynonres *poly,allfets,xpc
allpoly allpolynonfet,allfets
allpolynoncap *poly,xpc,allfets,allpolyres
allndiffcontlv ndc,nsc,ndic,nndic,ndilvtc
allpdiffcontlv pdc,psc,pdic,pdilvtc,pdihvtc
allndiffcontmv mvndc,mvnsc,mvndic
allpdiffcontmv mvpdc,mvpsc,mvpdic
allndiffcont allndiffcontlv,allndiffcontmv
allpdiffcont allpdiffcontlv,allpdiffcontmv
alldiffcontlv allndiffcontlv,allpdiffcontlv
alldiffcontmv allndiffcontmv,allpdiffcontmv
alldiffcont alldiffcontlv,alldiffcontmv
allcont alldiffcont,pc
allres allpolyres,allactiveres
allli *locali,coreli,rli
allm1 *m1,rm1
allm2 *m2,rm2
allm3 *m3,rm3
allm4 *m4,rm4
allm5 *m5,rm5
allpad padl
psub pwell
end
#-----------------------------------------------------
# Layer drawing styles
#-----------------------------------------------------
styles
styletype mos
dnwell cwell
nwell nwell
pwell pwell
rpwell pwell ptransistor_stripes
ndiff ndiffusion
pdiff pdiffusion
nsd ndiff_in_nwell
psd pdiff_in_pwell
nfet ntransistor ntransistor_stripes
scnfet ntransistor ntransistor_stripes
npass ntransistor ntransistor_stripes
npd ntransistor ntransistor_stripes
pfet ptransistor ptransistor_stripes
scpfet ptransistor ptransistor_stripes
ppu ptransistor ptransistor_stripes
var polysilicon ndiff_in_nwell
ndc ndiffusion metal1 contact_X'es
pdc pdiffusion metal1 contact_X'es
nsc ndiff_in_nwell metal1 contact_X'es
psc pdiff_in_pwell metal1 contact_X'es
pfetlvt ptransistor ptransistor_stripes implant1
pfethvt ptransistor ptransistor_stripes implant2
nfetlvt ntransistor ntransistor_stripes implant1
nsonos ntransistor implant3
varhvt polysilicon ndiff_in_nwell implant2
mvndiff ndiffusion hvndiff_mask
mvpdiff pdiffusion hvpdiff_mask
mvnsd ndiff_in_nwell hvndiff_mask
mvpsd pdiff_in_pwell hvpdiff_mask
mvnfet ntransistor ntransistor_stripes hvndiff_mask
mvnnfet ntransistor ndiff_in_nwell hvndiff_mask
mvpfet ptransistor ptransistor_stripes
mvvar polysilicon ndiff_in_nwell hvndiff_mask
mvndc ndiffusion metal1 contact_X'es hvndiff_mask
mvpdc pdiffusion metal1 contact_X'es hvpdiff_mask
mvnsc ndiff_in_nwell metal1 contact_X'es hvndiff_mask
mvpsc pdiff_in_pwell metal1 contact_X'es hvpdiff_mask
poly polysilicon
pc polysilicon metal1 contact_X'es
npolyres polysilicon silicide_block nselect2
ppolyres polysilicon silicide_block pselect2
xpc polysilicon pselect2 metal1 contact_X'es
rmp polysilicon poly_resist_stripes
pdiode pdiffusion pselect2
ndiode ndiffusion nselect2
pdiodec pdiffusion pselect2 metal1 contact_X'es
ndiodec ndiffusion nselect2 metal1 contact_X'es
nndiode ndiffusion nselect2 implant3
ndiodelvt ndiffusion nselect2 implant1
pdiodelvt pdiffusion pselect2 implant1
pdiodehvt pdiffusion pselect2 implant2
pdilvtc pdiffusion pselect2 implant1 metal1 contact_X'es
pdihvtc pdiffusion pselect2 implant2 metal1 contact_X'es
ndilvtc ndiffusion nselect2 implant1 metal1 contact_X'es
mvpdiode pdiffusion pselect2 hvpdiff_mask
mvndiode ndiffusion nselect2 hvndiff_mask
mvpdiodec pdiffusion pselect2 metal1 contact_X'es hvpdiff_mask
mvndiodec ndiffusion nselect2 metal1 contact_X'es hvndiff_mask
nndiodec ndiff_in_nwell nselect2 metal1 contact_X'es hvndiff_mask
locali metal1
coreli metal1
rli metal1 poly_resist_stripes
lic metal1 metal2 via1arrow
obsli metal1
obslic metal1 metal2 via1arrow
metal1 metal2
m1fill metal2
rm1 metal2 poly_resist_stripes
obsm1 metal2
m2c metal2 metal3 via2arrow
metal2 metal3
m2fill metal3
rm2 metal3 poly_resist_stripes
obsm2 metal3
m3c metal3 metal4 via3alt
metal3 metal4
m3fill metal4
rm3 metal4 poly_resist_stripes
obsm3 metal4
mimcap metal3 mems
mimcc metal3 contact_X'es mems
mimcap2 metal4 mems
mim2cc metal4 contact_X'es mems
via3 metal4 metal5 via4
metal4 metal5
m4fill metal5
rm4 metal5 poly_resist_stripes
obsm4 metal5
via4 metal5 metal6 via5
metal5 metal6
m5fill metal6
rm5 metal6 poly_resist_stripes
obsm5 metal6
mrdlc metal6 metal7 via6
metalrdl metal7
obsmrdl metal7
glass overglass
mrp1 poly_resist poly_resist_stripes
xhrpoly poly_resist silicide_block
uhrpoly poly_resist
ndiffres ndiffusion ndop_stripes
pdiffres pdiffusion pdop_stripes
mvndiffres ndiffusion hvndiff_mask ndop_stripes
mvpdiffres pdiffusion hvpdiff_mask pdop_stripes
comment comment
error_p error_waffle
error_s error_waffle
error_ps error_waffle
fillblock cwell
obswell cwell
obsactive implant4
padl metal6 via6 overglass
magnet substrate_field_implant
rotate via3alt
fence via5
end
#-----------------------------------------------------
# Special paint/erase rules
#-----------------------------------------------------
compose
compose nfet poly ndiff
compose pfet poly pdiff
compose var poly nsd
compose mvnfet poly mvndiff
compose mvpfet poly mvpdiff
compose mvvar poly mvnsd
paint ndc nwell pdc
paint nfet nwell pfet
paint scnfet nwell scpfet
paint ndiff nwell pdiff
paint psd nwell nsd
paint psc nwell nsc
paint npd nwell ppu
paint pdc pwell ndc
paint pfet pwell nfet
paint scpfet pwell scnfet
paint pdiff pwell ndiff
paint nsd pwell psd
paint nsc pwell psc
paint ppu pwell npd
paint pdc coreli pdc
paint ndc coreli ndc
paint pc coreli pc
paint nsc coreli nsc
paint psc coreli psc
paint viali coreli viali
paint coreli pdc pdc
paint coreli ndc ndc
paint coreli pc pc
paint coreli nsc nsc
paint coreli psc psc
paint coreli viali viali
paint m4 obsm4 m4
paint m5 obsm5 m5
end
#-----------------------------------------------------
# Electrical connectivity
#-----------------------------------------------------
connect
*nwell,*nsd,*mvnsd,dnwell *nwell,*nsd,*mvnsd,dnwell
pwell,*psd,*mvpsd pwell,*psd,*mvpsd
*li,coreli *li,coreli
*m1,m1fill *m1,m1fill
*m2,m2fill *m2,m2fill
*m3,m3fill *m3,m3fill
*m4,m4fill *m4,m4fill
*m5,m5fill *m5,m5fill
*mimcap *mimcap
*mimcap2 *mimcap2
allnactivenonfet allnactivenonfet
allpactivenonfet allpactivenonfet
*poly,xpc,allfets *poly,xpc,allfets
# RDL connects to m5 (i.e., padl) through glass cut
*mrdl *mrdl
glass metrdl
end
#-----------------------------------------------------
# CIF/GDS output layer definitions
#-----------------------------------------------------
# NOTE: All values in this section MUST be multiples of 25
# or else magic will scale below the allowed layout grid size
cifoutput
#----------------------------------------------------------------
style gdsii
# NOTE: This section is used for actual GDS output
#----------------------------------------------------------------
scalefactor 10 nanometers
options calma-permissive-labels
gridlimit 5
#----------------------------------------------------------------
# Create a temp layer from the cell bounding box for use in
# generating ID layers. Note that "boundary", unlike "bbox",
# requires the FIXED_BBOX property (abutment box) in the cell.
#----------------------------------------------------------------
templayer CELLBOUND
boundary
#----------------------------------------------------------------
# BOUND
#----------------------------------------------------------------
layer BOUND CELLBOUND
calma 81 4
# Create a boundary outside of an abutment box, so that layers
# can be made to stretch to the abutment box edges. First strink
# so that any box that would be so small as to interact with
# itself will be removed.
templayer CELLRING CELLBOUND
shrink 345
grow 545
and-not CELLBOUND
#----------------------------------------------------------------
# DNWELL
#----------------------------------------------------------------
layer DNWELL dnwell
calma 64 18
layer PWRES rpw
and dnwell
calma 64 13
#----------------------------------------------------------------
# NWELL
#----------------------------------------------------------------
layer NWELL allnwell
bloat-all rpw dnwell
and-not rpw,pwell
calma 64 20
layer WELLTXT
labels allnwell noport
calma 64 16
layer WELLPIN
labels allnwell port
calma 64 5
#----------------------------------------------------------------
# SUB (text/port only)
#----------------------------------------------------------------
layer SUBTXT
labels pwell noport
calma 122 16
layer SUBPIN
labels pwell port
calma 64 59
#----------------------------------------------------------------
# DIFF
#----------------------------------------------------------------
layer DIFF allnactivenontap,allpactivenontap,allactiveres
labels allnactivenontap,allpactivenontap
calma 65 20
#----------------------------------------------------------------
# TAP
#----------------------------------------------------------------
layer TAP allnactivetap,allpactivetap
labels allnactivetap,allpactivetap
calma 65 44
#----------------------------------------------------------------
# PPLUS, NPLUS (PSDM, NSDM)
#----------------------------------------------------------------
templayer basePPLUS pdiffres,mvpdiffres
grow 15
or xhrpoly,uhrpoly,xpc
grow 110
bloat-or allpactivetap * 125 allnactivenontap 0
bloat-or allpactivenontap * 125 allnactivetap 0
bridge 380 380
templayer extendPPLUS basePPLUS,CELLRING
grow 185
shrink 185
and-not CELLRING
layer PPLUS basePPLUS,extendPPLUS
close 265000
calma 94 20
templayer baseNPLUS ndiffres,mvndiffres
grow 125
bloat-or allnactivetap * 125 allpactivenontap 0
bloat-or allnactivenontap * 125 allpactivetap 0
bridge 380 380
templayer extendNPLUS baseNPLUS,CELLRING
grow 185
shrink 185
and-not CELLRING
layer NPLUS baseNPLUS,extendNPLUS
close 265000
calma 93 44
#----------------------------------------------------------------
# LVTN
#----------------------------------------------------------------
layer LVTN pfetlvt,nfetlvt,mvvar,mvnnfet,nsonos,*pdiodelvt,*ndiodelvt,*nndiode
grow 180
bridge 380 380
grow 185
shrink 185
close 265000
calma 125 44
#----------------------------------------------------------------
# HVTP
#----------------------------------------------------------------
layer HVTP pfethvt,varhvt,*pdiodehvt
grow 180
bridge 380 380
grow 185
shrink 185
close 265000
calma 78 44
#----------------------------------------------------------------
# SONOS
#----------------------------------------------------------------
layer SONOS nsonos
grow 100
grow-min 410
bridge 500 410
grow 250
shrink 250
calma 80 20
#----------------------------------------------------------------
# SONOS requires COREID around area (areaid.ce). Also, the
# coreli layer indicates a cell needing COREID. Also, devices
# npd, npass, and ppu indicate a COREID cell.
#----------------------------------------------------------------
layer COREID
bloat-all nsonos,coreli,ppu,npd,npass CELLBOUND
calma 81 2
#----------------------------------------------------------------
# STDCELL applies to all cells containing scnfet or scpfet.
#----------------------------------------------------------------
layer STDCELL scnfet
bloat-all scpfet,scnfet CELLBOUND
calma 81 4
#----------------------------------------------------------------
# RPM
#----------------------------------------------------------------
layer RPM
bloat-all xhrpoly xpc
grow 200
grow-min 1270
grow 420
shrink 420
calma 86 20
#----------------------------------------------------------------
# URPM (2kOhms/sq. poly implant)
#----------------------------------------------------------------
layer URPM
bloat-all uhrpoly xpc
grow 200
grow-min 1270
grow 420
shrink 420
calma 79 20
#----------------------------------------------------------------
# LDNTM (Tip implant for SONOS FETs)
#----------------------------------------------------------------
layer LDNTM
bloat-all nsonos *ndiff
grow 185
grow 345
shrink 345
calma 11 44
#----------------------------------------------------------------
# HVNTM (Tip implant for MV ndiff devices)
#----------------------------------------------------------------
templayer hvntm_block *mvpsd
grow 185
layer HVNTM
bloat-all mvnfet,mvnnfet,*mvndiode,mvrdn,*nndiode *mvndiff
bloat-all mvvaractor *mvnsd
and-not hvntm_block
grow 185
grow 345
shrink 345
calma 125 20
#----------------------------------------------------------------
# POLY
#----------------------------------------------------------------
layer POLY allpoly
calma 66 20
layer POLYTXT
labels allpoly noport
calma 66 16
layer POLYPIN
labels allpoly port
calma 66 5
#----------------------------------------------------------------
# THKOX (HVI) (includes rules NWELL 8-11 and DIFFTAP 14-26)
#----------------------------------------------------------------
templayer baseTHKOX *mvpsd
grow-min 470
or alldiffmv,mvvar
grow 185
bloat-all alldiffmv nwell
grow-min 600
bridge 700 600
templayer extendTHKOX baseTHKOX,CELLRING
grow 345
shrink 345
and-not CELLRING
layer THKOX baseTHKOX,extendTHKOX
calma 75 20
#----------------------------------------------------------------
# CONT (LICON)
#----------------------------------------------------------------
layer CONT allcont
squares-grid 0 170 170
calma 66 44
# Contact for pres is different than other LICON contacts
# See rules LICON 1b, 1c (width/length) and 2b (spacing)
templayer xpc_horiz xpc
shrink 1007
grow 1007
layer CONT xpc
and-not xpc_horiz
# Force long edge vertical for contacts narrower than 2um
# Minimum space is 350 but 520 satisfies no. of contacts rule
slots 80 190 520 80 2000 350
calma 66 44
layer CONT xpc
and xpc_horiz
# Force long edge vertical for contacts wider than 2um
# Minimum space is 350 but 520 satisfies no. of contacts rule
slots 80 2000 350 80 190 520
calma 66 44
#----------------------------------------------------------------
# NPC (Nitride poly cut)
# surrounds CONT (LICON) on poly only (i.e., pc)
#----------------------------------------------------------------
layer NPC pc
squares-grid 0 170 170
grow 100
bridge 270 270
grow 130
shrink 130
calma 95 20
# NPC is also generated on xhrpoly and uhrpoly resistors
layer NPC xpc,xhrpoly,uhrpoly
# xpc surrounds precision_resistor by 0.095um
grow 95
grow 130
shrink 130
calma 95 20
#----------------------------------------------------------------
# Device markers
#----------------------------------------------------------------
layer DIFFRES rdn,mvrdn,rdp,mvrdp
calma 65 13
layer POLYRES mrp1
calma 66 13
# POLYSHORT is a poly layer resistor like rli, rm1, etc., for metal layers
layer POLYSHORT rmp
calma 66 15
# POLYRES extends to edge of contact cut
layer POLYRES xhrpoly,uhrpoly
grow 60
and xpc
or xhrpoly,uhrpoly
calma 66 13
layer DIODE *pdi,*ndi,*nndi,*mvpdi,*mvndi,*pdilvt,*pdihvt,*ndilvt
# To be done: Expand to include anode, cathode, and guard ring
calma 81 23
#----------------------------------------------------------------
# LI
#----------------------------------------------------------------
layer LI allli
calma 67 20
layer LITXT
labels *locali,coreli noport
calma 67 16
layer LIPIN
labels *locali,coreli port
calma 67 5
layer LIRES rli
labels rli
calma 67 13
#----------------------------------------------------------------
# MCON
#----------------------------------------------------------------
layer MCON lic
squares-grid 0 170 190
calma 67 44
#----------------------------------------------------------------
# MET1
#----------------------------------------------------------------
layer MET1 allm1,m1fill
calma 68 20
layer MET1TXT
labels allm1 noport
calma 68 16
layer MET1PIN
labels allm1 port
calma 68 5
layer MET1RES rm1
labels rm1
calma 68 13
#----------------------------------------------------------------
# VIA1
#----------------------------------------------------------------
layer VIA1 via1
squares-grid 55 150 170
calma 68 44
#----------------------------------------------------------------
# MET2
#----------------------------------------------------------------
layer MET2 allm2,m2fill
calma 69 20
layer MET2TXT
labels allm2 noport
calma 69 16
layer MET2PIN
labels allm2 port
calma 69 5
layer MET2RES rm2
labels rm2
calma 69 13
#----------------------------------------------------------------
# VIA2
#----------------------------------------------------------------
layer VIA2 via2
squares-grid 40 200 200
calma 69 44
#----------------------------------------------------------------
# MET3
#----------------------------------------------------------------
layer MET3 allm3,m3fill
calma 70 20
layer MET3TXT
labels allm3 noport
calma 70 16
layer MET3PIN
labels allm3 port
calma 70 5
layer MET3RES rm3
labels rm3
calma 70 13
#----------------------------------------------------------------
# VIA3
#----------------------------------------------------------------
layer VIA3 via3
or mimcc
squares-grid 60 200 200
calma 70 44
#----------------------------------------------------------------
# MET4
#----------------------------------------------------------------
layer MET4 allm4,m4fill
calma 71 20
layer MET4TXT
labels allm4 noport
calma 71 16
layer MET4PIN
labels allm4 port
calma 71 5
layer MET4RES rm4
labels rm4
calma 71 13
#----------------------------------------------------------------
# VIA4
#----------------------------------------------------------------
layer VIA4 via4
or mim2cc
squares-grid 190 800 800
calma 71 44
#----------------------------------------------------------------
# MET5
#----------------------------------------------------------------
layer MET5 allm5,m5fill
calma 72 20
layer MET5TXT
labels allm5 noport
calma 72 16
layer MET5PIN
labels allm5 port
calma 72 5
layer MET5RES rm5
labels rm5
calma 72 13
#----------------------------------------------------------------
# RDL
#----------------------------------------------------------------
layer RDL *metrdl
calma 74 20
layer RDLTXT
labels *metrdl noport
calma 74 16
layer RDLPIN
labels *metrdl port
calma 74 5
#----------------------------------------------------------------
# GLASS
#----------------------------------------------------------------
layer GLASS glass
calma 76 20
#----------------------------------------------------------------
# CAPM
#----------------------------------------------------------------
layer CAPM *mimcap
labels mimcap
calma 89 44
layer CAPM2 *mimcap2
labels mimcap2
calma 97 44
#----------------------------------------------------------------
# Chip top level marker for DRC latchup rules to check 15um
# distance to taps (otherwise 6um is used)
#----------------------------------------------------------------
layer LOWTAPDENSITY
bbox top
# Clear 200um for pads + 50um for required high tap density
# in critical area.
shrink 250000
calma 81 14
#----------------------------------------------------------------
# FILLBLOCK
#----------------------------------------------------------------
layer FILLOBSM1 fillblock
calma 62 24
layer FILLOBSM2 fillblock
calma 105 52
layer FILLOBSM3 fillblock
calma 107 24
layer FILLOBSM4 fillblock
calma 112 4
render DNWELL cwell -0.1 0.1
render NWELL nwell 0.0 0.2062
render DIFF ndiffusion 0.2062 0.12
render TAP pdiffusion 0.2062 0.12
render POLY polysilicon 0.3262 0.18
render CONT via 0.5062 0.43
render LI metal1 0.9361 0.10
render MCON via 1.0361 0.34
render MET1 metal2 1.3761 0.36
render VIA1 via 1.7361 0.27
render MET2 metal3 2.0061 0.36
render VIA2 via 2.3661 0.42
render MET3 metal4 2.7861 0.845
render VIA3 via 3.6311 0.39
render MET4 metal5 4.0211 0.845
render VIA4 via 4.8661 0.505
render MET5 metal6 5.3711 1.26
render CAPM metal8 2.4661 0.2
render CAPM2 metal9 3.7311 0.2
render RDL metal7 11.8834 4.0
#----------------------------------------------------------------
style drc
#----------------------------------------------------------------
# NOTE: This style is used for DRC only, not for GDS output
#----------------------------------------------------------------
scalefactor 10 nanometers
options calma-permissive-labels
# Ensure nwell overlaps dnwell at least 0.4um outside and 1.03um inside
templayer dnwell_shrink dnwell
shrink 1030
templayer nwell_missing dnwell
grow 400
and-not dnwell_shrink
and-not nwell
# SONOS nFET devices must be in deep nwell
templayer dnwell_missing nsonos
and-not dnwell
# Define MiM cap bottom plate for spacing rule
templayer mim_bottom
bloat-all *mimcap *metal3
# Define MiM2 cap bottom plate for spacing rule
templayer mim2_bottom
bloat-all *mimcap2 *metal4
# Note that metal fill is performed by the foundry and so is not
# an option for a cifoutput style.
# Check latchup rule (15um minimum from tap LICON center to any
# non-tap diffusion. Note that to count as a tap, the diffusion
# must be contacted to LI
templayer ptap_reach psc,mvpsc
and-not dnwell
# grow total is 15um. grow in 0.84um increments to ensure that
# no nwell ring is crossed
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 840
and-not nwell,dnwell
grow 635
and-not nwell,dnwell
templayer ptap_missing *ndiff,*mvndiff
and-not dnwell
and-not ptap_reach
templayer ntap_reach nsc,mvnsc
# grow total is 15um. grow in 1.27um increments to ensure that
# no nwell ring is crossed. There is no difference between
# ntaps in and out of deep nwell.
grow 1270
and nwell
grow 1270
and nwell
grow 1270
and nwell
grow 1270
and nwell
grow 1270
and nwell
grow 1270
and nwell
grow 1270
and nwell
grow 1270
and nwell
grow 1270
and nwell
grow 1270
and nwell
grow 1270
and nwell
grow 945
and nwell
templayer ntap_missing *pdiff,*mvpdiff
and-not dnwell
and-not ntap_reach
templayer dptap_reach psc,mvpsc
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 840
and-not nwell
and dnwell
grow 635
and-not nwell
and dnwell
templayer dptap_missing *ndiff,*mvndiff
and dnwell
and-not dptap_reach
templayer m1_small_hole *m1
close 140000
templayer m1_hole_empty m1_small_hole
and-not *m1
templayer m2_small_hole *m2
close 140000
templayer m2_hole_empty m2_small_hole
and-not *m2
#----------------------------------------------------------------
style wafflefill
#----------------------------------------------------------------
# Style used by scripts for automatically generating fill layers
#----------------------------------------------------------------
scalefactor 10 nanometers
options calma-permissive-labels
gridlimit 5
#---------------------------------------------------
# FOM fill (under development)
#---------------------------------------------------
templayer slots_fom_pass1
bbox top
slots 0 4080 1320 0 4080 1320 1360 0
templayer obstruct_fom_pass1 alldiff,allpoly,rpw
grow 500
templayer fomfill_pass1 slots_fom_pass1
and-not obstruct_fom_pass1
shrink 2035
grow 2035
templayer slots_fom_pass2
bbox top
slots 0 2500 1320 0 2500 1320 1360 0
templayer obstruct_fom_pass2 fomfill_pass1
grow 820
or alldiff,allpoly,rpw
grow 500
templayer fomfill_pass2 slots_fom_pass2
and-not obstruct_fom_pass2
shrink 1245
grow 1245
templayer slots_fom_coarse
bbox top
slots 0 1500 1320 0 1500 1320 1360 0
templayer obstruct_fom_coarse fomfill_pass1,fomfill_pass2
grow 820
or alldiff,allpoly,rpw
grow 500
templayer fomfill_coarse slots_fom_coarse
and-not obstruct_fom_coarse
shrink 745
grow 745
templayer slots_fom_fine
bbox top
slots 0 500 400 0 500 400 160 0
templayer obstruct_fom_fine fomfill_pass1,fomfill_pass2,fomfill_coarse
grow 820
or alldiff,allpoly,rpw
grow 500
templayer fomfill_fine slots_fom_fine
and-not obstruct_fom_fine
shrink 245
grow 245
layer FOMMASK fomfill_pass1
or fomfill_pass2
or fomfill_coarse
or fomfill_fine
calma 23 0
#---------------------------------------------------
# POLY fill (under development)
#---------------------------------------------------
templayer slots_poly_pass1
bbox top
slots 0 720 360 0 720 360 240 0
templayer obstruct_poly_pass1 alldiff,allpoly,rpw
grow 1000
templayer polyfill_pass1 slots_poly_pass1
and-not obstruct_poly_pass1
shrink 355
grow 355
templayer slots_poly_coarse
bbox top
slots 0 720 360 0 720 360 240 120
templayer obstruct_poly_coarse alldiff,allpoly,rpw
grow 640
or polyfill_pass1
grow 360
templayer polyfill_coarse slots_poly_coarse
and-not obstruct_poly_coarse
shrink 355
grow 355
templayer slots_poly_medium
bbox top
slots 0 540 360 0 540 360 240 100
templayer obstruct_poly_medium alldiff,allpoly,rpw
grow 650
or polyfill_pass1,polyfill_coarse
grow 360
templayer polyfill_medium slots_poly_medium
and-not obstruct_poly_medium
shrink 265
grow 265
templayer slots_poly_fine
bbox top
slots 0 480 360 0 480 360 240 200
templayer obstruct_poly_fine alldiff,allpoly,rpw
grow 650
or polyfill_pass1,polyfill_coarse,polyfill_medium
grow 360
templayer polyfill_fine slots_poly_fine
and-not obstruct_poly_fine
shrink 235
grow 235
layer POLYMASK polyfill_pass1
or polyfill_coarse
or polyfill_medium
or polyfill_fine
calma 28 0
#---------------------------------------------------
# MET1 fill
#---------------------------------------------------
templayer slots_m1_coarse
bbox top
slots 0 2000 200 0 2000 200 700 0
templayer obstruct_m1_coarse allm1,allpad,obsm1,m1fill,fillblock
grow 3000
templayer met1fill_coarse slots_m1_coarse
and-not obstruct_m1_coarse
shrink 995
grow 995
templayer slots_m1_medium
bbox top
slots 0 1000 200 0 1000 200 700 0
templayer obstruct_m1_medium allm1,allpad,obsm1,m1fill,fillblock
grow 2800
or met1fill_coarse
grow 200
templayer met1fill_medium slots_m1_medium
and-not obstruct_m1_medium
shrink 495
grow 495
templayer slots_m1_fine
bbox top
slots 0 580 200 0 580 200 700 0
templayer obstruct_m1_fine allm1,allpad,obsm1,m1fill,fillblock
grow 300
or met1fill_coarse,met1fill_medium
grow 200
templayer met1fill_fine slots_m1_fine
and-not obstruct_m1_fine
shrink 285
grow 285
templayer slots_m1_veryfine
bbox top
slots 0 300 200 0 300 200 100 50
templayer obstruct_m1_veryfine allm1,allpad,obsm1,m1fill,fillblock
grow 100
or met1fill_coarse,met1fill_medium,met1fill_fine
grow 200
templayer met1fill_veryfine slots_m1_veryfine
and-not obstruct_m1_veryfine
shrink 145
grow 145
layer MET1MASK met1fill_coarse
or met1fill_medium
or met1fill_fine
or met1fill_veryfine
calma 36 0
#---------------------------------------------------
# MET2 fill
#---------------------------------------------------
templayer slots_m2_coarse
bbox top
slots 0 2000 200 0 2000 200 700 350
templayer obstruct_m2 allm2,allpad,obsm2,m2fill,fillblock
grow 3000
templayer met2fill_coarse slots_m2_coarse
and-not obstruct_m2
shrink 995
grow 995
templayer slots_m2_medium
bbox top
slots 0 1000 200 0 1000 200 700 350
templayer obstruct_m2_medium allm2,allpad,obsm2,m2fill,fillblock
grow 2800
or met2fill_coarse
grow 200
templayer met2fill_medium slots_m2_medium
and-not obstruct_m2_medium
shrink 495
grow 495
templayer slots_m2_fine
bbox top
slots 0 580 200 0 580 200 700 350
templayer obstruct_m2_fine allm2,allpad,obsm2,m2fill,fillblock
grow 300
or met2fill_coarse,met2fill_medium
grow 200
templayer met2fill_fine slots_m2_fine
and-not obstruct_m2_fine
shrink 285
grow 285
templayer slots_m2_veryfine
bbox top
slots 0 300 200 0 300 200 100 100
templayer obstruct_m2_veryfine allm2,allpad,obsm2,m2fill,fillblock
grow 100
or met2fill_coarse,met2fill_medium,met2fill_fine
grow 200
templayer met2fill_veryfine slots_m2_veryfine
and-not obstruct_m2_veryfine
shrink 145
grow 145
layer MET2MASK met2fill_coarse
or met2fill_medium
or met2fill_fine
or met2fill_veryfine
calma 41 0
#---------------------------------------------------
# MET3 fill
#---------------------------------------------------
templayer slots_m3_coarse
bbox top
slots 0 2000 300 0 2000 300 700 700
templayer obstruct_m3 allm3,allpad,obsm3,m3fill,fillblock
grow 3000
templayer met3fill_coarse slots_m3_coarse
and-not obstruct_m3
shrink 995
grow 995
templayer slots_m3_medium
bbox top
slots 0 1000 300 0 1000 300 700 700
templayer obstruct_m3_medium allm3,allpad,obsm3,m3fill,fillblock
grow 2700
or met3fill_coarse
grow 300
templayer met3fill_medium slots_m3_medium
and-not obstruct_m3_medium
shrink 495
grow 495
templayer slots_m3_fine
bbox top
slots 0 580 300 0 580 300 700 700
templayer obstruct_m3_fine allm3,allpad,obsm3,m3fill,fillblock
grow 200
or met3fill_coarse,met3fill_medium
grow 300
templayer met3fill_fine slots_m3_fine
and-not obstruct_m3_fine
shrink 285
grow 285
templayer slots_m3_veryfine
bbox top
slots 0 400 300 0 400 300 150 200
templayer obstruct_m3_veryfine allm3,allpad,obsm3,m3fill,fillblock
or met3fill_coarse,met3fill_medium,met3fill_fine
grow 300
templayer met3fill_veryfine slots_m3_veryfine
and-not obstruct_m3_veryfine
shrink 195
grow 195
layer MET3MASK met3fill_coarse
or met3fill_medium
or met3fill_fine
or met3fill_veryfine
calma 34 0
#---------------------------------------------------
# MET4 fill
#---------------------------------------------------
templayer slots_m4_coarse
bbox top
slots 0 2000 300 0 2000 300 700 1050
templayer obstruct_m4 allm4,allpad,obsm4,m4fill,fillblock
grow 3000
templayer met4fill_coarse slots_m4_coarse
and-not obstruct_m4
shrink 995
grow 995
templayer slots_m4_medium
bbox top
slots 0 1000 300 0 1000 300 700 1050
templayer obstruct_m4_medium allm4,allpad,obsm4,m4fill,fillblock
grow 2700
or met4fill_coarse
grow 300
templayer met4fill_medium slots_m4_medium
and-not obstruct_m4_medium
shrink 495
grow 495
templayer slots_m4_fine
bbox top
slots 0 580 300 0 580 300 700 1050
templayer obstruct_m4_fine allm4,allpad,obsm4,m4fill,fillblock
grow 200
or met4fill_coarse,met4fill_medium
grow 300
templayer met4fill_fine slots_m4_fine
and-not obstruct_m4_fine
shrink 285
grow 285
templayer slots_m4_veryfine
bbox top
slots 0 400 300 0 400 300 150 300
templayer obstruct_m4_veryfine allm4,allpad,obsm4,m4fill,fillblock
or met4fill_coarse,met4fill_medium,met4fill_fine
grow 300
templayer met4fill_veryfine slots_m4_veryfine
and-not obstruct_m4_veryfine
shrink 195
grow 195
layer MET4MASK met4fill_coarse
or met4fill_medium
or met4fill_fine
or met4fill_veryfine
calma 51 0
#---------------------------------------------------
# MET5 fill
#---------------------------------------------------
templayer slots_m5
bbox top
slots 0 3000 1600 0 3000 1600 1000 100
templayer obstruct_m5 allm5,allpad,obsm5,m5fill,fillblock
grow 3000
templayer met5fill_gen slots_m5
and-not obstruct_m5
shrink 1495
grow 1495
layer MET5MASK met5fill_gen
calma 59 0
end
#-----------------------------------------------------------------------
cifinput
#-----------------------------------------------------------------------
# NOTE: All values in this section MUST be multiples of 25
# or else magic will scale below the allowed layout grid size
#-----------------------------------------------------------------------
style vendorimport
scalefactor 10 nanometers
gridlimit 5
options ignore-unknown-layer-labels no-reconnect-labels
ignore NPC
ignore SEALID
ignore NPNID
ignore PNPID
ignore CAPID
ignore LDNTM
ignore HVNTM
ignore POLYMOD
ignore LOWTAPDENSITY
layer nwell NWELL,WELLTXT,WELLPIN
labels NWELL
labels WELLTXT text
labels WELLPIN port
layer pwell SUBTXT,SUBPIN
labels SUBTXT text
labels SUBPIN port
layer dnwell DNWELL
labels DNWELL
layer rpw PWRES
and DNWELL
labels PWRES
templayer ndiffarea DIFF,DIFFTXT,DIFFPIN
and-not POLY
and-not NWELL
and-not PPLUS
and-not DIODE
and-not DIFFRES
and-not THKOX
and NPLUS
copyup ndifcheck
labels DIFF
labels DIFFTXT text
labels DIFFPIN port
labels TAPPIN port
layer ndiff ndiffarea
# Copy ndiff areas up for contact checks
templayer xndifcheck ndifcheck
copyup ndifcheck
templayer mvndiffarea DIFF,DIFFTXT,DIFFPIN
and-not POLY
and-not NWELL
and-not PPLUS
and-not DIODE
and-not DIFFRES
and THKOX
and NPLUS
copyup ndifcheck
labels DIFF
labels DIFFTXT text
labels DIFFPIN port
layer mvndiff mvndiffarea
# Copy ndiff areas up for contact checks
templayer mvxndifcheck mvndifcheck
copyup mvndifcheck
layer ndiode DIFF
and NPLUS
and DIODE
and-not NWELL
and-not POLY
and-not PPLUS
and-not THKOX
and-not LVTN
labels DIFF
layer ndiodelvt DIFF
and NPLUS
and DIODE
and-not NWELL
and-not POLY
and-not PPLUS
and-not THKOX
and LVTN
labels DIFF
templayer ndiodearea DIODE
and NPLUS
and-not THKOX
and-not NWELL
copyup DIODE,NPLUS
layer ndiffres DIFFRES
and NPLUS
and-not THKOX
labels DIFF
templayer pdiffarea DIFF,DIFFTXT,DIFFPIN
and-not POLY
and NWELL
and-not NPLUS
and-not DIODE
and-not THKOX
and PPLUS
copyup pdifcheck
labels DIFF
labels DIFFTXT text
labels DIFFPIN port
layer pdiff pdiffarea
layer mvndiode DIFF
and NPLUS
and DIODE
and THKOX
and-not POLY
and-not PPLUS
and-not LVTN
labels DIFF
layer nndiode DIFF
and NPLUS
and DIODE
and THKOX
and-not POLY
and-not PPLUS
and LVTN
labels DIFF
templayer mvndiodearea DIODE
and NPLUS
and THKOX
and-not NWELL
copyup DIODE,NPLUS
layer mvndiffres DIFFRES
and NPLUS
and THKOX
labels DIFF
templayer mvpdiffarea DIFF,DIFFTXT,DIFFPIN
and-not POLY
and NWELL
and-not NPLUS
and THKOX
and-not DIODE
and-not DIFFRES
and PPLUS
copyup mvpdifcheck
labels DIFF
labels DIFFTXT text
labels DIFFPIN port
layer mvpdiff mvpdiffarea
# Copy pdiff areas up for contact checks
templayer xpdifcheck pdifcheck
copyup pdifcheck
layer pdiode DIFF
and PPLUS
and-not POLY
and-not NPLUS
and-not THKOX
and-not LVTN
and-not HVTP
and DIODE
labels DIFF
layer pdiodelvt DIFF
and PPLUS
and-not POLY
and-not NPLUS
and-not THKOX
and LVTN
and-not HVTP
and DIODE
labels DIFF
layer pdiodehvt DIFF
and PPLUS
and-not POLY
and-not NPLUS
and-not THKOX
and-not LVTN
and HVTP
and DIODE
labels DIFF
templayer pdiodearea DIODE
and PPLUS
and-not THKOX
copyup DIODE,PPLUS
# Define pfet areas as known pdiff, regardless of the presence of a well.
templayer pfetarea DIFF
and-not NPLUS
and-not THKOX
and POLY
layer pfet pfetarea
and-not LVTN
and-not HVTP
and-not STDCELL
and-not COREID
labels DIFF
layer scpfet pfetarea
and-not LVTN
and-not HVTP
and STDCELL
labels DIFF
layer ppu pfetarea
and-not LVTN
and-not HVTP
and COREID
labels DIFF
layer pfetlvt pfetarea
and LVTN
labels DIFF
layer pfethvt pfetarea
and HVTP
labels DIFF
# Always force nwell under pfet (nwell encloses pdiff by 0.18)
layer nwell pfetarea
grow 180
# Copy mvpdiff areas up for contact checks
templayer mvxpdifcheck mvpdifcheck
copyup mvpdifcheck
layer mvpdiode DIFF
and PPLUS
and-not POLY
and-not NPLUS
and THKOX
and DIODE
labels DIFF
templayer mvpdiodearea DIODE
and PPLUS
and THKOX
copyup DIODE,PPLUS
# Define pfet areas as known pdiff,
# regardless of the presence of a
# well.
templayer mvpfetarea DIFF
and-not NPLUS
and THKOX
and POLY
layer mvpfet mvpfetarea
labels DIFF
layer pdiff DIFF,DIFFTXT,DIFFPIN
and-not NPLUS
and-not POLY
and-not THKOX
and-not DIODE
and-not DIFFRES
labels DIFF
labels DIFFTXT text
labels DIFFPIN port
layer pdiffres DIFFRES
and PPLUS
and NWELL
and-not THKOX
labels DIFF
layer nfet DIFF
and POLY
and-not PPLUS
and NPLUS
and-not THKOX
and-not LVTN
and-not SONOS
and-not STDCELL
labels DIFF
layer scnfet DIFF
and POLY
and-not PPLUS
and NPLUS
and-not NWELL
and-not THKOX
and-not LVTN
and-not SONOS
and STDCELL
labels DIFF
layer npd DIFF
and POLY
and-not PPLUS
and NPLUS
and-not NWELL
and COREID
labels DIFF
# layer npass DIFF
# and POLY
# and-not PPLUS
# and NPLUS
# and-not NWELL
# and COREID
# labels DIFF
layer nfetlvt DIFF
and POLY
and-not PPLUS
and NPLUS
and-not THKOX
and LVTN
and-not SONOS
labels DIFF
layer nsonos DIFF
and POLY
and-not PPLUS
and NPLUS
and-not THKOX
and LVTN
and SONOS
labels DIFF
templayer nsdarea TAP
and NPLUS
and NWELL
and-not POLY
and-not PPLUS
and-not THKOX
copyup nsubcheck
layer nsd nsdarea
labels TAP
layer nsd TAP,TAPPIN
and NPLUS
and-not POLY
and-not THKOX
labels TAP
labels TAPPIN port
templayer nsdexpand nsdarea
grow 500
# Copy nsub areas up for contact checks
templayer xnsubcheck nsubcheck
copyup nsubcheck
templayer psdarea TAP
and PPLUS
and-not NWELL
and-not POLY
and-not NPLUS
and-not THKOX
and-not pfetexpand
copyup psubcheck
layer psd psdarea
labels TAP
layer psd TAP,TAPPIN
and PPLUS
and-not POLY
and-not THKOX
labels TAP
labels TAPPIN port
templayer psdexpand psdarea
grow 500
layer mvpdiff DIFF,DIFFTXT,DIFFPIN
and-not NPLUS
and-not POLY
and THKOX
and mvpfetexpand
labels DIFF
labels DIFFTXT text
labels DIFFPIN port
layer mvpdiffres DIFFRES
and PPLUS
and NWELL
and THKOX
and-not mvrdpioedge
labels DIFF
layer mvnfet DIFF
and POLY
and-not PPLUS
and NPLUS
and-not LVTN
and THKOX
labels DIFF
layer mvnnfet DIFF
and POLY
and-not PPLUS
and NPLUS
and LVTN
and THKOX
labels DIFF
templayer mvnsdarea TAP
and NPLUS
and NWELL
and-not POLY
and-not PPLUS
and THKOX
copyup mvnsubcheck
layer mvnsd mvnsdarea
labels TAP
layer mvnsd TAP,TAPPIN
and NPLUS
and THKOX
labels TAP
labels TAPPIN port
templayer mvnsdexpand mvnsdarea
grow 500
# Copy nsub areas up for contact checks
templayer mvxnsubcheck mvnsubcheck
copyup mvnsubcheck
templayer mvpsdarea DIFF
and PPLUS
and-not NWELL
and-not POLY
and-not NPLUS
and THKOX
and-not mvpfetexpand
copyup mvpsubcheck
layer mvpsd mvpsdarea
labels DIFF
layer mvpsd TAP,TAPPIN
and PPLUS
and THKOX
labels TAP
labels TAPPIN port
templayer mvpsdexpand mvpsdarea
grow 500
# Copy psub areas up for contact checks
templayer xpsubcheck psubcheck
copyup psubcheck
templayer mvxpsubcheck mvpsubcheck
copyup mvpsubcheck
layer psd TAP
and-not PPLUS
and-not NPLUS
and-not POLY
and-not THKOX
and-not pfetexpand
and psdexpand
layer nsd TAP
and-not PPLUS
and-not NPLUS
and-not POLY
and-not THKOX
and nsdexpand
layer mvpsd TAP
and-not PPLUS
and-not NPLUS
and-not POLY
and THKOX
and-not mvpfetexpand
and mvpsdexpand
layer mvnsd TAP
and-not PPLUS
and-not NPLUS
and-not POLY
and THKOX
and mvnsdexpand
templayer hresarea POLY
and RPM
grow 3000
templayer uresarea POLY
and URPM
grow 3000
templayer diffresarea DIFFRES
and-not THKOX
grow 3000
templayer mvdiffresarea DIFFRES
and THKOX
grow 3000
templayer resarea diffresarea,mvdiffresarea,hresarea,uresarea
layer pfet POLY
and DIFF
and diffresarea
and-not NPLUS
and-not STDCELL
layer scpfet POLY
and DIFF
and diffresarea
and-not NPLUS
and STDCELL
templayer xpolyterm RPM,URPM
and POLY
and-not POLYRES
# add back the 0.06um contact surround in the direction of the resistor
grow 60
and POLY
layer xpc xpolyterm
templayer polyarea POLY
and-not POLYRES
and-not POLYSHORT
and-not DIFF
and-not RPM
and-not URPM
copyup polycheck
layer poly polyarea,POLYTXT,POLYPIN
labels POLY
labels POLYTXT text
labels POLYPIN port
# Copy (non-resistor) poly areas up for contact checks
templayer xpolycheck polycheck
copyup polycheck
layer mrp1 POLY
and POLYRES
and-not RPM
and-not URPM
labels POLY
layer rmp POLY
and POLYSHORT
labels POLY
layer xhrpoly POLY
and POLYRES
and RPM
and-not URPM
and PPLUS
and NPC
and-not xpolyterm
labels POLY
layer uhrpoly POLY
and POLYRES
and URPM
and-not RPM
and NPC
and-not xpolyterm
labels POLY
templayer ndcbase CONT
and DIFF
and NPLUS
and-not NWELL
and LI
and-not THKOX
layer ndc ndcbase
grow 85
shrink 85
shrink 85
grow 85
or ndcbase
labels CONT
templayer nscbase CONT
and DIFF,TAP
and NPLUS
and NWELL
and LI
and-not THKOX
layer nsc nscbase
grow 85
shrink 85
shrink 85
grow 85
or nscbase
labels CONT
templayer pdcbase CONT
and DIFF
and PPLUS
and NWELL
and LI
and-not THKOX
layer pdc pdcbase
grow 85
shrink 85
shrink 85
grow 85
or pdcbase
labels CONT
templayer pdcnowell CONT
and DIFF
and PPLUS
and pfetexpand
and LI
and-not THKOX
layer pdc pdcnowell
grow 85
shrink 85
shrink 85
grow 85
or pdcnowell
labels CONT
templayer pscbase CONT
and DIFF,TAP
and PPLUS
and-not NWELL
and-not pfetexpand
and LI
and-not THKOX
layer psc pscbase
grow 85
shrink 85
shrink 85
grow 85
or pscbase
labels CONT
templayer pcbase CONT
and POLY
and-not DIFF
and-not RPM,URPM
and LI
layer pc pcbase
grow 85
shrink 85
shrink 85
grow 85
or pcbase
labels CONT
templayer ndicbase CONT
and DIFF
and NPLUS
and DIODE
and-not POLY
and-not PPLUS
and-not THKOX
and-not LVTN
layer ndic ndicbase
grow 85
shrink 85
shrink 85
grow 85
or ndicbase
labels CONT
templayer ndilvtcbase CONT
and DIFF
and NPLUS
and DIODE
and-not POLY
and-not PPLUS
and-not THKOX
and LVTN
layer ndilvtc ndilvtcbase
grow 85
shrink 85
shrink 85
grow 85
or ndilvtcbase
labels CONT
templayer pdicbase CONT
and DIFF
and PPLUS
and DIODE
and-not POLY
and-not NPLUS
and-not THKOX
and-not LVTN
and-not HVTP
layer pdic pdicbase
grow 85
shrink 85
shrink 85
grow 85
or pdicbase
labels CONT
templayer pdilvtcbase CONT
and DIFF
and PPLUS
and DIODE
and-not POLY
and-not NPLUS
and-not THKOX
and LVTN
and-not HVTP
layer pdilvtc pdilvtcbase
grow 85
shrink 85
shrink 85
grow 85
or pdilvtcbase
labels CONT
templayer pdihvtcbase CONT
and DIFF
and PPLUS
and DIODE
and-not POLY
and-not NPLUS
and-not THKOX
and-not LVTN
and HVTP
layer pdihvtc pdihvtcbase
grow 85
shrink 85
shrink 85
grow 85
or pdihvtcbase
labels CONT
templayer mvndcbase CONT
and DIFF
and NPLUS
and-not NWELL
and LI
and THKOX
layer mvndc mvndcbase
grow 85
shrink 85
shrink 85
grow 85
or mvndcbase
labels CONT
templayer mvnscbase CONT
and DIFF,TAP
and NPLUS
and NWELL
and LI
and THKOX
layer mvnsc mvnscbase
grow 85
shrink 85
shrink 85
grow 85
or mvnscbase
labels CONT
templayer mvpdcbase CONT
and DIFF
and PPLUS
and NWELL
and LI
and THKOX
layer mvpdc mvpdcbase
grow 85
shrink 85
shrink 85
grow 85
or mvpdcbase
labels CONT
templayer mvpdcnowell CONT
and DIFF
and PPLUS
and mvpfetexpand
and MET1
and THKOX
layer mvpdc mvpdcnowell
grow 85
shrink 85
shrink 85
grow 85
or mvpdcnowell
labels CONT
templayer mvpscbase CONT
and DIFF,TAP
and PPLUS
and-not NWELL
and-not mvpfetexpand
and LI
and THKOX
layer mvpsc mvpscbase
grow 85
shrink 85
shrink 85
grow 85
or mvpscbase
labels CONT
templayer mvndicbase CONT
and DIFF
and NPLUS
and DIODE
and-not POLY
and-not PPLUS
and-not LVTN
and THKOX
layer mvndic mvndicbase
grow 85
shrink 85
shrink 85
grow 85
or mvndicbase
labels CONT
templayer nndicbase CONT
and DIFF
and NPLUS
and DIODE
and-not POLY
and-not PPLUS
and LVTN
and THKOX
layer nndic nndicbase
grow 85
shrink 85
shrink 85
grow 85
or nndicbase
labels CONT
templayer mvpdicbase CONT
and DIFF
and PPLUS
and DIODE
and-not POLY
and-not NPLUS
and THKOX
layer mvpdic mvpdicbase
grow 85
shrink 85
shrink 85
grow 85
or mvpdicbase
labels CONT
layer locali LI,LITXT,LIPIN
and-not LIRES,LISHORT
and-not COREID
labels LI
labels LITXT text
labels LIPIN port
layer coreli LI,LITXT,LIPIN
and-not LIRES,LISHORT
and COREID
labels LI
labels LITXT text
labels LIPIN port
layer rli LI
and LIRES,LISHORT
labels LIRES,LISHORT
layer lic MCON
grow 95
shrink 95
shrink 85
grow 85
or MCON
labels MCON
layer m1 MET1,MET1TXT,MET1PIN
and-not MET1RES,MET1SHORT
labels MET1
labels MET1TXT text
labels MET1PIN port
layer rm1 MET1
and MET1RES,MET1SHORT
labels MET1RES,MET1SHORT
layer m1fill MET1FILL
labels MET1FILL
layer mimcap MET3
and CAPM
labels CAPM
layer mimcc VIA3
and CAPM
grow 60
grow 40
shrink 40
labels CAPM
layer mimcap2 MET4
and CAPM2
labels CAPM2
layer mim2cc VIA4
and CAPM2
grow 190
grow 210
shrink 210
labels CAPM2
templayer m2cbase VIA1
grow 55
layer m2c m2cbase
grow 30
shrink 30
shrink 130
grow 130
or m2cbase
layer m2 MET2,MET2TXT,MET2PIN
and-not MET2RES,MET2SHORT
labels MET2
labels MET2TXT text
labels MET2PIN port
layer rm2 MET2
and MET2RES,MET2SHORT
labels MET2RES,MET2SHORT
layer m2fill MET2FILL
labels MET2FILL
templayer m3cbase VIA2
grow 40
layer m3c m3cbase
grow 60
shrink 60
shrink 140
grow 140
or m3cbase
layer m3 MET3,MET3TXT,MET3PIN
and-not MET3RES,MET3SHORT
and-not CAPM
labels MET3
labels MET3TXT text
labels MET3PIN port
layer rm3 MET3
and MET3RES,MET3SHORT
labels MET3RES,MET3SHORT
layer m3fill MET3FILL
labels MET3FILL
templayer via3base VIA3
and-not CAPM
grow 60
layer via3 via3base
grow 40
shrink 40
shrink 160
grow 160
or via3base
layer m4 MET4,MET4TXT,MET4PIN
and-not MET4RES,MET4SHORT
and-not CAPM2
labels MET4
labels MET4TXT text
labels MET4PIN port
layer rm4 MET4
and MET4RES,MET4SHORT
labels MET4RES,MET4SHORT
layer m4fill MET4FILL
labels MET4FILL
layer m5 MET5,MET5TXT,MET5PIN
and-not MET5RES,MET5SHORT
labels MET5
labels MET5TXT text
labels MET5PIN port
layer rm5 MET5
and MET5RES,MET5SHORT
labels MET5RES,MET5SHORT
layer m5fill MET5FILL
labels MET5FILL
templayer via4base VIA4
and-not CAPM2
grow 190
layer via4 via4base
grow 210
shrink 210
shrink 590
grow 590
or via4base
layer metrdl RDL,RDLTXT,RDLPIN
labels RDL
labels RDLTXT text
labels RDLPIN port
# Find diffusion not covered in
# NPLUS or PPLUS and pull it into
# the next layer up
templayer gentrans DIFF
and-not PPLUS
and-not NPLUS
and POLY
copyup DIFF,POLY
templayer gendiff DIFF,TAP
and-not PPLUS
and-not NPLUS
and-not POLY
copyup DIFF
# Handle contacts found by copyup
templayer ndiccopy CONT
and LI
and DIODE
and NPLUS
and-not THKOX
layer ndic ndiccopy
grow 85
shrink 85
shrink 85
grow 85
or ndiccopy
labels CONT
templayer mvndiccopy CONT
and LI
and DIODE
and NPLUS
and THKOX
layer mvndic mvndiccopy
grow 85
shrink 85
shrink 85
grow 85
or mvndiccopy
labels CONT
templayer pdiccopy CONT
and LI
and DIODE
and PPLUS
and-not THKOX
layer pdic pdiccopy
grow 85
shrink 85
shrink 85
grow 85
or pdiccopy
labels CONT
templayer mvpdiccopy CONT
and LI
and DIODE
and PPLUS
and THKOX
layer mvpdic mvpdiccopy
grow 85
shrink 85
shrink 85
grow 85
or mvpdiccopy
labels CONT
templayer ndccopy CONT
and ndifcheck
layer ndc ndccopy
grow 85
shrink 85
shrink 85
grow 85
or ndccopy
labels CONT
templayer mvndccopy CONT
and mvndifcheck
layer mvndc mvndccopy
grow 85
shrink 85
shrink 85
grow 85
or mvndccopy
labels CONT
templayer pdccopy CONT
and pdifcheck
layer pdc pdccopy
grow 85
shrink 85
shrink 85
grow 85
or pdccopy
labels CONT
templayer mvpdccopy CONT
and mvpdifcheck
layer mvpdc mvpdccopy
grow 85
shrink 85
shrink 85
grow 85
or mvpdccopy
labels CONT
templayer pccopy CONT
and polycheck
layer pc pccopy
grow 85
shrink 85
shrink 85
grow 85
or pccopy
labels CONT
templayer nsccopy CONT
and nsubcheck
layer nsc nsccopy
grow 85
shrink 85
shrink 85
grow 85
or nsccopy
labels CONT
templayer mvnsccopy CONT
and mvnsubcheck
layer mvnsc mvnsccopy
grow 85
shrink 85
shrink 85
grow 85
or mvnsccopy
labels CONT
templayer psccopy CONT
and psubcheck
layer psc psccopy
grow 85
shrink 85
shrink 85
grow 85
or psccopy
labels CONT
templayer mvpsccopy CONT
and mvpsubcheck
layer mvpsc mvpsccopy
grow 85
shrink 85
shrink 85
grow 85
or mvpsccopy
labels CONT
# Find contacts not covered in
# metal and pull them into the
# next layer up
templayer gencont CONT
and LI
and-not DIFF,TAP
and-not POLY
and-not DIODE
and-not nsubcheck
and-not psubcheck
and-not mvnsubcheck
and-not mvpsubcheck
copyup CONT,LI
templayer barecont CONT
and-not LI
and-not nsubcheck
and-not psubcheck
and-not mvnsubcheck
and-not mvpsubcheck
copyup CONT
layer glass GLASS,PADTXT,PADPIN
labels GLASS
labels PADTXT text
labels PADPIN port
templayer boundary BOUND,STDCELL,PADCELL
boundary
layer comment LVSTEXT
labels LVSTEXT text
layer comment TTEXT
labels TTEXT text
layer fillblock FILLOBSM1,FILLOBSM2,FILLOBSM3,FILLOBSM4
labels FILLOBSM1,FILLOBSM2,FILLOBSM3,FILLOBSM4
# MOS Varactor
layer var POLY
and TAP
and NPLUS
and NWELL
and-not THKOX
and-not HVTP
# NOTE: Else forms a varactor that is not in the vendor netlist.
and-not COREID
labels POLY
layer varhvt POLY
and TAP
and NPLUS
and NWELL
and-not THKOX
and HVTP
labels POLY
layer mvvar POLY
and TAP
and NPLUS
and NWELL
and THKOX
labels POLY
calma NWELL 64 20
calma DIFF 65 20
calma DNWELL 64 18
calma PWRES 64 13
calma TAP 65 44
# LVTN
calma LVTN 125 44
# HVTP
calma HVTP 78 44
# SONOS (TUNM)
calma SONOS 80 20
# NPLUS = NSDM
calma NPLUS 93 44
# PPLUS = PSDM
calma PPLUS 94 20
# HVI
calma THKOX 75 20
# NPC
calma NPC 95 20
# P+ POLY MASK
calma RPM 86 20
calma URPM 79 20
calma LDNTM 11 44
calma HVNTM 125 20
# Poly resistor ID mark
calma POLYRES 66 13
# Diffusion resistor ID mark
calma DIFFRES 65 13
calma POLY 66 20
calma POLYMOD 66 83
# Diode ID mark
calma DIODE 81 23
# Bipolar NPN mark
calma NPNID 82 20
# Bipolar PNP mark
calma PNPID 82 20
# Capacitor ID
calma CAPID 82 64
# Core area ID mark
calma COREID 81 2
# Standard cell ID mark
calma STDCELL 81 4
# Padframe cell ID mark
calma PADCELL 81 3
# Seal ring ID mark
calma SEALID 81 1
# Low tap density ID mark
calma LOWTAPDENSITY 81 14
# LICON
calma CONT 66 44
calma LI 67 20
calma MCON 67 44
calma MET1 68 20
calma VIA1 68 44
calma MET2 69 20
calma VIA2 69 44
calma MET3 70 20
calma VIA3 70 44
calma MET4 71 20
calma VIA4 71 44
calma MET5 72 20
calma RDL 74 20
calma GLASS 76 20
calma SUBPIN 64 59
calma PADPIN 76 5
calma DIFFPIN 65 6
calma TAPPIN 65 5
calma WELLPIN 64 5
calma LIPIN 67 5
calma POLYPIN 66 5
calma MET1PIN 68 5
calma MET2PIN 69 5
calma MET3PIN 70 5
calma MET4PIN 71 5
calma MET5PIN 72 5
calma RDLPIN 74 5
calma LIRES 67 13
calma MET1RES 68 13
calma MET2RES 69 13
calma MET3RES 70 13
calma MET4RES 71 13
calma MET5RES 72 13
calma MET1FILL 68 28
calma MET2FILL 69 28
calma MET3FILL 70 28
calma MET4FILL 71 28
calma MET5FILL 72 28
calma POLYSHORT 66 15
calma LISHORT 67 15
calma MET1SHORT 68 15
calma MET2SHORT 69 15
calma MET3SHORT 70 15
calma MET4SHORT 71 15
calma MET5SHORT 72 15
calma SUBTXT 122 16
calma PADTXT 76 16
calma DIFFTXT 65 16
calma POLYTXT 66 16
calma WELLTXT 64 16
calma LITXT 67 16
calma MET1TXT 68 16
calma MET2TXT 69 16
calma MET3TXT 70 16
calma MET4TXT 71 16
calma MET5TXT 72 16
calma RDLPIN 74 16
calma BOUND 235 4
calma LVSTEXT 83 44
calma CAPM 89 44
calma CAPM2 97 44
calma FILLOBSM1 62 24
calma FILLOBSM2 105 52
calma FILLOBSM3 107 24
calma FILLOBSM4 112 4
end
#-----------------------------------------------------
# Digital flow maze router cost parameters
#-----------------------------------------------------
mzrouter
end
#-----------------------------------------------------
# Vendor DRC rules
#-----------------------------------------------------
drc
style drc variants (fast),(full),(routing)
scalefactor 10
cifstyle drc
variants (fast),(full)
#-----------------------------
# DNWELL
#-----------------------------
width dnwell 3000 "Deep N-well width < %d (Dnwell 2)"
spacing dnwell dnwell 6300 touching_ok "Deep N-well spacing < %d (Dnwell 3)"
spacing dnwell allnwell 4500 surround_ok \
"Deep N-well spacing to N-well < %d (Nwell 7)"
cifmaxwidth nwell_missing 0 bend_illegal \
"N-well overlap of Deep N-well < 0.4um outside, 1.03um inside (Nwell 5a, 7)"
cifmaxwidth dnwell_missing 0 bend_illegal \
"SONOS nFET must be in Deep N-well (Tunm 6a)"
#-----------------------------
# NWELL
#-----------------------------
width allnwell 840 "N-well width < %d (Nwell 1)"
spacing allnwell allnwell 1270 touching_ok "N-well spacing < %d (Nwell 2a)"
#-----------------------------
# DIFF
#-----------------------------
width *ndiff,nfet,scnfet,npd,npass,*nsd,*ndiode,ndiffres,*pdiff,pfet,scpfet,ppu,*psd,*pdiode,pdiffres \
150 "Diffusion width < %d (Diff/tap 1)"
width *mvndiff,mvnfet,mvnnfet,*mvndiode,*nndiode,mvndiffres,*mvpdiff,mvpfet,*mvpdiode 290 \
"MV Diffusion width < %d (Diff/tap 14)"
width *mvnsd,*mvpsd 150 "MV Tap width < %d (Diff/tap 1)"
extend *mvpsd *mvndiff 700 "MV Butting tap length < %d (Diff/tap 16)"
extend *mvnsd *mvpdiff 700 "MV Butting tap length < %d (Diff/tap 16)"
extend *psd *ndiff 290 "Butting tap length < %d (Diff/tap 4)"
extend *nsd *pdiff 290 "Butting tap length < %d (Diff/tap 4)"
width mvpdiffres 150 "MV P-Diffusion resistor width < %d (Diff/tap 14a)"
spacing alldifflv,var,varhvt alldifflv,var,varhvt 270 touching_ok \
"Diffusion spacing < %d (Diff/tap 3)"
spacing alldiffmvnontap,mvvar alldiffmvnontap,mvvar 300 touching_ok \
"MV Diffusion spacing < %d (Diff/tap 15a)"
spacing alldiffmv *mvnsd,*mvpsd 270 touching_ok \
"MV Diffusion to MV tap spacing < %d (Diff/tap 3)"
spacing *mvndiff,mvnfet,mvnnfet,*mvndiode,*nndiode,mvndiffres,mvvar *mvpsd 370 \
touching_ok "MV P-Diffusion to MV N-tap spacing < %d (Diff/tap 15b)"
spacing *mvnsd,*mvpdiff,mvpfet,mvvar,*mvpdiode *mvpsd,*psd 760 touching_illegal \
"MV Diffusion in N-well to P-tap spacing < %d (Diff/tap 20 + Diff/tap 17,19)"
spacing *ndiff,*ndiode,nfet allnwell 340 touching_illegal \
"N-Diffusion spacing to N-well < %d (Diff/tap 9)"
spacing *mvndiff,*mvndiode,mvnfet,mvnnfet allnwell 340 touching_illegal \
"N-Diffusion spacing to N-well < %d (Diff/tap 9)"
spacing *psd allnwell 130 touching_illegal \
"P-tap spacing to N-well < %d (Diff/tap 11)"
spacing *mvpsd allnwell 130 touching_illegal \
"P-tap spacing to N-well < %d (Diff/tap 11)"
surround *nsd allnwell 180 absence_illegal \
"N-well overlap of N-tap < %d (Diff/tap 10)"
surround *mvnsd allnwell 330 absence_illegal \
"N-well overlap of MV N-tap < %d (Diff/tap 19)"
surround *pdiff,*pdiode,pfet,scpfet,ppu allnwell 180 absence_illegal \
"N-well overlap of P-Diffusion < %d (Diff/tap 8)"
surround *mvpdiff,*mvpdiode,mvpfet allnwell 330 absence_illegal \
"N-well overlap of P-Diffusion < %d (Diff/tap 17)"
surround mvvar allnwell 560 absence_illegal \
"N-well overlap of MV varactor < %d (LVTN 10 + LVTN 4b)"
spacing *mvndiode *mvndiode 1070 touching_ok \
"MV N-diode spacing < %d (HVNTM.2 + 2 * HVNTM.3)"
# Butting junction rules
edge4way (*psd)/a ~(*ndiff,*psd)/a 125 ~(*ndiff)/a (*ndiff)/a 125 \
"N-Diffusion to P-tap spacing < %d across butted junction"
edge4way (*ndiff)/a ~(*ndiff,*psd)/a 125 ~(*psd)/a (*psd)/a 125 \
"N-Diffusion to P-tap spacing < %d across butted junction"
edge4way (*nsd)/a ~(*pdiff,*nsd)/a 125 ~(*pdiff)/a (*pdiff)/a 125 \
"P-Diffusion to N-tap spacing < %d across butted junction"
edge4way (*pdiff)/a ~(*pdiff,*nsd)/a 125 ~(*nsd)/a (*nsd)/a 125 \
"P-Diffusion to N-tap spacing < %d across butted junction"
edge4way (*mvpsd)/a ~(*mvndiff,*mvpsd)/a 125 ~(*mvndiff)/a (*mvndiff)/a 125 \
"MV N-Diffusion to MV P-tap spacing < %d across butted junction"
edge4way (*mvndiff)/a ~(*mvndiff,*mvpsd)/a 125 ~(*mvpsd)/a (*mvpsd)/a 125 \
"MV N-Diffusion to MV P-tap spacing < %d across butted junction"
edge4way (*mvnsd)/a ~(*mvpdiff,*mvnsd)/a 125 ~(*mvpdiff)/a (*mvpdiff)/a 125 \
"MV P-Diffusion to MV N-tap spacing < %d across butted junction"
edge4way (*mvpdiff)/a ~(*mvpdiff,*mvnsd)/a 125 ~(*mvnsd)/a (*mvnsd)/a 125 \
"MV P-Diffusion to MV N-tap spacing < %d across butted junction"
variants (full)
# Latchup rules
cifmaxwidth ptap_missing 0 bend_illegal \
"N-diff distance to P-tap must be < 15.0um (LU 2)"
cifmaxwidth dptap_missing 0 bend_illegal \
"N-diff distance to P-tap in deep Nwell must be < 15.0um (LU 2.1)"
cifmaxwidth ntap_missing 0 bend_illegal \
"P-diff distance to N-tap must be < 15.0um (LU 3)"
variants *
#-----------------------------
# POLY
#-----------------------------
width allpoly 150 "Poly width < %d (Poly 1a)"
spacing allpoly allpoly 210 touching_ok "Poly spacing < %d (Poly 2)"
spacing allpolynonfet alldifflvnonfet 75 corner_ok allfets \
"Poly spacing to Diffusion < %d (Poly 4a)"
spacing npres *nsd 480 touching_illegal \
"Poly resistor spacing to N-tap < %d (Poly 9)"
overhang *ndiff,rndiff nfet,scnfet,npd,npass 250 "N-Diffusion overhang of nmos < %d (Poly 7)"
overhang *mvndiff,mvrndiff mvnfet,mvnnfet 250 \
"N-Diffusion overhang of nmos < %d (Poly 7)"
overhang *pdiff,rpdiff pfet,scpfet,ppu 250 "P-Diffusion overhang of pmos < %d (Poly 7)"
overhang *mvpdiff,mvrpdiff mvpfet 250 "P-Diffusion overhang of pmos < %d (Poly 7)"
overhang *poly allfets 130 "Poly overhang of transistor < %d (Poly 8)"
rect_only allfets "No bends in transistors (Poly 11)"
rect_only xhrpoly,uhrpoly "No bends in poly resistors (Poly 11)"
extend xpc/a xhrpoly,uhrpoly 2160 \
"Poly contact extends poly resistor by < %d (LIcon 1c + LI 5)"
spacing xhrpoly,uhrpoly xhrpoly,uhrpoly 1240 touching_illegal \
"Distance between precision resistors < %d (RPM 2 + 2 * RPM 3)"
#--------------------------------------------------------------------
# NPC (Nitride Poly Cut)
#--------------------------------------------------------------------
# Layer NPC is defined automatically around poly contacts (grow 0.1um)
#--------------------------------------------------------------------
# CONT (LICON, contact between poly/diff and LI)
#--------------------------------------------------------------------
width ndc/li 170 "N-diffusion contact width < %d (LIcon 1)"
width nsc/li 170 "N-tap contact width < %d (LIcon 1)"
width pdc/li 170 "P-diffusion contact width < %d (LIcon 1)"
width psc/li 170 "P-tap contact width < %d (LIcon 1)"
width ndic/li 170 "N-diode contact width < %d (LIcon 1)"
width pdic/li 170 "P-diode contact width < %d (LIcon 1)"
width pc/li 170 "Poly contact width < %d (LIcon 1)"
width xpc/li 350 "Poly resistor contact width < %d (LIcon 1b + 2 * LI 5)"
width mvndc/li 170 "N-diffusion contact width < %d (LIcon 1)"
width mvnsc/li 170 "N-tap contact width < %d (LIcon 1)"
width mvpdc/li 170 "P-diffusion contact width < %d (LIcon 1)"
width mvpsc/li 170 "P-tap contact width < %d (LIcon 1)"
width mvndic/li 170 "N-diode contact width < %d (LIcon 1)"
width mvpdic/li 170 "P-diode contact width < %d (LIcon 1)"
spacing allpdiffcont allndiffcont 170 touching_illegal \
"Diffusion contact spacing < %d (LIcon 2)"
spacing allndiffcont allndiffcont 170 touching_ok \
"Diffusion contact spacing < %d (LIcon 2)"
spacing allpdiffcont allpdiffcont 170 touching_ok \
"Diffusion contact spacing < %d (LIcon 2)"
spacing pc pc 170 touching_ok "Poly1 contact spacing < %d (LIcon 2)"
spacing pc alldiff 190 touching_illegal \
"Poly contact spacing to diffusion < %d (LIcon 14)"
spacing pc allpfets 235 touching_illegal \
"Poly contact spacing to pFET < %d (LIcon 9 + PSDM 5a)"
spacing ndc,pdc nfet,pfet 55 touching_illegal \
"Diffusion contact to gate < %d (LIcon 11)"
spacing ndc,pdc scnfet,npd,npass,scpfet,ppu 50 touching_illegal \
"Diffusion contact to standard cell gate < %d (LIcon 11)"