###
###	Source file TECHNAME.tech
###	Process this file with the preproc.py macro processor
###
#----------------------------------------------------------
# Copyright (c) 2022 Efabless, Inc.
# Techfile created by R. Timothy Edwards for the Google/
# Global Foundries Open PDK project.
#
#----------------------------------------------------------
# This file is designed to be used with magic
# versions 8.3 or newer.
#
# Rules reflect lambda = 0.05um.  Minimum grid is 0.005um
#----------------------------------------------------------
tech
  format 34
  TECHNAME
end

version
 version REVISION
 description "Global Foundries 180mcu: open PDK rules and DRC"
 requires magic-8.3.353
end

#-----------------------------------------------------
# Tile planes
#-----------------------------------------------------

planes
  dwell,dw
  well,w
  active,a
  metal1,m1
  metal2,m2
#ifdef METALS3 || METALS4 || METALS5 || METALS6
  metal3,m3
#endif (METALS3 || METALS4 || METALS5 || METALS6)
#ifdef METALS4 || METALS5 || METALS6
  metal4,m4
#endif (METALS4 || METALS5 || METALS6)
#ifdef METALS5 || METALS6
  metal5,m5
#endif (METALS5 || METALS6)
#ifdef METALS6
  metaltp,mtp
#endif (METALS6)
  block,b
  comment,c
end

#-----------------------------------------------------
# Tile types
#-----------------------------------------------------

types
# Deep nwell
  dwell deepnwell,dnwell,dnw
  dwell isosubstrate,isosub

# Wells outside deep nwell
  well nwell,nw
  well pwell,pw
# Well obstruction layer
 -well obswell
# Well resistors
  well rnw,rnwell

# Transistors
  active nmos,ntransistor,nfet
  active pmos,ptransistor,pfet
  active nnmos,nntransistor,nnfet
  active mvnmos,mvntransistor,mvnfet
  active mvpmos,mvptransistor,mvpfet
  active mvnnmos,mvnntransistor,mvnnfet
# 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
# Varactors
  active nvaractor,nvaract,nvar
  active pvaractor,pvaract,pvar
  active mvnvaractor,mvnvaract,mvnvar
  active mvpvaractor,mvpvaract,mvpvar
# MOSCAPs
 -active nmoscap,ncap
 -active pmoscap,pcap
 -active mvnmoscap,mvncap
 -active mvpmoscap,mvpcap
# Poly
  active polysilicon,poly,p
  active polycontact,pcontact,polycut,pc,polyc
# Resistors
  active npolyres,npres,rnp
  active ppolyres,ppres,rpp
  active npolysilicide,nsresistor,nspres,rnps
  active ppolysilicide,psresistor,pspres,rpps
#ifdef HRPOLY1K
  active nhighres,nhires,hires
  active mvnhighres,mvnhires,mvhires
#endif (HRPOLY1K)
  active ndiffres,rnd,rdn,rndiff
  active pdiffres,rpd,rdp,rpdiff
  active ndiffsilicide,rnds,rdns,rndiffs
  active pdiffsilicide,rpds,rdps,rpdiffs
  active mvndiffres,mvrnd,mvrdn,mvrndiff
  active mvpdiffres,mvrpd,mvrdp,mvrpdiff
  active mvndiffsilicide,mvrnds,mvrdns,mvrndiffs
  active mvpdiffsilicide,mvrpds,mvrdps,mvrpdiffs
# 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 mvnndiode,mvnndi
  active mvpdiodec,mvpdic
  active mvndiodec,mvndic
  active mvnndiodec,mvnndic

 -active filldiff
 -active fillpoly

  metal1 metal1,m1,met1
  metal1 rmetal1,rm1,rmet1
 -metal1 m1hole
  metal1 via1,m2contact,m2cut,m2c,via,v,v1
 -metal1 obsm1
 -metal1 fillm1
 -metal1 obsv1
  metal1 padl

  metal2 metal2,m2,met2
  metal2 rmetal2,rm2,rmet2
 -metal2 m2hole
  metal2 via2,m3contact,m3cut,m3c,v2
 -metal2 obsm2
 -metal2 fillm2
 -metal2 obsv2
#ifdef MIM
#ifdef METALS3
  metal2 mimcap,mim,capm
  metal2 mimcapcontact,mimcapc,mimcc,capmc
#elseif defined(METALS4)
  metal3 mimcap,mim,capm
  metal3 mimcapcontact,mimcapc,mimcc,capmc
#elseif defined(METALS5)
  metal4 mimcap,mim,capm
  metal4 mimcapcontact,mimcapc,mimcc,capmc
#elseif defined(METALS6)
  metal5 mimcap,mim,capm
  metal5 mimcapcontact,mimcapc,mimcc,capmc
#endif
#endif (MIM)

#ifdef METALS3 || METALS4 || METALS5 || METALS6
  metal3 metal3,m3,met3
  metal3 rmetal3,rm3,rmet3
 -metal3 m3hole
 -metal3 obsm3
 -metal3 fillm3
#endif (METALS3 || METALS4 || METALS5 || METALS6)
#ifdef METALS4 || METALS5 || METALS6
  metal3 via3,v3

  metal4 metal4,m4,met4
  metal4 rmetal4,rm4,rmet4
 -metal4 m4hole
 -metal4 obsm4
 -metal4 fillm4
#endif (METALS4 || METALS5 || METALS6)
#ifdef (METALS5 || METALS6)
  metal4 via4,v4

  metal5 metal5,m5,met5
  metal5 rm5,rmetal5,rmet5
 -metal5 m5hole
 -metal5 obsm5
 -metal5 fillm5
#endif (METALS5 || METALS6)
#ifdef METALS6
  metal5 viatp,vtp

  metaltp metaltp,mtp,mettp
  metaltp rmtp,rmetaltp,rmettp
 -metaltp mtphole
 -metaltp obsmtp
 -metaltp fillmtp
#endif (METALS6)

  block  glass
  block  fillblock

 -comment lvstext
  comment comment
 -comment obscomment

end

#-----------------------------------------------------
# Magic contact types
#-----------------------------------------------------

contact
  pc poly metal1
  ndc ndiff metal1
  pdc pdiff metal1
  nsc nsd metal1
  psc psd metal1
  ndic ndiode metal1
  nndic nndiode metal1
  pdic pdiode metal1

  mvndc mvndiff metal1
  mvpdc mvpdiff metal1
  mvnsc mvnsd metal1
  mvpsc mvpsd metal1
  mvndic mvndiode metal1
  mvpdic mvpdiode metal1
  mvnndic mvnndiode metal1

  via1 metal1 metal2
#ifdef METALS3 || METALS4 || METALS5 || METALS6
  via2 metal2 metal3
#endif (METALS3 || METALS4 || METALS5 || METALS6)
#ifdef METALS4 || METALS5 || METALS6
  via3 metal3 metal4
#endif (METALS4 || METALS5 || METALS6)
#ifdef METALS5 || METALS6
  via4  metal4 metal5
#endif (METALS5 || METALS6)
#ifdef METALS6
  viatp metal5 metaltp
#endif (METALS6)

#ifdef MIM
#ifdef METALS3
  mimcc mimcap metal3
#elseif defined(METALS4)
  mimcc mimcap metal4
#elseif defined(METALS5)
  mimcc mimcap metal5
#elseif defined(METALS6)
  mimcc mimcap metaltp
#endif
#endif (MIM)
  stackable

#ifdef METALS3
  padl m1 m2 m3 glass
#elseif defined(METALS4)
  padl m1 m2 m3 m4 glass
#elseif defined(METALS5)
  padl m1 m2 m3 m4 m5 glass
#elseif defined(METALS6)
  padl m1 m2 m3 m4 m5 mtp glass
#else
  padl m1 m2 glass
#endif
end

#-----------------------------------------------------
# Layer aliases
#-----------------------------------------------------

aliases

  allnwell	   nwell,rnwell

  allpsub	   space/w,pwell

  # Similar to allpsub* but does not include space-on-well-plane
  allpwell	   pwell

  # Allsubwell contains space-on-well-plane but not obstruction-on-well-plane
  # Used for defining anything under a device that does not touch active/substrate 
  allsubwell	   allnwell,allpsub
  # Allwells contains obstruction-on-well-plane but not space-on-well-plane
  allwells         allnwell,allpwell,obswell

  allnfets	   nfet,mvnfet,nnfet,mvnnfet,ncap,mvncap
  allnfetsnonnat   nfet,mvnfet,ncap,mvncap
  allpfets	   pfet,mvpfet,pcap,mvpcap
  allfets	   allnfets,allpfets,nvaractor,mvnvaractor,pvaractor,mvpvaractor
  allfetsnonnat	   allnfetsnonnat,allpfets,nvaractor,mvnvaractor,pvaractor,mvpvaractor
  allfetsmv	   mvnfet,mvpfet,mvnnfet,mvnvaractor,mvpvaractor,mvncap,mvpcap

  allnactivenonfet *ndiff,*nsd,*ndiode,*nndiode,*mvndiff,*mvnsd,*mvndiode,*mvnndiode
  allnactive	   allnactivenonfet,allnfets

  allpactivenonfet *pdiff,*psd,*pdiode,*mvpdiff,*mvpsd,*mvpdiode
  allpactive	   allpactivenonfet,allpfets

  allactivenonfet  allnactivenonfet,allpactivenonfet
  allactive	   allactivenonfet,allfets

  allactiveres	   ndiffres,pdiffres,mvndiffres,mvpdiffres

  allndifflv       *ndif,*nsd,*ndiode,*nndiode,ndiffres,nfet,nnfet,ncap
  allpdifflv       *pdif,*psd,*pdiode,pdiffres,pfet,pcap
  alldifflv        allndifflv,allpdifflv
  allndifflvnonfet *ndif,*nsd,*ndiode,*nndiode,ndiffres
  allpdifflvnonfet *pdif,*psd,*pdiode,pdiffres
  alldifflvnonfet  allndifflvnonfet,allpdifflvnonfet

  allndiffmv       *mvndif,*mvnsd,*mvndiode,mvndiffres,mvnfet,mvnnfet,mvnvaractor,*mvnndiode,mvncap
  allpdiffmv       *mvpdif,*mvpsd,*mvpdiode,mvpdiffres,mvpfet,mvpvaractor,mvpcap
  alldiffmv        allndiffmv,allpdiffmv
  allndiffmvnonfet *mvndif,*mvnsd,*mvndiode,mvndiffres,*mvnndiode
  allpdiffmvnonfet *mvpdif,*mvpsd,*mvpdiode,mvpdiffres
  alldiffmvnonfet  allndiffmvnonfet,allpdiffmvnonfet

  alldiffnonfet	   alldifflvnonfet,alldiffmvnonfet
  alldiff	   alldifflv,alldiffmv

#ifdef HRPOLY1K
  allpolyres	   rpp,rnp,rpps,rnps,hires,mvhires
  allpolysblkres   rpp,rnp,hires,mvhires
  allsblkdev	   rnp,rpp,rnd,rpd,hires,mvhires,mvrnd,mvrpd
#else (!HRPOLY1K)
  allpolyres	   rpp,rnp,rpps,rnps
  allpolysblkres   rpp,rnp
  allsblkdev	   rnp,rpp,rnd,rpd,mvrnd,mvrpd
#endif (!HRPOLY1K)

  allpolynonfet	   *poly,allpolyres
  allpolynonres	   *poly,allfets

  allpoly	   allpolynonfet,allfets
  allpolynoncap	   *poly,allfets,allpolyres

  allndiffcontlv   ndc,nsc,ndic,nndic
  allpdiffcontlv   pdc,psc,pdic
  allndiffcontmv   mvndc,mvnsc,mvndic,mvnndic
  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
  alldiode	   *pdiode,*ndiode,*nndiode,*mvpdiode,*mvndiode,*mvnndiode

  allm1		   *m1,rm1
  allm2		   *m2,rm2

#ifdef METALS3 || METALS4 || METALS5 || METALS6
#ifdef MIM && METALS4
  allm3		   *m3,rm3,*mimcap
#else (!(MIM && METALS4))
  allm3		   *m3,rm3
#endif (!(MIM && METALS4))
#endif (METALS3 || METALS4 || METALS5 || METALS6)

#ifdef METALS4 || METALS5 || METALS6
#ifdef MIM && METALS5
  allm4	   	*m4,rm4,*mimcap
#else (!(MIM && METALS5))
  allm4	   	*m4,rm4
#endif (!(MIM && METALS5))
#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS5 || METALS6
#ifdef MIM && METALS6
  allm5	   	*m5,rm5,*mimcap
#else (!(MIM && METALS6))
  allm5	   	*m5,rm5
#endif (!(MIM && METALS6))
#endif (METALS5 || METALS6)

#ifdef METALS6
  allmtp	*mtp,rmtp
#endif (METALS6)

  allpad	   padl
end

#-----------------------------------------------------
# Layer drawing styles
#-----------------------------------------------------

styles
 styletype mos
  dnwell    cwell
  isosub    subcircuit

  nwell     nwell
  rnwell    nwell 	ntransistor_stripes
  pwell	    pwell

  ndiff     ndiffusion
  pdiff     pdiffusion
  nsd       ndiff_in_nwell
  psd       pdiff_in_pwell
  nfet      ntransistor    ntransistor_stripes
  nnfet     ntransistor    ndiff_in_nwell
  pfet      ptransistor    ptransistor_stripes
  nvar      polysilicon    ndiff_in_nwell
  pvar      polysilicon    pdiff_in_pwell
  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
  ncap      ntransistor    ntransistor_stripes
  pcap      ptransistor    ptransistor_stripes

  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
  mvnvar      polysilicon    ndiff_in_nwell hvndiff_mask
  mvpvar      polysilicon    pdiff_in_pwell hvpdiff_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
  mvncap      ntransistor    ntransistor_stripes hvndiff_mask
  mvpcap      ptransistor    ptransistor_stripes

  poly      polysilicon 
  pc        polysilicon    metal1  contact_X'es
  npolyres  polysilicon    silicide_block nselect2
  ppolyres  polysilicon    silicide_block pselect2

  pdiode    pdiffusion     pselect2
  ndiode    ndiffusion     nselect2
  nndiode   ndiff_in_nwell nselect2
  pdiodec   pdiffusion     pselect2 metal1 contact_X'es
  ndiodec   ndiffusion     nselect2 metal1 contact_X'es
  nndiodec  ndiff_in_nwell nselect2 metal1 contact_X'es

  mvpdiode    pdiffusion     pselect2 hvpdiff_mask
  mvndiode    ndiffusion     nselect2 hvndiff_mask
  mvnndiode   ndiff_in_nwell nselect2 hvndiff_mask
  mvpdiodec   pdiffusion     pselect2 metal1 contact_X'es hvpdiff_mask
  mvndiodec   ndiffusion     nselect2 metal1 contact_X'es hvndiff_mask
  mvnndiodec  ndiff_in_nwell nselect2 metal1 contact_X'es hvndiff_mask

  metal1    metal1
  rm1       metal1         poly_resist_stripes
  obsm1     metal1
  fillm1    metal1
  obsv1     metal1	   metal2  via1arrow
  m1hole    obsmetal1
  m2c       metal1         metal2  via1arrow
  metal2    metal2
  rm2       metal2         poly_resist_stripes
  obsm2     metal2
  fillm2    metal2
  obsv2     metal2	   metal3  via2arrow
  m2hole    obsmetal2
#ifdef METALS3 || METALS4 || METALS5 || METALS6
  m3c       metal2         metal3  via2arrow
  metal3    metal3
  rm3       metal3         poly_resist_stripes
  obsm3     metal3
  fillm3    metal3
  m3hole    obsmetal3
#endif (METALS3 || METALS4 || METALS5 || METALS6)
#ifdef METALS4 || METALS5 || METALS6
  via3      metal3         metal4  via3alt
  metal4    metal4
  rm4       metal4         poly_resist_stripes
  obsm4     metal4
  fillm4    metal4
  m4hole    obsmetal4
#endif (METALS4 || METALS5 || METALS6)
#ifdef METALS5 || METALS6
  via4      metal4         metal5  via4
  metal5    metal5
  rm5       metal5         poly_resist_stripes
  obsm5     metal5
  fillm5    metal5
  m5hole    obsmetal5
#endif (METALS5 || METALS6)
#ifdef METALS6
  viatp     metal5         metal6  via5
  metaltp   metal6
  rmtp      metal6         poly_resist_stripes
  obsmtp    metal6
  fillmtp   metal6
  mtphole   obsmetal6
#endif (METALS6)

#ifdef MIM
#ifdef METALS3
  mimcap    metal2         mems
  mimcc     metal2         contact_X'es mems
#elseif defined(METALS4)
  mimcap    metal3         mems
  mimcc     metal3         contact_X'es mems
#elseif defined(METALS5)
  mimcap    metal4         mems
  mimcc     metal4         contact_X'es mems
#elseif defined(METALS6)
  mimcap    metal5         mems 
  mimcc     metal5         contact_X'es mems
#endif
#endif (MIM)
  glass	    overglass
  rnp       poly_resist    poly_resist_stripes	ndop_stripes
  rpp       poly_resist    poly_resist_stripes	pdop_stripes
  rnps      poly_resist    ndop_stripes
  rpps      poly_resist    pdop_stripes
#ifdef HRPOLY1K
  nhighres  poly_resist    silicide_block
  mvnhighres  poly_resist  silicide_block  hvndiff_mask
#endif (HRPOLY1K)
  ndiffres  ndiffusion	   ndop_stripes
  pdiffres  pdiffusion	   pdop_stripes
  mvndiffres  ndiffusion hvndiff_mask   ndop_stripes
  mvpdiffres  pdiffusion hvpdiff_mask   pdop_stripes
  comment   comment
  lvstext   comment
  error_p   error_waffle
  error_s   error_waffle
  error_ps  error_waffle
  fillblock cwell

  obswell   cwell
  obsactive implant4
  filldiff  ndiffusion
  fillpoly  polysilicon

#ifdef METALS3
  padl      metal3 via3 overglass
#elseif defined(METALS4)
  padl      metal4 via4 overglass
#elseif defined(METALS5)
  padl      metal5 via5 overglass
#elseif defined(METALS6)
  padl      metal6 via6 overglass
#else
  padl      metal2 via2 overglass
#endif

  magnet    substrate_field_implant
  rotate    via3alt
  fence     via5
end

#-----------------------------------------------------
# Special paint/erase rules
#-----------------------------------------------------

compose
  compose  nfet  poly  ndiff
  compose  pfet  poly  pdiff
  compose  nvar  poly  nsd
  compose  pvar  poly  psd

  compose  mvnfet  poly  mvndiff
  compose  mvpfet  poly  mvpdiff
  compose  mvnvar  poly  mvnsd
  compose  mvpvar  poly  mvpsd
  
#ifdef MIM
#ifdef METALS3
  paint  mimcap  m2     mimcap
  paint  mimcapc m2     mimcapc
#elseif defined(METALS4)
  paint  mimcap  m3     mimcap
  paint  mimcapc m3     mimcapc
#elseif defined(METALS5)
  paint  mimcap  m4     mimcap
  paint  mimcapc m4     mimcapc
#elseif defined(METALS6)
  paint  mimcap  m5     mimcap
  paint  mimcapc m5     mimcapc
#endif
#endif (MIM)
  paint  ndc     nwell  pdc
  paint  nfet    nwell  pfet
  paint  ndiff   nwell  pdiff
  paint  psd     nwell  nsd
  paint  psc     nwell  nsc
  paint  pdc     pwell  ndc
  paint  pfet    pwell  nfet
  paint  pdiff   pwell  ndiff
  paint  nsd     pwell  psd
  paint  nsc     pwell  psc

  paint  m1      obsm1  m1
  paint  m2      obsm2  m2
#ifdef METALS3 || METALS4 || METALS5 || METALS6
  paint  m3      obsm3  m3
#endif (METALS3 || METALS4 || METALS5 || METALS6)
#ifdef METALS4 || METALS5 || METALS6
  paint  m4      obsm4  m4
#endif (METALS4 || METALS5 || METALS6)
#ifdef METALS5 || METALS6
  paint  m5      obsm5  m5
#endif (METALS5 || METALS6)
#ifdef METALS6
  paint  mtp     obsmtp mtp
#endif (METALS6)
end

#-----------------------------------------------------
# Electrical connectivity
#-----------------------------------------------------

connect
  nwell,*nsd,*mvnsd nwell,*nsd,*mvnsd
  pwell,*psd,*mvpsd,isosub  pwell,*psd,*mvpsd,isosub
  *psd,*mvpsd  *psd,*mvpsd
  *m1	*m1
  *m2	*m2
#ifdef METALS3 || METALS4 || METALS5 || METALS6
  *m3	*m3
#endif (METALS3 || METALS4 || METALS5 || METALS6)
#ifdef METALS4 || METALS5 || METALS6
  *m4	*m4
#endif (METALS4 || METALS5 || METALS6)
#ifdef METALS5 || METALS6
  *m5	*m5
#endif (METALS5 || METALS6)
#ifdef METAL6
  *mtp	*mtp
#endif (METALS6)
#ifdef MIM
  *mimcap     *mimcap
#endif (MIM)
   allnactivenonfet	allnactivenonfet
   allpactivenonfet	allpactivenonfet
  *poly,allfets		*poly,allfets
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
#-----------------------------------------------------
 scalefactor 50 nanometers
 options calma-permissive-labels
 gridlimit 5

# This section used for actual GDSII output 

#-----------------------------------------------------
# DNWELL
#-----------------------------------------------------
 layer DNWELL	dnwell
	calma	12 0

#-----------------------------------------------------
# SUBCUT
#-----------------------------------------------------
 layer SUBCUT	isosub
	calma	23 5

#-----------------------------------------------------
# NWELL
#-----------------------------------------------------
 layer NWELL 	allnwell
	labels  allnwell noport
	close	1000000
 	calma 	21 0

 layer NWELLTXT
	labels  allnwell port
	calma	21 10

#-----------------------------------------------------
# PWELL (LVPWELL)
#-----------------------------------------------------
 layer PWELL 	pwell
 	labels 	pwell noport
 	calma 	204 0

 layer PWELLTXT
	labels  pwell port
	calma	204 10

#-----------------------------------------------------
# DIFF (COMP)
#-----------------------------------------------------
 layer DIFF 	alldiff
 	labels 	alldiff
 	calma 	22 0

 layer DIFFFILL	filldiff
	labels	filldiff
	calma	22 4

#-----------------------------------------------------
# PPLUS, NPLUS
#-----------------------------------------------------

#ifdef HRPOLY1K
 layer RESDEF
	bloat-or hires,mvhires * 280 poly 0
	grow 200
	shrink 200
 	calma 110 5

 # hires requires PPLUS around terminals
 templayer HRTERM
	bloat-all hires,mvhires *poly
	and-not hires,mvhires

 layer SBLK
	bloat-or hires,mvhires * 280 poly 100
 	calma 	49 0
#endif (HRPOLY1K)

 # rnps requires NPLUS
 # rnp  requires NPLUS
 # rnd  requires NPLUS

 layer NPLUS
 	bloat-all rnps *poly
 	bloat-all rnp  *poly
 	bloat-all rnd  *ndiff
	grow 200
	grow 200
	shrink 200
	calma   32 0

 # standard generation of NPLUS

 templayer nwell_shrink nwell
	shrink 430

 templayer shortntap *nsd,*mvnsd
	and-not dnwell
	and-not nwell_shrink
	grow 160

 templayer shortdntap dnwell
	and pwell
	grow 430
        and *nsd,*mvnsd
	grow 160

 layer NPLUS
        bloat-or *ndif,*ndiode,*nndiode,ndiffres,*mvndif,*mvndiode,*mvnndiode,mvndiffres * 160 allpactivenonfet 0
        # NOTE:  Rule CO.5a applies to butted contacts but Calibre rule is
	# implemented for all contacts, so the Calibre rule is being followed.
        bloat-or nsc,mvnsc * 95
        bloat-or *nsd,*mvnsd * 20 allpactivenonfet 0
	bloat-or allnfets,nvar,mvnvar * 230
	or shortntap,shortdntap
	grow 	200 
	shrink 200
	mask-hints NPLUS
	calma   32 0

 # rpps requires PPLUS
 # rpp  requires PPLUS
 # rpd  requires PPLUS

 layer PPLUS
 	bloat-all rpps *poly
 	bloat-all rpp  *poly
 	bloat-all rpd  *pdiff
	grow 200
	grow 200
	shrink 200
	mask-hints PPLUS
	calma   31 0

 # standard generation of PPLUS, including hires resistors

 templayer shortptap nwell
	and-not dnwell
	grow 430
	and *psd,*mvpsd
	grow 160

 templayer pwell_shrink pwell
	and dnwell
	shrink 430

 templayer shortdptap *psd,*mvpsd
	and dnwell
	and-not pwell_shrink
	grow 160

 layer PPLUS
#ifdef HRPOLY1K
	or HRTERM
	grow 200
	and-not RESDEF
#endif (HRPOLY1K)
        bloat-or  *pdif,*pdiode,pdiffres,pfet,pcap,*mvpdif,*mvpdiode,mvpdiffres,mvpfet,mvpcap * 160 allnactivenonfet 0
        # NOTE:  Rule CO.5b applies to butted contacts but Calibre rule is
	# implemented for all contacts, so the Calibre rule is being followed.
        bloat-or psc,mvpsc * 95
        bloat-or *psd,*mvpsd * 20 allnactivenonfet 0
	bloat-or allpfets,pvar,mvpvar * 230
	or shortptap,shortdptap
	grow	200
	shrink	200
	calma	31 0

#-----------------------------------------------------
# DUALGATE (thickox)
#-----------------------------------------------------

 layer DUALGATE allfetsmv
	bloat-all mvhires *poly
	# Rule DV.8 (DUALGATE around poly)
	grow 400
	# Rule DV.6 (DUALGATE around diff, LV substrate tap excepted)
	bloat-or allndiffmv * 240 *psd 0
	bloat-or allpdiffmv * 240
	grow 219
	shrink 219
	mask-hints DUALGATE
	calma 55 0

 # DUALGATE completely covers deep nwell
 layer DUALGATE
	bloat-all alldiffmv dnwell
	grow 500
	grow 219
	shrink 219
	calma 55 0

#-----------------------------------------------------
# NAT
#-----------------------------------------------------

 layer  NAT	
	bloat-all *nndiode,nnfet *ndiff
	bloat-all *mvnndiode,mvnnfet *mvndiff
	grow 260
	grow 309
	shrink 309
	calma 5 0

#-----------------------------------------------------
# POLY
#-----------------------------------------------------
 layer POLY 	allpoly
	close	224000
 	labels 	allpoly noport
 	calma 	30 0

 layer POLYTXT
	labels  allpoly port
	calma	30 10

 layer POLYFILL	fillpoly
	labels	fillpoly
	calma	30 4

#-----------------------------------------------------
# CONT
#-----------------------------------------------------
# NOTE:  Contact arrays defined at 200 spacing for large array rule (4x4),
# otherwise spacing is 180

 layer contlarge allcont
	shrink 615
	grow 615

 layer CONT allcont
	and-not contlarge
 	squares-grid 5 220 250
 	calma 	33 0

 layer CONT allcont
	and contlarge
 	squares-grid 5 220 280
 	calma 	33 0

#-----------------------------------------------------
# MET1
#-----------------------------------------------------
 layer MET1 	allm1
 	labels 	allm1 noport
 	calma 	34 0

 layer MET1TXT
	labels	allm1 port
	calma 	34 10

 layer M1BLOCK  obsm1
	labels	obsm1
	calma	34 5

 layer M1FILL   fillm1
	labels	fillm1
	calma	34 4

#-----------------------------------------------------
# VIA1
#-----------------------------------------------------
 templayer via1large via1
	shrink 915
	grow 915

 layer VIA1 	via1
	and-not via1large
 	squares-grid 0 260 260
 	calma 	35 0

 layer VIA1 	via1
	and via1large
 	squares-grid 0 260 360
 	calma 	35 0

#-----------------------------------------------------
# MET2
#-----------------------------------------------------
 layer MET2 	allm2
 	labels 	allm2 noport
 	calma 	36 0

 layer MET2TXT
	labels	allm2 port
	calma	36 10

 layer M2BLOCK  obsm2
	labels	obsm2
	calma	36 5

 layer M2FILL   fillm2
	labels	fillm2
	calma	36 4

#ifdef METALS3 || METALA4 || METALS5 || METALS6
#-----------------------------------------------------
# VIA2
#-----------------------------------------------------
 templayer via2large via2
	shrink 915
	grow 915

 layer VIA2 	via2
	and-not via2large
 	squares-grid 10 260 260
 	calma 	38 0

 layer VIA2 	via2
	and via2large
 	squares-grid 10 260 360
 	calma 	38 0

#ifdef MIM && METALS3
 layer VIA2 	mimcapc
 	squares-grid 10 260 500
 	calma 	38 0

#endif (MIM && METALS3)

#-----------------------------------------------------
# MET3
#-----------------------------------------------------
 layer MET3 	allm3
 	labels 	allm3 noport
 	calma 	42 0

 layer MET3TXT
	labels	allm3 port
	calma	42 10

 layer M3BLOCK  obsm3
	labels	obsm3
	calma	42 5

 layer M3FILL   fillm3
	labels	fillm3
	calma	42 4
#endif (METALS3 || METALA4 || METALS5 || METALS6)

#ifdef METALS4 || METALS5 || METALS6
#-----------------------------------------------------
# VIA3
#-----------------------------------------------------
 templayer via3large via3
	shrink 915
	grow 915

 layer VIA3	via3
	and-not via3large
 	squares-grid 10 260 260
 	calma 	40 0

 layer VIA3	via3
	and via3large
 	squares-grid 10 260 360
 	calma 	40 0

#ifdef MIM && METALS4
 layer VIA3 	mimcapc
 	squares-grid 10 260 500
 	calma 	40 0

#endif (MIM && METALS4)

#-----------------------------------------------------
# MET4
#-----------------------------------------------------
 layer MET4 	allm4
 	labels 	allm4 noport
 	calma 	46 0

 layer MET4TXT
	labels	allm4 port
	calma	46 10

 layer M4BLOCK  obsm4
	labels	obsm4
	calma	46 5

 layer M4FILL   fillm4
	labels	fillm4
	calma	46 4

#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS5 || METALS6
#-----------------------------------------------------
# VIA4
#-----------------------------------------------------
 templayer via4large via4
	shrink 915
	grow 915

 layer VIA4	via4
	and-not via4large
 	squares-grid 10 260 260
 	calma 	41 0

 layer VIA4	via4
	and via4large
 	squares-grid 10 260 360
 	calma 	41 0

#ifdef (MIM && METALS5)
 layer VIA4 	mimcapc
 	squares-grid 10 260 500
 	calma 	41 0

#endif (MIM && METALS5)

#-----------------------------------------------------
# MET5
#-----------------------------------------------------
 layer MET5 	allm5
 	labels 	allm5 noport
 	calma 	81 0

 layer MET5TXT
	labels	allm5 port
	calma	81 10

 layer M5BLOCK  obsm5
	labels	obsm5
	calma	81 5

 layer M5FILL   fillm5
	labels	fillm5
	calma	81 4

#endif (METALS5 || METALS6)

#ifdef METALS6
#-----------------------------------------------------
# VIATP
#-----------------------------------------------------
 templayer viatplarge viatp
	shrink 975
	grow 975

 layer VIATP	viatp
	and-not viatplarge
 	squares-grid 10 260 260
 	calma 	129 0

 layer VIATP	viatp
	and viatplarge
 	squares-grid 10 160 360
 	calma 	129 0
 
#ifdef MIM
 layer VIATP 	mimcapc
 	squares-grid 10 260 500
 	calma 	129 0

#endif (MIM)

#-----------------------------------------------------
# METTP
#-----------------------------------------------------

 layer METTP 	allmtp
 	labels 	allmtp noport
 	calma 	53 0

 layer	METTPTXT
	labels	allmtp port
	calma	53 10

 layer MTPBLOCK  obsmtp
	labels	obsmtp
	calma	53 5

 layer MTPFILL  fillmtp
	labels	fillmtp
	calma	53 4

#endif (METALS6)

#-----------------------------------------------------
# GLASS
#-----------------------------------------------------
 layer GLASS 	glass
 	calma 	37 0

#-----------------------------------------------------
# PRBNDRY
#-----------------------------------------------------
 layer PRBNDRY
	boundary
	calma 0 0 

#ifdef MIM
#undef MIM
#-----------------------------------------------------
# CAPM
#-----------------------------------------------------
# NOTE:  MiM bottom plate handled by alias "allm*" when MIM defined

 layer CAPM 	*mimcap
 	labels 	mimcap
 	calma 	75 0

 layer CAPDEF	*mimcap
	grow 200
	calma 	117 5

 layer CAP_LENGTH
	mask-hints CAP_LENGTH
	calma	117 10

#define MIM
#endif (MIM)

#-----------------------------------------------------
# SBLK
#-----------------------------------------------------

 layer SBLK
	bloat-all rnd *nfet
	bloat-all rpd *pfet
	bloat-all mvrnd *mvnfet
	bloat-all mvrpd *mvpfet
	and allfets
	grow 220
 	bloat-or allsblkdev * 0 space/a 220
 	grow 	215
 	shrink 	215
	mask-hints SBLK
 	calma 	49 0

#-----------------------------------------------------
# RESDEF MARK
#-----------------------------------------------------
 layer RESDEF allres
 calma 110 5

#-----------------------------------------------------
# METAL RESISTOR IDs
#-----------------------------------------------------
 layer MET1RES rm1
 calma 110 11

 layer MET2RES rm2
 calma 110 12

#ifdef METALS3 || METALS4 || METALS5 || METALS6
 layer MET3RES rm3
 calma 110 13
#endif (METALS3 || METALS4 || METALS5 || METALS6)

#ifdef METALS4 || METALS5 || METALS6
 layer MET4RES rm4
 calma 110 14
#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS5 || METALS6
 layer MET5RES rm5
 calma 110 15
#endif (METALS5 || METALS6)

#ifdef METALS6
 layer METTPRES rmtp
 calma 110 16
#endif (METALS6)

#-----------------------------------------------------
# DIODE MARK
#-----------------------------------------------------
 layer DIODE  alldiode
 calma 115 5

#-----------------------------------------------------
# MOSCAP MARK
#-----------------------------------------------------
 layer MOSCAP nvar,mvnvar,pvar,mvpvar,ncap,pcap,mvncap,mvpcap
 calma 166 5

#ifdef HRPOLY1K
#-----------------------------------------------------
# HRES
#-----------------------------------------------------
 layer HRES
 bloat-all hires,mvhires *poly
 grow 400
 calma 	62 0
#endif (HRPOLY1K)

#------------------------------------------------------------------------
# FILLBLOCK (NOTE: two layers define this on active, then poly & metal)
#------------------------------------------------------------------------
# layer FILLOBS fillblock
# 	calma 	111 5

 layer FILLOBS2 fillblock
 	calma 	152 5

#----------------------------------------------------------
style metfill
#----------------------------------------------------------
# This section used for metal filling output by a sequence
# of cif paint commands

 scalefactor 50 nanometers
 options calma-permissive-labels
 gridlimit 5

#-----------------------------------------------------
# Fill layer geometry
#-----------------------------------------------------

 templayer fill_geometry_off0
	bbox top
	slots	0 2000 1000 0 2000 1000 1000 0

 templayer fill_geometry_off1
	bbox top
	slots	0 2000 1000 0 2000 1000 1000 660

 templayer fill_geometry_off2
	bbox top
	slots	0 2000 1000 0 2000 1000 1000 1320

#ifdef THICKMET3P0
 templayer  fill_geometry_thick
	bbox    top
	slots	0 6000 2000 0 6000 2000 3000 2000
#endif (THICKMET3P0)

#-----------------------------------------------------
# Obstruction geometry
#-----------------------------------------------------

 templayer 	obstruct_diff alldiff,filldiff,obsactive
	grow 	2010
	shrink 	500
	grow 	500

 templayer 	obstruct_poly allpoly,fillpoly
	grow 	2010
	shrink 	500
	grow 	500

 templayer 	obstruct_m1 allm1,allpad,fillm1,obsm1
	grow 	2010
	shrink 	500
	grow 	500

 templayer 	obstruct_m2 allm2,allpad,fillm2,obsm2
	grow 	2010
	shrink 	500
	grow 	500

#ifdef METALS3 || METALS4 || METALS5 || METALS6
 templayer 	obstruct_m3 allm3,allpad,fillm3,obsm3
	grow 	2010
	shrink 	500
	grow 	500
#endif (METALS3 || METALS4 || METALS5 || METALS6)

#ifdef METALS4 || METALS5 || METALS6
 templayer 	obstruct_m4 allm4,allpad,fillm4,obsm4
	grow 	2010
	shrink 	500
	grow 	500
#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS5 || METALS6
 templayer 	obstruct_m5 allm5,allpad,fillm5,obsm5
	grow 	2010
	shrink 	500
	grow 	500
#endif (METALS5 || METALS6)

#ifdef METALS6
#ifdef THICKMET3P0
 templayer 	obstruct_mtp allmtp,allpad,fillmtp,obsmtp
	grow 	2010
	shrink 	500
	grow 	500

#elseif defined(THICKMET0P9 || THICKMET1P1)
 templayer 	obstruct_mtp allmtp,allpad,fillmtp,obsmtp
	grow 	2010
	shrink 	500
	grow 	500

#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9 )
 templayer 	obstruct_mtp allmtp,allpad,fillmtp,obsmtp
	grow 	2010
	shrink 	500
	grow 	500
#endif
#endif (METALS6)

#-----------------------------------------------------
# DIFF FILL
#-----------------------------------------------------
 layer difffill fill_geometry_off0
	shrink 995
	grow 995

#-----------------------------------------------------
# POLY FILL
#-----------------------------------------------------
 layer polyfill fill_geometry_off1
	and-not obstruct_m1
	shrink 995
	grow 995

#-----------------------------------------------------
# MET1 FILL
#-----------------------------------------------------
 layer met1fill fill_geometry_off2
	and-not obstruct_poly
	and-not obstruct_m1
	and-not obstruct_m2
	shrink 995
	grow 995

#-----------------------------------------------------
# MET2 FILL
#-----------------------------------------------------
 layer met2fill fill_geometry_off0
	and-not obstruct_m1
	and-not obstruct_m2
	shrink 995
	grow 995

#ifdef METALS3 || METALS4 || METALS5 || METALS6
#-----------------------------------------------------
# MET3 FILL
#-----------------------------------------------------
 layer met3fill fill_geometry_off1
	and-not obstruct_m2
	and-not obstruct_m3
	shrink 995
	grow 995
#endif (METALS3 || METALS4 || METALS5 || METALS6)

#ifdef METALS4 || METALS5 || METALS6
#-----------------------------------------------------
# MET4 FILL
#-----------------------------------------------------
 layer met4fill fill_geometry_off2
	and-not obstruct_m3
	and-not obstruct_m4
	shrink 995
	grow 995
#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS5 || METALS6
#-----------------------------------------------------
# MET5 FILL
#-----------------------------------------------------
 layer met5fill fill_geometry_off0
	and-not obstruct_m4
	and-not obstruct_m5
	shrink 995
	grow 995
#endif (METALS5 || METALS6)

#ifdef METALS6
#-----------------------------------------------------
# METTP FILL
#-----------------------------------------------------
 layer mettpfill fill_geometry_off1
	and-not obstruct_m5
	and-not obstruct_mtp
	shrink 995
	grow 995
#endif (METALS6)

#-----------------------------------------------------------------------
style drc
#-----------------------------------------------------------------------
# NOTE:  this style is used for DRC only, not for GDS output
#-----------------------------------------------------------------------

 scalefactor 50 nanometers
 options calma-permissive-labels
 gridlimit 5

 # Check for MV and LV devices in the same dnwell
 templayer mv_dnwell
 bloat-all alldiffmv dnwell

 templayer bad_dnwell
 bloat-all alldifflv dnwell
 and mv_dnwell

 # Check pwell in dnwell
 templayer pwell_in_dnwell pwell
 and dnwell
 and-not mv_dnwell

 templayer mvpwell_in_dnwell pwell
 and mv_dnwell

 # Check for MV and LV devices in the same nwell
 templayer mv_nwell
 bloat-all alldiffmv nwell

 templayer bad_nwell
 bloat-all alldifflv nwell
 and mv_nwell

 # Check for nwell resistor in deep nwell
 templayer bad_rnw rnw
 and dnwell

 # Define HRES layer for DRC checks
 templayer res_hres
 bloat-all mvhires,hires *poly

 # Check for contact at correct position for HIRES, LRES, PRES resistors
 templayer res_cont res_hres
 bloat-all rnp,rpp *poly
 and pc
 squares-grid 5 220 250

 templayer res_cont_space_min mvhires,hires
 # SBLK larger than defined resistor by 0.1um
 grow 100
 # SBLK = resistor for rnp and rpp
 or rnp,rpp
 # SBLK spacing to contact
 grow 220
 and res_cont
 # If anything remains, contact is too close.

 templayer res_cont_space_max mvhires,hires
 # SBLK larger than defined resistor by 0.1um
 grow 100
 # SBLK = resistor for rnp and rpp
 or rnp,rpp
 # SBLK spacing to contact
 grow 220
 # size of poly contact
 grow 220
 and res_cont

 templayer res_no_cont res_cont
 and-not res_cont_space_max
 # If anything remains, contact is too far away

 # Check for HRES to poly and diffusion spacing
 templayer res_hres_grow res_hres
 grow 700

 templayer res_diff_space res_hres_grow
 and alldiff
 # If anything remains, HRES is too close to diffusion

 templayer res_poly_space res_hres_grow
 and-not res_hres
 and allpoly
 # If anything remains, HRES is too close to poly

 # Check for MiM cap bottom plate to other metal spacing rule (< 1.2um)
 templayer mim_bottom_plate
#ifdef METALS3
 bloat-all *mim *m2
#endif
#ifdef METALS4
 bloat-all *mim *m3
#endif
#ifdef METALS5
 bloat-all *mim *m4
#endif
#ifdef METALS6
 bloat-all *mim *m5
#endif

 templayer mim_bottom_plate_space mim_bottom_plate
 grow 1200
#ifdef METALS3
 and m2
#endif
#ifdef METALS4
 and m3
#endif
#ifdef METALS5
 and m4
#endif
#ifdef METALS6
 and m5
#endif
 and-not mim_bottom_plate
 # If anything remains, bottom plate is too close

 # Check for MiM cap bottom plate surrounds contact (by 0.4um)
#ifdef METALS3
 templayer mim_bot_cont_surround via2
#endif
#ifdef METALS4
 templayer mim_bot_cont_surround via3
#endif
#ifdef METALS5
 templayer mim_bot_cont_surround via4
#endif
#ifdef METALS6
 templayer mim_bot_cont_surround viamt
#endif
 and mim_bottom_plate
 squares-grid 10 260 500
 grow 400
 and-not mim_bottom_plate
 # If anything remains, not enough surround

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  import
 scalefactor 50 nanometers
 gridlimit 5

 options ignore-unknown-layer-labels options no-reconnect-labels 

 ignore BJTDEF
 ignore SRAMDEF
 ignore FET5VDEF
 ignore CAPDEF
 ignore VTEXT
 ignore FILLOBS

 layer pwell PWELL,PWELLTXT
 labels PWELL
 labels PWELLTXT port

 layer nwell NWELL,NWELLTXT
 labels NWELL
 labels NWELLTXT port

 layer dnwell DNWELL
 labels DNWELL

 layer isosub SUBCUT
 labels SUBCUT

 templayer ndiffarea DIFF
 and-not POLY
 and-not NWELL
 and-not PPLUS
 and-not SBLK
 and-not DUALGATE
 and NPLUS
 copyup ndifcheck

 layer ndiff ndiffarea
 labels DIFF

 layer filldiff DIFFFILL
 labels DIFFFILL

 # Copy ndiff areas up for contact checks
 templayer xndifcheck ndifcheck
 copyup ndifcheck

 templayer mvndiffarea DIFF
 and-not POLY
 and-not NWELL
 and-not PPLUS
 and-not SBLK
 and DUALGATE
 and NPLUS
 copyup mvndifcheck

 layer mvndiff mvndiffarea
 labels DIFF

 # Copy mvndiff 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 DUALGATE
 and-not NAT
 labels DIFF

 layer nndiode DIFF
 and NPLUS
 and DIODE
 and-not NWELL
 and-not POLY
 and-not PPLUS
 and-not DUALGATE
 and NAT
 labels DIFF

 templayer ndiodearea DIODE
 and NPLUS
 and-not NWELL
 and-not DUALGATE
 copyup DIODE,NPLUS

 layer ndiffres DIFF
 and-not POLY
 and SBLK
 and NPLUS
 and-not DUALGATE
 labels DIFF

 templayer pdiffarea DIFF
 and-not POLY
 and NWELL
 and-not NPLUS
 and-not SBLK
 and-not DIODE
 and PPLUS
 and-not DUALGATE
 copyup pdifcheck

 layer pdiff pdiffarea
 labels DIFF

 layer mvndiode DIFF
 and NPLUS
 and DIODE
 and-not POLY
 and-not PPLUS
 and DUALGATE
 and-not NAT
 labels DIFF

 layer mvnndiode DIFF
 and NPLUS
 and DIODE
 and-not POLY
 and-not PPLUS
 and DUALGATE
 and NAT
 labels DIFF

 templayer mvndiodearea DIODE
 and NPLUS
 and-not NWELL
 and DUALGATE
 copyup DIODE,NPLUS

 layer mvndiffres DIFF
 and-not POLY
 and SBLK
 and NPLUS
 and DUALGATE
 labels DIFF

 templayer mvpdiffarea DIFF
 and-not POLY
 and NWELL
 and-not NPLUS
 and-not SBLK
 and-not DIODE
 and DUALGATE
 and PPLUS
 copyup mvpdifcheck

 layer mvpdiff mvpdiffarea
 labels DIFF

 # 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 DUALGATE
 and DIODE
 labels DIFF

 templayer pdiodearea DIODE
 and PPLUS
 copyup DIODE,PPLUS

 # Define pfet areas as known pdiff,
 # regardless of the presence of a
 # well.

 templayer pfetarea DIFF
 and-not NPLUS
 and-not DUALGATE
 and POLY

 layer pfet pfetarea
 and-not MOSCAP
 labels DIFF

 layer pcap pfetarea
 and MOSCAP
 labels DIFF

 templayer pfetexpand pfetarea
 grow 530

 # Always force nwell under pfet
 layer nwell pfetarea
 grow 310

 # Copy mvpdiff areas up for contact checks
 templayer mvxpdifcheck mvpdifcheck
 copyup mvpdifcheck

 layer mvpdiode DIFF
 and PPLUS
 and-not POLY
 and-not NPLUS
 and-not RESDEF
 and DUALGATE
 and DIODE
 labels DIFF

 templayer mvpdiodearea DIODE
 and PPLUS
 copyup DIODE,PPLUS

 # Define pfet areas as known pdiff,
 # regardless of the presence of a
 # well.

 templayer mvpfetarea DIFF
 and DUALGATE
 and-not NPLUS
 and POLY

 layer mvpfet mvpfetarea
 and-not MOSCAP
 labels DIFF

 layer mvpcap mvpfetarea
 and MOSCAP
 labels DIFF

 templayer mvpfetexpand mvpfetarea
 grow 530

 layer pdiff DIFF
 and-not DUALGATE
 and-not NPLUS
 and-not POLY
 and NWELL
 and pfetexpand
 labels DIFF

 layer pdiffres DIFF
 and-not POLY
 and PPLUS
 and NWELL
 and SBLK
 labels DIFF

 layer nfet DIFF
 and POLY
 and-not PPLUS
 and-not DUALGATE
 and-not NWELL
 and NPLUS
 and-not NAT
 and-not MOSCAP
 labels DIFF

 layer ncap DIFF
 and POLY
 and-not PPLUS
 and-not DUALGATE
 and-not NWELL
 and NPLUS
 and-not NAT
 and MOSCAP
 labels DIFF

 layer nnfet DIFF
 and POLY
 and-not PPLUS
 and-not DUALGATE
 and-not NWELL
 and NPLUS
 and NAT
 labels DIFF

 templayer nsdarea DIFF
 and NPLUS
 and NWELL
 and-not POLY
 and-not PPLUS
 and-not DUALGATE

 layer nsd nsdarea
 labels DIFF

 templayer nsdexpand nsdarea
 grow 500

 # Copy nsub areas up for contact checks
 templayer xnsubcheck nsubcheck
 copyup nsubcheck

 templayer psdarea DIFF
 and PPLUS
 and-not DUALGATE
 and-not NWELL
 and-not POLY
 and-not NPLUS
 and-not pfetexpand
 copyup psubcheck

 layer psd psdarea
 labels DIFF

 templayer psdexpand psdarea
 grow 500

 layer mvpdiff DIFF
 and-not NPLUS
 and-not POLY
 and NWELL
 and DUALGATE
 and mvpfetexpand
 labels DIFF

 layer mvpdiffres DIFF
 and-not POLY
 and PPLUS
 and SBLK
 and DUALGATE
 labels DIFF

 layer mvnfet DIFF
 and POLY
 and-not PPLUS
 and NPLUS
 and-not NAT
 and-not NWELL
 and DUALGATE
 and-not MOSCAP
 labels DIFF

 layer mvncap DIFF
 and POLY
 and-not PPLUS
 and NPLUS
 and-not NAT
 and-not NWELL
 and DUALGATE
 and MOSCAP
 labels DIFF

 layer mvnnfet DIFF
 and POLY
 and-not PPLUS
 and NPLUS
 and NAT
 and-not NWELL
 and DUALGATE
 labels DIFF

 templayer mvnsdarea DIFF
 and NPLUS
 and-not POLY
 and-not PPLUS
 and NWELL
 and DUALGATE
 copyup mvnsubcheck

 layer mvnsd mvnsdarea
 labels DIFF

 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 DUALGATE
 and-not mvpfetexpand
 copyup mvpsubcheck

 layer mvpsd mvpsdarea
 labels DIFF

 templayer mvpsdexpand mvpsdarea
 grow 500

 # Copy psub areas up for contact checks
 templayer xpsubcheck psubcheck
 copyup psubcheck

 templayer mvxpsubcheck mvpsubcheck
 copyup mvpsubcheck

 layer psd DIFF
 and-not PPLUS
 and-not NPLUS
 and-not POLY
 and-not DUALGATE
 and-not pfetexpand
 and psdexpand

 layer nsd DIFF
 and-not PPLUS
 and-not NPLUS
 and-not POLY
 and NWELL
 and-not DUALGATE
 and nsdexpand

 layer mvpsd DIFF
 and-not PPLUS
 and-not NPLUS
 and-not POLY
 and-not NWELL
 and DUALGATE
 and-not mvpfetexpand
 and mvpsdexpand

 layer mvnsd DIFF
 and-not PPLUS
 and-not NPLUS
 and-not POLY
 and NWELL
 and DUALGATE
 and mvnsdexpand

 templayer polyarea POLY
 and-not DIFF
 and-not SBLK
#ifdef HRPOLY1K
 and-not HRES
#endif (HRPOLY1K)
 copyup polycheck

 layer poly polyarea,POLYTXT
 and-not RESDEF
 labels POLY
 labels POLYTXT text

 layer fillpoly POLYFILL
 labels POLYFILL

 # Copy poly areas up for contact checks
 templayer xpolycheck polycheck
 copyup polycheck

 layer rpps POLY
 and-not SBLK
 and PPLUS
 and RESDEF
 labels POLY

 layer rnps POLY
 and-not SBLK
 and NPLUS
 and RESDEF
 labels POLY

 layer rpp POLY
 and SBLK
 and PPLUS
#ifdef HRPOLY1K
 and-not HRES
#endif (HRPOLY1K)
 and RESDEF
 labels POLY

 # POLY + SBLK without RESDEF may be a salicide-blocked transistor.
 # The SBLK will be regenerated on GDS output and the poly should be
 # treated as regular poly.
 layer poly POLY
 and-not DIFF
 and SBLK
 and-not RESDEF
 labels POLY

 layer rnp POLY
 and SBLK
 and NPLUS
 and RESDEF
#ifdef HRPOLY1K
 and-not HRES
#endif (HRPOLY1K)
 labels POLY

#ifdef HRPOLY1K
 layer hires POLY
 and SBLK
 and HRES
 and RESDEF
 and-not DUALGATE
 labels POLY

 layer mvhires POLY
 and SBLK
 and HRES
 and RESDEF
 and DUALGATE
 labels POLY

 # We define poly under HRES but not under SBLK to be plain poly
 layer poly POLY
 and HRES
 and-not SBLK
 and-not RESDEF
#endif (HRPOLY1K)

 layer ndc CONT
 and DIFF
 and NPLUS
 and-not NWELL
 and MET1
 and-not DUALGATE
 and-not DIODE
 grow 145
 shrink 140

 layer nsc CONT
 and DIFF
 and NPLUS
 and NWELL
 and MET1
 and-not DUALGATE
 and-not DIODE
 grow 145
 shrink 140

 layer pdc CONT
 and DIFF
 and PPLUS
 and NWELL
 and MET1
 and-not DUALGATE
 and-not DIODE
 grow 145
 shrink 140

 layer pdc CONT
 and DIFF
 and PPLUS
 and MET1
 and-not DUALGATE
 and-not DIODE
 and pfetexpand
 grow 145
 shrink 140

 layer psc CONT
 and DIFF
 and PPLUS
 and-not NWELL
 and MET1
 and-not DUALGATE
 and-not DIODE
 and-not pfetexpand
 grow 145
 shrink 140

 layer pc CONT
 and POLY
 and-not DIFF
 and MET1
 grow 145
 shrink 140

 layer ndic CONT
 and DIFF
 and NPLUS
 and DIODE
 and-not POLY
 and-not PPLUS
 and-not DUALGATE
 and-not NAT
 grow 145
 shrink 140

 layer nndic CONT
 and DIFF
 and NPLUS
 and DIODE
 and-not POLY
 and-not PPLUS
 and-not DUALGATE
 and NAT
 grow 145
 shrink 140

 layer pdic CONT
 and DIFF
 and PPLUS
 and DIODE
 and-not POLY
 and-not NPLUS
 and-not DUALGATE
 grow 145
 shrink 140

 layer mvndc CONT
 and DIFF
 and NPLUS
 and-not NWELL
 and MET1
 and DUALGATE
 and-not DIODE
 grow 145
 shrink 140

 layer mvnsc CONT
 and DIFF
 and NPLUS
 and MET1
 and DUALGATE
 and NWELL
 and-not DIODE
 grow 145
 shrink 140

 layer mvpdc CONT
 and DIFF
 and PPLUS
 and MET1
 and DUALGATE
 and NWELL
 and-not DIODE
 grow 145
 shrink 140

 layer mvpdc CONT
 and DIFF
 and PPLUS
 and MET1
 and DUALGATE
 and-not DIODE
 and mvpfetexpand
 grow 145
 shrink 140

 layer mvpsc CONT
 and DIFF
 and PPLUS
 and-not NWELL
 and MET1
 and DUALGATE
 and-not DIODE
 and-not mvpfetexpand
 grow 145
 shrink 140

 layer mvndic CONT
 and DIFF
 and NPLUS
 and DIODE
 and-not POLY
 and-not PPLUS
 and DUALGATE
 and-not NAT
 grow 145
 shrink 140

 layer mvnndic CONT
 and DIFF
 and NPLUS
 and DIODE
 and-not POLY
 and-not PPLUS
 and DUALGATE
 and NAT
 grow 145
 shrink 140

 layer mvpdic CONT
 and DIFF
 and PPLUS
 and DIODE
 and-not POLY
 and-not NPLUS
 and DUALGATE
 grow 145
 shrink 140

 layer rm1 MET1
 and RESDEF
 and MET1RES

 layer m1 MET1,MET1TXT
 and-not MET1RES
 labels MET1
 labels MET1TXT port

 layer obsm1 M1BLOCK
 labels M1BLOCK

 layer fillm1 M1FILL
 labels M1FILL

 layer m2c VIA1
 grow 130
 shrink 130

 layer rm2 MET2
 and RESDEF
 and MET2RES

 layer m2 MET2,MET2TXT
 and-not MET2RES
 labels MET2
 labels MET2TXT port

 layer obsm2 M2BLOCK
 labels M2BLOCK

 layer fillm2 M2FILL
 labels M2FILL

#ifdef METALS3 || METALS4 || METALS5 || METALS6
 layer rm3 MET3
 and RESDEF
 and MET3RES

#ifdef METALS3 && MIM
 templayer mimarea CAPDEF
 and MET3
#endif (METALS3 && MIM)

 layer m3 MET3,MET3TXT
 and-not MET3RES
 labels MET3
 labels MET3TXT port

 layer obsm3 M3BLOCK
 labels M3BLOCK

 layer fillm3 M3FILL
 labels M3FILL

 layer m3c VIA2
#ifdef METALS3 && MIM
 and-not CAPM
 and-not mimarea
#endif (METALS3 && MIM)
 grow 140
 shrink 130

#ifdef METALS3 && MIM
 layer mimcc VIA2
 and MET3
 and CAPM
 and CAPDEF
 grow 90
 grow 250
 shrink 250
#endif (METALS3 && MIM)
#endif (METALS3 || METALS4 || METALS5 || METALS6)

#ifdef METALS4 || METALS5 || METALS6
 layer rm4 MET4
 and RESDEF
 and MET4RES

#ifdef METALS4 && MIM
 templayer mimarea CAPDEF
 and MET3
#endif (METALS4 && MIM)

 layer m4 MET4,MET4TXT
 and-not MET4RES
 labels MET4
 labels MET4TXT port

 layer obsm4 M4BLOCK
 labels M4BLOCK

 layer fillm4 M4FILL
 labels M4FILL

 layer via3 VIA3
#ifdef METALS4 && MIM
 and-not CAPM
 and-not mimarea
#endif (METALS4 && MIM)
 grow 140
 shrink 130

#ifdef METALS4 && MIM
 layer mimcc VIA3
 and MET4
 and CAPM
 and CAPDEF
 grow 90
 grow 250
 shrink 250
#endif (METALS4 && MIM)
#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS5 || METALS6
 layer rm5 MET5
 and RESDEF
 and MET5RES

#ifdef METALS5 && MIM
 templayer mimarea CAPDEF
 and MET4
#endif (METALS5 && MIM)

 layer m5 MET5,MET5TXT
 and-not MET5RES
 labels MET5
 labels MET5TXT port

 layer obsm5 M5BLOCK
 labels M5BLOCK

 layer fillm5 M5FILL
 labels M5FILL

 layer via4 VIA4
#ifdef MIM && METALS5
 and-not CAPM
 and-not mimarea
#endif (MIM && METALS5)
 grow 140
 shrink 130

#ifdef METALS5 && MIM
 layer mimcc VIA4
 and MET5
 and CAPM
 and CAPDEF
 grow 90
 grow 250
 shrink 250
#endif (METALS5 && MIM)
#endif (METALS5 || METALS6)

#ifdef METALS6
 layer rmtp METTP
 and RESDEF
 and METTPRES

 layer mtp METTP,METTPTXT
 and-not METTPRES
 labels METTP
 labels METTPTXT port

 layer obsmtp MTPBLOCK
 labels MTPBLOCK

 layer fillmtp MTPFILL
 labels MTPFILL

#ifdef MIM
 templayer mimarea CAPDEF
 and MET5
#endif (MIM)

 layer viatp VIATP
 and METTP
#ifdef MIM
 and-not CAPM
 and-not mimarea
#endif (MIM)
 grow 5
 grow 265
 shrink 265

#ifdef MIM
 layer mimcc VIATP
 and METTP
 and CAPM
 and CAPDEF
 grow 260
 shrink 250
#endif (MIM)
#endif (METALS6)

#ifdef MIM
 layer mimcap CAPM
 and CAPDEF
 labels CAPM

 templayer nolayer CAP_LENGTH
#endif (MIM)

 # 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
 and-not PPLUS
 and-not NPLUS
 and-not POLY
 copyup DIFF

 # Handle contacts found by copyup

 layer ndic CONT
 and MET1
 and DIODE
 and NPLUS
 and-not DUALGATE
 and-not NAT
 grow 100
 shrink 100

 layer mvndic CONT
 and MET1
 and DIODE
 and NPLUS
 and DUALGATE
 and-not NAT
 grow 100
 shrink 100

 layer mvnndic CONT
 and MET1
 and DIODE
 and NPLUS
 and DUALGATE
 and NAT
 grow 100
 shrink 100

 layer pdic CONT
 and MET1
 and DIODE
 and PPLUS
 and-not DUALGATE
 grow 100
 shrink 100

 layer mvpdic CONT
 and MET1
 and DIODE
 and PPLUS
 and DUALGATE
 grow 100
 shrink 100

 layer ndc CONT
 and ndifcheck
 grow 100
 shrink 100

 layer mvndc CONT
 and mvndifcheck
 grow 100
 shrink 100

 layer pdc CONT
 and pdifcheck
 grow 100
 shrink 100

 layer mvpdc CONT
 and mvpdifcheck
 grow 100
 shrink 100

 layer pc CONT
 and polycheck
 grow 100
 shrink 100

 layer nsc CONT
 and nsubcheck
 grow 100
 shrink 100

 layer mvnsc CONT
 and mvnsubcheck
 grow 100
 shrink 100

 layer psc CONT
 and psubcheck
 grow 100
 shrink 100

 layer mvpsc CONT
 and mvpsubcheck
 grow 100
 shrink 100

 # Find contacts not covered in
 # metal and pull them into the
 # next layer up
 
 templayer gencont CONT
 and MET1
 and-not DIFF
 and-not POLY
 and-not DIODE
 and-not nsubcheck
 and-not psubcheck
 and-not mvnsubcheck
 and-not mvpsubcheck
 copyup CONT,MET1

 templayer barecont CONT
 and-not MET1
 and-not nsubcheck
 and-not psubcheck
 and-not mvnsubcheck
 and-not mvpsubcheck
 copyup CONT

 layer glass GLASS
 labels GLASS

 templayer cellbound BOUND,PRBOUND
 boundary

 layer lvstext TTEXT
 labels TTEXT text

# layer fillblock  FILLOBS,FILLOBS2
 layer fillblock  FILLOBS2
 labels FILLOBS2

# MOS Varactors

 layer nvar POLY
 and DIFF
 and NPLUS
 and NWELL
 and-not DUALGATE
 labels POLY

 layer mvnvar POLY
 and DIFF
 and NPLUS
 and NWELL
 and DUALGATE
 labels POLY

 layer pvar POLY
 and DIFF
 and PPLUS
 and-not NWELL
 and-not DUALGATE
 labels POLY

 layer mvpvar POLY
 and DIFF
 and PPLUS
 and-not NWELL
 and DUALGATE
 labels POLY

 calma DNWELL 12 0
 calma NWELL 21 0
 calma NWELLTXT 21 10
 calma PWELL 204 0
 calma PWELLTXT 204 10
 calma SUBCUT 23 5
 calma DIFF 22 0
 calma DIFFFILL 22 4
 calma POLY 30 0
 calma POLYFILL 30 4
 calma POLYTXT 30 10
 calma NPLUS 32 0
 calma PPLUS 31 0
 calma SBLK 49 0
 calma GLASS 37 0
 calma CONT 33 0
 calma MET1 34 0
 calma MET1TXT 34 10
 calma M1BLOCK 34 5
 calma M1FILL 34 4
 calma MET2RES 110 11
 calma VIA1 35 0
 calma MET2 36 0
 calma MET2TXT 36 10
 calma M2BLOCK 36 5
 calma M2FILL 36 4
 calma MET2RES 110 12
#ifdef METALS3 || METALS4 || METALS5 || METALS6
 calma VIA2 38 0
 calma MET3 42 0
 calma MET3TXT 42 10
 calma M3BLOCK 42 5
 calma M3FILL 42 4
 calma MET3RES 110 13
#endif (METALS3 || METALS4 || METALS5 || METALS6)
#ifdef METALS4 || METALS5 || METALS6
 calma VIA3 40 0
 calma MET4 46 0
 calma MET4TXT 46 10
 calma M4BLOCK 46 5
 calma M4FILL 46 4
 calma MET4RES 110 14
#endif (METALS4 || METALS5 || METALS6)
#ifdef METALS5 || METALS6
 calma VIA4 41 0
 calma MET5 81 0
 calma MET5TXT 81 10
 calma M5BLOCK 81 5
 calma M5FILL 81 4
 calma MET5RES 110 15
#endif (METALS5 || METALS6)
#ifdef METALS6
 calma VIATP 129 0
 calma METTP 53 0
 calma METTPTXT 53 10
 calma MTPBLOCK 53 5
 calma METTPRES 110 16
#endif (METALS6)
#ifdef HRPOLY1K
 calma HRES 62 0
#endif (HRPOLY1K)
 calma NAT 5 0
#ifdef MIM
 calma CAPM 75 0
 calma CAP_LENGTH 117 10
#endif (MIM)
 calma DIODE  115 5
 calma CAPDEF 117 5
 calma BJTDEF 118 5
 calma MOSCAP 166 5
 calma BOUND 0 0
 calma PRBOUND 63 0
 calma VTEXT 63 63
 calma FILLOBS  111 5
 calma FILLOBS2 152 5
 calma TTEXT    230 *
 calma RESDEF   110 *
 calma DUALGATE 55 0
 calma SRAMDEF  108 5
 calma FET5VDEF 112 1

end

#-----------------------------------------------------
# Digital flow maze router cost parameters
#-----------------------------------------------------

mzrouter
end

#-----------------------------------------------------
# Vendor DRC rules
#-----------------------------------------------------

drc

 style drc variants (fast),(full),(routing)

 scalefactor 50 

 cifstyle drc

 variants (fast),(full)

#-----------------------------
# NWELL
#-----------------------------

 width allnwell 860 "N-well width < %d (NW.1a)"
 spacing allnwell allnwell 600 touching_ok "N-well spacing < %d (NW.2a)"
 # rnw spacing is to unrelated nwell only.
 spacing rnw allnwell 1400 touching_ok "N-well resistor spacing < %d (NW.4)"
 width rnw 2000 "N-well resistor width < %d (NW.1b)"

 variants (full)
 cifspacing mv_nwell mv_nwell 740 touching_ok "MV N-well spacing < %d (NW.2a)"
 variants *

#-----------------------------
# DNWELL (deep nwell)
#-----------------------------

 width dnwell 1700 "Deep N-well width < %d (DN.1)"
 spacing dnwell dnwell 2500 touching_ok "Deep N-well spacing < %d (DN.2a)"

 surround pwell dnwell 2500 absence_ok \
	"Deep N-well surround P-well < %d (LPW.3)"

 surround nwell dnwell 500 absence_ok \
	"Deep N-well surround N-well < %d (NW.5)"

 variants (full)

 cifwidth pwell_in_dnwell 600 "P-well in deep N-well size < %d (LPW.1)"
 cifwidth mvpwell_in_dnwell 740 "HV P-well in deep N-well size < %d (LPW.1)"

 cifspacing pwell_in_dnwell pwell_in_dnwell 860 touching_ok \
	"P-well in deep N-well spacing < %d (LPW.2b)"
 cifspacing mvpwell_in_dnwell mvpwell_in_dnwell 860 touching_ok \
	"MV P-well in deep N-well spacing < %d (LPW.2b)"

 cifmaxwidth bad_dnwell 0 bend_illegal \
	"Both LV and MV devices cannot be in the same deep N-well (DN.11)

 cifmaxwidth bad_nwell 0 bend_illegal \
	"Both LV and MV devices cannot be in the same N-well (DV.9)

 cifmaxwidth bad_rnw 0 bend_illegal \
	"N-well resistor cannot be in deep N-well (DN.12)
 variants *

 spacing dnwell allnwell 3100 surround_ok \
	"Deep N-well spacing to N-well < %d (NW.3)"

 spacing pwell dnwell 1500 surround_ok \
	"Deep N-well spacing to P-well < %d (LPW.11)"

#-----------------------------
# DIFF (diffusion)
#-----------------------------

 width alldifflv 220 "Diffusion width < %d (DF.1a)"
 width alldiffmv 300 "Diffusion width < %d (DF.1a)"
 area alldifflv 202500 220 "Diffusion minimum area < %a (DF.9)"
 area alldiffmv 202500 300 "Diffusion minimum area < %a (DF.9)"
 spacing alldifflv,nvar,pvar alldifflv,nvar,pvar 280 touching_ok \
	"Diffusion spacing < %d (DF.3a)"
 spacing alldiffmv,mvnvar,mvpvar alldiffmv,mvnvar,mvpvar 360 touching_ok \
	"Diffusion spacing < %d (DF.3a)"

 spacing *ndiff,*ndiode,nfet,nnfet,ncap allnwell 430 touching_illegal \
	"N-Diffusion spacing to N-well < %d (DF.8)"
 spacing *mvndiff,*mvndiode,mvnfet,mvncap,mvnnfet allnwell 600 touching_illegal \
	"N-Diffusion spacing to N-well < %d (DF.8)"
 spacing *psd allnwell 120 touching_illegal \
	"P-Ohmic spacing to N-well < %d (DF.5)"
 spacing *mvpsd allnwell 160 touching_illegal \
	"P-Ohmic spacing to N-well < %d (DF.5)"
 surround *nsd allnwell 120 absence_illegal \
	"N-well overlap of N-Ohmic < %d (DF.4a)"
 surround *mvnsd allnwell 160 absence_illegal \
	"N-well overlap of N-Ohmic < %d (DF.4a)"
 surround *pdiff,*pdiode,pfet,pcap allnwell 430 absence_illegal \
	"N-well overlap of P-Diffusion < %d (DF.7)"
 surround *mvpdiff,*mvpdiode,mvpfet,mvpcap allnwell 600 absence_illegal \
	"N-well overlap of P-Diffusion < %d (DF.7)"
 surround *psd pwell 120 absence_ok \
	"P-field overlap of P-Ohmic < %d (DF.5)"
 surround *mvpsd pwell  160 absence_ok \
	"MV P-field overlap of MV P-Ohmic < %d (DF.5)"

 # NAT requires additional spacing rules
 spacing *nndiode,*mvnndiode *psd,*mvpsd 610 touching_illegal \
	"NAT Diffusion spacing to TAP diffusion < %d (NAT.5 + NAT.6)"

#-----------------------------
# POLY
#-----------------------------

 width allpoly 180 "Poly width < %d (PL.1)"
 spacing allpoly allpoly 240 touching_ok "Poly spacing < %d (PL.3a)"
 spacing allpolynonfet alldifflvnonfet 100 corner_ok allfets \
	"Poly spacing to diffusion < %d (PL.5a)"
 spacing allpolynonfet alldiffmvnonfet 300 corner_ok allfets \
	"Poly spacing to MV diffusion < %d (PL.5a)
 overhang *ndiff,rndiff nfet,nnfet,ncap 230 "N-Diffusion overhang of nmos < %d (DF.6)"
 overhang *mvndiff,mvrndiff mvnfet,mvncap,mvnnfet 230 \
	"N-Diffusion overhang of nmos < %d (DF.6)"
 overhang *pdiff,rpdiff pfet,pcap 230 "P-Diffusion overhang of pmos < %d (DF.6)"
 overhang *mvpdiff,mvrpdiff mvpfet,mvpcap 230 "P-Diffusion overhang of pmos < %d (DF.6)"
 overhang *poly allfetsnonnat 220 "Poly overhang of transistor < %d (PL.4)"
 overhang *poly nnfet,mvnnfet 350 "Poly overhang of NAT transistor < %d (NAT.6)"

 angles allfets 45-only "Only 45 degrees allowed on transistors (PL.6)"

#-----------------------------------------------------------------------------
# SBLK - more rules to do here (note PRES refers only to unsalicided resistor)
#-----------------------------------------------------------------------------

 spacing allpolysblkres allpolysblkres 250 touching_ok \
	"Poly resistor spacing < %d (PRES.2)

 spacing allpolysblkres allpolynonres 450 touching_ok \
	"Poly resistor spacing to unrelated poly < %d (PRES.4)"
 spacing allpolysblkres allactive,allactiveres 440 touching_illegal \
	"Poly resistor spacing to diffusion < %d (PRES.3)"

 spacing allactiveres allactiveres 400 touching_ok \
	"Diffusion resistor spacing < %d (NDRES.2)

 spacing allactiveres allactive 450 touching_ok \
	"Diffusion resistor spacing to unrelated diffusion < %d (NDRES.3)"
 spacing allactiveres allpoly 450 touching_ok \
	"Diffusion resistor spacing to unrelated poly < %d (NDRES.4)"

#-----------------------------
# CONT
#-----------------------------
# Drawn contact includes 5nm metal1 surround
 width (ndc,nsc,pdc,psc,ndic,pdic,pc)/m1 230 \
	"Diffusion contact width < %d (CO.1 + 2 * CO.6)"
 spacing (ndc,nsc,pdc,psc,ndic,pdic,pc)/m1 \
	(ndc,nsc,pdc,psc,ndic,pdic,pc)/m1 240 \
	touching_ok "Diffusion contact spacing < %d (CO.2a - CO.6)"
 surround (ndc,nsc,pdc,psc,ndic,pdic,pc)/m1 *m1 55 35 \
	directional "Metal1 overlap of contact < %d in one direction (CO.6)"
 surround ndc/a *ndiff 65 absence_illegal \
	"N-Diffusion overlap of contact < %d (CO.4)"
 surround nsc/a *nsd 65 absence_illegal \
	"N-Diffusion overlap of contact < %d (CO.4)"
 surround pdc/a *pdiff 65 absence_illegal \
	"P-Diffusion overlap of contact < %d (CO.4)"
 surround psc/a *psd 65 absence_illegal \
	"P-Diffusion overlap of contact < %d (CO.4)"
 surround ndic/a *ndiode 65 absence_illegal \
	"N-Diffusion overlap of contact < %d (CO.4)"
 surround pdic/a *pdiode 65 absence_illegal \
	"P-Diffusion overlap of contact < %d (CO.4)"
 surround pc/a *poly 65 absence_illegal "Poly overlap of contact < %d (CO.3)"

 width (mvndc,mvnsc,mvpdc,mvpsc,mvndic,mvnndic,mvpdic)/m1 230 \
	"MV Diffusion contact width < %d (CO.1 + 2 * CO.6)"
 spacing (mvndc,mvnsc,mvpdc,mvpsc,mvndic,mvnndic,mvpdic)/m1 \
	(mvndc,mvnsc,mvpdc,mvpsc,mvndic,mvnndic,mvpdic)/m1 240 touching_ok \
	"Diffusion contact spacing < %d (CO.2a - CO.6)"
 surround (mvndc,mvnsc,mvpdc,mvpsc,mvndic,mvnndic,mvpdic)/m1 *m1 55 35 directional \
	"Metal1 overlap of contact < %d in one direction (CO.6)"
 surround mvndc/a *mvndiff 65 absence_illegal \
	"MV N-Diffusion overlap of contact < %d (CO.4)"
 surround mvnsc/a *mvnsd 65 absence_illegal \
	"MV N-Diffusion overlap of contact < %d (CO.4)"
 surround mvpdc/a *mvpdiff 65 absence_illegal \
	"MV P-Diffusion overlap of contact < %d (CO.4)"
 surround mvpsc/a *mvpsd 65 absence_illegal \
	"MV P-Diffusion overlap of contact < %d (CO.4)"
 surround mvndic/a *mvndiode 65 absence_illegal \
	"MV N-Diffusion overlap of contact < %d (CO.4)"
 surround mvnndic/a *mvnndiode 65 absence_illegal \
	"MV NAT N-Diffusion overlap of contact < %d (CO.4)"
 surround mvpdic/a *mvpdiode 65 absence_illegal \
	"MV P-Diffusion overlap of contact < %d (CO.4)"

 spacing allpdiffcont allndiffcont 240 touching_illegal \
	"Diffusion contact spacing < %d (CO.2a - CO.6)"
 spacing allndiffcont allndiffcont 240 touching_ok \
	"Diffusion contact spacing < %d (CO.2a - CO.6)"
 spacing allpdiffcont allpdiffcont 240 touching_ok \
	"Diffusion contact spacing < %d (CO.2a - CO.6)"
 spacing pc pc 240 touching_ok "Poly contact spacing < %d (CO.2a - CO.6)"
 spacing pc alldiff 165 touching_illegal \
	"Poly contact spacing to diffusion < %d (CO.8 - CO.6)"
 spacing allpdiffcont,allndiffcont allpoly 145 touching_illegal \
	"Diffusion contact spacing to poly < %d (CO.7 - CO.6)"

 exact_overlap (ndc,pdc,psc,nsc,pc,ndic,pdic)/a
 exact_overlap (mvndc,mvpdc,mvpsc,mvnsc,mvndic,mvnndic,mvpdic)/a

variants *

#-----------------------------
# METAL 1
#-----------------------------

 width *m1,rm1 230 "Metal1 width < %d (M1.1)"
 spacing allm1,obsm1  allm1,obsm1 230 touching_ok "Metal1 spacing < %d (M1.2a)"
 area allm1,obsm1 144400 230 "Metal1 minimum area < %a (M1.3)"

variants (fast),(full)
 widespacing allm1,obsm1 10000 allm1,obsm1  300 touching_ok \
	"Metal1 > 10um spacing to unrelated m1 < %d (M1.2b)"

variants *

#--------------------------------------------------
# VIA 1
#--------------------------------------------------

 width v1/m1 260 "Via1 width < %d (V1.1)"
 spacing v1 v1 260 touching_ok "Via1 spacing < %d (V1.2a)"
 surround v1/m1 *m1 60 40 directional \
	"Metal1 overlap of Via1 < %d in one direction (V1.3)"
 surround v1/m2 *m2 10 absence_illegal \
	"Metal2 overlap of Via1 < %d (V1.4)"
 surround v1/m2 *m2 60 40 directional \
	"Metal2 overlap of Via1 < %d in one direction (V1.4i)"
 exact_overlap v1/m2

#-----------------------------
# METAL 2
#-----------------------------

 width *m2,rm2 280 "Metal2 width < %d (M2.1)"
 spacing allm2,obsm2  allm2,obsm2 280 touching_ok "Metal2 spacing < %d (M2.2a)"
 area allm2,obsm2 144400 280 "Metal2 minimum area < %a (M2.3)"

variants (fast),(full)
 widespacing allm2,obsm2 10000 allm2,obsm2  300 touching_ok \
	"Metal2 > 10um spacing to unrelated m2 < %d (M2.2b)"

variants *

#ifdef METALS3 || METALS4 || METALS5 || METALS6
#--------------------------------------------------
# VIA 2
#--------------------------------------------------

 width v2/m2 280 "Via2 width < %d (V2.1 + 2 * V2.3)"
 spacing v2 v2 240 touching_ok "Via2 spacing < %d (V2.2a - 2 * V2.3)"
 surround v2/m2 *m2 50 30 directional \
	"Metal2 overlap of Via2 < %d in one direction (V2.3i - V2.3)"

 exact_overlap v2/m3

#-----------------------------
# METAL 3
#-----------------------------

#ifdef METALS3
 # Metal 3 is the top metal
#ifdef THICKMET3P0
 width *m3,rm3 1800 "Thick Metal3 width < %d (MT30.1)"
 spacing allm3,obsm3  allm3,obsm3 1800 touching_ok \
	"Thick Metal3 spacing < %d (MT30.2)"

 surround v2/m3 *m3 110 absence_illegal \
	"Thick Metal3 overlap of Via2 < %d (MT30.5 - V2.4)"
 surround v2/m3 *m3 240 directional \
	"Thick Metal3 overlap of Via2 < %d in one direction (MT30.6 - V2.4)"

#elseif defined(THICKMET0P9 || THICKMET1P1)
 surround v2/m3 *m3 50 30 directional \
	"Metal3 overlap of Via2 < %d in one direction (V2.4i - V2.4)"

 width *m3,rm3 440 "Metal3 width < %d (MT.1)"
 spacing allm3,obsm3  allm3,obsm3 460 touching_ok "Metal3 spacing < %d (MT.2a)"
 area allm3,obsm3 562500 440 "Metal3 minimum area < %a (MT.4)"

variants (fast),(full)
 widespacing allm3,obsm3 10000 allm3,obsm3  600 touching_ok \
	"Metal3 > %c spacing to unrelated m3 < %d (MT.2b)"

#else (!(THICKMET3P0 || THICKMET0P9 || THICKMET1P1))
 surround v2/m3 *m3 50 30 directional \
	"Metal3 overlap of Via2 < %d in one direction (V2.4i - V2.4)"

 width *m3,rm3 360 "Metal3 width < %d (MT.1)"
 spacing allm3,obsm3  allm3,obsm3 380 touching_ok "Metal3 spacing < %d (MT.2a)"
 area allm3,obsm3 562500 360 "Metal3 minimum area < %a (MT.4)"

variants (fast),(full)
 widespacing allm3,obsm3 10000 allm3,obsm3  500 touching_ok \
	"Metal3 > %c spacing to unrelated m3 < %d (MT.2b)"
#endif (!(THICK3UMET || THICKMET1P1 || THICKMET0P9))
#else (!METALS3)
 surround v2/m3 *m3 50 30 directional \
	"Metal3 overlap of Via2 < %d in one direction (V2.4i - V2.4)"

 width *m3,rm3 280 "Metal3 width < %d (M3.1)"
 spacing allm3,obsm3  allm3,obsm3 280 touching_ok "Metal3 spacing < %d (M3.2a)"
 area allm3,obsm3 144400 280 "Metal3 minimum area < %a (M3.3)"

variants (fast),(full)
 widespacing allm3,obsm3 10000 allm3,obsm3  300 touching_ok \
	"Metal3 > %c spacing to unrelated m3 < %d (M3.2b)"
#endif (!METALS3)

variants *
#endif (METALS3 || METALS4 || METALS5 || METALS6)

#ifdef METALS4 || METALS5 || METALS6
#--------------------------------------------------------------
# VIA 3 - Requires METAL4, METAL5, or METAL6 Module
#--------------------------------------------------------------

 width v3/m3 280 "Via3 width < %d (V3.1 + 2 * V3.4)"
 spacing v3 v3 240 touching_ok "Via3 spacing < %d (V3.2a - 2 * V3.4)"
 surround v3/m3 *m3 50 30 directional \
	"Metal3 overlap of Via3 < %d in one direction (V3.3i - V3.3)"

 exact_overlap v3/m4

#-----------------------------
# METAL 4 - METAL4 Module
#-----------------------------

#ifdef METALS4
 # Metal 4 is the top metal
#ifdef THICKMET3P0
 width *m4,rm4 1800 "Thick Metal4 width < %d (MT30.1)"
 spacing allm4,obsm4  allm4,obsm4 1800 touching_ok "Metal4 spacing < %d (MT30.2)"

 surround v3/m4 *m4 110 absence_illegal \
	"Thick Metal4 overlap of Via3 < %d (MT30.5 - V3.4)"
 surround v3/m4 *m4 240 directional \
	"Thick Metal4 overlap of Via3 < %d in one direction (MT30.6 - V3.4)"

#elseif defined(THICKMET0P9 || THICKMET1P1)
 surround v3/m4 *m4 50 30 directional \
	"Metal4 overlap of Via3 < %d in one direction (V3.4i - V3.4)"

 width *m4,rm4 440 "Metal4 width < %d (MT.1)"
 spacing allm4,obsm4  allm4,obsm4 460 touching_ok "Metal4 spacing < %d (MT.2a)"
 area allm4,obsm4 562500 440 "Metal4 minimum area < %a (MT.4)"

variants (fast),(full)
 widespacing allm4,obsm4 10000 allm4,obsm4  600 touching_ok \
	"Metal4 > %c spacing to unrelated m4 < %d (MT.2b)"
#else (!(THICK3UMET || THICKMET1P1 || THICKMET0P9))
 surround v3/m4 *m4 50 30 directional \
	"Metal4 overlap of Via3 < %d in one direction (V3.4i - V3.4)"

 width *m4,rm4 360 "Metal4 width < %d (MT.1)"
 spacing allm4,obsm4  allm4,obsm4 380 touching_ok "Metal4 spacing < %d (MT.2a)"
 area allm4,obsm4 562500 360 "Metal4 minimum area < %a (MT.4)"

variants (fast),(full)
 widespacing allm4,obsm4 10000 allm4,obsm4  500 touching_ok \
	"Metal4 > %c spacing to unrelated m4 < %d (MT.2b)"
#endif (!(THICK3UMET || THICKMET1P1 || THICKMET0P9))
#else (!METALS4)
 surround v3/m4 *m4 50 30 directional \
	"Metal4 overlap of Via3 < %d in one direction (V3.4i - V3.4)"

 width *m4,rm4 200 "Metal4 width < %d (M4.1)"
 spacing allm4,obsm4  allm4,obsm4 210 touching_ok "Metal4 spacing < %d (M4.2a)"
 area allm4,obsm4 144000 200 "Metal4 minimum area < %a (M4.3)"

variants (fast),(full)
 widespacing allm4,obsm4 10000 allm4,obsm4  300 touching_ok \
	"Metal4 > %c spacing to unrelated m4 < %d (M4.2b)"
#endif (!METALS4)

variants *
#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS5 || METALS6
#------------------------------------------------------
# VIA 4 - Requires METAL5 Module
#------------------------------------------------------

 width v4/m4 280 "Via4 width < %d (V4.1 + 2 * V4.4)"
 spacing v4 v4 240 touching_ok "Via4 spacing < %d (V4.2a - 2 * V4.4)"
 exact_overlap v4/m5

#-----------------------------
# METAL 5 - METAL5 Module
#-----------------------------

#ifdef METALS5
 # Metal 5 is the top metal
#ifdef THICKMET3P0
 width *m5,rm5 1800 "Metal5 width < %d (MT30.1)"
 spacing allm5,obsm5  allm5,obsm5 1800 touching_ok "Metal5 spacing < %d (MT30.2)"

 surround v4/m5 *m5 110 absence_illegal \
	"Metal5 overlap of Via4 < %d (MT30.5 - V4.4)"
 surround v4/m5 *m5 240 directional \
	"Metal5 overlap of Via4 < %d in one direction (MT30.6 - V4.4)"

#elseif defined(THICKMET1P1 || THICKMET0P9)
 surround v4/m4 *m4 50 30 directional \
	"Metal4 overlap of Via4 < %d in one direction (V4.3i - V4.3)"
 surround v4/m5 *m5 50 30 directional \
	"Metal5 overlap of Via4 < %d in one direction (V4.4i - V4.4)"

 width *m5,rm5 440 "Metal5 width < %d (MT.1)"
 spacing allm5,obsm5  allm5,obsm5 460 touching_ok "Metal5 spacing < %d (MT.2a)"
 area allm5,obsm5 526500 440 "Metal5 minimum area < %a (MT.4)"

variants (fast),(full)
 widespacing allm5,obsm5 10000 allm5,obsm5  600 touching_ok \
	"Metal5 > %c spacing to unrelated m5 < %d (MT.2b)"
#else (!(THICK3UMET || THICKMET1P1 || THICKMET0P9))
 surround v4/m4 *m4 50 30 directional \
	"Metal4 overlap of Via4 < %d in one direction (V4.3i - V4.3)"
 surround v4/m5 *m5 50 30 directional \
	"Metal5 overlap of Via4 < %d in one direction (V4.4i - V4.4)"

 width *m5,rm5 360 "Metal5 width < %d (MT.1)"
 spacing allm5,obsm5  allm5,obsm5 380 touching_ok "Metal5 spacing < %d (MT.2a)"
 area allm5,obsm5 562500 360 "Metal5 minimum area < %a (MT.4)"

variants (fast),(full)
 widespacing allm5,obsm5 10000 allm5,obsm5  500 touching_ok \
	"Metal5 > %c spacing to unrelated m5 < %d (MT.2b)"
#endif (!(THICK3UMET || THICKMET1P1 || THICKMET0P9))
#else (!METALS5)
 surround v4/m4 *m4 50 30 directional \
	"Metal4 overlap of Via4 < %d in one direction (V4.3i - V4.3)"
 surround v4/m5 *m5 50 30 directional \
	"Metal5 overlap of Via4 < %d in one direction (V4.4i - V4.4)"

 width *m5,rm5 200 "Metal5 width < %d (M5.1)"
 spacing allm5,obsm5  allm5,obsm5 210 touching_ok "Metal5 spacing < %d (M5.2a)"
 area allm5,obsm5 144000 200 "Metal5 minimum area < %a (M5.3)"

variants (fast),(full)
 widespacing allm5,obsm5 10000 allm5,obsm5  300 touching_ok \
	"Metal5 > %c spacing to unrelated m5 < %d (M5.2b)"

#endif (!METALS5)

variants *
#endif (METALS5 || METALS6)

#ifdef METALS6
#-----------------------------------------------------------------------------------
# VIA TP - Requires METAL6 Module
#-----------------------------------------------------------------------------------

 spacing vtp vtp 340 touching_ok "ViaTP spacing < %d (VT.2a - VT.3)"

 width vtp/m5 370 "ViaTP width < %d (VT.1+VT.3)"
 surround vtp/m5 *m5 45 directional \
	"Metal 5 overlap of ViaTP in one direction < %d (VT.3)"
 exact_overlap vtp/m5

#----------------------------------------------------------------------
# METAL TP - Top metal for METAL6 module
#----------------------------------------------------------------------

variants *
 # Metal TP is the top metal
#ifdef THICKMET3P0
 width allmtp 1800 "Thick Top Metal width < %d (MT30.1)"
 spacing allmtp,obsmtp  allmtk,obsmtk 1800 touching_ok\
	"Thick Top Metal spacing < %d (MT30.2a)"

 surround vtp/mtp *mtp 110 absence_illegal \
	"Thick Top Metal overlap of ViaTP < %d (MT30.5 - VTP.4)"
 surround vtp/mtp *mtp 240 directional \
	"Thick Top Metal overlap of ViaTP < %d in one direction (MT30.6 - VTP.4)"

#elseif defined(THICKMET1P1 || THICKMET0P9)
 surround vtp/mtp *mtp 80 absence_illegal \
	"Top Metal overlap of ViaTP < %d (VT.4 - VT.3)"
 width allmtp 440 "Top Metal width < %d (MT.1)"
 spacing allmtp,obsmtp  allmtp,obsmtp 460 touching_ok\
	"Top Metal spacing < %d (MT.2a)"
 area allmtp 562500 440 "Top Metal minimum area < %a (MT.4)"

variants (fast),(full)
 widespacing allmtp,obsmtp 10000 allmtp,obsmtp  600 touching_ok \
	"Top Metal > %c spacing to unrelated Top Metal < %d (MT.2b)"

#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 surround vtp/mtp *mtp 80 absence_illegal \
	"Top Metal overlap of ViaTP < %d (VT.4 - VT.3)"

 width allmtp 360 "Top Metal width < %d (MT.1)"
 spacing allmtp,obsmtp  allmtp,obsmtp 380 touching_ok\
	"Top Metal spacing < %d (MT.2a)"
 area allmtp 562500 360 "Top Metal minimum area < %a (MT.4)"

variants (fast),(full)
 widespacing allmtp,obsmtp 10000 allmtp,obsmtp  500 touching_ok \
	"Top Metal > %c spacing to unrelated Top Metal < %d (MT.2b)"

#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
variants *

#endif (METALS6)

#--------------------------------------------------
# NMOS, PMOS
#--------------------------------------------------

 # NOTE:  The layer width can be used for the smaller of
 # (minimum length, minimum width).  However, for many
 # devices, minimum width is less than minimum length.

 extend nnfet *ndiff 400 exclusive "nn Transistor length < %d (DF.2c)"

 extend mvnnfet *mvndiff 1200 exclusive "MV nn Transistor length < %d (NAT.4)"
 width mvnnfet 400 "MV nn Transistor width < %d (DF.2c)"

 extend pfet,pcap *pdiff 280 exclusive "Transistor length < %d (PL.1a)"
 extend nfet,ncap *ndiff 280 exclusive "Transistor length < %d (PL.1a)"
 width pfet,pcap 300 angles "Bent Transistor length < %d (PL.7)"
 width nfet,ncap 300 angles "Bent Transistor length < %d (PL.7)"

 extend mvpfet,mvpcap *mvpdiff 500 exclusive "MV Transistor length < %d (PL.1a)"
 extend mvnfet,mvncap *mvndiff 600 exclusive "MV Transistor length < %d (PL.1a)"
 width mvpfet,mvpcap 700 angles "Bent MV Transistor length < %d (PL.7)"
 width mvnfet,mvncap 700 angles "Bent MV Transistor length < %d (PL.7)"

 # NOTE:  Use edge4way to deal with butted junctions
 # spacing *nsd,*mvnsd pfet,pcap,mvnnfet,mvpfet,mvpcap 330 touching_illegal \
 #	"n-ohmic spacing to PMOS gate < %d (NP.4b)"
 # spacing *psd,*mvpsd nfet,ncap,nnfet,mvnfet,mvncap 330 touching_illegal \
 #	"p-ohmic spacing to NMOS gate < %d (NP.4c)"

 edge4way pfet,pcap,mvpfet,mvpcap *poly/a 330 \
	~(*nsd,*mvnsd)/a (*pdiff,*mvpdiff)/a 300 \
	"n-ohmic spacing to PMOS gate < %d (NP.4b + PP.4c)"
 edge4way nfet,ncap,nnfet,mvnnfet,mvnfet,mvncap *poly/a 330 \
	~(*psd,*mvpsd)/a (*ndiff,*mvndiff)/a 300 \
	"p-ohmic spacing to NMOS gate < %d (PP.4b + NP.4c)"

 # Butting junction rules (flag p/nsd distance to butting junction < 0.03um)
 edge4way (*psd)/a ~(*ndiff,*psd)/a 330 ~(*ndiff)/a (*ndiff)/a 30 \
        "N-Diffusion to P-tap spacing < %d across butted junction (PP.4b + NP.4c)"
 edge4way (*ndiff)/a ~(*ndiff,*psd)/a 330 ~(*psd)/a (*psd)/a 30 \
        "N-Diffusion to P-tap spacing < %d across butted junction (PP.4b + NP.4c)"
 edge4way (*nsd)/a ~(*pdiff,*nsd)/a 330 ~(*pdiff)/a (*pdiff)/a 30 \
        "P-Diffusion to N-tap spacing < %d across butted junction (NP.4b + PP.4c)"
 edge4way (*pdiff)/a ~(*pdiff,*nsd)/a 330 ~(*nsd)/a (*nsd)/a 30 \
        "P-Diffusion to N-tap spacing < %d across butted junction (NP.4b + PP.4c)"

 edge4way (*mvpsd)/a ~(*mvndiff,*mvpsd)/a 330 ~(*mvndiff)/a (*mvndiff)/a 30 \
        "MV N-Diffusion to MV P-tap spacing < %d across butted junction (PP.4b + NP.4c)"
 edge4way (*mvndiff)/a ~(*mvndiff,*mvpsd)/a 330 ~(*mvpsd)/a (*mvpsd)/a 30 \
        "MV N-Diffusion to MV P-tap spacing < %d across butted junction (PP.4b + NP.4c)"
 edge4way (*mvnsd)/a ~(*mvpdiff,*mvnsd)/a 330 ~(*mvpdiff)/a (*mvpdiff)/a 30 \
        "MV P-Diffusion to MV N-tap spacing < %d across butted junction (NP.4b + PP.4c)"
 edge4way (*mvpdiff)/a ~(*mvpdiff,*mvnsd)/a 330 ~(*mvnsd)/a (*mvnsd)/a 30 \
        "MV P-Diffusion to MV N-tap spacing < %d across butted junction (NP.4b + PP.4c)"

#--------------------------------------------------
# RPP,RNP
#--------------------------------------------------
 width rpp 800 "ppolyres minimum width < %d (PRES.1)"
 width rnp 800 "npolyres minimum width < %d (NRES.1)"
 spacing rpp rpp 400 touching_ok "ppolyres minimum spacing < %d (PRES.2)"
 spacing rnp rnp 400 touching_ok "npolyres minimum spacing < %d (NRES.2)"

 spacing rpp pc 215 touching_illegal "rpp spacing to Cont < %d (PRES.8 - CO.6)"
 spacing rnp pc 215 touching_illegal "rnp spacing to Cont < %d (NRES.8 - CO.6)"

#ifdef HRPOLY1K
#--------------------------------------------------
# HIRES
#--------------------------------------------------
  width hires,mvhires 1000 "hires poly minimum width < %d (HRES.3)"
  spacing hires,mvhires hires,mvhires 400 touching_ok \
	"hires poly minimum spacing < %d (HRES.2)"

 variants (full)
 cifmaxwidth res_diff_space 0 bend_illegal \
	"High value resistor spacing to diffusion < 0.7um (HRES.5 + HRES.4)"
 cifmaxwidth res_poly_space 0 bend_illegal \
	"High value resistor spacing to poly < 0.7um (HRES.6 + HRES.4)"

 cifmaxwidth res_cont_space_min 0 bend_illegal \
	"Unsalicided resistor spacing to poly contact must be 0.22um (PRES/LRES/HRES.7)"
 cifmaxwidth res_no_cont 0 bend_illegal \
	"Unsalicided resistor spacing to poly contact must be 0.22um (PRES/LRES/HRES.7)"
 variants *
#endif (HRPOLY1K)

#--------------------------------------------------
# RDN,RDP (Diffusion resistors)
#--------------------------------------------------
  width rdn 300 "N-diffusion resistor width < %d (DF.1b)"
  width rdp 300 "P-diffusion resistor width < %d (DF.1b)"

#------------------------------------
# MOS Varactor device rules
#------------------------------------

 overhang *nsd nvar 320 \
	"N-Ohmic overhang of Varactor < %d (FIXME)"

 overhang *mvnsd mvnvar 320 \
	"N-Ohmic overhang of Varactor < %d (FIXME)"

 width nvar,mvnvar 1000 \
	"Varactor length and width < %d (DF.1c)"

 overhang *psd pvar 320 \
	"P-Ohmic overhang of Varactor < %d (FIXME)"

 overhang *mvpsd mvpvar 320 \
	"P-Ohmic overhang of Varactor < %d (FIXME)"

 width pvar,mvpvar 1000 \
	"Varactor length and width < %d (DF.1c)"

#ifdef MIM
#undef MIM
#-------------------------------------------------
# CAPM (FuseTop)
#-------------------------------------------------

 width *mimcap 5000 "MiM cap top plate width < %d (MIMTM.8a)"
 spacing *mimcap *mimcap 600 touching_ok \
	"MiM cap top plate spacing < %d (MIMTM.6)"
 surround mimcc mimcap 390 absence_illegal \
	"MiM cap must surround MiM cap contact by %d (MIMTM.4-VT.4)"
 spacing pad *mimcap 50 touching_illegal "MiM cap cannot overlap pad (MIM1M.X)"
 spacing mimcc mimcc 480 touching_ok "MiM cap contact spacing < %d (MIMTM.9 - VT.3)"

#ifdef METALS3
 spacing via1 *mimcap 50 touching_illegal \
	"MiM cap cannot overlap via1 (MIMTM.10)"
 spacing *mimcap  *m2,rm2 1200 touching_ok \
	"MiM cap to Metal2 spacing < %d (MIMTM.1)"
 spacing *mimcap via2/m3  390 touching_illegal \
	"MiM cap spacing to via2 < %d (MIMTM.5-VT.X)"
 surround *mimcap m2 600 absence_illegal \
	"Bottom plate overlap of MiM cap < %d (MIMTM.3)"
 width mimcapc/m3 280 "MiM Contact width < %d (VT.1+VT.3)"
#elseif defined(METALS4)
 spacing via2 *mimcap 50 touching_illegal \
	"MiM cap cannot overlap via2 (MIMTM.10)"
 spacing *mimcap  *m3,rm3 1200 touching_ok \
	"MiM cap to Metal3 spacing < %d (MIMTM.1)"
 spacing *mimcap via3/m4  390 touching_illegal \
	"MiM cap spacing to via3 < %d (MIMTM.5)"
 surround *mimcap m3 600 absence_illegal \
	"Bottom plate overlap of MiM cap < %d (MIMTM.3)"
 width mimcapc/m4 280 "MiM Contact width < %d (VT.1+VT.3)"
#elseif defined(METALS5)
 spacing via3 *mimcap 50 touching_illegal \
	"MiM cap cannot overlap via3 (MIMTM.10)"
 spacing *mimcap  *m4,rm4 1200 touching_ok \
	"MiM cap to Metal4 spacing < %d (MIMTM.1)"
 spacing *mimcap via4/m5  390 touching_illegal \
	"MiM cap spacing to via4 < %d (MIMTM.5)"
 surround *mimcap m4 600 absence_illegal \
	"Bottom plate overlap of MiM cap < %d (MIMTM.3)"
 width mimcapc/m5 280 "MiM Contact width < %d (VT.1+VT.3)"
#elseif defined(METALS6)
 spacing via4 *mimcap 50 touching_illegal \
	"MiM cap cannot overlap via4 (MIMTM.10)"
 spacing *mimcap  *m5,rm5 1200 touching_ok \
	"MiM cap to Metal5 spacing < %d (MIMTM.1)"
 spacing *mimcap viatp/mtp  390 touching_illegal \
	"MiM cap spacing to viaTP < %d (MIMTM.5)"
 surround *mimcap m5 600 absence_illegal \
	"Bottom plate overlap of MiM cap < %d (MIMTM.3)"
 width mimcapc/mtp 280 "MiM Contact width < %d (VT.1+VT.3)"
#endif

 variants (full)
 cifmaxwidth mim_bottom_plate_space 0 bend_illegal \
	"MiM bottom plate to unrelated metal < 1.2um (MIMTM.1)"
 cifmaxwidth mim_bot_cont_surround 0 bend_illegal \
	"MiM bottom plate surrounds contact < 0.4um (MIMTM.2)"
#define MIM
#endif (MIM)

#----------------------------
# End DRC style
#----------------------------

 style empty
 scalefactor 50
 stepsize 2000

end

#----------------------------
# LEF format definitions
#----------------------------

lef

 masterslice pwell  Pwell PWELL
 masterslice nwell  Nwell NWELL

 routing m1	Metal1 METAL1 MET1 m1 met1 metal1
 routing m2	Metal2 METAL2 MET2 m2 met2 metal2
#ifdef METALS3 || METALS4 || METALS5 || METALS6
 routing m3	Metal3 METAL3 MET3 m3 met3 metal3
#endif (METALS3 || METALS4 || METALS5 || METALS6)
#ifdef METALS4 || METALS5 || METALS6
 routing m4	Metal4 METAL4 MET4 m4 met4 metal4
#endif (METALS4 || METALS5 || METALS6)
#ifdef METALS5 || METALS6
 routing m5	Metal5 METAL5 MET5 m5 met5 metal5
#endif (METALS5 || METALS6)
#ifdef METALS6
 routing mtp	MetalTop Metal6 METAL6 METTP mtp mettp MET6 m6 met6 metal6
#endif (METALS6)

 cut m2c  Via1 VIA1 via1 cont2 via12 VIA12
#ifdef METALS3 || METALS4 || METALS5 || METALS6
 cut m3c  Via2 VIA2 via2 cont3 via23 VIA23
#endif (METALS3 || METALS4 || METALS5 || METALS6)
#ifdef METALS4 || METALS5 || METALS6
 cut via3 Via3 VIA3 via3 cont4 via34 VIA34
#endif (METALS4 || METALS5 || METALS6)
#ifdef METALS5 || METALS6
 cut via4 Via4 VIA4 via4 cont5 via45 VIA45
#endif (METALS5 || METALS6)
#ifdef METALS6
 cut viatp Via5 viatp VIATP VIA5 vtp via5 cont6 via56 VIA56
#endif (METALS6)

 obs obsm1   Metal1
 obs obsm2   Metal2
#ifdef METALS3 || METALS4 || METALS5 || METALS6
 obs obsm3   Metal3
#endif (METALS3 || METALS4 || METALS5 || METALS6)
#ifdef METALS4 || METALS5 || METALS6
 obs obsm4   Metal4
#endif (METALS4 || METALS5 || METALS6)
#ifdef METALS5 || METALS6
 obs obsm5   Metal5
#endif (METALS5 || METALS6)
#ifdef METALS6
 obs obsmtp  Metal6
#endif (METALS6)

 obs obsv1 Via1
 obs obsv2 Via2

end

#-----------------------------------------------------
# Device and Parasitic extraction
#-----------------------------------------------------

extract
 style ngspice variants (),(hrhc),(lrhc),(hrlc),(lrlc)
 cscale 1
 lambda  5.0
 units	microns
 step   7
 sidehalo 8
 fringeshieldhalo 8

 planeorder dwell	0
 planeorder well 	1
 planeorder active 	2
 planeorder metal1 	3
 planeorder metal2 	4
#ifdef METALS3
 planeorder metal3 	5
 planeorder block       6
 planeorder comment     7
#elseif defined(METALS4)
 planeorder metal3 	5
 planeorder metal4 	6
 planeorder block       7
 planeorder comment     8
#elseif defined(METALS5)
 planeorder metal3 	5
 planeorder metal4 	6
 planeorder metal5 	7
 planeorder block       8
 planeorder comment     9
#elseif defined(METALS6)
 planeorder metal3 	5
 planeorder metal4 	6
 planeorder metal5 	7
 planeorder metaltp 	8
 planeorder block       9
 planeorder comment     10
#endif

 height dnwell	       -0.1	0.0	
 height nwell,pwell	0.0	0.0145
 height alldiff		0.0145	0.30
 height allpoly		0.32	0.2
 height alldiffcont	0.3145	0.9155
 height pc		0.52	0.71
 height allm1		1.23	0.55
 height via		1.78	0.60
 height allm2		2.38	0.55
#ifdef METALS3 || METALS4 || METALS5 || METALS6
 height via2		2.93	0.60
 height allm3		3.53	0.55
#endif
#ifdef METALS4 || METALS5 || METALS6
 height via3		4.08	0.60
 height allm4		4.68	0.55
#endif
#ifdef METALS5 || METALS6
 height via4		5.23	0.60
#endif
#ifdef METALS5
 height allm5		5.83	1.0025
#endif
#ifdef METALS6
 height allm5		5.83	0.55
#endif
#ifdef METALS6
 height viatp		6.38	0.9	
 height allmtp		7.28	1.0025
#endif
 
 # Antenna check parameters
 # (to be completed)
 model partial
 antenna poly sidewall 200 none
 antenna allcont surface 10 none
 antenna via1 surface 20 none
#ifdef METALS3 || METALS4 || METALS5 || METALS6
 antenna via2 surface 20 none
#endif
#ifdef METALS4 || METALS5 || METALS6
 antenna via3 surface 20 none
#endif
#ifdef METALS5 || METALS6
 antenna via4 surface 20 none
#endif
#ifdef METALS6
 antenna viatp surface 20 none
#endif
#ifdef MIM
 antenna mimcc surface 20 none
#endif
 antenna m1,m2 sidewall 400 none
#ifdef METALS3 || METALS4 || METALS5 || METALS6
 antenna m3 sidewall 400 none
#endif
#ifdef METALS4 || METALS5 || METALS6
 antenna m4 sidewall 400 none
#endif
#ifdef METALS5 || METALS6
 antenna m5 sidewall 400 none
#endif
#ifdef METALS6
 antenna mtp sidewall 400 none
#endif

 tiedown alldiffnonfet

 substrate *ppdiff,*mvppdiff,space/w,pwell well $SUB -dnwell,isosub

# Layer resistance

variants ()

# Resistances are in milliohms per square
# Optional 3rd argument is the corner adjustment fraction
# See document 180MCU_YI-141-EP059-01_10.pdf

 resist (nwell,dnwell)/well      1000000
 resist (pwell,isosub)/well 	 3250000

 resist (*ndiff,nsd)/active 	  6300
 resist (*pdiff,*psd)/active	  7000
 resist (*mvndiff,mvnsd)/active   6300
 resist (*mvpdiff,*mvpsd)/active  7000

 resist (allpolynonres)/active    7300

 resist (rnw)/well             1000000 0.5
 resist (rnd)/active 	 	 60000 0.5
 resist (rpd)/active 		185000 0.5
 resist (mvrnd)/active 		 60000 0.5
 resist (mvrpd)/active 		185000 0.5
 resist (rnds)/active 	 	  6300 0.5
 resist (rpds)/active 		  7000 0.5
 resist (mvrnds)/active		  6300 0.5
 resist (mvrpds)/active		  7000 0.5
 resist (rnps)/active	  	  6800 0.5
 resist (rpps)/active	  	  7300 0.5
 resist (rpp)/active		350000 0.5
 resist (rnp)/active		310000 0.5
#ifdef HRPOLY1K
 resist (hires,mvhires)/active 1000000 0.5
#endif (HRPOLY1K)

 resist (allm1)/metal1		    90
 resist (allm2)/metal2		    90
#ifdef METALS3
#ifdef THICKMET3P0
 resist (allm3)/metal3  	    10
#elseif defined(THICKMET1P1 || THICKMET0P9)
 resist (allm3)/metal3  	    40
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allm3)/metal3  	    60
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS3)
#ifdef METALS4 || METALS5 || METALS6
 resist (allm3)/metal3	            90
#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS4
#ifdef THICKMET3P0
 resist (allm4)/metal4  	    10
#elseif defined(THICKMET1P1 || THICKMET0P9)
 resist (allm4)/metal4  	    40
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allm4)/metal4  	    60
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS4)
#ifdef METALS5 || METALS6
 resist (allm4)/metal4  	    90
#endif (METALS5 || METALS6)

#ifdef METALS5
#ifdef THICKMET3P0
 resist (allm5)/metal5  	    10
#elseif defined(THICKMET1P1 || THICKMET0P9)
 resist (allm5)/metal5  	    40
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allm5)/metal5  	    60
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS5)
#ifdef METALS6
 resist (allm5)/metal5  	    90
#endif (METALS6)

#ifdef METALS6
#ifdef THICKMET3P0
 resist (allmtp)/metaltp  	   10
#elseif defined(THICKMET1P1 || THICKMET0P9)
 resist (allmtp)/metaltp  	    40
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allmtp)/metaltp  	    60
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS6)

 contact ndc,nsc		  6300
 contact pdc,psc		  5200
 contact mvndc,mvnsc		  6300
 contact mvpdc,mvpsc		  5200
 contact pc			  8000
 contact m2c			  4500
#ifdef METALS3 || METALS4 || METALS5 || METALS6
 contact m3c			  4500
#endif (METALS3 || METALS4 || METALS5 || METALS6)
#ifdef METALS4 || METALS5 || METALS6
 contact via3			  4500
#endif (METALS4 || METALS5 || METALS6)
#ifdef METALS5 || METALS6
 contact via4			  4500
#endif (METALS5 || METALS6)
#ifdef MIM
 contact mimcc			  4500
#endif (MIM)
#ifdef METALS6
 contact viatp			  4500
#endif (METALS6)

variants (hrhc),(hrlc)

 # High-end corner resistances (milliohms per square)

 resist (nwell,dnwell)/well      1200000
 resist (pwell,isosub)/well 	 3250000

 resist (*ndiff,nsd)/active 	 15000
 resist (*pdiff,*psd)/active	 15000
 resist (*mvndiff,mvnsd)/active  15000
 resist (*mvpdiff,*mvpsd)/active 15000

 resist (allpolynonres)/active   15000

 resist (rnw)/well             1200000 0.5
 resist (rnd)/active 	 	 75000 0.5
 resist (rpd)/active 		225000 0.5
 resist (mvrnd)/active 		 75000 0.5
 resist (mvrpd)/active 		225000 0.5
 resist (rnds)/active 	 	 15000 0.5
 resist (rpds)/active 		 15000 0.5
 resist (mvrnds)/active		 15000 0.5
 resist (mvrpds)/active		 15000 0.5
 resist (rnps)/active	  	 15000 0.5
 resist (rpps)/active	  	 15000 0.5
 resist (rpp)/active		420000 0.5
 resist (rnp)/active		370000 0.5
#ifdef HRPOLY1K
 resist (hires,mvhires)/active	1200000 0.5
#endif (HRPOLY1K)

 resist (allm1)/metal1		   104
 resist (allm2)/metal2		   104
#ifdef METALS3
#ifdef THICKMET3P0
 resist (allm3)/metal3  	    15
#elseif defined(THICKMET1P1 || THICKMET0P9)
 resist (allm3)/metal3  	    49
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allm3)/metal3  	    70
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS3)
#ifdef METALS4 || METALS5 || METALS6
 resist (allm3)/metal3	           104
#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS4
#ifdef THICKMET3P0
 resist (allm4)/metal4  	    14
#elseif defined(THICKMET1P1 || THICKMET0P9)
 resist (allm4)/metal4  	    49
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allm4)/metal4  	    70
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS4)
#ifdef METALS5 || METALS6
 resist (allm4)/metal4  	   104
#endif (METALS5 || METALS6)

#ifdef METALS5
#ifdef THICKMET3P0
 resist (allm5)/metal5  	    14
#elseif defined(THICKMET1P1 || THICKMET0P9)
 resist (allm5)/metal5  	    49
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allm5)/metal5  	    70
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS5)
#ifdef METALS6
 resist (allm5)/metal5  	   104
#endif (METALS6)

#ifdef METALS6
#ifdef THICKMET3P0
 resist (allmtp)/metaltp  	    14
#elseif defined(THICKMET1P1 || THICKMET0P9)
 resist (allmtp)/metaltp  	    49
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allmtp)/metaltp  	    70
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS6)

 contact ndc,nsc		 15000
 contact pdc,psc		 15000
 contact mvndc,mvnsc		 15000
 contact mvpdc,mvpsc		 15000
 contact pc			 15000
 contact m2c			 15000
#ifdef METALS3 || METALS4 || METALS5 || METALS6
 contact m3c			 15000
#endif (METALS3 || METALS4 || METALS5 || METALS6)
#ifdef METALS4 || METALS5 || METALS6
 contact via3			 15000
#endif (METALS4 || METALS5 || METALS6)
#ifdef METALS5 || METALS6
 contact via4			 15000
#endif (METALS5 || METALS6)
#ifdef MIM
 contact mimcc			 15000
#endif (MIM)
#ifdef METALS6
 contact viatp			 15000
#endif (METALS6)

variants (lrhc),(lrlc)

 # Low-end corner resistances (milliohms per square)

 resist (nwell,dnwell)/well       800000
 resist (pwell,isosub)/well 	 3250000

 resist (*ndiff,nsd)/active 	  1000
 resist (*pdiff,*psd)/active	  1000
 resist (*mvndiff,mvnsd)/active   1000
 resist (*mvpdiff,*mvpsd)/active  1000

 resist (allpolynonres)/active    1000

 resist (rnw)/well             8000000 0.5
 resist (rnd)/active 	 	 45000 0.5
 resist (rpd)/active 		145000 0.5
 resist (mvrnd)/active 		 45000 0.5
 resist (mvrpd)/active 		145000 0.5
 resist (rnds)/active 	 	  1000 0.5
 resist (rpds)/active 		  1000 0.5
 resist (mvrnds)/active		  1000 0.5
 resist (mvrpds)/active		  1000 0.5
 resist (rnps)/active	  	  1000 0.5
 resist (rpps)/active	  	  1000 0.5
 resist (rpp)/active		280000 0.5
 resist (rnp)/active		250000 0.5
#ifdef HRPOLY1K
 resist (hires,mvhires)/active  800000 0.5
#endif (HRPOLY1K)

 resist (allm1)/metal1		    76
 resist (allm2)/metal2		    76
#ifdef METALS3
#ifdef THICKMET3P0
 resist (allm3)/metal3  	     6
#elseif defined(THICKMET1P1 || THICKMET0P9)
 resist (allm3)/metal3  	    31
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allm3)/metal3  	    50
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS3)
#ifdef METALS4 || METALS5 || METALS6
 resist (allm3)/metal3	            76
#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS4
#ifdef THICKMET3P0
 resist (allm4)/metal4  	     6
#elseif defined(THICKMET1P1 || THICKMET0P9)
 resist (allm4)/metal4  	    31
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allm4)/metal4  	    50
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS4)
#ifdef METALS5 || METALS6
 resist (allm4)/metal4  	    76
#endif (METALS5 || METALS6)

#ifdef METALS5
#ifdef THICKMET3P0
 resist (allm5)/metal5  	     6
#elseif defined(THICKMET1P1 || THICKMET0P9)
 resist (allm5)/metal5  	    31
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allm5)/metal5  	    50
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS5)
#ifdef METALS6
 resist (allm5)/metal5  	    76
#endif (METALS6)

#ifdef METALS6
#ifdef THICKMET3P0
 resist (allmtp)/metaltp  	     6
#elseif defined(THICKMET1P1 || THICKMET0P9)
 resist (allmtp)/metaltp  	    31
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allmtp)/metaltp  	    50
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS6)

 contact ndc,nsc		     0
 contact pdc,psc		     0
 contact mvndc,mvnsc		     0
 contact mvpdc,mvpsc		     0
 contact pc			     0
 contact m2c			     0
#ifdef METALS3 || METALS4 || METALS5 || METALS6
 contact m3c			     0
#endif (METALS3 || METALS4 || METALS5 || METALS6)
#ifdef METALS4 || METALS5 || METALS6
 contact via3			     0
#endif (METALS4 || METALS5 || METALS6)
#ifdef METALS5 || METALS6
 contact via4			     0
#endif (METALS5 || METALS6)
#ifdef MIM
 contact mimcc			     0
#endif (MIM)
#ifdef METALS6
 contact viatp			     0
#endif (METALS6)

variants *

 # These types should not be considered as electrical nodes
 resist comment			None

#-------------------------------------------------------------------------
# Parasitic capacitance values:
#-------------------------------------------------------------------------
# This uses the new "default" definitions that determine the intervening
# planes from the planeorder stack, take care of the reflexive sideoverlap
# definitions, and generally clean up the section and make it more readable.
#
# Also uses "units microns" statement, so all parasitic capacitance values
# are taken directly from the source document PDS_035_03, in units of
# aF/um^2 for area caps and aF/um for perimeter and sidewall caps.
#-------------------------------------------------------------------------
# Remember that device capacitances to substrate are taken care of by the
# models.  Thus, active and poly definitions ignore all "fet" types.
# fet types are excluded when computing parasitic capacitance to
# active from layers above them because poly is a shield; fet types are
# included for parasitics from layers above to poly.  Resistor types
# should be removed from all parasitic capacitance calculations, or else
# they just create floating caps.  Technically, the capacitance probably
# should be split between the two terminals.  Unsure of the correct model.
# Because rnw is on the well plane, "defaultareacap" does not work for
# planes above diffusion because rnw cannot be removed from types on the
# well plane.  Because of this, use the normal "areacap" to specify cap
# to substrate, and "defaultoverlap" to specify cap to nwell (but not rnw). 
#-------------------------------------------------------------------------

variants ()
# Nominal capacitances

#n-well
defaultareacap     nwell well 120

#n-active 
# Rely on device models to capture *ndiff area cap
# Do not extract parasitics from resistors
# defaultareacap     allnactivenonfet active 790
# defaultperimeter   allnactivenonfet active 280

#p-active
# Rely on device models to capture *pdiff area cap
# Do not extract parasitics from resistors
# defaultareacap     allpactivenonfet active 810
# defaultperimeter   allpactivenonfet active 300

#poly
# Do not extract parasitics from resistors
# defaultsidewall    allpolynonfet active  22
# defaultareacap     allpolynonfet active  105
# defaultperimeter   allpolynonfet active   57

 defaultsidewall    *poly active  16.46
 defaultareacap     *poly active nwell,obswell,pwell well  110.677
 defaultperimeter   *poly active nwell,obswell,pwell well  51.29

#metal1
 defaultsidewall    allm1 metal1       28.01
 defaultareacap     allm1 metal1 nwell,obswell,pwell well  29.3046
 defaultperimeter   allm1 metal1 nwell,obswell,pwell well  25.783
 defaultoverlap     allm1 metal1 nwell well 29.3046

#metal1->diff
 defaultoverlap     allm1 metal1 allactivenonfet active 39.2181
 defaultsideoverlap allm1 metal1 allactivenonfet active 30.683

#metal1->poly
 defaultoverlap     allm1 metal1 allpolynonres active 51.4351
 defaultsideoverlap allm1 metal1 allpolynonres active 35.602

#metal2
 defaultsidewall    allm2 metal2      30.381
 defaultareacap     allm2 metal2 nwell,obswell,pwell well 15.0162
 defaultperimeter   allm2 metal2 nwell,obswell,pwell well 18.263
 defaultoverlap     allm2 metal2 nwell well 15.0162
#metal2->active
 defaultoverlap     allm2 metal2 allactivenonfet active 17.2506
 defaultsideoverlap allm2 metal2 allactivenonfet active 20.018

#metal2->poly
 defaultoverlap     allm2 metal2 allpolynonres active 19.2632
 defaultsideoverlap allm2 metal2 allpolynonres active 21.531

#metal2->metal1
 defaultoverlap     allm2 metal2 allm1 metal1 59.0279
 defaultsideoverlap allm2 metal2 allm1 metal1 40.880

#ifdef METALS3 || METALS4 || METALS5 || METALS6
#metal3
 defaultsidewall    allm3 metal3     30.774
 defaultareacap     allm3 metal3 nwell,obswell,pwell well 10.0944
 defaultoverlap     allm3 metal3 nwell well 10.0944
 defaultperimeter   allm3 metal3 nwell,obswell,pwell well 13.52

#metal3->active
 defaultoverlap     allm3 metal3 allactive active 11.0571
 defaultsideoverlap allm3 metal3 allactive active 14.36

#metal3->poly
 defaultoverlap     allm3 metal3 allpolynonres active 11.8507
 defaultsideoverlap allm3 metal3 allpolynonres active 15.054

#metal3->metal1
 defaultoverlap     allm3 metal3 allm1 metal1 20.2381
 defaultsideoverlap allm3 metal3 allm1 metal1 21.705

#metal3->metal2
 defaultoverlap     allm3 metal3 allm2 metal2 59.0279
 defaultsideoverlap allm3 metal3 allm2 metal2 40.482
#endif (METALS3 || METALS4 || METALS5 || METALS6)

#ifdef METALS4 || METALS5 || METALS6
#metal4
 defaultsidewall    allm4 metal4       30.994
 defaultareacap     allm4 metal4 nwell,obswell,pwell well 7.6025
 defaultoverlap     allm4 metal4 nwell well 7.6025
 defaultperimeter   allm4 metal4 well  10.649

#metal4->active
 defaultoverlap     allm4 metal4 allactivenonfet active 8.1360
 defaultsideoverlap allm4 metal4 allactivenonfet active 11.129

#metal4->poly
 defaultoverlap     allm4 metal4 allpolynonres active 8.5577
 defaultsideoverlap allm4 metal4 allpolynonres active 11.505

#metal4->metal1
 defaultoverlap     allm4 metal4 allm1 metal1 12.2127
 defaultsideoverlap allm4 metal4 allm1 metal1 14.829

#metal4->metal2
 defaultoverlap     allm4 metal4 allm2 metal2 20.2381
 defaultsideoverlap allm4 metal4 allm2 metal2 21.025

#metal4->metal3
 defaultoverlap     allm4 metal4 allm3 metal3 59.0279
 defaultsideoverlap allm4 metal4 allm3 metal3 39.786
#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS5
#metal5
 defaultsidewall    allm5 metal5       54.148
#endif
#ifdef METALS6
 defaultsidewall    allm5 metal5       31.121
#endif

#ifdef METALS5 || METALS6
 defaultareacap     allm5 metal5 nwell,obswell,pwell well 5.7979
 defaultoverlap     allm5 metal5 nwell well 5.7979
 defaultperimeter   allm5 metal5 well  10.850

#metal5->active
 defaultoverlap     allm5 metal5 allactivenonfet active 6.1031
 defaultsideoverlap allm5 metal5 allactivenonfet active 11.258

#metal5->poly
 defaultoverlap     allm5 metal5 allpolynonres active 6.3374
 defaultsideoverlap allm5 metal5 allpolynonres active 11.570

#metal5->metal1
 defaultoverlap     allm5 metal5 allm1 metal1 8.1418
 defaultsideoverlap allm5 metal5 allm1 metal1 13.958

#metal5->metal2
 defaultoverlap     allm5 metal5 allm2 metal2 11.0677
 defaultsideoverlap allm5 metal5 allm2 metal2 17.640

#metal5->metal3
 defaultoverlap     allm5 metal5 allm3 metal3 17.2765
 defaultsideoverlap allm5 metal5 allm3 metal3 24.286

#metal5->metal4
 defaultoverlap     allm5 metal5 allm4 metal4 39.3519
 defaultsideoverlap allm5 metal5 allm4 metal4 39.586
#endif (METALS5 || METALS6)

#ifdef METALS6
#metaltp
 defaultsidewall    allmtp metaltp      54.335
 defaultareacap     allmtp metaltp nwell,obswell,pwell well 4.8793
 defaultoverlap     allmtp metaltp nwell well 4.8793
 defaultperimeter   allmtp metaltp well  9.5950

#metaltp->active
 defaultoverlap     allmtp metaltp allactivenonfet active 5.0937
 defaultsideoverlap allmtp metaltp allactivenonfet active 9.8790

#metaltp->poly
 defaultoverlap     allmtp metaltp allpolynonres active 5.2558
 defaultsideoverlap allmtp metaltp allpolynonres active 10.128

#metaltp->metal1
 defaultoverlap     allmtp metaltp allm1 metal1 6.4394
 defaultsideoverlap allmtp metaltp allm1 metal1 11.765

#metaltp->metal2
 defaultoverlap     allmtp metaltp allm2 metal2 8.1418
 defaultsideoverlap allmtp metaltp allm2 metal2 13.958

#metaltp->metal3
 defaultoverlap     allmtp metaltp allm3 metal3 11.0677
 defaultsideoverlap allmtp metaltp allm3 metal3 17.640

#metaltp->metal4
 defaultoverlap     allmtp metaltp allm3 metal3 17.2765
 defaultsideoverlap allmtp metaltp allm3 metal3 24.286

#metaltp->metal5
 defaultoverlap     allmtp metaltp allm3 metal3 39.3519
 defaultsideoverlap allmtp metaltp allm3 metal3 39.586
#endif (METALS6)

#-------------------------------------------------------------------------
# Parasitic capacitance values for maximum corner
#-------------------------------------------------------------------------

variants (hrhc),(lrhc)
# Maximum corner capacitances

#n-well
defaultareacap     nwell well 120

#n-active 
# Rely on device models to capture *ndiff area cap
# Do not extract parasitics from resistors
# defaultareacap     allnactivenonfet active 790
# defaultperimeter   allnactivenonfet active 280

#p-active
# Rely on device models to capture *pdiff area cap
# Do not extract parasitics from resistors
# defaultareacap     allpactivenonfet active 810
# defaultperimeter   allpactivenonfet active 300

#poly
# Do not extract parasitics from resistors
# defaultsidewall    allpolynonfet active  22
# defaultareacap     allpolynonfet active  105
# defaultperimeter   allpolynonfet active   57

 defaultsidewall    *poly active  16.56
 defaultareacap     *poly active nwell,obswell,pwell well  130.2
 defaultperimeter   *poly active nwell,obswell,pwell well  54.018

#metal1
 defaultsidewall    allm1 metal1       29.294
 defaultareacap     allm1 metal1 nwell,obswell,pwell well  33.126
 defaultperimeter   allm1 metal1 nwell,obswell,pwell well  25.790
 defaultoverlap     allm1 metal1 nwell well 33.126

#metal1->diff
 defaultoverlap     allm1 metal1 allactivenonfet active 43.636
 defaultsideoverlap allm1 metal1 allactivenonfet active 30.445

#metal1->poly
 defaultoverlap     allm1 metal1 allpolynonres active 60.321
 defaultsideoverlap allm1 metal1 allpolynonres active 36.440

#metal2
 defaultsidewall    allm2 metal2      31.727
 defaultareacap     allm2 metal2 nwell,obswell,pwell well 16.472
 defaultperimeter   allm2 metal2 nwell,obswell,pwell well 18.124
 defaultoverlap     allm2 metal2 nwell well 16.472
#metal2->active
 defaultoverlap     allm2 metal2 allactivenonfet active 18.713
 defaultsideoverlap allm2 metal2 allactivenonfet active 19.744

#metal2->poly
 defaultoverlap     allm2 metal2 allpolynonres active 21.231
 defaultsideoverlap allm2 metal2 allpolynonres active 21.467

#metal2->metal1
 defaultoverlap     allm2 metal2 allm1 metal1 73.632
 defaultsideoverlap allm2 metal2 allm1 metal1 43.788

#ifdef METALS3 || METALS4 || METALS5 || METALS6
#metal3
 defaultsidewall    allm3 metal3     32.049
 defaultoverlap     allm3 metal3 nwell well 11.910
 defaultareacap     allm3 metal3 nwell,obswell,pwell well 10.961
 defaultperimeter   allm3 metal3 nwell,obswell,pwell well 13.270

#metal3->active
 defaultoverlap     allm3 metal3 allactive active 11.910
 defaultsideoverlap allm3 metal3 allactive active 14.034

#metal3->poly
 defaultoverlap     allm3 metal3 allpolynonres active 12.883
 defaultsideoverlap allm3 metal3 allpolynonres active 14.812

#metal3->metal1
 defaultoverlap     allm3 metal3 allm1 metal1 22.675
 defaultsideoverlap allm3 metal3 allm1 metal1 21.903

#metal3->metal2
 defaultoverlap     allm3 metal3 allm2 metal2 73.632
 defaultsideoverlap allm3 metal3 allm2 metal2 43.400
#endif (METALS3 || METALS4 || METALS5 || METALS6)

#ifdef METALS4 || METALS5 || METALS6
#metal4
 defaultsidewall    allm4 metal4       32.265
 defaultareacap     allm4 metal4 nwell,obswell,pwell well 8.213
 defaultoverlap     allm4 metal4 nwell well 8.213
 defaultperimeter   allm4 metal4 well  10.397

#metal4->active
 defaultoverlap     allm4 metal4 allactivenonfet active 8.735
 defaultsideoverlap allm4 metal4 allactivenonfet active 10.831

#metal4->poly
 defaultoverlap     allm4 metal4 allpolynonres active 9.247
 defaultsideoverlap allm4 metal4 allpolynonres active 11.247

#metal4->metal1
 defaultoverlap     allm4 metal4 allm1 metal1 13.400
 defaultsideoverlap allm4 metal4 allm1 metal1 14.625

#metal4->metal2
 defaultoverlap     allm4 metal4 allm2 metal2 22.674
 defaultsideoverlap allm4 metal4 allm2 metal2 21.263

#metal4->metal3
 defaultoverlap     allm4 metal4 allm3 metal3 73.63
 defaultsideoverlap allm4 metal4 allm3 metal3 42.64
#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS5 || METALS6
#metal5
 defaultsidewall    allm5 metal5       57.012
 defaultareacap     allm5 metal5 nwell,obswell,pwell well 6.241
 defaultoverlap     allm5 metal5 nwell well 6.241
 defaultperimeter   allm5 metal5 well  10.676

#metal5->active
 defaultoverlap     allm5 metal5 allactivenonfet active 6.537
 defaultsideoverlap allm5 metal5 allactivenonfet active 11.074

#metal5->poly
 defaultoverlap     allm5 metal5 allpolynonres active 6.820
 defaultsideoverlap allm5 metal5 allpolynonres active 11.431

#metal5->metal1
 defaultoverlap     allm5 metal5 allm1 metal1 8.841
 defaultsideoverlap allm5 metal5 allm1 metal1 13.909

#metal5->metal2
 defaultoverlap     allm5 metal5 allm2 metal2 12.108
 defaultsideoverlap allm5 metal5 allm2 metal2 17.722

#metal5->metal3
 defaultoverlap     allm5 metal5 allm3 metal3 19.207
 defaultsideoverlap allm5 metal5 allm3 metal3 24.724

#metal5->metal4
 defaultoverlap     allm5 metal5 allm4 metal4 46.18
 defaultsideoverlap allm5 metal5 allm4 metal4 41.628
#endif (METALS5 || METALS6)

#ifdef METALS6
#metaltp
 defaultsidewall    allmtp metaltp       57.187
 defaultareacap     allmtp metaltp nwell,obswell,pwell well 5.242
 defaultoverlap     allmtp metaltp nwell well 5.242
 defaultperimeter   allmtp metaltp well  9.407

#metaltp->active
 defaultoverlap     allmtp metaltp allactivenonfet active 5.450
 defaultsideoverlap allmtp metaltp allactivenonfet active 9.679

#metaltp->poly
 defaultoverlap     allmtp metaltp allpolynonres active 5.645
 defaultsideoverlap allmtp metaltp allpolynonres active 9.925

#metaltp->metal1
 defaultoverlap     allmtp metaltp allm1 metal1 6.962
 defaultsideoverlap allmtp metaltp allm1 metal1 11.549

#metaltp->metal2
 defaultoverlap     allmtp metaltp allm2 metal2 8.841
 defaultsideoverlap allmtp metaltp allm2 metal2 13.909

#metaltp->metal3
 defaultoverlap     allmtp metaltp allm3 metal3 12.211
 defaultsideoverlap allmtp metaltp allm3 metal3 17.215

#metaltp->metal4
 defaultoverlap     allmtp metaltp allm3 metal3 19.207
 defaultsideoverlap allmtp metaltp allm3 metal3 24.725

#metaltp->metal5
 defaultoverlap     allmtp metaltp allm3 metal3 46.418
 defaultsideoverlap allmtp metaltp allm3 metal3 41.628
#endif (METALS6)

#-------------------------------------------------------------------------
# Parasitic capacitance values for minimum corner
#-------------------------------------------------------------------------

variants (hrlc),(lrlc)
# Minimum corner capacitances

#n-well
defaultareacap     nwell well 120

#n-active 
# Rely on device models to capture *ndiff area cap
# Do not extract parasitics from resistors
# defaultareacap     allnactivenonfet active 790
# defaultperimeter   allnactivenonfet active 280

#p-active
# Rely on device models to capture *pdiff area cap
# Do not extract parasitics from resistors
# defaultareacap     allpactivenonfet active 810
# defaultperimeter   allpactivenonfet active 300

#poly
# Do not extract parasitics from resistors
# defaultsidewall    allpolynonfet active  22
# defaultareacap     allpolynonfet active  105
# defaultperimeter   allpolynonfet active   57

 defaultsidewall    *poly active  16.388
 defaultareacap     *poly active nwell,obswell,pwell well  96.241
 defaultperimeter   *poly active nwell,obswell,pwell well  48.943

#metal1
 defaultsidewall    allm1 metal1     26.630   
 defaultareacap     allm1 metal1 nwell,obswell,pwell well  26.274
 defaultperimeter   allm1 metal1 nwell,obswell,pwell well  25.666
 defaultoverlap     allm1 metal1 nwell well 26.274

#metal1->diff
 defaultoverlap     allm1 metal1 allactivenonfet active 35.612
 defaultsideoverlap allm1 metal1 allactivenonfet active 30.684

#metal1->poly
 defaultoverlap     allm1 metal1 allpolynonres active 44.831
 defaultsideoverlap allm1 metal1 allpolynonres active 34.738

#metal2
 defaultsidewall    allm2 metal2     29.023 
 defaultareacap     allm2 metal2 nwell,obswell,pwell well 13.797
 defaultperimeter   allm2 metal2 nwell,obswell,pwell well 18.332
 defaultoverlap     allm2 metal2 nwell well 13.797
#metal2->active
 defaultoverlap     allm2 metal2 allactivenonfet active 16.000
 defaultsideoverlap allm2 metal2 allactivenonfet active 20.206

#metal2->poly
 defaultoverlap     allm2 metal2 allpolynonres active 17.629
 defaultsideoverlap allm2 metal2 allpolynonres active 21.511

#metal2->metal1
 defaultoverlap     allm2 metal2 allm1 metal1 49.258
 defaultsideoverlap allm2 metal2 allm1 metal1 38.718

#ifdef METALS3 || METALS4 || METALS5 || METALS6
#metal3
 defaultsidewall    allm3 metal3     28.809
 defaultoverlap     allm3 metal3 nwell well 9.355
 defaultareacap     allm3 metal3 nwell,obswell,pwell well 9.355
 defaultperimeter   allm3 metal3 nwell,obswell,pwell well 13.710

#metal3->active
 defaultoverlap     allm3 metal3 allactive active 10.318
 defaultsideoverlap allm3 metal3 allactive active 14.637

#metal3->poly
 defaultoverlap     allm3 metal3 allpolynonres active 10.972
 defaultsideoverlap allm3 metal3 allpolynonres active 15.232

#metal3->metal1
 defaultoverlap     allm3 metal3 allm1 metal1 18.275
 defaultsideoverlap allm3 metal3 allm1 metal1 21.483

#metal3->metal2
 defaultoverlap     allm3 metal3 allm2 metal2 49.258
 defaultsideoverlap allm3 metal3 allm2 metal2 38.221
#endif (METALS3 || METALS4 || METALS5 || METALS6)

#ifdef METALS4 || METALS5 || METALS6
#metal4
 defaultsidewall    allm4 metal4       29.629
 defaultareacap     allm4 metal4 nwell,obswell,pwell well 7.076
 defaultoverlap     allm4 metal4 nwell well 7.076
 defaultperimeter   allm4 metal4 well  10.870

#metal4->active
 defaultoverlap     allm4 metal4 allactivenonfet active 7.614
 defaultsideoverlap allm4 metal4 allactivenonfet active 11.375

#metal4->poly
 defaultoverlap     allm4 metal4 allpolynonres active 7.964
 defaultsideoverlap allm4 metal4 allpolynonres active 11.720

#metal4->metal1
 defaultoverlap     allm4 metal4 allm1 metal1 11.219
 defaultsideoverlap allm4 metal4 allm1 metal1 14.805

#metal4->metal2
 defaultoverlap     allm4 metal4 allm2 metal2 18.275
 defaultsideoverlap allm4 metal4 allm2 metal2 20.801

#metal4->metal3
 defaultoverlap     allm4 metal4 allm3 metal3 49.258
 defaultsideoverlap allm4 metal4 allm3 metal3 37.616
#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS5 || METALS6
#metal5
 defaultsidewall    allm5 metal5       51.169
 defaultareacap     allm5 metal5 nwell,obswell,pwell well 5.414
 defaultoverlap     allm5 metal5 nwell well 5.414
 defaultperimeter   allm5 metal5 well  10.992

#metal5->active
 defaultoverlap     allm5 metal5 allactivenonfet active 5.723
 defaultsideoverlap allm5 metal5 allactivenonfet active 11.430

#metal5->poly
 defaultoverlap     allm5 metal5 allpolynonres active 5.919
 defaultsideoverlap allm5 metal5 allpolynonres active 11.703

#metal5->metal1
 defaultoverlap     allm5 metal5 allm1 metal1 7.545
 defaultsideoverlap allm5 metal5 allm1 metal1 13.985

#metal5->metal2
 defaultoverlap     allm5 metal5 allm2 metal2 10.192
 defaultsideoverlap allm5 metal5 allm2 metal2 17.610

#metal5->metal3
 defaultoverlap     allm5 metal5 allm3 metal3 15.699
 defaultsideoverlap allm5 metal5 allm3 metal3 23.834

#metal5->metal4
 defaultoverlap     allm5 metal5 allm4 metal4 34.153
 defaultsideoverlap allm5 metal5 allm4 metal4 37.782
#endif (METALS5 || METALS6)

#ifdef METALS6
#metaltp
 defaultsidewall    allmtp metaltp       51.353
 defaultareacap     allmtp metaltp nwell,obswell,pwell well 4.563
 defaultoverlap     allmtp metaltp nwell well 4.563
 defaultperimeter   allmtp metaltp well  9.764

#metaltp->active
 defaultoverlap     allmtp metaltp allactivenonfet active 4.781
 defaultsideoverlap allmtp metaltp allactivenonfet active 10.070

#metaltp->poly
 defaultoverlap     allmtp metaltp allpolynonres active 4.917
 defaultsideoverlap allmtp metaltp allpolynonres active 10.263

#metaltp->metal1
 defaultoverlap     allmtp metaltp allm1 metal1 5.990
 defaultsideoverlap allmtp metaltp allm1 metal1 11.858

#metaltp->metal2
 defaultoverlap     allmtp metaltp allm2 metal2 7.545
 defaultsideoverlap allmtp metaltp allm2 metal2 13.985

#metaltp->metal3
 defaultoverlap     allmtp metaltp allm3 metal3 10.192
 defaultsideoverlap allmtp metaltp allm3 metal3 17.610

#metaltp->metal4
 defaultoverlap     allmtp metaltp allm3 metal3 15.699
 defaultsideoverlap allmtp metaltp allm3 metal3 23.834

#metaltp->metal5
 defaultoverlap     allmtp metaltp allm3 metal3 34.153
 defaultsideoverlap allmtp metaltp allm3 metal3 37.782
#endif (METALS6)

#-------------------------------------------------------------------------

variants *

# Devices:
# All devices except diodes are modeled as subcircuits

# device list:
#  nfet_03v3		mosfet
#  pfet_03v3		mosfet
#  nfet_06v0		mosfet (thick oxide)
#  pfet_06v0		mosfet (thick oxide)
#  nfet_06v0_nvt	mosfet (native Vt)
#  nfet_03v3_dss	mosfet (unsalicided drain)
#  pfet_03v3_dss	mosfet (unsalicided drain)
#  nfet_06v0_dss	mosfet (unsalicided drain, thick oxide)
#  pfet_06v0_dss	mosfet (unsalicided drain, thick oxide)
#  nfet_10v0_asym	LDNMOS (extended drain)
#  pfet_10v0_asym	LDPMOS (extended drain)
#
#  diode_nd2ps_03v3	diode  (N+/pwell)
#  diode_pd2nw_03v3	diode  (P+/nwell)
#  diode_nd2ps_06v0	diode  (N+/pwell, high voltage)
#  diode_pd2nw_06v0	diode  (P+/nwell, high voltage)
#  diode_nw2pw_03v3	diode  (nwell/pwell)
#  diode_nw2pw_06v0	diode  (nwell/pwell, high voltage)
#  diode_dnw2pw		diode  (pwell/dnwell)
#  diode_dnw2ps		diode  (dnwll/substrate)
#  sc_diode		diode  (Schottky)
#
#  pnp_WxL		BJT    (10x10, 5x5, 0.42x10, 0.42x5 emitter sizes)
#  npn_WxL		BJT    (10x10, 5x5, 0.54x16, 0.54x8, 0.54x4, 0.54x2)
#
#  npolyf_u		resistor (N+ poly, unsalicided)
#  ppolyf_u		resistor (P+ poly, unsalicided)
#  ppolyf_u_1k		resistor (high res resistor)*
#  ppolyf_u_1k_6p0	resistor (high res resistor, high voltage)*
#  nplus_u		resistor (N+ diffusion, unsalicided)
#  pplus_u		resistor (P+ diffusion, unsalicided)
#  npolyf_s		resistor (N+ poly, salicided)
#  ppolyf_s		resistor (P+ poly, salicided)
#  nplus_s		resistor (N+ diffusion, salicided)
#  pplus_s		resistor (N+ diffusion, salicided)
#  nwell		resistor (N-well resistor)
#  rm1			resistor (metal1)
#  rm2			resistor (metal2)
#  rm3			resistor (metal3)
#  rm4			resistor (metal4)
#  rm5			resistor (metal5)
#  tm6k			resistor (top metal, 0.6um thick (standard))**
#  tm9k			resistor (top metal, 0.9um thick)
#  tm11k		resistor (top metal, 1.1um thick)
#  tm30k		resistor (top metal, 3.0um thick)
#
#  cap_nmos_03v3	mosfet	 (source-drain tied)
#  cap_pmos_03v3	mosfet	 (source-drain tied)
#  cap_nmos_06v0	mosfet	 (source-drain tied, high voltage)
#  cap_pmos_06v0	mosfet	 (source-drain tied, high voltage)
#  cap_nmos_03v3_b	mosfet   (n-varactor)
#  cap_pmos_03v3_b	mosfet   (p-varactor)
#  cap_nmos_06v0_b	mosfet   (n-varactor, high voltage)
#  cap_pmos_06v0_b	mosfet   (p-varactor, high voltage)
#
#  cap_mim_2f0_mXmY_noshield	capacitor (MiM)*,**

#
# *Note that there are multiple mutually exclusive process options for the
#  high sheet rho resistor and MiM capacitor.  This tech file assumes the
#  options 1kOhm/sq for the resistor and 2fF/um for the MiM capacitor.
#
# **The top metal may be any of metal3 to metaltp, depending on the stackup

 device msubcircuit pfet_03v3 pfet pdiff,pdc pdiff,pdc allnwell error \
	l=l w=w a1=as p1=ps a2=ad p2=pd
 device msubcircuit nfet_03v3 nfet ndiff,ndc ndiff,ndc allpsub error \
	l=l w=w a1=as p1=ps a2=ad p2=pd
 device msubcircuit pfet_06v0 mvpfet mvpdiff,mvpdc mvpdiff,mvpdc allnwell error \
	l=l w=w a1=as p1=ps a2=ad p2=pd
 device msubcircuit nfet_06v0 mvnfet mvndiff,mvndc mvndiff,mvndc allpsub error \
	l=l w=w a1=as p1=ps a2=ad p2=pd
 device msubcircuit pfet_03v3_dss pfet pdiffres pdiffres allnwell error \
	l=l w=w a1=as p1=ps a2=ad p2=pd l1=s_sab l2=d_sab
 device msubcircuit nfet_03v3_dss nfet ndiffres ndiffres allpsub error \
	l=l w=w a1=as p1=ps a2=ad p2=pd l1=s_sab l2=d_sab
 device msubcircuit pfet_06v0_dss mvpfet mvpdiffres mvpdiffres allnwell error \
	l=l w=w a1=as p1=ps a2=ad p2=pd l1=s_sab l2=d_sab
 device msubcircuit nfet_06v0_dss mvnfet mvndiffres mvndiffres allpsub error \
	l=l w=w a1=as p1=ps a2=ad p2=pd l1=s_sab l2=d_sab
 device msubcircuit nfet_06v0_nvt mvnnfet mvndiff,mvndiffres,mvndc \
	mvndiff,mvndiffres,mvndc allpsub error \
	l=l w=w a1=as p1=ps a2=ad p2=pd
 device subcircuit cap_nmos_03v3_b nvaractor *nndiff l=c_length w=c_width
 device subcircuit cap_nmos_06v0_b mvnvaractor *mvnndiff l=c_length w=c_width
 device subcircuit cap_pmos_03v3_b pvaractor *ppdiff l=c_length w=c_width
 device subcircuit cap_pmos_06v0_b mvpvaractor *mvppdiff l=c_length w=c_width
 device subcircuit cap_pmos_03v3 pcap pdiff,pdc l=c_length w=c_width
 device subcircuit cap_nmos_03v3 ncap ndiff,ndc l=c_length w=c_width
 device subcircuit cap_pmos_06v0 mvpcap mvpdiff,mvpdc l=c_length w=c_width
 device subcircuit cap_nmos_06v0 mvncap mvndiff,mvndc l=c_length w=c_width

 device rsubcircuit rm1 rm1 *m1 l=r_length w=r_width
 device rsubcircuit rm2 rm2 *m2 l=r_length w=r_width
#ifdef METALS4 || METALS5 || METALS6
 device rsubcircuit rm3 rm3 *m3 l=r_length w=r_width
#endif (METALS4 || METALS5 || METALS6)
#ifdef METALS5 || METALS6
 device rsubcircuit rm4 rm4 *m4 l=r_length w=r_width
#endif (METALS5 || METALS6)
#ifdef METALS6
 device rsubcircuit rm5 rm5 *m5 l=r_length w=r_width
#endif (METALS6)

#ifdef THICKMET3P0
#ifdef METALS3
 device rsubcircuit tm30k rm3 *m3 l=r_length w=r_width
#elseif defined (METALS4)
 device rsubcircuit tm30k rm4 *m4 l=r_length w=r_width
#elseif defined (METALS5)
 device rsubcircuit tm30k rm5 *m5 l=r_length w=r_width
#elseif defined (METALS6)
 device rsubcircuit tm30k rmtp *mtp l=r_length w=r_width
#endif
#elseif defined (THICKMET1P1)
#ifdef METALS3
 device rsubcircuit tm11k rm3 *m3 l=r_length w=r_width
#elseif defined (METALS4)
 device rsubcircuit tm11k rm4 *m4 l=r_length w=r_width
#elseif defined (METALS5)
 device rsubcircuit tm11k rm5 *m5 l=r_length w=r_width
#elseif defined (METALS6)
 device rsubcircuit tm11k rmtp *mtp l=r_length w=r_width
#endif
#elseif defined (THICKMET0P9)
#ifdef METALS3
 device rsubcircuit tm9k  rm3 *m3 l=r_length w=r_width
#elseif defined (METALS4)
 device rsubcircuit tm9k  rm4 *m4 l=r_length w=r_width
#elseif defined (METALS5)
 device rsubcircuit tm9k  rm5 *m5 l=r_length w=r_width
#elseif defined (METALS6)
 device rsubcircuit tm9k  rmtp *mtp l=r_length w=r_width
#endif
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#ifdef METALS3
 device rsubcircuit tm6k  rm3 *m3 l=r_length w=r_width
#elseif defined (METALS4)
 device rsubcircuit tm6k  rm4 *m4 l=r_length w=r_width
#elseif defined (METALS5)
 device rsubcircuit tm6k  rm5 *m5 l=r_length w=r_width
#elseif defined (METALS6)
 device rsubcircuit tm6k  rmtp *mtp l=r_length w=r_width
#endif
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))

 device rsubcircuit ppolyf_s  rpps   *poly allnwell,allpsub error l=r_length w=r_width
 device rsubcircuit npolyf_s  rnps   *poly allnwell,allpsub error l=r_length w=r_width
 device rsubcircuit ppolyf_u  rpp    *poly allnwell,allpsub error l=r_length w=r_width
 device rsubcircuit npolyf_u  rnp    *poly allnwell,allpsub error l=r_length w=r_width
#ifdef HRPOLY1K
 device rsubcircuit ppolyf_u_1k hires *poly allnwell,allpsub error l=r_length w=r_width
 device rsubcircuit ppolyf_u_1k_6p0 mvhires *poly allnwell,allpsub error l=r_length w=r_width
#endif (HRPOLY1K)
 device rsubcircuit pplus_u  rpd  *pdiff allnwell error l=r_length w=r_width
 device rsubcircuit nplus_u  rnd  *ndiff allpsub error l=r_length w=r_width
 device rsubcircuit pplus_s  rpds *pdiff allnwell error l=r_length w=r_width
 device rsubcircuit nplus_s  rnds *ndiff allpsub error l=r_length w=r_width
 device rsubcircuit pplus_u  mvpdiffres *mvpdiff allnwell error l=r_length w=r_width
 device rsubcircuit nplus_u  mvndiffres *mvndiff allpsub error l=r_length w=r_width
 device rsubcircuit nwell rnw   nwell allpsub error l=r_length w=r_width

 # The following absorbs the source/drain resistor into a *_dss FET device
 device subcircuit Short mvndiffres *mvndiff mvnfet allpsub error
 device subcircuit Short mvpdiffres *mvpdiff mvpfet allnwell error
 device subcircuit Short ndiffres *ndiff nfet allpsub error
 device subcircuit Short pdiffres *pdiff pfet allnwell error

 device pdiode diode_pd2nw_03v3     *pdiode allnwell a=area p=pj
 device ndiode diode_nd2ps_03v3     *ndiode allpsub a=area p=pj
 device pdiode diode_pd2nw_06v0     *mvpdiode allnwell a=area p=pj
 device ndiode diode_nd2ps_06v0     *mvndiode allpsub a=area p=pj
 device ndiode diode_nd2ps_06v0_nvt *mvnndiode allpsub a=area p=pj

#ifdef MIM
#ifdef METALS6
 device csubcircuit cap_mim_2f0_m5m6_noshield *mimcap  *m5   l=c_length w=c_width
#endif
#ifdef METALS5
 device csubcircuit cap_mim_2f0_m4m5_noshield *mimcap  *m4   l=c_length w=c_width
#endif
#ifdef METALS4
 device csubcircuit cap_mim_2f0_m3m4_noshield *mimcap  *m3   l=c_length w=c_width
#endif
#ifdef METALS3
 device csubcircuit cap_mim_2f0_m2m3_noshield *mimcap  *m2   l=c_length w=c_width
#endif
#endif (MIM)

end

#-----------------------------------------------------
# Wiring tool definitions
#-----------------------------------------------------

wiring
 scalefactor 50

 contact v1 200 m1 5 45 m2 0 45
#ifdef METALS3 || METALS4 || METALS5 || METALS6
 contact v2 200 m2 0 45 m3 0 45
#endif (METALS3 || METALS4 || METALS5 || METALS6)
#ifdef METALS4 || METALS5 || METALS6
 contact v3 200 m3 0 45 m4 0 45
#endif (METALS4 || METALS5 || METALS6)
#ifdef METALS5 || METALS6
 contact v4 200 m4 0 45 m5 0 45
#endif (METALS5 || METALS6)
#ifdef METALS6
 contact vtp 370 m3 0 45 mtp 80 80
#endif (METALS6)

 contact pdc 160 pdiff  70 70 m1 45 0
 contact ndc 160 ndiff  70 70 m1 45 0
 contact psc 160 ppdiff 70 70 m1 45 0
 contact nsc 160 nndiff 70 70 m1 45 0
 contact pc 160 poly  70 70 m1 45 0
 contact mvpdc 160 mvpdiff  70 70 m1 45 0
 contact mvndc 160 mvndiff  70 70 m1 45 0
 contact mvpsc 160 mvppdiff 70 70 m1 45 0
 contact mvnsc 160 mvnndiff 70 70 m1 45 0

end

#-----------------------------------------------------
# Plain old router. . . 
#-----------------------------------------------------

router
end

#------------------------------------------------------------
# Plowing (restored in magic 8.2, need to fill this section)
#------------------------------------------------------------

plowing
end

#-----------------------------------------------------------------
# No special plot layers defined (use default PNM color choices)
#-----------------------------------------------------------------

plot
  style pnm
     default
     draw fillblock no_color_at_all
     draw nwell cwell
     draw pwell cwell
     draw dnwell cwell
end

