###
###	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
  poly,p
  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 hvnmos,hvntransistor,hvnfet
  active hvpmos,hvptransistor,hvpfet
  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
# Layers for special SRAM rule exclusions
 -active srammvnfet 
 -active srammvpfet 
 -active srammvndiff
 -active srammvpdiff
 -active srammvndc
 -active srammvpdc
 -active sramnfet 
 -active srampfet 
 -active sramndiff
 -active srampdiff
 -active sramndc
 -active srampdc
# 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

# Poly fill
 -poly 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

  srammvpdc srammvpdiff metal1
  srammvndc srammvndiff metal1

  srampdc srampdiff metal1
  sramndc sramndiff 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,hvnfet,mvnfet,nnfet,mvnnfet,ncap,mvncap,srammvnfet,sramnfet
  allnfetsnonnat   nfet,hvnfet,mvnfet,ncap,mvncap,srammvnfet,sramnfet
  allpfets	   pfet,hvpfet,mvpfet,pcap,mvpcap,srammvpfet,srampfet
  allfets	   allnfets,allpfets,nvaractor,mvnvaractor,pvaractor,mvpvaractor
  allfetsnonnat	   allnfetsnonnat,allpfets,nvaractor,mvnvaractor,pvaractor,mvpvaractor
  allfetsmv	   hvnfet,mvnfet,hvpfet,mvpfet,mvnnfet,mvnvaractor,mvpvaractor,mvncap,mvpcap,srammvpfet,srammvnfet

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

  alllvpactivenonfet *pdiff,*psd,*pdiode,*srampdiff
  allmvpactivenonfet *mvpdiff,*mvpsd,*mvpdiode,*ldpdiff,*srammvpdiff
  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,*sramndiff,sramnfet
  allpdifflv       *pdif,*psd,*pdiode,pdiffres,pfet,pcap,*srampdiff,srampfet
  alldifflv        allndifflv,allpdifflv
  allndifflvnonfet *ndif,*nsd,*ndiode,*nndiode,ndiffres,*sramndiff
  allpdifflvnonfet *pdif,*psd,*pdiode,pdiffres,*srampdiff
  alldifflvnonfet  allndifflvnonfet,allpdifflvnonfet

  allndiffmv       *mvndif,*mvnsd,*mvndiode,mvndiffres,hvnfet,mvnfet,mvnnfet,mvnvaractor,*mvnndiode,mvncap,*ldndiff,*srammvndiff,srammvnfet
  allpdiffmv       *mvpdif,*mvpsd,*mvpdiode,mvpdiffres,hvpfet,mvpfet,mvpvaractor,mvpcap,*ldpdiff,*srammvpdiff,srammvpfet
  alldiffmv        allndiffmv,allpdiffmv
  allndiffmvnonfet *mvndif,*mvnsd,*mvndiode,mvndiffres,*mvnndiode,*ldndiff,*srammvndiff
  allpdiffmvnonfet *mvpdif,*mvpsd,*mvpdiode,mvpdiffres,*ldpdiff,*srammvpdiff
  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,sramndc
  allpdiffcontlv   pdc,psc,pdic,srampdc
  allndiffcontmv   mvndc,mvnsc,mvndic,mvnndic,srammvndc
  allpdiffcontmv   mvpdc,mvpsc,mvpdic,srammvpdc
  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
  hvnfet      ntransistor    ntransistor_stripes hvndiff_mask
  mvnnfet     ntransistor    ndiff_in_nwell hvndiff_mask
  mvpfet      ptransistor    ptransistor_stripes hvpdiff_mask
  hvpfet      ptransistor    ptransistor_stripes hvpdiff_mask
  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

  srammvndiff  ndiffusion    hvndiff_mask
  srammvpdiff  pdiffusion    hvpdiff_mask
  srammvndc    ndiffusion    metal1  contact_X'es hvndiff_mask
  srammvpdc    pdiffusion    metal1  contact_X'es hvpdiff_mask
  srammvnfet   ntransistor   ntransistor_stripes
  srammvpfet   ptransistor   ptransistor_stripes

  sramndiff  ndiffusion
  srampdiff  pdiffusion
  sramndc    ndiffusion    metal1  contact_X'es
  srampdc    pdiffusion    metal1  contact_X'es
  sramnfet   ntransistor   ntransistor_stripes
  srampfet   ptransistor   ptransistor_stripes

  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

  compose srammvpfet poly srammvpdiff
  compose srammvnfet poly srammvndiff

  compose srampfet poly srampdiff
  compose sramnfet poly sramndiff

  decompose hvpfet poly mvpdiff
  decompose hvnfet poly mvndiff
  
#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
  # Note:  This connects butting taps even without a metal strap.
  *nsd,*mvnsd	*pdiff,*mvpdiff
  *psd,*mvpsd	*ndiff,*mvndiff
  *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
	# Require nwell under n-tap and p-diffusion
	or	*nsd,*mvnsd,*pdiff,*mvpdiff,allpfets,pdiffres,mvpdiffres
	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 hvnfet,hvpfet,mvnfet,mvpfet

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

 # Additional cut-back of LD diffusion for implant
 templayer ldbreak2 hvnfet,hvpfet,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 surround 0.18um
 # rnp  requires NPLUS surround 0.3um
 # rnd  requires NPLUS surround 0.18um

 layer NPLUS
 	bloat-all rnp  *poly
	grow 120
 	bloat-all rnps *poly
 	bloat-all rnd  *ndiff
	grow 180
	grow 180
	shrink 180
	mask-hints NPLUS
	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,*srammvndiff,*sramndiff * 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 surround 0.18um
 # rpp  requires PPLUS surround 0.30um
 # rpd  requires PPLUS surround 0.18um

 layer PPLUS
 	bloat-all rpp  *poly
	grow 120
 	bloat-all rpps *poly
 	bloat-all rpd  *pdiff
	grow 180
	grow 180
	shrink 180
	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,hvpfet,mvpfet,mvpcap,*srammvpdiff,srammvpfet,*srampdiff,srampfet * 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
	# NOTE:  This rule requires satisfying PL.19;  poly cannot
	# cross a DUALGATE boundary.
	bloat-all mvhires,allfetsmv *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

#-----------------------------------------------------
# FET5VDEF
#-----------------------------------------------------

 # Ensure FET5VDEF surrounds all mv (5V) FET devices.
 # This ensures that short length devices do not get
 # flagged for DRC errors.

 layer FET5VDEF
	bloat-all mvnfet,mvpfet,srammvnfet,srammvpfet \
		*mvndiff,*mvpdiff,mvndiffres,mvpdiffres
	grow 100
	calma 112 1

#-----------------------------------------------------
# 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 40 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 40 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 40 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 40 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
#-----------------------------------------------------
 templayer CELLBOUND
	boundary

 layer PRBNDRY CELLBOUND
	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,*hvnfet
	bloat-all mvrpd *mvpfet,*hvpfet
	and allfets
	grow 220
 	bloat-or allsblkdev * 0 space/a 220
	bloat-or allpolysblkres * 0 space/a 280
 	grow 	215
 	shrink 	215
	mask-hints SBLK
 	calma 	49 0

#-----------------------------------------------------
# RESDEF MARK
#-----------------------------------------------------
# Identify unsalicided drain areas in I/O ESD structures.
# These are not marked with RESDEF.
 templayer esd_io
	bloat-all mvndiffres *mvndiff,hvnfet,mvnfet
	bloat-all mvpdiffres *mvpdiff,hvpfet,mvpfet

 layer RESDEF allres
	and-not esd_io
	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)

#----------------------------------------------------------------------
# SRAM
# NOTE:  Do not output SRAMDEF from magic layout.  Only to be used
# with read-only cells (unless using mask hints).
#----------------------------------------------------------------------
 layer SRAMDEF
 # bloat-all srammvpfet,srammvnfet,*srammvpdiff,*srammvndiff CELLBOUND
 # bloat-all srampfet,sramnfet,*srampdiff,*sramndiff CELLBOUND
 mask-hints SRAMDEF
 calma 108 5

# I/O pads should have latchup and ESD markers;  these are not
# recognized layers and must be handled with mask hints.

 layer LATCHUP_ID esd_io
 mask-hints LATCHUP_ID
 calma 137 5

 layer ESD_ID esd_io
 mask-hints ESD_ID
 calma 24 5

#------------------------------------------------------------------------
# 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 THICKMET0P9 || THICKMET1P1
 templayer 	obstruct_mtp allmtp,allpad,fillmtp,obsmtp
	grow 	2010
	shrink 	500
	grow 	500

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

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

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

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

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

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

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

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

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

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

 scalefactor 50 nanometers
 options calma-permissive-labels
 gridlimit 5

 # Check that all p-diff and n-ohmic have either nwell or dnwell
 templayer missing_nwell *nsd,*mvnsd,*pdiff,*mvpdiff,*pdiode,pdiffres,mvpdiffres,pfet,hvpfet,mvpfet,srammvpfet,srampfet,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,pbase

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

 templayer ndiff_missing_pwell *ndiff,*ndiode,ndiffres,nfet,*sramndiff,sramnfet
 grow 430
 and dnwell
 and-not pwell

 templayer mvndiff_missing_pwell *mvndiff,mvndiffres,hvnfet,mvnfet,*srammvndiff,srammvnfet
 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
 # All low-voltage diffusion except tap diffusion (nsd, psd)
 bloat-all *ndif,*ndiode,*nndiode,ndiffres,nfet,nnfet,ncap,*pdif,*pdiode,pdiffres,pfet,pcap,schottky nwell
 and mv_nwell

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

 # Check for minimum PPLUS and NPLUS area.  NOTE:  These are simplified
 # versions of the cifoutput rules.

 templayer check_pplus
        bloat-or  *pdif,*pdiode,pdiffres,pfet,pcap,*mvpdif,*mvpdiode,mvpdiffres,hvpfet,mvpfet,mvpcap,srammvpfet,srampfet * 160 allnactivenonfet 0
        bloat-or psc,mvpsc * 95
        bloat-or *psd,*mvpsd * 20 allnactivenonfet 0
	grow	200
	shrink	200

 templayer check_nplus
        bloat-or *ndif,*ndiode,*nndiode,ndiffres,nfet,*mvndif,*mvndiode,*mvnndiode,mvndiffres,hvnfet,hvnfet,mvnfet,*srammvndiff,srammvnfet,*sramndiff,sramnfet * 160 allpactivenonfet 0
        bloat-or nsc,mvnsc * 95
        bloat-or *nsd,*mvnsd * 20 allpactivenonfet 0
	grow 	200 
	shrink 200

 # 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

 ignore CAPDEF
 ignore EFUSE
 ignore SOURCE
 ignore VTEXT
 ignore FILLOBS
 ignore SCRIBE
 ignore LATCHUP_ID
 ignore IO_ID
 ignore ESD_ID

 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

 templayer nwellarea NWELL
 copyup nwelcheck

 # Copy nwell areas up for diffusion checks
 templayer xnwelcheck nwelcheck
 copyup nwelcheck

 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,nwelcheck

 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

 templayer sramexpand SRAMDEF
 grow 210

 layer mvndiff mvndiffarea
 and-not SRAMDEF

 layer srammvndiff mvndiffarea
 and SRAMDEF

 layer sramndiff ndiffarea
 and SRAMDEF

 # 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

 # 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

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

 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

 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

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

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

 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

 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

 # 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

 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
 and-not sramexpand

 layer srampfet pfetarea
 and-not MOSCAP
 and sramexpand

 layer pcap pfetarea
 and MOSCAP

 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

 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 hvpfet mvpfetarea
 and-not MOSCAP
 and-not FET5VDEF
 and-not sramexpand

 layer mvpfet mvpfetarea
 and-not MOSCAP
 and FET5VDEF
 and-not sramexpand

 layer srammvpfet mvpfetarea
 and-not MOSCAP
 and sramexpand

 layer mvpcap mvpfetarea
 and MOSCAP
 and-not sramexpand

 templayer mvpfetexpand mvpfetarea
 grow 520

 layer pdiff DIFF
 and-not DUALGATE
 and-not NPLUS
 and-not POLY
 and nwelldef
 and pfetexpand
 and-not sramexpand

 layer srampdiff DIFF
 and-not DUALGATE
 and-not NPLUS
 and-not POLY
 and nwelldef
 and sramexpand

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

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

 layer sramnfet DIFF
 and POLY
 and-not PPLUS
 and-not DUALGATE
 and-not nwelldef
 and NPLUS
 and-not NAT
 and-not MOSCAP
 and sramexpand

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

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

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

 layer nsd nsdarea

 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

 templayer psdexpand psdarea
 grow 500

 layer mvpdiff DIFF
 and-not NPLUS
 and-not POLY
 and nwelldef
 and DUALGATE
 and mvpfetexpand
 and-not sramexpand

 layer srammvpdiff DIFF
 and-not NPLUS
 and-not POLY
 and nwelldef
 and DUALGATE
 and sramexpand

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

 layer hvnfet DIFF
 and POLY
 and-not PPLUS
 and NPLUS
 and-not NAT
 and-not nwelldef
 and DUALGATE
 and-not MOSCAP
 and-not FET5VDEF
 and-not sramexpand

 layer mvnfet DIFF
 and POLY
 and-not PPLUS
 and NPLUS
 and-not NAT
 and-not nwelldef
 and DUALGATE
 and-not MOSCAP
 and FET5VDEF
 and-not sramexpand

 layer srammvnfet DIFF
 and POLY
 and-not PPLUS
 and NPLUS
 and-not NAT
 and-not nwelldef
 and DUALGATE
 and-not MOSCAP
 and sramexpand

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

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

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

 layer mvnsd mvnsdarea

 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

 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

 layer rnps POLY
 and-not SBLK
 and NPLUS
 and RESDEF

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

 # 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

 layer efuse POLY
 and-not DIFF
 and PLFUSE

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

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

 layer mvhires POLY
 and SBLK
 and HRES
 and RESDEF
 and DUALGATE

 # 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
 and-not sramexpand
 grow 145
 shrink 140

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

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

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

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

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

 layer srammvpdc CONT
 and DIFF
 and PPLUS
 and MET1
 and DUALGATE
 and nwelldef
 and-not DIODE
 and sramexpand
 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 260
 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 260
 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 260
 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

 layer mvnvar POLY
 and DIFF
 and NPLUS
 and nwelldef
 and DUALGATE

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

 layer mvpvar POLY
 and DIFF
 and PPLUS
 and-not nwelldef
 and DUALGATE

 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
 calma SCRIBE	167 5
 calma LATCHUP_ID 137 5
 calma IO_ID	119 5
 calma ESD_ID	24 5

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.2b)"
 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 *mvpdiff,mvpvar,*srammvpdiff *mvnsd 360 touching_illegal \
	"Diffusion spacing to tap < %d (DF.3a)"
 spacing *mvndiff,mvnvar,*srammvndiff *mvpsd 360 touching_illegal \
	 "Diffusion spacing to tap < %d (DF.3a)"
 # Low voltage tap to high voltage diffusion has to clear DUALGATE-to-COMP spacing
 spacing *mvpdiff,mvpvar,*srammvpdiff *nsd 480 touching_illegal \
	"5/6V Diffusion spacing to 3.3V tap < %d (DV.6 + DV.3)"
 spacing *mvndiff,mvnvar,*srammvndiff *psd 480 touching_illegal \
	 "5/6V Diffusion spacing to 3.3V tap < %d (DV.6 + DV.3)"

 spacing (*ndiff,*ndiode,nfet,nnfet,ncap)/a allnwell 430 touching_illegal \
	"N-Diffusion spacing to N-well < %d (DF.8)"
 spacing (*mvndiff,*mvndiode,hvnfet,mvnfet,mvncap,mvnnfet)/a allnwell 600 touching_illegal \
	"N-Diffusion spacing to N-well < %d (DF.8)"
 spacing *srammvndiff,srammvnfet allnwell 450 touching_illegal \
	"N-Diffusion spacing to N-well in 5V SRAM < %d (S.DF.8_MV)"
 spacing *sramndiff,sramnfet allnwell 400 touching_illegal \
	"N-Diffusion spacing to N-well in 3.3V SRAM < %d (S.DF.16_LV)"
 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,hvpfet,mvpfet,mvpcap allnwell 600 absence_okay \
	"N-well overlap of P-Diffusion < %d (DF.7)"
 surround srammvpfet allnwell 450 absence_okay \
	"N-well overlap of P-Diffusion in 5V SRAM < %d (S.DF.7_MV)"
 surround srampfet allnwell 400 absence_okay \
	"N-well overlap of P-Diffusion in 3.3V SRAM < %d (S.DF.4c_LV)"
 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,hvpfet,mvpfet,mvpcap dnwell 1100 absence_okay \
	"Deep N-well overlap of P-Diffusion < %d (DF.4e)"


 variants (full)
 # 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)"

 cifarea check_pplus 350000 400 "Minimum PPLUS area >= %a (PP.8a)"
 cifarea check_nplus 350000 400 "Minimum NPLUS area >= %a (NP.8a)"
 variants *

# 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)"
 width fillpoly 5600 "Poly fill width < %d (DPF.1)"
 spacing allpoly allpoly 240 touching_ok "Poly spacing < %d (PL.3a)"
 spacing allpoly fillpoly 5000 touching_illegal "Poly fill spacing to poly < %d (DPF.5)"
 edge4way fillpoly space/poly 2400 ~(fillpoly)/poly 0 0 \
	"Lateral spacing between poly fill shapes < %d (DPF.2a)"
 spacing fillpoly fillpoly 1100 touching_ok "Poly fill spacing < %d (DPF.2b)"
 spacing allpolynonfet alldifflvnonfet 100 corner_ok allfets \
	"Poly spacing to diffusion < %d (PL.5a)"
 # NOTE: Below, 2nd argument was alldiffmvnonfet, but needs to exclude sram diffusion.
 spacing allpolynonfet \
  	*mvndif,*mvnsd,*mvndiode,mvndiffres,*mvnndiode,*ldndiff,*mvpdif,*mvpsd,*mvpdiode,mvpdiffres,*ldpdiff \
	300 corner_ok allfets "Poly spacing to MV diffusion < %d (PL.5a)"
 spacing allpolynonfet *srammvndiff 120 corner_ok allfets \
	"Poly spacing to MV diffusion in SRAM < %d (S.PL.5a_MV)"
 overhang *ndiff,rndiff nfet,nnfet,ncap 230 "N-Diffusion overhang of nmos < %d (DF.6)"
 overhang *mvndiff,mvrndiff hvnfet,mvnfet,mvncap,mvnnfet 230 \
	"N-Diffusion overhang of nmos < %d (DF.6)"
 overhang *srammvndiff srammvnfet 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 hvpfet,mvpfet,mvpcap 230 "P-Diffusion overhang of pmos < %d (DF.6)"
 overhang *srammvpdiff srammvpfet 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 400 touching_ok \
	"Poly resistor spacing < %d (PRES/LRES.2)"

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

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

 spacing allactiveres allactive 440 touching_ok \
	"Diffusion resistor spacing to unrelated diffusion < %d (NDRES.3)"
 spacing allactiveres allpoly 430 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)"

 surround srammvndc *srammvndiff 35 absence_illegal \
	"MV N-Diffusion overlap of contact in 5V SRAM < %d (S.CO.4_MV)"
 surround srammvpdc/a *srammvpdiff 35 absence_illegal \
	"MV P-Diffusion overlap of contact in 5V SRAM < %d (S.CO.4_MV)"
 surround sramndc *sramndiff 35 absence_illegal \
	"MV N-Diffusion overlap of contact in 3.3V SRAM < %d (S.CO.3_LV)"
 surround srampdc/a *srampdiff 35 absence_illegal \
	"MV P-Diffusion overlap of contact in 3.3V SRAM < %d (S.CO.3_LV)"

 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
 exact_overlap (srammvndc,srammvpdc)/a
 exact_overlap (sramndc,srampdc)/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 10005 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 10005 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 THICKMET0P9 || THICKMET1P1
 surround v2/m3 *m3 50 30 directional \
	"Metal3 overlap of Via2 < %d in one direction (V2.4i - V2.4)"

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

variants (fast),(full)
 widespacing allm3,obsm3 10005 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 10005 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 10005 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 THICKMET0P9 || THICKMET1P1
 surround v3/m4 *m4 50 30 directional \
	"Metal4 overlap of Via3 < %d in one direction (V3.4i - V3.4)"

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

variants (fast),(full)
 widespacing allm4,obsm4 10005 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 10005 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 230 "Metal4 width < %d (M4.1)"
 spacing allm4,obsm4  allm4,obsm4 280 touching_ok "Metal4 spacing < %d (M4.2a)"
 area allm4,obsm4 144000 230 "Metal4 minimum area < %a (M4.3)"

variants (fast),(full)
 widespacing allm4,obsm4 10005 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 THICKMET0P9 || 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 10005 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 10005 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 230 "Metal5 width < %d (M5.1)"
 spacing allm5,obsm5  allm5,obsm5 280 touching_ok "Metal5 spacing < %d (M5.2a)"
 area allm5,obsm5 144000 230 "Metal5 minimum area < %a (M5.3)"

variants (fast),(full)
 widespacing allm5,obsm5 10005 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 THICKMET0P9 || 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 10005 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 10005 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.2)"
 extend nfet,ncap *ndiff 280 exclusive "Transistor length < %d (PL.2)"
 extend srampfet *srampdiff 280 exclusive "Transistor length < %d (PL.2)"
 extend sramnfet *sramndiff 280 exclusive "Transistor length < %d (PL.2)"
 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.2)"
 extend mvnfet,mvncap *mvndiff 600 exclusive "MV Transistor length < %d (PL.2)"
 extend hvpfet *mvpdiff 550 exclusive "6V MV Transistor length < %d (PL.2)"
 extend hvnfet *mvndiff 700 exclusive "6V MV Transistor length < %d (PL.2)"
 extend srammvpfet *srammvpdiff 500 exclusive "MV Transistor length < %d (PL.2)"
 extend srammvnfet *srammvndiff 600 exclusive "MV Transistor length < %d (PL.2)"

 width hvpfet,mvpfet,mvpcap 700 angles "Bent MV Transistor length < %d (PL.7)"
 width hvnfet,mvnfet,mvncap 700 angles "Bent MV Transistor length < %d (PL.7)"

 # The following two rules do not appear to be implemented correctly.
 # Previously the distance was set to 330, whereas 320 seems to be the
 # closest distance allowed, but not due to NP and PP spacing.  Also the
 # rule numbers cited are wrong, which casts further suspicion on the
 # rule implementation.

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

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

 spacing rpp pc 215 touching_illegal "rpp spacing to Cont < %d (PRES.7 - CO.6)"
 spacing rnp pc 215 touching_illegal "rnp spacing to Cont < %d (LRES.7 - 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 poly 	3
 planeorder metal1 	4
 planeorder metal2 	5
#ifdef METALS3
 planeorder metal3 	6
 planeorder block       7
 planeorder comment     8
#elseif defined(METALS4)
 planeorder metal3 	6
 planeorder metal4 	7
 planeorder block       8
 planeorder comment     9
#elseif defined(METALS5)
 planeorder metal3 	6
 planeorder metal4 	7
 planeorder metal5 	8
 planeorder block       9
 planeorder comment     10
#elseif defined(METALS6)
 planeorder metal3 	6
 planeorder metal4 	7
 planeorder metal5 	8
 planeorder metaltp 	9
 planeorder block       10
 planeorder comment     11
#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 (*sramndiff,*ndiff,nsd)/active 	  6300
 resist (*srampdiff,*pdiff,*psd)/active	  7000
 resist (*srammvndiff,*mvndiff,mvnsd)/active   6300
 resist (*srammvpdiff,*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 THICKMET0P9 || 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 THICKMET0P9 || 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 THICKMET0P9 || 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 THICKMET0P9 || 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 (*sramndiff,*ndiff,nsd)/active 	 15000
 resist (*srampdiff,*pdiff,*psd)/active	 15000
 resist (*srammvndiff,*mvndiff,mvnsd)/active  15000
 resist (*srammvpdiff,*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 THICKMET0P9 || 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 THICKMET0P9 || 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 THICKMET0P9 || 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 THICKMET0P9 || 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 (*sramndiff,*ndiff,nsd)/active 	  1000
 resist (*srampdiff,*pdiff,*psd)/active	  1000
 resist (*srammvndiff,*mvndiff,mvnsd)/active   1000
 resist (*srammvpdiff,*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 THICKMET0P9 || 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 THICKMET0P9 || 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 THICKMET0P9 || 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 THICKMET0P9 || 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_05v0		mosfet (thick oxide, short gate)*
#  pfet_05v0		mosfet (thick oxide, short gate)*
#  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 the "5V" and "6V" devices are the same device and have the same
#  device model.  However, a slightly shorter gate length is allowed when
#  operating at 5V.  The GF standard cell sets use the 5V length.  Magic
#  will extract the shortest gate length as a "5V" type and everything else
#  as "6V", which should allow for clean LVS when using the standard cells.
#
# **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_03v3 srampfet srampdiff,srampdc srampdiff,srampdc \
	allnwell error l=l w=w a1=as p1=ps a2=ad p2=pd
 device msubcircuit nfet_03v3 sramnfet sramndiff,sramndc sramndiff,sramndc \
	allpsub error l=l w=w a1=as p1=ps a2=ad p2=pd
 device msubcircuit pfet_05v0 srammvpfet srammvpdiff,srammvpdc \
	srammvpdiff,srammvpdc allnwell error l=l w=w a1=as p1=ps a2=ad p2=pd
 device msubcircuit pfet_06v0 hvpfet mvpdiff,mvpdc mvpdiff,mvpdc allnwell error \
	l=l w=w a1=as p1=ps a2=ad p2=pd
 device msubcircuit pfet_05v0 mvpfet mvpdiff,mvpdc mvpdiff,mvpdc allnwell error \
	l=l w=w a1=as p1=ps a2=ad p2=pd
 device msubcircuit nfet_05v0 srammvnfet srammvndiff,srammvndc \
	srammvndiff,srammvndc allpsub error l=l w=w a1=as p1=ps a2=ad p2=pd
 device msubcircuit nfet_05v0 srammvnfet srammvndiff,srammvndc \
	srammvndiff,srammvndc allpsub error l=l w=w a1=as p1=ps a2=ad p2=pd
 device msubcircuit nfet_06v0 hvnfet mvndiff,mvndc mvndiff,mvndc allpsub error \
	l=l w=w a1=as p1=ps a2=ad p2=pd
 device msubcircuit nfet_05v0 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 hvpfet,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 hvnfet,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 pwell,space/w *pdiff error a2>4.1 a2<4.3
 device msubcircuit pnp_05p00x00p42 pnp pwell,space/w *pdiff error a2>2.0 a2<2.2
 device msubcircuit pnp_10p00x10p00 pnp pwell,space/w *pdiff error a2>99.0 a2<101.0
 device msubcircuit pnp_05p00x05p00 pnp pwell,space/w *pdiff error a2>24.0 a2<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 hvnfet,mvnfet allpsub error
 device subcircuit Short mvpdiffres *mvpdiff hvpfet,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_2f0_m5m6_noshield *mimcap  *m5   l=c_length w=c_width
#endif
#ifdef METALS5
 device csubcircuit cap_mim_2f0_m4m5_noshield *mimcap  *m4   l=c_length w=c_width
#endif
#ifdef METALS4
 device csubcircuit cap_mim_2f0_m3m4_noshield *mimcap  *m3   l=c_length w=c_width
#endif
#ifdef METALS3
 device csubcircuit cap_mim_2f0_m2m3_noshield *mimcap  *m2   l=c_length w=c_width
#endif
#endif (MIM)

end

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

wiring
 scalefactor 50

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

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

end

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

router
end

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

plowing
end

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

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

