###
###	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.411
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
  well pbase,npn
  well nbase,pnp

# 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 ldndiff,ldndiffusion,ldndif
  active ldpdiff,ldpdiffusion,ldpdif
  active ldndiffc,ldndcontact,ldndc
  active ldpdiffc,ldpdcontact,ldpdc
 -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
  active efuse
#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 schottky,skdi
  active schottkyc,skdic
  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
  skdic schottky metal1

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

  ldndc ldndiff metal1
  ldpdc ldpdiff 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,nbase

  allpsub	   space/w,pwell,pbase

  # 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

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

  alllvpactivenonfet *pdiff,*psd,*pdiode
  allmvpactivenonfet *mvpdiff,*mvpsd,*mvpdiode,*ldpdiff
  allpactivenonfet alllvpactivenonfet,allmvpactivenonfet
  allpactive	   allpactivenonfet,allpfets

  alllvactivenonfet alllvnactivenonfet,alllvpactivenonfet
  allmvactivenonfet allmvnactivenonfet,allmvpactivenonfet
  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,*ldndiff
  allpdiffmv       *mvpdif,*mvpsd,*mvpdiode,mvpdiffres,mvpfet,mvpvaractor,mvpcap,*ldpdiff
  alldiffmv        allndiffmv,allpdiffmv
  allndiffmvnonfet *mvndif,*mvnsd,*mvndiode,mvndiffres,*mvnndiode,*ldndiff
  allpdiffmvnonfet *mvpdif,*mvpsd,*mvpdiode,mvpdiffres,*ldpdiff
  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,*schottky

  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

  nbase	    nwell ntransistor_stripes
  pbase	    pwell 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
  ldndiff     hvndiff
  ldpdiff     hvpdiff
  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
  ldndc	      hvndiff	     metal1 contact_X'es
  ldpdc	      hvpdiff	     metal1 contact_X'es

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

  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
  schottky  ndiffusion	   pdiffusion
  schottkyc ndiffusion	   pdiffusion 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  ldndiff nwell  ldpdiff
  paint  pdc     pwell  ndc
  paint  pfet    pwell  nfet
  paint  pdiff   pwell  ndiff
  paint  nsd     pwell  psd
  paint  nsc     pwell  psc
  paint  ldpdiff pwell  ldndiff

  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,nbase,dnwell nwell,*nsd,*mvnsd,nbase,dnwell
  pwell,*psd,*mvpsd,pbase,isosub  pwell,*psd,*mvpsd,pbase,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
  *schottky		*schottky
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 	allpwell
 	labels 	allpwell noport
 	calma 	204 0

 layer PWELLTXT
	labels  allpwell port
	calma	204 10

#-----------------------------------------------------
# DIFF (COMP)
#-----------------------------------------------------

 # LDFETs cut the diffusion under the gate
 templayer ldbreak1 *ldndiff,*ldpdiff
	grow 160
	and mvnfet,mvpfet

 templayer ldbreak mvnfet,mvpfet
	grow 200
	and ldndiff,ldpdiff
	or ldbreak1

 # Additional cut-back of LD diffusion for implant
 templayer ldbreak2 mvnfet,mvpfet
	grow 240
	and ldndiff,ldpdiff

 # Schottky diode drawn as abutting diffusion, but
 # there is a 0.28um gap between the nsd and the
 # Schottky diffusion.
 templayer scsep *nsd
	grow	280

 layer DIFF 	schottky
	and-not	scsep
	or	alldiff
	and-not	ldbreak
 	labels 	alldiff,schottky
 	calma 	22 0

 layer DIFFFILL	filldiff
	labels	filldiff
	calma	22 4

#-----------------------------------------------------
# LDFET implants
#-----------------------------------------------------

 layer MVNSD ldndiff
	and-not ldbreak2
	grow 800
	calma 210 0
	
 layer MVPSD ldpdiff
	and-not ldbreak2
	grow 800
	calma 11 39

#-----------------------------------------------------
# Bipolar ID markers
#-----------------------------------------------------

 layer BJTDRC nbase
	grow 580
	bloat-all pbase dnwell
	grow 20

 layer BJTLVS nbase
	grow 580
	bloat-all pbase dnwell
	grow 20

#-----------------------------------------------------
# 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

 layer PLFUSE	efuse
	calma	125 5

 layer EFUSE	efuse
	bloat-all efuse *poly
	calma	80 5

#-----------------------------------------------------
# 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

#-----------------------------------------------------
# SCHOTTKY MARK
#-----------------------------------------------------
 layer SCHOTTKY
 bloat-all *schottky *nsd
 grow 160
 calma 241 0

#-----------------------------------------------------
# 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,schottky,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) || defined(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 that all p-diff and n-ohmic have either nwell or dnwell
 templayer missing_nwell *nsd,*mvnsd,*pdiff,*mvpdiff,*pdiode,pdiffres,mvpdiffres,pfet,mvpfet,mvnvaractor
 and-not dnwell,nwell

 # Check that all p-ohmic and n-diff have either pwell + dnwell
 # or nothing.  Can check the pwell surround at the same time.

 templayer pohmic_missing_pwell *psd
 grow 120
 and dnwell
 and-not pwell

 templayer mvpohmic_missing_pwell *mvpsd,mvpvaractor
 grow 160
 and dnwell
 and-not pwell

 templayer pdiff_missing_pwell *ndiff,*ndiode,ndiffres,nfet
 grow 430
 and dnwell
 and-not pwell

 templayer mvpdiff_missing_pwell *mvndiff,mvndiffres,mvnfet
 grow 600
 and dnwell
 and-not pwell

 # Check for MV and LV devices in the same dnwell
 templayer mv_dnwell
 bloat-all alldiffmv,schottky 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,schottky 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 SRAMDEF
 ignore FET5VDEF
 ignore CAPDEF
 ignore EFUSE
 ignore SOURCE
 ignore VTEXT
 ignore FILLOBS

 layer pwell PWELL,PWELLTXT
 and-not BJTDEF,BJTDRC
 labels PWELL
 labels PWELLTXT port

 layer pbase PWELL,PWELLTXT
 and BJTDEF,BJTDRC

 layer nwell NWELL,NWELLTXT
 and-not BJTDEF,BJTDRC
 labels NWELL
 labels NWELLTXT port

 layer nbase NWELL,NWELLTXT
 and BJTDEF,BJTDRC

 layer dnwell DNWELL
 labels DNWELL

 layer isosub SUBCUT
 labels SUBCUT

 # Implicit nwell defined by DNWELL outside of PWELL
 templayer nwelldef DNWELL
 shrink 500
 and-not PWELL
 or NWELL

 templayer ndiffarea DIFF
 and-not POLY
 and-not nwelldef
 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 nwelldef
 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

 # Save cathode areas of Schottky diodes
 templayer sccathode SCHOTTKY
 and DIFF
 and NPLUS

 # Grow Schottky anode so that drawn device abuts
 # the cathode.
 layer schottky SCHOTTKY
 and DIFF
 and-not NPLUS
 and-not PPLUS
 or sccathode
 grow 140
 shrink 140
 and-not sccathode
 labels DIFF

 # Schottky contact
 layer schottkyc SCHOTTKY
 and CONT
 and DIFF
 and-not NPLUS
 and-not PPLUS
 grow 145
 shrink 140

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

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

 templayer ndiodearea DIODE
 and NPLUS
 and-not nwelldef
 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 nwelldef
 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 nwelldef
 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 nwelldef
 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 nwelldef
 and pfetexpand
 labels DIFF

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

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

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

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

 templayer nsdarea DIFF
 and NPLUS
 and nwelldef
 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 nwelldef
 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 nwelldef
 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 nwelldef
 and DUALGATE
 and-not MOSCAP
 labels DIFF

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

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

 templayer mvnsdarea DIFF
 and NPLUS
 and-not POLY
 and-not PPLUS
 and nwelldef
 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 nwelldef
 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 nwelldef
 and-not DUALGATE
 and nsdexpand

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

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

 templayer polyarea POLY
 and-not DIFF
 and-not SBLK
 and-not PLFUSE
#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 efuse POLY
 and-not DIFF
 and PLFUSE
 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 nwelldef
 and MET1
 and-not DUALGATE
 and-not DIODE
 grow 145
 shrink 140

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

 layer pdc CONT
 and DIFF
 and PPLUS
 and nwelldef
 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 nwelldef
 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 nwelldef
 and MET1
 and DUALGATE
 and-not DIODE
 grow 145
 shrink 140

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

 layer mvpdc CONT
 and DIFF
 and PPLUS
 and MET1
 and DUALGATE
 and nwelldef
 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 nwelldef
 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 nwelldef
 and-not DUALGATE
 labels POLY

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

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

 layer mvpvar POLY
 and DIFF
 and PPLUS
 and-not nwelldef
 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 EFUSE 80 5
 calma PLFUSE 125 5
 calma SOURCE 100 8
 calma NAT 5 0
#ifdef MIM
 calma CAPM 75 0
 calma CAP_LENGTH 117 10
#endif (MIM)
 calma DIODE  115 5
 calma SCHOTTKY 241 0
 calma CAPDEF 117 5
 calma BJTDEF 118 5
 calma BJTDRC 127 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)"

 # NWELL and DNWELL are interchangeable under devices.
 surround *nsd allnwell 120 absence_okay \
	"N-well overlap of N-Ohmic < %d (DF.4a)"
 surround *mvnsd allnwell 160 absence_okay \
	"N-well overlap of N-Ohmic < %d (DF.4a)"
 surround *pdiff,*pdiode,pfet,pcap allnwell 430 absence_okay \
	"N-well overlap of P-Diffusion < %d (DF.7)"
 surround *mvpdiff,*mvpdiode,mvpfet,mvpcap allnwell 600 absence_okay \
	"N-well overlap of P-Diffusion < %d (DF.7)"
 surround *nsd dnwell 620 absence_okay \
	"Deep N-well overlap of N-Ohmic < %d (DF.4b)"
 surround *mvnsd dnwell 660 absence_okay \
	"Deep N-well overlap of N-Ohmic < %d (DF.4b)"
 surround *pdiff,*pdiode,pfet,pcap dnwell 930 absence_okay \
	"Deep N-well overlap of P-Diffusion < %d (DF.4e)"
 surround *mvpdiff,*mvpdiode,mvpfet,mvpcap dnwell 1100 absence_okay \
	"Deep N-well overlap of P-Diffusion < %d (DF.4e)"
 # Use CIF-DRC rule to ensure that at least one exists.
 cifmaxwidth missing_nwell 0 bend_illegal \
	"P-diffusion and N-ohmic must be over N-well or deep N-well"
 # Use CIF-DRC rules to ensure where pwell must be inside dnwell
 cifmaxwidth pohmic_missing_pwell 0 bend_illegal \
	"P-well must surround P-ohmic in deep N-well by 0.12um (DF.5)"
 cifmaxwidth mvpohmic_missing_pwell 0 bend_illegal \
	"P-well must surround MV P-ohmic in deep N-well by 0.16um (DF.5)"
 cifmaxwidth ndiff_missing_pwell 0 bend_illegal \
	"P-well must surround N-diffusion inside deep N-well by 0.43um (DF.8)"
 cifmaxwidth mvndiff_missing_pwell 0 bend_illegal \
	"P-well must surround MV N-diffusion inside deep N-well by 0.60um (DF.8)"

# surround *psd pwell 120 absence_ok \
#	"P-well overlap of P-Ohmic < %d (DF.5)"
# surround *mvpsd pwell  160 absence_ok \
#	"MV P-well 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 - 2 * 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 - 2 * 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 - 2 * CO.6)"
 spacing allndiffcont allndiffcont 240 touching_ok \
	"Diffusion contact spacing < %d (CO.2a - 2 * CO.6)"
 spacing allpdiffcont allpdiffcont 240 touching_ok \
	"Diffusion contact spacing < %d (CO.2a - 2 * CO.6)"
 spacing pc pc 240 touching_ok "Poly contact spacing < %d (CO.2a - 2 * CO.6)"
 spacing pc alldiff 165 touching_illegal \
	"Poly contact spacing to diffusion < %d (CO.8 - 2 * CO.6)"
 spacing allpdiffcont,allndiffcont allpoly 145 touching_illegal \
	"Diffusion contact spacing to poly < %d (CO.7 - 2 * 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) || defined(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) || defined(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(THICKMET0P9) || defined(THICKMET1P1)
 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(THICKMET0P9) || defined(THICKMET1P1)
 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 - 2 * 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(THICKMET0P9) || defined(THICKMET1P1)
 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(THICKMET0P9) || defined(THICKMET1P1)
 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(THICKMET0P9) || defined(THICKMET1P1)
 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(THICKMET0P9) || defined(THICKMET1P1)
 resist (allmtp)/metaltp  	    40
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allmtp)/metaltp  	    60
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS6)

 contact ndc,nsc,ndic,nndic	  6300
 contact pdc,psc,pdic		  5200
 contact mvndc,mvnsc,mvndic,mvnndic  6300
 contact mvpdc,mvpsc,mvpdic	  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(THICKMET0P9) || defined(THICKMET1P1)
 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(THICKMET0P9) || defined(THICKMET1P1)
 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(THICKMET0P9) || defined(THICKMET1P1)
 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(THICKMET0P9) || defined(THICKMET1P1)
 resist (allmtp)/metaltp  	    49
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allmtp)/metaltp  	    70
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS6)

 contact ndc,nsc,ndic,nndic	 15000
 contact pdc,psc,pdic		 15000
 contact mvndc,mvnsc,mvndic,mvnndic 15000
 contact mvpdc,mvpsc,mvpdic	 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(THICKMET0P9) || defined(THICKMET1P1)
 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(THICKMET0P9) || defined(THICKMET1P1)
 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(THICKMET0P9) || defined(THICKMET1P1)
 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(THICKMET0P9) || defined(THICKMET1P1)
 resist (allmtp)/metaltp  	    31
#else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
 resist (allmtp)/metaltp  	    50
#endif (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9))
#endif (METALS6)

 contact ndc,nsc,ndic,nndic	     0
 contact pdc,psc,pdic		     0
 contact mvndc,mvnsc,mvndic,mvnndic  0
 contact mvpdc,mvpsc,mvpdic	     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  11.098 -0.082
 defaultareacap     *poly active  110.67
 defaultperimeter   *poly active  50.72
 defaultoverlap     *poly active nwell,obswell,pwell well  110.67
 defaultsideoverlap *poly active nwell,obswell,pwell well  50.72

#metal1
 defaultsidewall    allm1 metal1  40.512  -0.053
 defaultareacap     allm1 metal1  29.304
 defaultperimeter   allm1 metal1  39.431
 defaultoverlap     allm1 metal1 nwell well 29.304
 defaultsideoverlap allm1 metal1 nwell well 39.431
#metal1->active
 defaultoverlap     allm1 metal1 alllvactivenonfet active 30.502
 defaultsideoverlap allm1 metal1 alllvactivenonfet active 43.406
 defaultoverlap     allm1 metal1 allmvactivenonfet active 39.187
 defaultsideoverlap allm1 metal1 allmvactivenonfet active 43.308

#metal1->poly
 defaultoverlap     allm1 metal1 allpolynonres active 51.434
 defaultsideoverlap allm1 metal1 allpolynonres active 46.700
 defaultsideoverlap *poly active allm1 metal1 17.946

#metal2
 defaultsidewall    allm2 metal2  46.736  0.289
 defaultareacap     allm2 metal2  15.016
 defaultperimeter   allm2 metal2  33.298
 defaultoverlap     allm2 metal2 nwell well 15.016
 defaultsideoverlap allm2 metal2 nwell well 33.298
#metal2->active
 defaultoverlap     allm2 metal2 alllvactivenonfet active 17.305
 defaultsideoverlap allm2 metal2 alllvactivenonfet active 35.189
 defaultoverlap     allm2 metal2 allmvactivenonfet active 17.244
 defaultsideoverlap allm2 metal2 allmvactivenonfet active 35.153

#metal2->poly
 defaultoverlap     allm2 metal2 allpolynonres active 19.263
 defaultsideoverlap allm2 metal2 allpolynonres active 36.169
 defaultsideoverlap *poly active allm2 metal2 8.706

#metal2->metal1
 defaultoverlap     allm2 metal2 allm1 metal1 59.027
 defaultsideoverlap allm2 metal2 allm1 metal1 47.566
 defaultsideoverlap allm1 metal1 allm2 metal2 32.048

#ifdef METALS3 || METALS4 || METALS5 || METALS6
#metal3
 defaultsidewall    allm3 metal3  70.675  0.534
 defaultareacap     allm3 metal3  10.094
 defaultperimeter   allm3 metal3  30.021
 defaultoverlap     allm3 metal3 nwell well 10.094
 defaultsideoverlap allm3 metal3 nwell well 30.021

#metal3->active
 defaultoverlap     allm3 metal3 alllvactivenonfet active 11.079
 defaultsideoverlap allm3 metal3 alllvactivenonfet active 31.40
 defaultoverlap     allm3 metal3 allmvactivenonfet active 11.054
 defaultsideoverlap allm3 metal3 allmvactivenonfet active 31.38

#metal3->poly
 defaultoverlap     allm3 metal3 allpolynonres active 11.850
 defaultsideoverlap allm3 metal3 allpolynonres active 31.927
 defaultsideoverlap *poly active allm3 metal3 5.895

#metal3->metal1
 defaultoverlap     allm3 metal3 allm1 metal1 20.238
 defaultsideoverlap allm3 metal3 allm1 metal1 36.609
 defaultsideoverlap allm1 metal1 allm3 metal3 18.135

#metal3->metal2
 defaultoverlap     allm3 metal3 allm2 metal2 59.027
 defaultsideoverlap allm3 metal3 allm2 metal2 49.011
 defaultsideoverlap allm2 metal2 allm3 metal3 36.626
#endif (METALS3 || METALS4 || METALS5 || METALS6)

#ifdef METALS4 || METALS5 || METALS6
#metal4
 defaultsidewall    allm4 metal4  77.388  0.611
 defaultareacap     allm4 metal4  7.602
 defaultperimeter   allm4 metal4  28.153
 defaultoverlap     allm4 metal4 nwell well 7.602
 defaultsideoverlap allm4 metal4 nwell well 28.153

#metal4->active
 defaultoverlap     allm4 metal4 alllvactivenonfet active 8.148
 defaultsideoverlap allm4 metal4 alllvactivenonfet active 29.065
 defaultoverlap     allm4 metal4 allmvactivenonfet active 8.135
 defaultsideoverlap allm4 metal4 allmvactivenonfet active 29.050

#metal4->poly
 defaultoverlap     allm4 metal4 allpolynonres active 8.557
 defaultsideoverlap allm4 metal4 allpolynonres active 29.407
 defaultsideoverlap *poly active allm4 metal4 8.557

#metal4->metal1
 defaultoverlap     allm4 metal4 allm1 metal1 12.212
 defaultsideoverlap allm4 metal4 allm1 metal1 32.104
 defaultsideoverlap allm1 metal1 allm4 metal4 13.159

#metal4->metal2
 defaultoverlap     allm4 metal4 allm2 metal2 20.238
 defaultsideoverlap allm4 metal4 allm2 metal2 36.563
 defaultsideoverlap allm2 metal2 allm4 metal4 22.405

#metal4->metal3
 defaultoverlap     allm4 metal4 allm3 metal3 59.027
 defaultsideoverlap allm4 metal4 allm3 metal3 47.871
 defaultsideoverlap allm3 metal3 allm4 metal4 39.964
#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS5
#metal5
 defaultsidewall    allm5 metal5       114.86  0.025
#endif
#ifdef METALS6
 defaultsidewall    allm5 metal5       31.121
#endif

#ifdef METALS5 || METALS6
 defaultareacap     allm5 metal5  5.798
 defaultperimeter   allm5 metal5  30.386
 defaultoverlap     allm5 metal5 nwell well 5.798
 defaultsideoverlap allm5 metal5 nwell well 30.386

#metal5->active
 defaultoverlap     allm5 metal5 alllvactivenonfet active 6.110
 defaultsideoverlap allm5 metal5 alllvactivenonfet active 31.165
 defaultoverlap     allm5 metal5 allmvactivenonfet active 6.102
 defaultsideoverlap allm5 metal5 allmvactivenonfet active 31.152

#metal5->poly
 defaultoverlap     allm5 metal5 allpolynonres active 6.337
 defaultsideoverlap allm5 metal5 allpolynonres active 31.458
 defaultsideoverlap *poly active allm5 metal5 3.365

#metal5->metal1
 defaultoverlap     allm5 metal5 allm1 metal1 8.142
 defaultsideoverlap allm5 metal5 allm1 metal1 33.316
 defaultsideoverlap allm1 metal1 allm5 metal5 9.825

#metal5->metal2
 defaultoverlap     allm5 metal5 allm2 metal2 11.067
 defaultsideoverlap allm5 metal5 allm2 metal2 36.591
 defaultsideoverlap allm2 metal2 allm5 metal5 15.764

#metal5->metal3
 defaultoverlap     allm5 metal5 allm3 metal3 17.276
 defaultsideoverlap allm5 metal5 allm3 metal3 41.466
 defaultsideoverlap allm3 metal3 allm5 metal5 22.988

#metal5->metal4
 defaultoverlap     allm5 metal5 allm4 metal4 39.351
 defaultsideoverlap allm5 metal5 allm4 metal4 52.692
 defaultsideoverlap allm4 metal4 allm5 metal5 34.954
#endif (METALS5 || METALS6)

#ifdef METALS6
#metaltp
 defaultsidewall    allmtp metaltp  54.335
 defaultareacap     allmtp metaltp  4.8793
 defaultperimeter   allmtp metaltp  9.5950
 defaultoverlap     allmtp metaltp nwell well 4.8793
 defaultsideoverlap allmtp metaltp nwell well 9.5950

#metaltp->active
 defaultoverlap     allmtp metaltp alllvactivenonfet active 5.0937
 defaultsideoverlap allmtp metaltp alllvactivenonfet active 9.8790
 defaultoverlap     allmtp metaltp allmvactivenonfet active 5.0937
 defaultsideoverlap allmtp metaltp allmvactivenonfet active 9.8790

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

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

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

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

#metaltp->metal4
 defaultoverlap     allmtp metaltp allm4 metal4 17.2765
 defaultsideoverlap allmtp metaltp allm4 metal4 24.286
 defaultsideoverlap allm4 metal4 allmtp metaltp XX.XX

#metaltp->metal5
 defaultoverlap     allmtp metaltp allm5 metal5 39.3519
 defaultsideoverlap allmtp metaltp allm5 metal5 39.586
 defaultsideoverlap allm5 metal5 allmtp metaltp XX.XX
#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  10.434  -0.09
 defaultareacap     *poly active  130.21
 defaultperimeter   *poly active  53.551
 defaultoverlap     *poly active nwell,obswell,pwell well  130.21
 defaultsideoverlap *poly active nwell,obswell,pwell well  53.551

#metal1
 defaultsidewall    allm1 metal1  29.146  -0.107
 defaultareacap     allm1 metal1  33.126
 defaultperimeter   allm1 metal1  41.362
 defaultoverlap     allm1 metal1 nwell well 33.126
 defaultsideoverlap allm1 metal1 nwell well 41.362
#metal1->active
 defaultoverlap     allm1 metal1 alllvactivenonfet active 43.987
 defaultsideoverlap allm1 metal1 alllvactivenonfet active 45.606
 defaultoverlap     allm1 metal1 allmvactivenonfet active 43.597
 defaultsideoverlap allm1 metal1 allmvactivenonfet active 45.456

#metal1->poly
 defaultoverlap     allm1 metal1 allpolynonres active 60.319
 defaultsideoverlap allm1 metal1 allpolynonres active 49.813
 defaultsideoverlap *poly active allm1 metal1 19.203

#metal2
 defaultsidewall    allm2 metal2  47.311  -0.055
 defaultareacap     allm2 metal2  16.471
 defaultperimeter   allm2 metal2  34.914
 defaultoverlap     allm2 metal2 nwell well 16.471
 defaultsideoverlap allm2 metal2 nwell well 34.914
#metal2->active
 defaultoverlap     allm2 metal2 alllvactivenonfet active 18.777
 defaultsideoverlap allm2 metal2 alllvactivenonfet active 36.552
 defaultoverlap     allm2 metal2 allmvactivenonfet active 18.706
 defaultsideoverlap allm2 metal2 allmvactivenonfet active 36.484

#metal2->poly
 defaultoverlap     allm2 metal2 allpolynonres active 21.231
 defaultsideoverlap allm2 metal2 allpolynonres active 37.753
 defaultsideoverlap *poly active allm2 metal2 9.032

#metal2->metal1
 defaultoverlap     allm2 metal2 allm1 metal1 73.630
 defaultsideoverlap allm2 metal2 allm1 metal1 53.172
 defaultsideoverlap allm1 metal1 allm2 metal2 35.957

#ifdef METALS3 || METALS4 || METALS5 || METALS6
#metal3
 defaultsidewall    allm3 metal3  52.065  0.011
 defaultareacap     allm3 metal3  10.961
 defaultperimeter   allm3 metal3  31.797
 defaultoverlap     allm3 metal3 nwell well 10.961
 defaultsideoverlap allm3 metal3 nwell well 31.797

#metal3->active
 defaultoverlap     allm3 metal3 alllvactivenonfet active 11.936
 defaultsideoverlap allm3 metal3 alllvactivenonfet active 32.182
 defaultoverlap     allm3 metal3 allmvactivenonfet active 11.907
 defaultsideoverlap allm3 metal3 allmvactivenonfet active 32.161

#metal3->poly
 defaultoverlap     allm3 metal3 allpolynonres active 12.883
 defaultsideoverlap allm3 metal3 allpolynonres active 33.123
 defaultsideoverlap *poly active allm3 metal3 6.048

#metal3->metal1
 defaultoverlap     allm3 metal3 allm1 metal1 22.673
 defaultsideoverlap allm3 metal3 allm1 metal1 38.387
 defaultsideoverlap allm1 metal1 allm3 metal3 19.218

#metal3->metal2
 defaultoverlap     allm3 metal3 allm2 metal2 73.630
 defaultsideoverlap allm3 metal3 allm2 metal2 53.162
 defaultsideoverlap allm2 metal2 allm3 metal3 40.062
#endif (METALS3 || METALS4 || METALS5 || METALS6)

#ifdef METALS4 || METALS5 || METALS6
#metal4
 defaultsidewall    allm4 metal4  64.224  0.022
 defaultareacap     allm4 metal4  8.213
 defaultperimeter   allm4 metal4  29.318
 defaultoverlap     allm4 metal4 nwell well 8.213
 defaultsideoverlap allm4 metal4 nwell well 29.318

#metal4->active
 defaultoverlap     allm4 metal4 alllvactivenonfet active 8.749
 defaultsideoverlap allm4 metal4 alllvactivenonfet active 29.951
 defaultoverlap     allm4 metal4 allmvactivenonfet active 8.733
 defaultsideoverlap allm4 metal4 allmvactivenonfet active 29.937

#metal4->poly
 defaultoverlap     allm4 metal4 allpolynonres active 9.247
 defaultsideoverlap allm4 metal4 allpolynonres active 30.173
 defaultsideoverlap *poly active allm4 metal4 4.470

#metal4->metal1
 defaultoverlap     allm4 metal4 allm1 metal1 13.400
 defaultsideoverlap allm4 metal4 allm1 metal1 32.864
 defaultsideoverlap allm1 metal1 allm4 metal4 13.737

#metal4->metal2
 defaultoverlap     allm4 metal4 allm2 metal2 22.673
 defaultsideoverlap allm4 metal4 allm2 metal2 38.349
 defaultsideoverlap allm2 metal2 allm4 metal4 23.678

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

#ifdef METALS5 || METALS6
#metal5
 defaultsidewall    allm5 metal5  129.73  0.043
 defaultareacap     allm5 metal5  6.240
 defaultperimeter   allm5 metal5  32.259
 defaultoverlap     allm5 metal5 nwell well 6.240
 defaultsideoverlap allm5 metal5 nwell well 32.259

#metal5->active
 defaultoverlap     allm5 metal5 alllvactivenonfet active 6.545
 defaultsideoverlap allm5 metal5 alllvactivenonfet active 32.685
 defaultoverlap     allm5 metal5 allmvactivenonfet active 6.536
 defaultsideoverlap allm5 metal5 allmvactivenonfet active 32.665

#metal5->poly
 defaultoverlap     allm5 metal5 allpolynonres active 6.820
 defaultsideoverlap allm5 metal5 allpolynonres active 33.050
 defaultsideoverlap *poly active allm5 metal5 3.402

#metal5->metal1
 defaultoverlap     allm5 metal5 allm1 metal1 8.841
 defaultsideoverlap allm5 metal5 allm1 metal1 35.530
 defaultsideoverlap allm1 metal1 allm5 metal5 10.263

#metal5->metal2
 defaultoverlap     allm5 metal5 allm2 metal2 12.108
 defaultsideoverlap allm5 metal5 allm2 metal2 38.815
 defaultsideoverlap allm2 metal2 allm5 metal5 16.351

#metal5->metal3
 defaultoverlap     allm5 metal5 allm3 metal3 19.206
 defaultsideoverlap allm5 metal5 allm3 metal3 44.329
 defaultsideoverlap allm3 metal3 allm5 metal5 23.969

#metal5->metal4
 defaultoverlap     allm5 metal5 allm4 metal4 46.417
 defaultsideoverlap allm5 metal5 allm4 metal4 57.180
 defaultsideoverlap allm4 metal4 allm5 metal5 38.202
#endif (METALS5 || METALS6)

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

#metaltp->active
 defaultoverlap     allmtp metaltp alllvactivenonfet active 5.450
 defaultsideoverlap allmtp metaltp alllvactivenonfet active 9.679
 defaultoverlap     allmtp metaltp allmvactivenonfet active 5.450
 defaultsideoverlap allmtp metaltp allmvactivenonfet active 9.679

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

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

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

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

#metaltp->metal4
 defaultoverlap     allmtp metaltp allm4 metal4 19.207
 defaultsideoverlap allmtp metaltp allm4 metal4 24.725
 defaultsideoverlap allm4 metal4 allmtp metaltp 16.946

#metaltp->metal5
 defaultoverlap     allmtp metaltp allm5 metal5 46.418
 defaultsideoverlap allmtp metaltp allm5 metal5 41.628
 defaultsideoverlap allm5 metal5 allmtp metaltp 16.946
#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  11.749  -0.074
 defaultareacap     *poly active  96.239
 defaultperimeter   *poly active  48.703
 defaultoverlap     *poly active nwell,obswell,pwell well  96.239
 defaultsideoverlap *poly active nwell,obswell,pwell well  48.703

#metal1
 defaultsidewall    allm1 metal1  34.592   -0.066
 defaultareacap     allm1 metal1  26.273
 defaultperimeter   allm1 metal1  38.065
 defaultoverlap     allm1 metal1 nwell well 26.273
 defaultsideoverlap allm1 metal1 nwell well 38.065

#metal1->active
 defaultoverlap     allm1 metal1 alllvactivenonfet active 35.846
 defaultsideoverlap allm1 metal1 alllvactivenonfet active 41.401
 defaultoverlap     allm1 metal1 allmvactivenonfet active 35.587
 defaultsideoverlap allm1 metal1 allmvactivenonfet active 41.319

#metal1->poly
 defaultoverlap     allm1 metal1 allpolynonres active 44.830
 defaultsideoverlap allm1 metal1 allpolynonres active 44.006
 defaultsideoverlap *poly active allm1 metal1 16.709

#metal2
 defaultsidewall    allm2 metal2  45.876  0.308
 defaultareacap     allm2 metal2  13.797
 defaultperimeter   allm2 metal2  32.628
 defaultoverlap     allm2 metal2 nwell well 13.797
#metal2->active
 defaultoverlap     allm2 metal2 alllvactivenonfet active 16.047
 defaultsideoverlap allm2 metal2 alllvactivenonfet active 33.878
 defaultoverlap     allm2 metal2 allmvactivenonfet active 15.995
 defaultsideoverlap allm2 metal2 allmvactivenonfet active 34.723

#metal2->poly
 defaultoverlap     allm2 metal2 allpolynonres active 17.629
 defaultsideoverlap allm2 metal2 allpolynonres active 34.723
 defaultsideoverlap *poly active allm2 metal2 8.497

#metal2->metal1
 defaultoverlap     allm2 metal2 allm1 metal1 49.257
 defaultsideoverlap allm2 metal2 allm1 metal1 45.669
 defaultsideoverlap allm1 metal1 allm2 metal2 29.508

#ifdef METALS3 || METALS4 || METALS5 || METALS6
#metal3
 defaultsidewall    allm3 metal3  80.787  0.719
 defaultareacap     allm3 metal3  9.354
 defaultperimeter   allm3 metal3  29.055
 defaultoverlap     allm3 metal3 nwell well 9.354
 defaultsideoverlap allm3 metal3 nwell well 29.055

#metal3->active
 defaultoverlap     allm3 metal3 alllvactivenonfet active 10.337
 defaultsideoverlap allm3 metal3 alllvactivenonfet active 30.367
 defaultoverlap     allm3 metal3 allmvactivenonfet active 10.316
 defaultsideoverlap allm3 metal3 allmvactivenonfet active 30.332

#metal3->poly
 defaultoverlap     allm3 metal3 allpolynonres active 10.971
 defaultsideoverlap allm3 metal3 allpolynonres active 30.302
 defaultsideoverlap *poly active allm3 metal3 5.744

#metal3->metal1
 defaultoverlap     allm3 metal3 allm1 metal1 18.275
 defaultsideoverlap allm3 metal3 allm1 metal1 34.455
 defaultsideoverlap allm1 metal1 allm3 metal3 17.162

#metal3->metal2
 defaultoverlap     allm3 metal3 allm2 metal2 49.257
 defaultsideoverlap allm3 metal3 allm2 metal2 45.649
 defaultsideoverlap allm2 metal2 allm3 metal3 33.836
#endif (METALS3 || METALS4 || METALS5 || METALS6)

#ifdef METALS4 || METALS5 || METALS6
#metal4
 defaultsidewall    allm4 metal4  79.719  0.700
 defaultareacap     allm4 metal4  7.076
 defaultperimeter   allm4 metal4  27.123
 defaultoverlap     allm4 metal4 nwell well 7.076
 defaultsideoverlap allm4 metal4 nwell well 27.123

#metal4->active
 defaultoverlap     allm4 metal4 alllvactivenonfet active 7.625
 defaultsideoverlap allm4 metal4 alllvactivenonfet active 28.128
 defaultoverlap     allm4 metal4 allmvactivenonfet active 7.613
 defaultsideoverlap allm4 metal4 allmvactivenonfet active 28.136

#metal4->poly
 defaultoverlap     allm4 metal4 allpolynonres active 7.964
 defaultsideoverlap allm4 metal4 allpolynonres active 28.175
 defaultsideoverlap *poly active allm4 metal4 4.342

#metal4->metal1
 defaultoverlap     allm4 metal4 allm1 metal1 11.218
 defaultsideoverlap allm4 metal4 allm1 metal1 30.402
 defaultsideoverlap allm1 metal1 allm4 metal4 12.468

#metal4->metal2
 defaultoverlap     allm4 metal4 allm2 metal2 18.275
 defaultsideoverlap allm4 metal4 allm2 metal2 34.947
 defaultsideoverlap allm2 metal2 allm4 metal4 21.090

#metal4->metal3
 defaultoverlap     allm4 metal4 allm3 metal3 49.257
 defaultsideoverlap allm4 metal4 allm3 metal3 45.614
 defaultsideoverlap allm3 metal3 allm4 metal4 36.938
#endif (METALS4 || METALS5 || METALS6)

#ifdef METALS5 || METALS6
#metal5
 defaultsidewall    allm5 metal5  92.462  -0.034
 defaultareacap     allm5 metal5  5.414
 defaultperimeter   allm5 metal5  29.752
 defaultoverlap     allm5 metal5 nwell well 5.414
 defaultsideoverlap allm5 metal5 nwell well 29.752

#metal5->active
 defaultoverlap     allm5 metal5 alllvactivenonfet active 5.729
 defaultsideoverlap allm5 metal5 alllvactivenonfet active 30.199
 defaultoverlap     allm5 metal5 allmvactivenonfet active 5.722
 defaultsideoverlap allm5 metal5 allmvactivenonfet active 30.189

#metal5->poly
 defaultoverlap     allm5 metal5 allpolynonres active 5.918
 defaultsideoverlap allm5 metal5 allpolynonres active 30.453
 defaultsideoverlap *poly active allm5 metal5 3.319

#metal5->metal1
 defaultoverlap     allm5 metal5 allm1 metal1 7.545
 defaultsideoverlap allm5 metal5 allm1 metal1 32.178
 defaultsideoverlap allm1 metal1 allm5 metal5 9.413

#metal5->metal2
 defaultoverlap     allm5 metal5 allm2 metal2 10.192
 defaultsideoverlap allm5 metal5 allm2 metal2 34.862
 defaultsideoverlap allm2 metal2 allm5 metal5 15.155

#metal5->metal3
 defaultoverlap     allm5 metal5 allm3 metal3 15.699
 defaultsideoverlap allm5 metal5 allm3 metal3 39.754
 defaultsideoverlap allm3 metal3 allm5 metal5 22.014

#metal5->metal4
 defaultoverlap     allm5 metal5 allm4 metal4 34.152
 defaultsideoverlap allm5 metal5 allm4 metal4 49.818
 defaultsideoverlap allm4 metal4 allm5 metal5 33.358
#endif (METALS5 || METALS6)

#ifdef METALS6
#metaltp
 defaultsidewall    allmtp metaltp  51.353
 defaultareacap     allmtp metaltp  4.563
 defaultperimeter   allmtp metaltp  9.764
 defaultoverlap     allmtp metaltp nwell well 4.563
 defaultsideoverlap allmtp metaltp nwell well 9.764

#metaltp->active
 defaultoverlap     allmtp metaltp alllvactivenonfet active 4.781
 defaultsideoverlap allmtp metaltp alllvactivenonfet active 10.070
 defaultoverlap     allmtp metaltp allmvactivenonfet active 4.781
 defaultsideoverlap allmtp metaltp allmvactivenonfet active 10.070

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

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

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

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

#metaltp->metal4
 defaultoverlap     allmtp metaltp allm4 metal4 15.699
 defaultsideoverlap allmtp metaltp allm4 metal4 23.834
 defaultsideoverlap allm4 metal4 allmtp metaltp 16.946

#metaltp->metal5
 defaultoverlap     allmtp metaltp allm5 metal5 34.153
 defaultsideoverlap allmtp metaltp allm5 metal5 37.782
 defaultsideoverlap allm5 metal5 allmtp metaltp 16.946
#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_2f0fF	capacitor (MiM)*,**
#
#  efuse		fuse

#
# *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 msubcircuit npn_10p00x10p00 npn *ndiff dnwell space/w error a1>99.0 a1<101.0
 device msubcircuit npn_05p00x05p00 npn *ndiff dnwell space/w error a1>24.0 a1<26.0
 device msubcircuit npn_00p54x16p00 npn *ndiff dnwell space/w error a1>8.5 a1<8.7
 device msubcircuit npn_00p54x08p00 npn *ndiff dnwell space/w error a1>4.2 a1<4.4
 device msubcircuit npn_00p54x04p00 npn *ndiff dnwell space/w error a1>2.0 a1<2.2
 device msubcircuit npn_00p54x02p00 npn *ndiff dnwell space/w error a1>1.0 a1<1.2

 device msubcircuit pnp_10p00x00p42 pnp *pdiff pwell,space/w error a1>4.1 a1<4.3
 device msubcircuit pnp_05p00x00p42 pnp *pdiff pwell,space/w error a1>2.0 a1<2.2
 device msubcircuit pnp_10p00x10p00 pnp *pdiff pwell,space/w error a1>99.0 a1<101.0
 device msubcircuit pnp_05p00x05p00 pnp *pdiff pwell,space/w error a1>24.0 a1<26.0

 device msubcircuit nfet_10v0_asym mvnfet *mvndiff *ldndiff allpsub error \
	l=l w=w a1=as p1=ps a2=ad p2=pd
 device msubcircuit pfet_10v0_asym mvpfet *mvpdiff *ldpdiff allnwell error \
	l=l w=w a1=as p1=ps a2=ad p2=pd

 device rsubcircuit efuse efuse *poly

 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
 device pdiode sc_diode		    *schottky *nsd a=area p=pj

#ifdef MIM
#ifdef METALS6
 device csubcircuit cap_mim_2f0fF *mimcap  *m5   l=c_length w=c_width
#endif
#ifdef METALS5
 device csubcircuit cap_mim_2f0fF *mimcap  *m4   l=c_length w=c_width
#endif
#ifdef METALS4
 device csubcircuit cap_mim_2f0fF *mimcap  *m3   l=c_length w=c_width
#endif
#ifdef METALS3
 device csubcircuit cap_mim_2f0fF *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

