###
###	Source file sky130.tech
###	Process this file with the preproc.py macro processor
###	Note that the tech name is always TECHNAME for
###	magic;  this keeps compatibility between layouts
###	for all process variants.
###
#----------------------------------------------------------
# Copyright (c) 2020 R. Timothy Edwards
# Revisions:  See below
#
# This file is an Open Source foundry process describing
# the SkyWater sky130 hybrid 0.18um / 0.13um fabrication
# process.  The file may be distributed under the terms
# of the Apache 2.0 license agreement.
#
#----------------------------------------------------------
# This file is designed to be used with magic versions
# 8.3.24 or newer.
#----------------------------------------------------------
tech
  format 35
  TECHNAME
end

version
 version REVISION
 description "SkyWater SKY130: PRE ALPHA Vendor Open Source rules and DRC"
end

#----------------------------------------------------------
# Status 7/10/20: Rev 1 (alpha):
# First public release
#--------------------------------------------------------------

#--------------------------------------------------------------
# Supported device types
#--------------------------------------------------------------
# device name   magic ID layer  description
#-------------------------------------------------------------
# nshort	nfet		standard nFET
# nshort	scnfet		standard nFET in standard cell**
# npd		npd		special nFET in SRAM cell
# npass		npass		special nFET in SRAM cell
# nlowvt	nfetlvt		low Vt nFET
# sonos_p/e	nsonos		SONOS nFET
# pshort	pfet		standard pFET
# pshort	scpfet		standard pFET in standard cell**
# ppu		ppu		special pFET in SRAM cell
# plowvt	pfetlvt		low Vt pFET
# phighvt	pfethvt		high Vt pFET
# ntvnative	---		native nFET
# phv		mvpfet		thickox pFET
# nhv		mvnfet		thickox nFET
# nhvnative	mvnnfet		thickox native nFET
# ndiode	ndiode		n+ diff diode
# ndiode_h	mvndiode	thickox n+ diff diode
# pdiode	pdiode		p+ diff diode
# pdiode_h	mvpdiode	thickox p+ diff diode
# ndiode_native	nndiode		diode with nndiff
# ndiode_lvt	ndiodelvt	low Vt n+ diff diode
# pdiode_lvt	pdiodelvt	low Vt p+ diff diode
# pdiode_hvt	pdiodehvt	high Vt p+ diff diode
# nwdiode	---		nwell diode
# dnwdiode_psub	---		deep nwell diode to substrate
# dnwdiode_pw	---		deep nwell diode to pwell
# xcmimc1	mimcap		MiM cap 1st plate
# xcmimc2	mimcap2		MiM cap 2nd plate
# mrdn		rdn		n+ diff resistor
# mrdn_hv	mvrdn		thickox n+ diff resistor
# mrdp		rdp		p+ diff resistor
# mrdp_hv	mvrdp		thickox p+ diff resistor
# mrl1		rli		local interconnect resistor
# mrp1		npres		n+ poly resistor
# xhrpoly_*	ppres (*)	p+ poly resistor (300 Ohms/sq)
# uhrpoly_*	xres (*)	p+ poly resistor (2k Ohms/sq)
# xcnwvc	varactor	varactor (low Vt?)
# xcnwvc2	varactorhvt	high Vt varactor
# xchvnwc	mvvaractor	thickox varactor
# xpwres	rpw		pwell resistor (in deep nwell)
#
# (*) Note that ppres may extract into some generic type
# called "xhrpoly", but only specific sizes of xhrpoly are
# allowed, and these are created from fixed layouts like the
# types below.
#
# (**) nFET and pFET in standard cells are the same as devices
# outside of the standard cell except for the DRC rule for
# FET to diffusion contact spacing (which is 0.05um, not 0.055um)
#
# To avoid creating a large number of types, a few ID layers are
# used in conjunction with standard devices types:  "lvt" for
# low threshold voltage, and "hvt" for high threshold voltage.
# "dnwell" is used as an identifier layer where appropriate.
# Layer HVI (thick oxide) is treated differently, and types
# "mv*" are defined where thick oxide is required.
#
#-------------------------------------------------------------
# The following devices are not extracted but are represented
# only by script-generated subcells in the PDK.
#-------------------------------------------------------------
# nshortesd			ESD nFET
# nhvesd			ESD thickox nFET
# nhvnativeesd			ESD native nFET
# phvesd			ESD thickox pFET
# fnpass			flash nFET device
# npnpar1x*			parasitic NPN
# npn_1x1_2p0_hv		thickox gated parasitic NPN
# pnppar			parasitic PNP
# pnppar5x			parasitic PNP
# xesd_ndiode_h_***		ESD n+ diode
# xesd_pdiode_h_***		ESD p+ diode
# reslocsub			local substrate island indicator
# xcmvpp			Vpp cap
# xcmvpp_2			Vpp cap
# xcmvpp_*			Vpp cap
# xcmvpp*			Vpp cap
# balun				balun inductor
# ind4				inductor
# fuse				metal fuse device
#--------------------------------------------------------------

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

planes
  dwell,dw
  well,w
  active,a
  locali,li1,li
  metal1,m1
  metal2,m2
  metal3,m3
#ifdef METAL5
#ifdef MIM
  cap1,c1
#endif (MIM)
  metal4,m4
#ifdef MIM
  cap2,c2
#endif (MIM)
  metal5,m5
#endif (METAL5)
#ifdef REDISTRIBUTION
  metali,mi
#endif
  block,b
  comment,c
end

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

types
# Deep nwell
  dwell dnwell,dnw

# Wells
  well nwell,nw
 -well pwell,pw
 -well rpw,rpwell
 -well obswell

# Transistors
  active nmos,ntransistor,nfet
 -active scnmos,scntransistor,scnfet
 -active npd,npdfet,sramnfet
 -active npass,npassfet,srampassfet
  active pmos,ptransistor,pfet
 -active scpmos,scptransistor,scpfet
 -active ppu,ppufet,srampfet
 -active nnmos,nntransistor
  active mvnmos,mvntransistor,mvnfet
  active mvpmos,mvptransistor,mvpfet
 -active mvnnmos,mvnntransistor,mvnnfet,nnfet
 -active varactor,varact,var
 -active mvvaractor,mvvaract,mvvar

 -active pmoslvt,pfetlvt
 -active pmoshvt,pfethvt
 -active nmoslvt,nfetlvt
 -active varactorhvt,varacthvt,varhvt
 -active nsonos,sonos

# Diffusions
  active ndiff,ndiffusion,ndif
  active pdiff,pdiffusion,pdif
 -active mvndiff,mvndiffusion,mvndif
 -active mvpdiff,mvpdiffusion,mvpdif
  active ndiffc,ndcontact,ndc
  active pdiffc,pdcontact,pdc
 -active mvndiffc,mvndcontact,mvndc
 -active mvpdiffc,mvpdcontact,mvpdc
  active psubdiff,psubstratepdiff,ppdiff,ppd,psd
  active nsubdiff,nsubstratendiff,nndiff,nnd,nsd
 -active mvpsubdiff,mvpsubstratepdiff,mvppdiff,mvppd,mvpsd
 -active mvnsubdiff,mvnsubstratendiff,mvnndiff,mvnnd,mvnsd
  active psubdiffcont,psubstratepcontact,psc
  active nsubdiffcont,nsubstratencontact,nsc
 -active mvpsubdiffcont,mvpsubstratepcontact,mvpsc
 -active mvnsubdiffcont,mvnsubstratencontact,mvnsc
 -active obsactive
 -active mvobsactive

# Poly
  active poly,p,polysilicon
  active polycont,pc,pcontact,polycut,polyc
  active xpolycontact,xpolyc,xpc

# Resistors
 -active npolyres,npres,mrp1
 -active ppolyres,ppres,xhrpoly
 -active xpolyres,xpres,xres,uhrpoly
 -active ndiffres,rnd,rdn,rndiff
 -active pdiffres,rpd,rdp,rpdiff
 -active mvndiffres,mvrnd,mvrdn,mvrndiff
 -active mvpdiffres,mvrpd,mvrdp,mvrpdiff
 -active rmp

# Diodes
 -active pdiode,pdi
 -active ndiode,ndi
 -active nndiode,nndi
 -active pdiodec,pdic
 -active ndiodec,ndic
 -active nndiodec,nndic
 -active mvpdiode,mvpdi
 -active mvndiode,mvndi
 -active mvpdiodec,mvpdic
 -active mvndiodec,mvndic
 -active pdiodelvt,pdilvt
 -active pdiodehvt,pdihvt
 -active ndiodelvt,ndilvt
 -active pdiodelvtc,pdilvtc
 -active pdiodehvtc,pdihvtc
 -active ndiodelvtc,ndilvtc

# Local Interconnect 
  locali locali,li1,li
 -locali corelocali,coreli1,coreli
 -locali rlocali,rli1,rli
  locali viali,vial,lic,licon,m1c,v0
 -locali obsli1,obsli
 -locali obsli1c,obslic,obslicon

# Metal 1
  metal1 metal1,m1,met1
 -metal1 rmetal1,rm1,rmet1
  metal1 via1,m2contact,m2cut,m2c,via,v,v1
 -metal1 obsm1
 -metal1 padl

# Metal 2
  metal2 metal2,m2,met2
 -metal2 rmetal2,rm2,rmet2
  metal2 via2,m3contact,m3cut,m3c,v2
 -metal2 obsm2

# Metal 3
  metal3 metal3,m3,met3
 -metal3 rmetal3,rm3,rmet3
 -metal3 obsm3
#ifdef METAL5
  metal3 via3,v3

#ifdef MIM
 -cap1 mimcap,mim,capm
 -cap1 mimcapcontact,mimcapc,mimcc,capmc
#endif

# Metal 4
  metal4 metal4,m4,met4
 -metal4 rmetal4,rm4,rmet4
 -metal4 obsm4
  metal4 via4,v4

#ifdef MIM
 -cap2 mimcap2,mim2,capm2
 -cap2 mimcap2contact,mimcap2c,mim2cc,capm2c
#endif

# Metal 5
  metal5 metal5,m5,met5
 -metal5 rm5,rmetal5,rmet5
 -metal5 obsm5
#endif (METAL5)

#ifdef REDISTRIBUTION
 -metal5 mrdlcontact,mrdlc
 -metali metalrdl,mrdl,metrdl
 -metali obsmrdl
#endif (REDISTRIBUTION)

# Miscellaneous
 -block  glass
 -block  fillblock
 -comment comment
 -comment obscomment

end

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

contact
  pc       poly       locali
  ndc      ndiff      locali
  pdc      pdiff      locali
  nsc      nsd        locali
  psc      psd        locali
  ndic     ndiode     locali
  ndilvtc  ndiodelvt  locali
  nndic    nndiode    locali
  pdic     pdiode     locali
  pdilvtc  pdiodelvt  locali
  pdihvtc  pdiodehvt  locali
  xpc      xpc        locali

  mvndc   mvndiff   locali
  mvpdc   mvpdiff   locali
  mvnsc   mvnsd     locali
  mvpsc   mvpsd     locali
  mvndic  mvndiode  locali
  mvpdic  mvpdiode  locali

  lic locali metal1
  obslic obsli obsm1

  via1   metal1 metal2
  via2   metal2 metal3
#ifdef METAL5
  via3   metal3 metal4
  via4   metal4 metal5
#endif (METAL5)
  stackable

#ifdef METAL5
#ifdef MIM
  # MiM cap contacts are not stackable!
  mimcc  mimcap metal4
  mim2cc mimcap2 metal5
#endif (MIM)

  padl m1 m2 m3 m4 m5 glass
#else
  padl m1 m2 m3 glass
#endif  (!METAL5)

#ifdef REDISTRIBUTION
  mrdlc metal5 mrdl
#endif (REDISTRIBUTION)
end

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

aliases

  allwellplane     nwell
  allnwell	   nwell,obswell

  allnfets	   nfet,npass,npd,scnfet,mvnfet,mvnnfet,nfetlvt,nsonos
  allpfets	   pfet,ppu,scpfet,mvpfet,pfethvt,pfetlvt
  allfets	   allnfets,allpfets,varactor,mvvaractor,varhvt

  allnactivenonfet *ndiff,*nsd,*ndiode,*nndiode,*mvndiff,*mvnsd,*mvndiode,*ndiodelvt
  allnactive	   allnactivenonfet,allnfets
  allnactivenontap *ndiff,*ndiode,*nndiode,*mvndiff,*mvndiode,*ndiodelvt,allnfets
  allnactivetap	   *nsd,*mvnsd,var,varhvt,mvvar

  allpactivenonfet *pdiff,*psd,*pdiode,*mvpdiff,*mvpsd,*mvpdiode,*pdiodelvt,*pdiodehvt
  allpactive	   allpactivenonfet,allpfets
  allpactivenontap *pdiff,*pdiode,*mvpdiff,*mvpdiode,*pdiodelvt,*pdiodehvt,allpfets
  allpactivetap    *psd,*mvpsd

  allactivenonfet  allnactivenonfet,allpactivenonfet
  allactive	   allactivenonfet,allfets

  allactiveres	   ndiffres,pdiffres,mvndiffres,mvpdiffres

  allndifflv       *ndif,*nsd,*ndiode,ndiffres,nfet,npass,npd,scnfet,nfetlvt,nsonos
  allpdifflv       *pdif,*psd,*pdiode,pdiffres,pfet,ppu,scpfet,pfetlvt,pfethvt
  alldifflv        allndifflv,allpdifflv
  allndifflvnonfet *ndif,*nsd,*ndiode,*nndiode,ndiffres,*ndiodelvt
  allpdifflvnonfet *pdif,*psd,*pdiode,pdiffres,*pdiodelvt,*pdiodehvt
  alldifflvnonfet  allndifflvnonfet,allpdifflvnonfet

  allndiffmv       *mvndif,*mvnsd,*mvndiode,*nndiode,mvndiffres,mvnfet,mvnnfet
  allpdiffmv       *mvpdif,*mvpsd,*mvpdiode,mvpdiffres,mvpfet
  alldiffmv        allndiffmv,allpdiffmv
  allndiffmvnontap *mvndif,*mvndiode,*nndiode,mvndiffres,mvnfet,mvnnfet
  allpdiffmvnontap *mvpdif,*mvpdiode,mvpdiffres,mvpfet
  alldiffmvnontap  allndiffmvnontap,allpdiffmvnontap
  allndiffmvnonfet *mvndif,*mvnsd,*mvndiode,*nndiode,mvndiffres
  allpdiffmvnonfet *mvpdif,*mvpsd,*mvpdiode,mvpdiffres
  alldiffmvnonfet  allndiffmvnonfet,allpdiffmvnonfet

  alldiffnonfet	   alldifflvnonfet,alldiffmvnonfet
  alldiff	   alldifflv,alldiffmv

  allpolyres	   mrp1,xhrpoly,uhrpoly,rmp
  allpolynonfet	   *poly,allpolyres,xpc
  allpolynonres	   *poly,allfets,xpc

  allpoly	   allpolynonfet,allfets
  allpolynoncap	   *poly,xpc,allfets,allpolyres

  allndiffcontlv   ndc,nsc,ndic,nndic,ndilvtc
  allpdiffcontlv   pdc,psc,pdic,pdilvtc,pdihvtc
  allndiffcontmv   mvndc,mvnsc,mvndic
  allpdiffcontmv   mvpdc,mvpsc,mvpdic
  allndiffcont	   allndiffcontlv,allndiffcontmv
  allpdiffcont	   allpdiffcontlv,allpdiffcontmv
  alldiffcontlv	   allndiffcontlv,allpdiffcontlv
  alldiffcontmv	   allndiffcontmv,allpdiffcontmv
  alldiffcont	   alldiffcontlv,alldiffcontmv

  allcont	alldiffcont,pc

  allres	allpolyres,allactiveres

  allli		*locali,coreli,rli
  allm1		*m1,rm1
  allm2		*m2,rm2
  allm3		*m3,rm3
#ifdef METAL5
  allm4	   	*m4,rm4
  allm5	   	*m5,rm5
#endif (METAL5)

  allpad	padl

  psub		pwell
  
end

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

styles
 styletype mos
  dnwell    cwell
  nwell     nwell
  pwell	    pwell
  rpwell    pwell 	ptransistor_stripes
  ndiff     ndiffusion
  pdiff     pdiffusion
  nsd       ndiff_in_nwell
  psd       pdiff_in_pwell
  nfet      ntransistor    ntransistor_stripes
  scnfet    ntransistor    ntransistor_stripes
  npass	    ntransistor	   ntransistor_stripes
  npd	    ntransistor	   ntransistor_stripes
  pfet      ptransistor    ptransistor_stripes
  scpfet    ptransistor    ptransistor_stripes
  ppu	    ptransistor	   ptransistor_stripes
  var       polysilicon    ndiff_in_nwell
  ndc       ndiffusion     metal1  contact_X'es
  pdc       pdiffusion     metal1  contact_X'es
  nsc       ndiff_in_nwell metal1  contact_X'es
  psc       pdiff_in_pwell metal1  contact_X'es

  pfetlvt   ptransistor	ptransistor_stripes implant1
  pfethvt   ptransistor ptransistor_stripes implant2
  nfetlvt   ntransistor ntransistor_stripes implant1
  nsonos    ntransistor implant3
  varhvt    polysilicon ndiff_in_nwell implant2

  mvndiff   ndiffusion     hvndiff_mask
  mvpdiff   pdiffusion     hvpdiff_mask
  mvnsd     ndiff_in_nwell hvndiff_mask
  mvpsd     pdiff_in_pwell hvpdiff_mask
  mvnfet    ntransistor    ntransistor_stripes hvndiff_mask
  mvnnfet   ntransistor    ndiff_in_nwell hvndiff_mask
  mvpfet    ptransistor    ptransistor_stripes
  mvvar     polysilicon    ndiff_in_nwell hvndiff_mask
  mvndc     ndiffusion     metal1  contact_X'es hvndiff_mask
  mvpdc     pdiffusion     metal1  contact_X'es hvpdiff_mask
  mvnsc     ndiff_in_nwell metal1  contact_X'es hvndiff_mask
  mvpsc     pdiff_in_pwell metal1  contact_X'es hvpdiff_mask

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

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

  nndiode   ndiffusion  nselect2 implant3
  ndiodelvt ndiffusion	nselect2 implant1
  pdiodelvt pdiffusion  pselect2 implant1
  pdiodehvt pdiffusion  pselect2 implant2
  pdilvtc   pdiffusion  pselect2 implant1 metal1 contact_X'es
  pdihvtc   pdiffusion  pselect2 implant2 metal1 contact_X'es
  ndilvtc   ndiffusion  nselect2 implant1 metal1 contact_X'es

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

  locali    metal1
  coreli    metal1
  rli       metal1         poly_resist_stripes
  lic	    metal1	   metal2 via1arrow
  obsli     metal1
  obslic    metal1	   metal2 via1arrow

  metal1    metal2
  rm1       metal2         poly_resist_stripes
  obsm1     metal2
  m2c       metal2         metal3  via2arrow
  metal2    metal3
  rm2       metal3         poly_resist_stripes
  obsm2     metal3
  m3c       metal3         metal4  via3alt
  metal3    metal4
  rm3       metal4         poly_resist_stripes
  obsm3     metal4
#ifdef METAL5
#ifdef MIM
  mimcap    metal3         mems
  mimcc     metal3         contact_X'es mems
  mimcap2   metal4         mems
  mim2cc    metal4         contact_X'es mems
#endif (MIM)
  via3      metal4         metal5  via4
  metal4    metal5
  rm4       metal5         poly_resist_stripes
  obsm4     metal5
  via4      metal5         metal6  via5
  metal5    metal6
  rm5       metal6         poly_resist_stripes
  obsm5     metal6
#endif (METAL5)
#ifdef REDISTRIBUTION
  mrdlc	    metal6  metal7  via6
  metalrdl  metal7
  obsmrdl   metal7
#endif (REDISTRIBUTION)

  glass	    overglass
  mrp1      poly_resist    poly_resist_stripes
  xhrpoly   poly_resist    silicide_block
  uhrpoly   poly_resist
  ndiffres  ndiffusion	   ndop_stripes
  pdiffres  pdiffusion	   pdop_stripes
  mvndiffres  ndiffusion hvndiff_mask   ndop_stripes
  mvpdiffres  pdiffusion hvpdiff_mask   pdop_stripes
  comment   comment
  error_p   error_waffle
  error_s   error_waffle
  error_ps  error_waffle
  fillblock cwell

  obswell   cwell
  obsactive implant4

#ifndef METAL5
  padl      metal4 via4 overglass
#else
  padl      metal6 via6 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  var   poly  nsd

  compose  mvnfet  poly  mvndiff
  compose  mvpfet  poly  mvpdiff
  compose  mvvar   poly  mvnsd
  
  paint  ndc     nwell  pdc
  paint  nfet    nwell  pfet
  paint  scnfet  nwell  scpfet
  paint  ndiff   nwell  pdiff
  paint  psd     nwell  nsd
  paint  psc     nwell  nsc
  paint  npd     nwell  ppu

  paint  pdc     pwell  ndc
  paint  pfet    pwell  nfet
  paint  scpfet  pwell  scnfet
  paint  pdiff   pwell  ndiff
  paint  nsd     pwell  psd
  paint  nsc     pwell  psc
  paint  ppu     pwell  npd

  paint  pdc	 coreli pdc
  paint  ndc	 coreli ndc
  paint  pc	 coreli pc
  paint  nsc 	 coreli nsc
  paint  psc 	 coreli psc
  paint  viali 	 coreli viali

  paint  coreli  pdc    pdc
  paint  coreli  ndc    ndc
  paint  coreli  pc     pc
  paint  coreli  nsc    nsc
  paint  coreli  psc    psc
  paint  coreli  viali  viali

#ifdef METAL5
  paint  m4      obsm4  m4
  paint  m5      obsm5  m5
#endif (METAL5)
end

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

connect
  *nwell,*nsd,*mvnsd,dnwell *nwell,*nsd,*mvnsd,dnwell
  pwell,*psd,*mvpsd  pwell,*psd,*mvpsd
  *li,coreli	*li,coreli
  *m1	*m1
  *m2	*m2
  *m3	*m3
#ifdef METAL5
  *m4	*m4
  *m5	*m5
#ifdef MIM
  *mimcap     *mimcap
  *mimcap2    *mimcap2
#endif (MIM)
#endif (METAL5)
   allnactivenonfet	allnactivenonfet
   allpactivenonfet	allpactivenonfet
  *poly,xpc,allfets	*poly,xpc,allfets
#ifdef REDISTRIBUTION
  # RDL connects to m5 (i.e., padl) through glass cut
  *mrdl			*mrdl
  glass			metrdl
#endif (REDISTRIBUTION)
end

#-----------------------------------------------------
# CIF/GDS output layer definitions
#-----------------------------------------------------
# NOTE:  All values in this section MUST be multiples of 25 
# or else magic will scale below the allowed layout grid size

cifoutput

#----------------------------------------------------------------
style gdsii
# NOTE: This section is used for actual GDS output
#----------------------------------------------------------------
 scalefactor 10  nanometers
 options calma-permissive-labels
 gridlimit 5

#----------------------------------------------------------------
# Create a temp layer from the cell bounding box for use in
# generating ID layers.  Note that "boundary", unlike "bbox",
# requires the FIXED_BBOX property (abutment box) in the cell.
#----------------------------------------------------------------
 templayer CELLBOUND
	boundary

#----------------------------------------------------------------
# BOUND
#----------------------------------------------------------------
 layer 	BOUND CELLBOUND
	calma 235 4

# Create a boundary outside of an abutment box, so that layers
# can be made to stretch to the abutment box edges.  First strink
# so that any box that would be so small as to interact with
# itself will be removed.

 templayer CELLRING CELLBOUND
	shrink 345
	grow 545
	and-not CELLBOUND

#----------------------------------------------------------------
# DNWELL
#----------------------------------------------------------------

 layer DNWELL	dnwell
	calma	64 18

 layer PWRES    rpw
	and	dnwell
	calma	64 13

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

 layer NWELL 	allnwell
	bloat-all rpw dnwell
	and-not rpw,pwell
 	calma 	64 20

 layer WELLTXT
 	labels allnwell noport
	calma 64 16

 layer WELLPIN
 	labels allnwell port
	calma 64 5

#----------------------------------------------------------------
# SUB (text/port only)
#----------------------------------------------------------------

 layer SUBTXT
 	labels pwell noport
	calma 122 16

 layer SUBPIN
 	labels pwell port
	calma 64 59

#----------------------------------------------------------------
# DIFF
#----------------------------------------------------------------

 layer DIFF 	allnactivenontap,allpactivenontap,allactiveres
 	labels 	allnactivenontap,allpactivenontap
 	calma 	65 20

#----------------------------------------------------------------
# TAP
#----------------------------------------------------------------

 layer TAP 	allnactivetap,allpactivetap
 	labels 	allnactivetap,allpactivetap
 	calma 	65 44

#----------------------------------------------------------------
# PPLUS, NPLUS (PSDM, NSDM)
#----------------------------------------------------------------

 templayer basePPLUS pdiffres,mvpdiffres
	grow	15
	or	xhrpoly,uhrpoly,xpc
	grow	110
	bloat-or allpactivetap * 125 allnactivenontap 0
	bloat-or allpactivenontap * 125 allnactivetap 0
	bridge	380 380

 templayer extendPPLUS  basePPLUS,CELLRING
	grow	185
	shrink	185
	and-not	CELLRING

 layer PPLUS basePPLUS,extendPPLUS 
	close   265000
	calma	94 20

 templayer baseNPLUS ndiffres,mvndiffres
 	grow	125
	bloat-or allnactivetap * 125 allpactivenontap 0
	bloat-or allnactivenontap * 125 allpactivetap 0
	bridge	380 380

 templayer extendNPLUS  baseNPLUS,CELLRING
 	grow	185
 	shrink	185
	and-not	CELLRING

 layer NPLUS baseNPLUS,extendNPLUS
 	close   265000
 	calma	93 44

#----------------------------------------------------------------
# LVTN
#----------------------------------------------------------------

 layer LVTN  pfetlvt,nfetlvt,mvvar,mvnnfet,nsonos,*pdiodelvt,*ndiodelvt,*nndiode
        grow 180
	bridge	380 380
	grow	185
	shrink	185
	close  265000
	calma 125 44

#----------------------------------------------------------------
# HVTP
#----------------------------------------------------------------

 layer HVTP pfethvt,varhvt,*pdiodehvt
        grow 180
	bridge	380 380
	grow	185
	shrink	185
	close 265000
	calma 78 44

#----------------------------------------------------------------
# SONOS
#----------------------------------------------------------------

 layer SONOS nsonos
	grow 100
	grow-min 410
	bridge 500 410
	grow 250
	shrink 250
	calma 80 20

#----------------------------------------------------------------
# SONOS requires COREID around area (areaid.ce).  Also, the
# coreli layer indicates a cell needing COREID.  Also, devices
# npd, npass, and ppu indicate a COREID cell.
#----------------------------------------------------------------

 layer COREID
	bloat-all nsonos,coreli,ppu,npd,npass CELLBOUND
	calma 81 2

#----------------------------------------------------------------
# STDCELL applies to all cells containing scnfet or scpfet.
#----------------------------------------------------------------

 layer STDCELL scnfet
	bloat-all scpfet,scnfet CELLBOUND
	calma 81 4

#----------------------------------------------------------------
# RPM
#----------------------------------------------------------------

 layer RPM
	bloat-all xhrpoly xpc
	grow 200
	grow-min 1270
	grow 420
	shrink 420
	calma 86 20

#----------------------------------------------------------------
# URPM (2kOhms/sq. poly implant)
#----------------------------------------------------------------

 layer URPM
	bloat-all uhrpoly xpc
	grow 200
	grow-min 1270
	grow 420
	shrink 420
	calma 79 20

#----------------------------------------------------------------
# LDNTM (Tip implant for SONOS FETs)
#----------------------------------------------------------------

 layer LDNTM
	bloat-all nsonos *ndiff
	grow 185
 	grow 	345
 	shrink 	345
	calma 11 44

#----------------------------------------------------------------
# HVNTM (Tip implant for MV ndiff devices)
#----------------------------------------------------------------

 templayer hvntm_block *mvpsd
	grow 185

 layer HVNTM
	bloat-all mvnfet,mvnnfet,*mvndiode,mvrdn,*nndiode *mvndiff
	bloat-all mvvaractor *mvnsd
	and-not hvntm_block
        grow 185
 	grow 	345
 	shrink 	345
	calma 125 20

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

 layer POLY 	allpoly
 	calma 	66 20

 layer POLYTXT
	labels  allpoly noport
	calma	66 16

 layer POLYPIN
	labels  allpoly port
	calma	66 5

#----------------------------------------------------------------
# THKOX (HVI) (includes rules NWELL 8-11 and DIFFTAP 14-26)
#----------------------------------------------------------------

 templayer baseTHKOX 	*mvpsd
	grow-min 470
	or alldiffmv,mvvar
	grow	185
        bloat-all alldiffmv nwell
	grow-min 600
	bridge	700 600

 templayer extendTHKOX	baseTHKOX,CELLRING
 	grow 	345
 	shrink 	345
	and-not	CELLRING

 layer THKOX	baseTHKOX,extendTHKOX
 	calma 	75 20

#----------------------------------------------------------------
# CONT (LICON)
#----------------------------------------------------------------

 layer CONT allcont
 	squares-grid 0 170 170
 	calma	66 44

 # Contact for pres is different than other LICON contacts
 # See rules LICON 1b, 1c (width/length) and 2b (spacing)
 templayer xpc_horiz xpc
	shrink 1007
	grow 1007

 layer CONT xpc
	and-not xpc_horiz
	# Force long edge vertical for contacts narrower than 2um
	# Minimum space is 350 but 520 satisfies no. of contacts rule
 	slots 80 190 520 80 2000 350
 	calma	66 44

 layer CONT xpc
	and xpc_horiz
	# Force long edge vertical for contacts wider than 2um
	# Minimum space is 350 but 520 satisfies no. of contacts rule
 	slots 80 2000 350 80 190 520
 	calma	66 44

#----------------------------------------------------------------
# NPC (Nitride poly cut)
# surrounds CONT (LICON) on poly only (i.e., pc)
#----------------------------------------------------------------

 layer NPC pc
 	squares-grid 0 170 170
	grow 100
	bridge 270 270
	grow 130
	shrink 130
	calma  95 20

 # NPC is also generated on xhrpoly and uhrpoly resistors

 layer NPC xpc,xhrpoly,uhrpoly
        # xpc surrounds precision_resistor by 0.095um
	grow 95
	grow 130
	shrink 130
	calma  95 20

#----------------------------------------------------------------
# Device markers
#----------------------------------------------------------------

 layer DIFFRES rdn,mvrdn,rdp,mvrdp
	calma 65 13

 layer POLYRES mrp1
	calma 66 13

 # POLYSHORT is a poly layer resistor like rli, rm1, etc., for metal layers
 layer POLYSHORT rmp
	calma 66 15

 # POLYRES extends to edge of contact cut
 layer POLYRES xhrpoly,uhrpoly
	grow 60
	and xpc
	or xhrpoly,uhrpoly
	calma 66 13

 layer DIODE *pdi,*ndi,*nndi,*mvpdi,*mvndi,*pdilvt,*pdihvt,*ndilvt
        # To be done:  Expand to include anode, cathode, and guard ring
	calma 81 23

#----------------------------------------------------------------
# LI
#----------------------------------------------------------------
 layer LI allli
	calma 67 20

 layer LITXT
 	labels *locali,coreli noport
	calma 67 16

 layer LIPIN
 	labels *locali,coreli port
	calma 67 5

 layer LIRES rli
	labels rli
	calma 67 13

#----------------------------------------------------------------
# MCON
#----------------------------------------------------------------
 layer MCON lic
 	squares-grid 0 170 190
 	calma 	67 44

#----------------------------------------------------------------
# MET1
#----------------------------------------------------------------
 layer MET1 	allm1
 	calma 	68 20

 layer MET1TXT
	labels	allm1 noport
	calma 	68 16

 layer MET1PIN
	labels	allm1 port
	calma 	68 5

 layer MET1RES rm1
	labels rm1
	calma 68 13

#----------------------------------------------------------------
# VIA1
#----------------------------------------------------------------
 layer VIA1 	via1
 	squares-grid 55 150 170
 	calma 	68 44

#----------------------------------------------------------------
# MET2
#----------------------------------------------------------------
 layer MET2 	allm2
 	calma 	69 20

 layer MET2TXT
	labels	allm2 noport
	calma	69 16

 layer MET2PIN
	labels	allm2 port
	calma	69 5

 layer MET2RES rm2
	labels rm2
	calma 69 13

#----------------------------------------------------------------
# VIA2
#----------------------------------------------------------------
 layer VIA2 	via2
 	squares-grid 40 200 200
 	calma 	69 44

#----------------------------------------------------------------
# MET3
#----------------------------------------------------------------
 layer MET3 	allm3
 	calma 	70 20

 layer MET3TXT
 	labels 	allm3 noport
	calma	70 16 

 layer MET3PIN
	labels	allm3 port
	calma	70 5

 layer MET3RES rm3
	labels rm3
	calma 70 13

#ifdef METAL5
#----------------------------------------------------------------
# VIA3
#----------------------------------------------------------------
 layer VIA3	via3
#ifdef MIM
	or mimcc
#endif (MIM)
 	squares-grid 60 200 200
 	calma 	70 44

#----------------------------------------------------------------
# MET4
#----------------------------------------------------------------
 layer MET4 	allm4
 	calma 	71 20

 layer MET4TXT
	labels	allm4 noport
	calma	71 16

 layer MET4PIN
	labels	allm4 port
	calma	71 5

 layer MET4RES rm4
	labels rm4
	calma 71 13

#----------------------------------------------------------------
# VIA4
#----------------------------------------------------------------
 layer VIA4	via4
#ifdef MIM
	or mim2cc
#endif (MIM)
 	squares-grid 190 800 800
 	calma 	71 44

#----------------------------------------------------------------
# MET5
#----------------------------------------------------------------
 layer MET5 	allm5
 	calma 	72 20

 layer MET5TXT
	labels	allm5 noport
	calma	72 16

 layer MET5PIN
	labels	allm5 port
	calma	72 5

 layer MET5RES rm5
	labels rm5
	calma 72 13

#endif (METAL5)

#ifdef REDISTRIBUTION
#----------------------------------------------------------------
# RDL
#----------------------------------------------------------------
  layer RDL	*metrdl
	calma   74 20

  layer RDLTXT
	labels	*metrdl noport
	calma	74 16

  layer RDLPIN
	labels  *metrdl port
	calma	74 5

#endif REDISTRIBUTION

#----------------------------------------------------------------
# GLASS
#----------------------------------------------------------------
 layer GLASS 	glass
 	calma 	76 20

#ifdef MIM
#----------------------------------------------------------------
# CAPM
#----------------------------------------------------------------
 layer CAPM 	*mimcap
 	labels 	mimcap
 	calma 	89 44

 layer CAPM2 	*mimcap2
 	labels 	mimcap2
 	calma 	97 44
#endif (MIM)

#----------------------------------------------------------------
# Chip top level marker for DRC latchup rules to check 15um
# distance to taps (otherwise 6um is used)
#----------------------------------------------------------------

 layer LOWTAPDENSITY
	bbox top
	# Clear 200um for pads + 50um for required high tap density
	# in critical area.
	shrink 250000
	calma	81 14

#----------------------------------------------------------------
# FILLBLOCK
#----------------------------------------------------------------
 layer FILLOBSM1 fillblock
 	calma 	62 24

 layer FILLOBSM2 fillblock
 	calma 	105 52

 layer FILLOBSM3 fillblock
 	calma 	107 24

 layer FILLOBSM4 fillblock
 	calma 	112 4

 render	DNWELL 	cwell       -0.1    0.1
 render	NWELL	nwell        0.0    0.2062
 render DIFF	ndiffusion   0.2062 0.12
 render TAP	pdiffusion   0.2062 0.12
 render POLY	polysilicon  0.3262 0.18
 render CONT	via          0.5062 0.43
 render LI	metal1       0.9361 0.10
 render MCON	via          1.0361 0.34
 render MET1	metal2       1.3761 0.36
 render VIA1	via          1.7361 0.27
 render MET2	metal3       2.0061 0.36
 render VIA2	via          2.3661 0.42
 render MET3	metal4       2.7861 0.845
#ifdef METAL5
 render VIA3	via          3.6311 0.39
 render MET4	metal5       4.0211 0.845
 render VIA4	via          4.8661 0.505
 render MET5	metal6       5.3711 1.26
 render CAPM	metal8       2.4661 0.2
 render CAPM2	metal9       3.7311 0.2
#ifdef REDISTRIBUTION
 render RDL	metal7      11.8834 4.0
#endif (!REDISTRIBUTION)
#endif (!METAL5)

#----------------------------------------------------------------
style drc
#----------------------------------------------------------------
# NOTE:  This style is used for DRC only, not for GDS output
#----------------------------------------------------------------
 scalefactor 10  nanometers
 options calma-permissive-labels

 # Ensure nwell overlaps dnwell at least 0.4um outside and 1.03um inside
 templayer dnwell_shrink dnwell
 shrink 1030

 templayer nwell_missing dnwell
 grow 400
 and-not dnwell_shrink
 and-not nwell

 # SONOS nFET devices must be in deep nwell
 templayer dnwell_missing nsonos
 and-not dnwell

 # Define MiM cap bottom plate for spacing rule
 templayer mim_bottom
 bloat-all *mimcap *metal3

 # Define MiM2 cap bottom plate for spacing rule
 templayer mim2_bottom
 bloat-all *mimcap2 *metal4

 # Note that metal fill is performed by the foundry and so is not
 # an option for a cifoutput style.

 # Check latchup rule (15um minimum from tap LICON center to any
 # non-tap diffusion.  Note that to count as a tap, the diffusion
 # must be contacted to LI

 templayer ptap_reach psc,mvpsc
 and-not dnwell
 # grow total is 15um.  grow in 0.84um increments to ensure that
 # no nwell ring is crossed
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 840
 and-not nwell,dnwell
 grow 635
 and-not nwell,dnwell

 templayer ptap_missing *ndiff,*mvndiff
 and-not dnwell
 and-not ptap_reach

 templayer ntap_reach nsc,mvnsc
 # grow total is 15um.  grow in 1.27um increments to ensure that
 # no nwell ring is crossed.  There is no difference between
 # ntaps in and out of deep nwell.
 grow 1270
 and nwell
 grow 1270
 and nwell
 grow 1270
 and nwell
 grow 1270
 and nwell
 grow 1270
 and nwell
 grow 1270
 and nwell
 grow 1270
 and nwell
 grow 1270
 and nwell
 grow 1270
 and nwell
 grow 1270
 and nwell
 grow 1270
 and nwell
 grow 945
 and nwell
 
 templayer ntap_missing *pdiff,*mvpdiff
 and-not dnwell
 and-not ntap_reach

 templayer dptap_reach psc,mvpsc
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 840
 and-not nwell
 and dnwell
 grow 635
 and-not nwell
 and dnwell

 templayer dptap_missing *ndiff,*mvndiff
 and dnwell
 and-not dptap_reach

 templayer m1_small_hole *m1
 close   140000

 templayer m1_hole_empty m1_small_hole
 and-not *m1

 templayer m2_small_hole *m2
 close   140000

 templayer m2_hole_empty m2_small_hole
 and-not *m2

#ifdef EXPERIMENTAL
#----------------------------------------------------------------
style paint
#----------------------------------------------------------------
# NOTE:  This style is used for database manipulations only via
# the "cif paint" command.
#----------------------------------------------------------------

 scalefactor 10  nanometers

 templayer m1grow *m1
    grow 290

 # layer listrap:  Use the following set of commands to strap local
 # interconnect wires with metal1 (inside the cursor box) to satisfy
 # the maximum aspect ratio rule for local interconnect:
 #
 #    tech unlock *
 #    cif ostyle paint
 #    cif paint m1strap comment
 #    cif paint m1strap m1
 #    cif paint listrap licon
 #    erase comment

 templayer m1strap *li
    and-not m1grow
    grow 30

 templayer listrap comment
    slots 30 170 170 60

#endif (EXPERIMENTAL)

#----------------------------------------------------------------
style wafflefill
#----------------------------------------------------------------
# Style used by scripts for automatically generating fill layers
# (under development)
#----------------------------------------------------------------
 scalefactor 10  nanometers
 options calma-permissive-labels
 gridlimit 5

#---------------------------------------------------
# MET1 fill (under development)
#---------------------------------------------------
 templayer      slots_m1
        bbox    top
        slots   33400 1150 1650 46000 13350 14650
 templayer      obstruct_m1 allm1,allpad,obsm1
        grow    800
        shrink  500
        grow    500
 layer met1fill slots_m1
        and-not obstruct_m1
        shrink  550
        grow    550

end

#-----------------------------------------------------------------------
cifinput
#-----------------------------------------------------------------------
# NOTE:  All values in this section MUST be multiples of 25 
# or else magic will scale below the allowed layout grid size
#-----------------------------------------------------------------------

style  vendorimport
 scalefactor 10 nanometers
 gridlimit 5

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

#ifndef MIM
 ignore CAPM
 ignore CAPM2
#endif (!MIM)
#ifndef METAL5
 ignore MET4,VIA3
 ignore MET5,VIA4
#endif
 ignore NPC
 ignore SEALID
 ignore NPNID
 ignore PNPID
 ignore CAPID
 ignore LDNTM
 ignore HVNTM
 ignore POLYMOD
 ignore LOWTAPDENSITY

 layer nwell NWELL,WELLTXT,WELLPIN
 labels NWELL
 labels WELLTXT text
 labels WELLPIN port

 layer pwell SUBTXT,SUBPIN
 labels SUBTXT text
 labels SUBPIN port

 layer dnwell DNWELL
 labels DNWELL

 layer rpw PWRES
 and DNWELL
 labels PWRES

 templayer ndiffarea DIFF,DIFFTXT,DIFFPIN
 and-not POLY
 and-not NWELL
 and-not PPLUS
 and-not DIODE
 and-not DIFFRES
 and-not THKOX
 and NPLUS
 copyup ndifcheck
 labels DIFF
 labels DIFFTXT text
 labels DIFFPIN port
 labels TAPPIN port

 layer ndiff ndiffarea

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

 templayer mvndiffarea DIFF,DIFFTXT,DIFFPIN
 and-not POLY
 and-not NWELL
 and-not PPLUS
 and-not DIODE
 and-not DIFFRES
 and THKOX
 and NPLUS
 copyup ndifcheck
 labels DIFF
 labels DIFFTXT text
 labels DIFFPIN port

 layer mvndiff mvndiffarea

 # Copy ndiff areas up for contact checks
 templayer mvxndifcheck mvndifcheck
 copyup mvndifcheck

 layer ndiode DIFF
 and NPLUS
 and DIODE
 and-not NWELL
 and-not POLY
 and-not PPLUS
 and-not THKOX
 and-not LVTN
 labels DIFF

 layer ndiodelvt DIFF
 and NPLUS
 and DIODE
 and-not NWELL
 and-not POLY
 and-not PPLUS
 and-not THKOX
 and LVTN
 labels DIFF

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

 layer ndiffres DIFFRES
 and NPLUS
 and-not THKOX
 labels DIFF

 templayer pdiffarea DIFF,DIFFTXT,DIFFPIN
 and-not POLY
 and NWELL
 and-not NPLUS
 and-not DIODE
 and-not THKOX
 and PPLUS
 copyup pdifcheck
 labels DIFF 
 labels DIFFTXT text
 labels DIFFPIN port

 layer pdiff pdiffarea

 layer mvndiode DIFF
 and NPLUS
 and DIODE
 and THKOX
 and-not POLY
 and-not PPLUS
 and-not LVTN
 labels DIFF

 layer nndiode DIFF
 and NPLUS
 and DIODE
 and THKOX
 and-not POLY
 and-not PPLUS
 and LVTN
 labels DIFF

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

 layer mvndiffres DIFFRES
 and NPLUS
 and THKOX
 labels DIFF

 templayer mvpdiffarea DIFF,DIFFTXT,DIFFPIN
 and-not POLY
 and NWELL
 and-not NPLUS
 and THKOX
 and-not DIODE
 and-not DIFFRES
 and PPLUS
 copyup mvpdifcheck
 labels DIFF
 labels DIFFTXT text
 labels DIFFPIN port

 layer mvpdiff mvpdiffarea

 # Copy pdiff areas up for contact checks
 templayer xpdifcheck pdifcheck
 copyup pdifcheck

 layer pdiode DIFF
 and PPLUS
 and-not POLY
 and-not NPLUS
 and-not THKOX
 and-not LVTN
 and-not HVTP
 and DIODE
 labels DIFF

 layer pdiodelvt DIFF
 and PPLUS
 and-not POLY
 and-not NPLUS
 and-not THKOX
 and LVTN
 and-not HVTP
 and DIODE
 labels DIFF

 layer pdiodehvt DIFF
 and PPLUS
 and-not POLY
 and-not NPLUS
 and-not THKOX
 and-not LVTN
 and HVTP
 and DIODE
 labels DIFF

 templayer pdiodearea DIODE
 and PPLUS
 and-not THKOX
 copyup DIODE,PPLUS

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

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

 layer pfet pfetarea
 and-not LVTN
 and-not HVTP
 and-not STDCELL
 and-not COREID
 labels DIFF

 layer scpfet pfetarea
 and-not LVTN
 and-not HVTP
 and STDCELL
 labels DIFF

 layer ppu pfetarea
 and-not LVTN
 and-not HVTP
 and COREID
 labels DIFF

 layer pfetlvt pfetarea
 and LVTN
 labels DIFF

 layer pfethvt pfetarea
 and HVTP
 labels DIFF

 # Always force nwell under pfet (nwell encloses pdiff by 0.18)
 layer nwell pfetarea
 grow 180

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

 layer mvpdiode DIFF
 and PPLUS
 and-not POLY
 and-not NPLUS
 and THKOX
 and DIODE
 labels DIFF

 templayer mvpdiodearea DIODE
 and PPLUS
 and THKOX
 copyup DIODE,PPLUS

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

 templayer mvpfetarea DIFF
 and-not NPLUS
 and THKOX
 and POLY

 layer mvpfet mvpfetarea
 labels DIFF

 layer pdiff DIFF,DIFFTXT,DIFFPIN
 and-not NPLUS
 and-not POLY
 and-not THKOX
 and-not DIODE
 and-not DIFFRES
 labels DIFF
 labels DIFFTXT text
 labels DIFFPIN port

 layer pdiffres DIFFRES
 and PPLUS
 and NWELL
 and-not THKOX
 labels DIFF

 layer nfet DIFF
 and POLY
 and-not PPLUS
 and NPLUS
 and-not THKOX
 and-not LVTN
 and-not SONOS
 and-not STDCELL
 labels DIFF

 layer scnfet DIFF
 and POLY
 and-not PPLUS
 and NPLUS
 and-not NWELL
 and-not THKOX
 and-not LVTN
 and-not SONOS
 and STDCELL
 labels DIFF

 layer npd DIFF
 and POLY
 and-not PPLUS
 and NPLUS
 and-not NWELL
 and COREID
 labels DIFF

 # layer npass DIFF
 # and POLY
 # and-not PPLUS
 # and NPLUS
 # and-not NWELL
 # and COREID
 # labels DIFF

 layer nfetlvt DIFF
 and POLY
 and-not PPLUS
 and NPLUS
 and-not THKOX
 and LVTN
 and-not SONOS
 labels DIFF

 layer nsonos DIFF
 and POLY
 and-not PPLUS
 and NPLUS
 and-not THKOX
 and LVTN
 and SONOS
 labels DIFF

 templayer nsdarea TAP
 and NPLUS
 and NWELL
 and-not POLY
 and-not PPLUS
 and-not THKOX
 copyup nsubcheck

 layer nsd nsdarea
 labels TAP

 layer nsd TAP,TAPPIN
 and NPLUS
 and-not POLY
 and-not THKOX
 labels TAP
 labels TAPPIN port

 templayer nsdexpand nsdarea
 grow 500

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

 templayer psdarea TAP
 and PPLUS
 and-not NWELL
 and-not POLY
 and-not NPLUS
 and-not THKOX
 and-not pfetexpand
 copyup psubcheck

 layer psd psdarea
 labels TAP

 layer psd TAP,TAPPIN
 and PPLUS
 and-not POLY
 and-not THKOX
 labels TAP
 labels TAPPIN port

 templayer psdexpand psdarea
 grow 500

 layer mvpdiff DIFF,DIFFTXT,DIFFPIN
 and-not NPLUS
 and-not POLY
 and THKOX
 and mvpfetexpand
 labels DIFF
 labels DIFFTXT text
 labels DIFFPIN port

 layer mvpdiffres DIFFRES
 and PPLUS
 and NWELL
 and THKOX
 and-not mvrdpioedge
 labels DIFF

 layer mvnfet DIFF
 and POLY
 and-not PPLUS
 and NPLUS
 and-not LVTN
 and THKOX
 labels DIFF

 layer mvnnfet DIFF
 and POLY
 and-not PPLUS
 and NPLUS
 and LVTN
 and THKOX
 labels DIFF

 templayer mvnsdarea TAP
 and NPLUS
 and NWELL
 and-not POLY
 and-not PPLUS
 and THKOX
 copyup mvnsubcheck

 layer mvnsd mvnsdarea
 labels TAP

 layer mvnsd TAP,TAPPIN
 and NPLUS
 and THKOX
 labels TAP
 labels TAPPIN port

 templayer mvnsdexpand mvnsdarea
 grow 500

 # Copy nsub areas up for contact checks
 templayer mvxnsubcheck mvnsubcheck
 copyup mvnsubcheck

 templayer mvpsdarea DIFF
 and PPLUS
 and-not NWELL
 and-not POLY
 and-not NPLUS
 and THKOX
 and-not mvpfetexpand
 copyup mvpsubcheck

 layer mvpsd mvpsdarea
 labels DIFF

 layer mvpsd TAP,TAPPIN
 and PPLUS
 and THKOX
 labels TAP
 labels TAPPIN port

 templayer mvpsdexpand mvpsdarea
 grow 500

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

 templayer mvxpsubcheck mvpsubcheck
 copyup mvpsubcheck

 layer psd TAP
 and-not PPLUS
 and-not NPLUS
 and-not POLY
 and-not THKOX
 and-not pfetexpand
 and psdexpand

 layer nsd TAP
 and-not PPLUS
 and-not NPLUS
 and-not POLY
 and-not THKOX
 and nsdexpand

 layer mvpsd TAP
 and-not PPLUS
 and-not NPLUS
 and-not POLY
 and THKOX
 and-not mvpfetexpand
 and mvpsdexpand

 layer mvnsd TAP
 and-not PPLUS
 and-not NPLUS
 and-not POLY
 and THKOX
 and mvnsdexpand

 templayer hresarea POLY
 and RPM
 grow 3000

 templayer uresarea POLY
 and URPM
 grow 3000

 templayer diffresarea DIFFRES
 and-not THKOX
 grow 3000

 templayer mvdiffresarea DIFFRES
 and THKOX
 grow 3000

 templayer resarea diffresarea,mvdiffresarea,hresarea,uresarea

 layer pfet POLY
 and DIFF
 and diffresarea
 and-not NPLUS
 and-not STDCELL

 layer scpfet POLY
 and DIFF
 and diffresarea
 and-not NPLUS
 and STDCELL

 templayer xpolyterm RPM,URPM
 and POLY
 and-not POLYRES
 # add back the 0.06um contact surround in the direction of the resistor
 grow 60
 and POLY

 layer xpc xpolyterm

 templayer polyarea POLY
 and-not POLYRES
 and-not POLYSHORT
 and-not DIFF
 and-not RPM
 and-not URPM
 copyup polycheck

 layer poly polyarea,POLYTXT,POLYPIN
 labels POLY
 labels POLYTXT text
 labels POLYPIN port

 # Copy (non-resistor) poly areas up for contact checks
 templayer xpolycheck polycheck
 copyup polycheck

 layer mrp1 POLY
 and POLYRES
 and-not RPM
 and-not URPM
 labels POLY

 layer rmp POLY
 and POLYSHORT
 labels POLY

 layer xhrpoly POLY
 and POLYRES
 and RPM
 and-not URPM
 and PPLUS
 and NPC
 and-not xpolyterm
 labels POLY

 layer uhrpoly POLY
 and POLYRES
 and URPM
 and-not RPM
 and NPC
 and-not xpolyterm
 labels POLY

 templayer ndcbase CONT
 and DIFF
 and NPLUS
 and-not NWELL
 and LI
 and-not THKOX

 layer ndc ndcbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or ndcbase
 labels CONT

 templayer nscbase CONT
 and DIFF,TAP
 and NPLUS
 and NWELL
 and LI
 and-not THKOX

 layer nsc nscbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or nscbase
 labels CONT

 templayer pdcbase CONT
 and DIFF
 and PPLUS
 and NWELL
 and LI
 and-not THKOX

 layer pdc pdcbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or pdcbase
 labels CONT

 templayer pdcnowell CONT
 and DIFF
 and PPLUS
 and pfetexpand
 and LI
 and-not THKOX

 layer pdc pdcnowell
 grow 85
 shrink 85
 shrink 85
 grow 85
 or pdcnowell
 labels CONT

 templayer pscbase CONT
 and DIFF,TAP
 and PPLUS
 and-not NWELL
 and-not pfetexpand
 and LI
 and-not THKOX

 layer psc pscbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or pscbase
 labels CONT

 templayer pcbase CONT
 and POLY
 and-not DIFF
 and-not RPM,URPM
 and LI

 layer pc pcbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or pcbase
 labels CONT

 templayer ndicbase CONT
 and DIFF
 and NPLUS
 and DIODE
 and-not POLY
 and-not PPLUS
 and-not THKOX
 and-not LVTN

 layer ndic ndicbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or ndicbase
 labels CONT

 templayer ndilvtcbase CONT
 and DIFF
 and NPLUS
 and DIODE
 and-not POLY
 and-not PPLUS
 and-not THKOX
 and LVTN

 layer ndilvtc ndilvtcbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or ndilvtcbase
 labels CONT

 templayer pdicbase CONT
 and DIFF
 and PPLUS
 and DIODE
 and-not POLY
 and-not NPLUS
 and-not THKOX
 and-not LVTN
 and-not HVTP

 layer pdic pdicbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or pdicbase
 labels CONT

 templayer pdilvtcbase CONT
 and DIFF
 and PPLUS
 and DIODE
 and-not POLY
 and-not NPLUS
 and-not THKOX
 and LVTN
 and-not HVTP

 layer pdilvtc pdilvtcbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or pdilvtcbase
 labels CONT

 templayer pdihvtcbase CONT
 and DIFF
 and PPLUS
 and DIODE
 and-not POLY
 and-not NPLUS
 and-not THKOX
 and-not LVTN
 and HVTP

 layer pdihvtc pdihvtcbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or pdihvtcbase
 labels CONT

 templayer mvndcbase CONT
 and DIFF
 and NPLUS
 and-not NWELL
 and LI
 and THKOX

 layer mvndc mvndcbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or mvndcbase
 labels CONT

 templayer mvnscbase CONT
 and DIFF,TAP
 and NPLUS
 and NWELL
 and LI
 and THKOX

 layer mvnsc mvnscbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or mvnscbase
 labels CONT

 templayer mvpdcbase CONT
 and DIFF
 and PPLUS
 and NWELL
 and LI
 and THKOX

 layer mvpdc mvpdcbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or mvpdcbase
 labels CONT

 templayer mvpdcnowell CONT
 and DIFF
 and PPLUS
 and mvpfetexpand
 and MET1
 and THKOX

 layer mvpdc mvpdcnowell
 grow 85
 shrink 85
 shrink 85
 grow 85
 or mvpdcnowell
 labels CONT

 templayer mvpscbase CONT
 and DIFF,TAP
 and PPLUS
 and-not NWELL
 and-not mvpfetexpand
 and LI
 and THKOX

 layer mvpsc mvpscbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or mvpscbase
 labels CONT

 templayer mvndicbase CONT
 and DIFF
 and NPLUS
 and DIODE
 and-not POLY
 and-not PPLUS
 and-not LVTN
 and THKOX

 layer mvndic mvndicbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or mvndicbase
 labels CONT

 templayer nndicbase CONT
 and DIFF
 and NPLUS
 and DIODE
 and-not POLY
 and-not PPLUS
 and LVTN
 and THKOX

 layer nndic nndicbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or nndicbase
 labels CONT

 templayer mvpdicbase CONT
 and DIFF
 and PPLUS
 and DIODE
 and-not POLY
 and-not NPLUS
 and THKOX

 layer mvpdic mvpdicbase
 grow 85
 shrink 85
 shrink 85
 grow 85
 or mvpdicbase
 labels CONT

 layer locali LI,LITXT,LIPIN
 and-not LIRES,LISHORT
 and-not COREID
 labels LI
 labels LITXT text
 labels LIPIN port

 layer coreli LI,LITXT,LIPIN
 and-not LIRES,LISHORT
 and COREID
 labels LI
 labels LITXT text
 labels LIPIN port

 layer rli LI
 and LIRES,LISHORT
 labels LIRES,LISHORT

 layer lic MCON
 grow 95
 shrink 95
 shrink 85
 grow 85
 or MCON
 labels MCON

 layer m1 MET1,MET1TXT,MET1PIN
 and-not MET1RES,MET1SHORT
 labels MET1
 labels MET1TXT text
 labels MET1PIN port

 layer rm1 MET1
 and MET1RES,MET1SHORT
 labels MET1RES,MET1SHORT

#ifdef MIM
 layer mimcap MET3
 and CAPM
 labels CAPM

 layer mimcc VIA3
 and CAPM
 grow 60
 grow 40
 shrink 40
 labels CAPM

 layer mimcap2 MET4
 and CAPM2
 labels CAPM2

 layer mim2cc VIA4
 and CAPM2
 grow 190
 grow 210
 shrink 210
 labels CAPM2

#endif (MIM)

 templayer m2cbase VIA1
 grow 55

 layer m2c m2cbase
 grow 30
 shrink 30
 shrink 130
 grow 130
 or m2cbase

 layer m2 MET2,MET2TXT,MET2PIN
 and-not MET2RES,MET2SHORT
 labels MET2
 labels MET2TXT text
 labels MET2PIN port

 layer rm2 MET2
 and MET2RES,MET2SHORT
 labels MET2RES,MET2SHORT

 templayer m3cbase VIA2
 grow 40

 layer m3c m3cbase
 grow 60
 shrink 60
 shrink 140 
 grow 140
 or m3cbase

 layer m3 MET3,MET3TXT,MET3PIN
 and-not MET3RES,MET3SHORT
#ifdef MIM
 and-not CAPM
#endif (MIM)
 labels MET3
 labels MET3TXT text
 labels MET3PIN port

 layer rm3 MET3
 and MET3RES,MET3SHORT
 labels MET3RES,MET3SHORT

#ifdef (METAL5)

 templayer via3base VIA3
#ifdef MIM
 and-not CAPM
#endif (MIM)
 grow 60

 layer via3 via3base
 grow 40
 shrink 40
 shrink 160
 grow 160
 or via3base

 layer m4 MET4,MET4TXT,MET4PIN
 and-not MET4RES,MET4SHORT
#ifdef MIM
 and-not CAPM2
#endif (MIM)
 labels MET4
 labels MET4TXT text
 labels MET4PIN port

 layer rm4 MET4
 and MET4RES,MET4SHORT
 labels MET4RES,MET4SHORT

 layer m5 MET5,MET5TXT,MET5PIN
 and-not MET5RES,MET5SHORT
 labels MET5
 labels MET5TXT text
 labels MET5PIN port

 layer rm5 MET5
 and MET5RES,MET5SHORT
 labels MET5RES,MET5SHORT

 templayer via4base VIA4
#ifdef MIM
 and-not CAPM2
#endif (MIM)
 grow 190

 layer via4 via4base
 grow 210
 shrink 210
 shrink 590
 grow 590
 or via4base
#endif (METAL5)

#ifdef REDISTRIBUTION
 layer metrdl RDL,RDLTXT,RDLPIN
 labels RDL
 labels RDLTXT text
 labels RDLPIN port
#endif

 # Find diffusion not covered in
 # NPLUS or PPLUS and pull it into
 # the next layer up

 templayer gentrans DIFF
 and-not PPLUS
 and-not NPLUS
 and POLY
 copyup DIFF,POLY

 templayer gendiff DIFF,TAP
 and-not PPLUS
 and-not NPLUS
 and-not POLY
 copyup DIFF

 # Handle contacts found by copyup

 templayer ndiccopy CONT
 and LI
 and DIODE
 and NPLUS
 and-not THKOX

 layer ndic ndiccopy
 grow 85
 shrink 85
 shrink 85
 grow 85
 or ndiccopy
 labels CONT

 templayer mvndiccopy CONT
 and LI
 and DIODE
 and NPLUS
 and THKOX

 layer mvndic mvndiccopy
 grow 85
 shrink 85
 shrink 85
 grow 85
 or mvndiccopy
 labels CONT

 templayer pdiccopy CONT
 and LI
 and DIODE
 and PPLUS
 and-not THKOX

 layer pdic pdiccopy
 grow 85
 shrink 85
 shrink 85
 grow 85
 or pdiccopy
 labels CONT

 templayer mvpdiccopy CONT
 and LI
 and DIODE
 and PPLUS
 and THKOX

 layer mvpdic mvpdiccopy
 grow 85
 shrink 85
 shrink 85
 grow 85
 or mvpdiccopy
 labels CONT

 templayer ndccopy CONT
 and ndifcheck

 layer ndc ndccopy
 grow 85
 shrink 85
 shrink 85
 grow 85
 or ndccopy
 labels CONT

 templayer mvndccopy CONT
 and mvndifcheck

 layer mvndc mvndccopy
 grow 85
 shrink 85
 shrink 85
 grow 85
 or mvndccopy
 labels CONT

 templayer pdccopy CONT
 and pdifcheck

 layer pdc pdccopy
 grow 85
 shrink 85
 shrink 85
 grow 85
 or pdccopy
 labels CONT

 templayer mvpdccopy CONT
 and mvpdifcheck

 layer mvpdc mvpdccopy
 grow 85
 shrink 85
 shrink 85
 grow 85
 or mvpdccopy
 labels CONT

 templayer pccopy CONT
 and polycheck

 layer pc pccopy
 grow 85
 shrink 85
 shrink 85
 grow 85
 or pccopy
 labels CONT

 templayer nsccopy CONT
 and nsubcheck

 layer nsc nsccopy
 grow 85
 shrink 85
 shrink 85
 grow 85
 or nsccopy
 labels CONT

 templayer mvnsccopy CONT
 and mvnsubcheck

 layer mvnsc mvnsccopy
 grow 85
 shrink 85
 shrink 85
 grow 85
 or mvnsccopy
 labels CONT

 templayer psccopy CONT
 and psubcheck

 layer psc psccopy
 grow 85
 shrink 85
 shrink 85
 grow 85
 or psccopy
 labels CONT

 templayer mvpsccopy CONT
 and mvpsubcheck

 layer mvpsc mvpsccopy
 grow 85
 shrink 85
 shrink 85
 grow 85
 or mvpsccopy
 labels CONT

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

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

 layer glass GLASS,PADTXT,PADPIN
 labels GLASS
 labels PADTXT text
 labels PADPIN port

 templayer boundary BOUND,STDCELL,PADCELL
 boundary

 layer comment LVSTEXT
 labels LVSTEXT text

 layer comment TTEXT
 labels TTEXT text

 layer fillblock  FILLOBSM1,FILLOBSM2,FILLOBSM3,FILLOBSM4
 labels FILLOBSM1,FILLOBSM2,FILLOBSM3,FILLOBSM4

# MOS Varactor

 layer var POLY
 and TAP
 and NPLUS
 and NWELL
 and-not THKOX
 and-not HVTP
 # NOTE:  Else forms a varactor that is not in the vendor netlist.
 and-not COREID
 labels POLY

 layer varhvt POLY
 and TAP
 and NPLUS
 and NWELL
 and-not THKOX
 and HVTP
 labels POLY

 layer mvvar POLY
 and TAP
 and NPLUS
 and NWELL
 and THKOX
 labels POLY

 calma NWELL 64 20
 calma DIFF 65 20
 calma DNWELL 64 18
 calma PWRES 64 13
 calma TAP  65 44
 # LVTN
 calma LVTN 125 44
 # HVTP
 calma HVTP 78 44
 # SONOS (TUNM)
 calma SONOS 80 20
 # NPLUS = NSDM
 calma NPLUS 93 44
 # PPLUS = PSDM
 calma PPLUS 94 20
 # HVI
 calma THKOX 75 20
 # NPC
 calma NPC 95 20
 # P+ POLY MASK
 calma RPM 86 20
 calma URPM 79 20
 calma LDNTM 11 44
 calma HVNTM 125 20
 # Poly resistor ID mark
 calma POLYRES 66 13
 # Diffusion resistor ID mark
 calma DIFFRES 65 13
 calma POLY 66 20
 calma POLYMOD 66 83
 # Diode ID mark
 calma DIODE 81 23
 # Bipolar NPN mark
 calma NPNID 82 20
 # Bipolar PNP mark
 calma PNPID 82 20
 # Capacitor ID
 calma CAPID 82 64
 # Core area ID mark
 calma COREID 81 2
 # Standard cell ID mark
 calma STDCELL 81 4
 # Padframe cell ID mark
 calma PADCELL 81 3
 # Seal ring ID mark
 calma SEALID 81 1
 # Low tap density ID mark
 calma LOWTAPDENSITY 81 14
 
 # LICON
 calma CONT 66 44
 calma LI   67 20
 calma MCON 67 44

 calma MET1 68 20
 calma VIA1 68 44
 calma MET2 69 20
 calma VIA2 69 44
 calma MET3 70 20
#ifdef METAL5
 calma VIA3 70 44
 calma MET4 71 20
 calma VIA4 71 44
 calma MET5 72 20
#endif
#ifdef REDISTRIBUTION
 calma RDL 74 20
#endif
 calma GLASS 76 20

 calma SUBPIN  64 59
 calma PADPIN  76 5
 calma DIFFPIN 65 6
 calma TAPPIN  65 5
 calma WELLPIN  64 5
 calma LIPIN 67 5
 calma POLYPIN 66 5
 calma MET1PIN 68 5
 calma MET2PIN 69 5
 calma MET3PIN 70 5
#ifdef METAL5
 calma MET4PIN 71 5
 calma MET5PIN 72 5
#endif
#ifdef REDISTRIBUTION
 calma RDLPIN 74 5
#endif

 calma LIRES 67 13
 calma MET1RES 68 13
 calma MET2RES 69 13
 calma MET3RES 70 13
#ifdef METAL5
 calma MET4RES 71 13
 calma MET5RES 72 13
#endif

 calma POLYSHORT 66 15
 calma LISHORT 67 15
 calma MET1SHORT 68 15
 calma MET2SHORT 69 15
 calma MET3SHORT 70 15
#ifdef METAL5
 calma MET4SHORT 71 15
 calma MET5SHORT 72 15
#endif

 calma SUBTXT 122 16
 calma PADTXT 76 16
 calma DIFFTXT 65 16
 calma POLYTXT 66 16
 calma WELLTXT 64 16
 calma LITXT 67 16
 calma MET1TXT 68 16
 calma MET2TXT 69 16
 calma MET3TXT 70 16
#ifdef METAL5
 calma MET4TXT 71 16
 calma MET5TXT 72 16
#endif
#ifdef REDISTRIBUTION
 calma RDLPIN 74 16
#endif

 calma BOUND 235 4

 calma LVSTEXT 83 44

#ifdef (MIM)
 calma CAPM 89 44
 calma CAPM2 97 44
#endif (MIM)

 calma FILLOBSM1  62  24
 calma FILLOBSM2  105 52
 calma FILLOBSM3  107 24
 calma FILLOBSM4  112 4

end

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

mzrouter
end

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

drc

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

 scalefactor 10 

 cifstyle drc

 variants (fast),(full)

#-----------------------------
# DNWELL
#-----------------------------

 width dnwell 3000 "Deep N-well width < %d (Dnwell 2)"
 spacing dnwell dnwell 6300 touching_ok "Deep N-well spacing < %d (Dnwell 3)"
 spacing dnwell allnwell 4500 surround_ok \
	"Deep N-well spacing to N-well < %d (Nwell 7)"
 cifmaxwidth nwell_missing 0 bend_illegal \
	"N-well overlap of Deep N-well < 0.4um outside, 1.03um inside (Nwell 5a, 7)"
 cifmaxwidth dnwell_missing 0 bend_illegal \
	"SONOS nFET must be in Deep N-well (Tunm 6a)"

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

 width allnwell 840 "N-well width < %d (Nwell 1)"
 spacing allnwell allnwell 1270 touching_ok "N-well spacing < %d (Nwell 2a)"

#-----------------------------
# DIFF
#-----------------------------

 width *ndiff,nfet,scnfet,npd,npass,*nsd,*ndiode,ndiffres,*pdiff,pfet,scpfet,ppu,*psd,*pdiode,pdiffres \
	150 "Diffusion width < %d (Diff/tap 1)"
 width *mvndiff,mvnfet,mvnnfet,*mvndiode,*nndiode,mvndiffres,*mvpdiff,mvpfet,*mvpdiode 290 \
	"MV Diffusion width < %d (Diff/tap 14)"
 width *mvnsd,*mvpsd 150 "MV Tap width < %d (Diff/tap 1)"
 extend *mvpsd *mvndiff 700 "MV Butting tap length < %d (Diff/tap 16)"
 extend *mvnsd *mvpdiff 700 "MV Butting tap length < %d (Diff/tap 16)"
 extend *psd *ndiff 290 "Butting tap length < %d (Diff/tap 4)"
 extend *nsd *pdiff 290 "Butting tap length < %d (Diff/tap 4)"
 width mvpdiffres 150 "MV P-Diffusion resistor width < %d (Diff/tap 14a)"
 spacing alldifflv,var,varhvt alldifflv,var,varhvt 270 touching_ok \
	"Diffusion spacing < %d (Diff/tap 3)"
 spacing alldiffmvnontap,mvvar alldiffmvnontap,mvvar 300 touching_ok \
	"MV Diffusion spacing < %d (Diff/tap 15a)"
 spacing alldiffmv *mvnsd,*mvpsd 270 touching_ok \
	"MV Diffusion to MV tap spacing < %d (Diff/tap 3)"
 spacing *mvndiff,mvnfet,mvnnfet,*mvndiode,*nndiode,mvndiffres,mvvar *mvpsd 370 \
	touching_ok "MV P-Diffusion to MV N-tap spacing < %d (Diff/tap 15b)"
 spacing *mvnsd,*mvpdiff,mvpfet,mvvar,*mvpdiode *mvpsd,*psd 760 touching_illegal \
	"MV Diffusion in N-well to P-tap spacing < %d (Diff/tap 20 + Diff/tap 17,19)"
 spacing *ndiff,*ndiode,nfet allnwell 340 touching_illegal \
	"N-Diffusion spacing to N-well < %d (Diff/tap 9)"
 spacing *mvndiff,*mvndiode,mvnfet,mvnnfet allnwell 340 touching_illegal \
	"N-Diffusion spacing to N-well < %d (Diff/tap 9)"
 spacing *psd allnwell 130 touching_illegal \
	"P-tap spacing to N-well < %d (Diff/tap 11)"
 spacing *mvpsd allnwell 130 touching_illegal \
	"P-tap spacing to N-well < %d (Diff/tap 11)"
 surround *nsd allnwell 180 absence_illegal \
	"N-well overlap of N-tap < %d (Diff/tap 10)"
 surround *mvnsd allnwell 330 absence_illegal \
	"N-well overlap of MV N-tap < %d (Diff/tap 19)"
 surround *pdiff,*pdiode,pfet,scpfet,ppu allnwell 180 absence_illegal \
	"N-well overlap of P-Diffusion < %d (Diff/tap 8)"
 surround *mvpdiff,*mvpdiode,mvpfet allnwell 330 absence_illegal \
	"N-well overlap of P-Diffusion < %d (Diff/tap 17)"
 surround mvvar allnwell 560 absence_illegal \
	"N-well overlap of MV varactor < %d (LVTN 10 + LVTN 4b)"
 spacing *mvndiode *mvndiode 1070 touching_ok \
	"MV N-diode spacing < %d (HVNTM.2 + 2 * HVNTM.3)"

 # Butting junction rules
 edge4way (*psd)/a ~(*ndiff,*psd)/a 125 ~(*ndiff)/a (*ndiff)/a 125 \
	"N-Diffusion to P-tap spacing < %d across butted junction"
 edge4way (*ndiff)/a ~(*ndiff,*psd)/a 125 ~(*psd)/a (*psd)/a 125 \
	"N-Diffusion to P-tap spacing < %d across butted junction"
 edge4way (*nsd)/a ~(*pdiff,*nsd)/a 125 ~(*pdiff)/a (*pdiff)/a 125 \
	"P-Diffusion to N-tap spacing < %d across butted junction"
 edge4way (*pdiff)/a ~(*pdiff,*nsd)/a 125 ~(*nsd)/a (*nsd)/a 125 \
	"P-Diffusion to N-tap spacing < %d across butted junction"

 edge4way (*mvpsd)/a ~(*mvndiff,*mvpsd)/a 125 ~(*mvndiff)/a (*mvndiff)/a 125 \
	"MV N-Diffusion to MV P-tap spacing < %d across butted junction"
 edge4way (*mvndiff)/a ~(*mvndiff,*mvpsd)/a 125 ~(*mvpsd)/a (*mvpsd)/a 125 \
	"MV N-Diffusion to MV P-tap spacing < %d across butted junction"
 edge4way (*mvnsd)/a ~(*mvpdiff,*mvnsd)/a 125 ~(*mvpdiff)/a (*mvpdiff)/a 125 \
	"MV P-Diffusion to MV N-tap spacing < %d across butted junction"
 edge4way (*mvpdiff)/a ~(*mvpdiff,*mvnsd)/a 125 ~(*mvnsd)/a (*mvnsd)/a 125 \
	"MV P-Diffusion to MV N-tap spacing < %d across butted junction"

 variants (full)

 # Latchup rules
 cifmaxwidth ptap_missing 0 bend_illegal \
	"N-diff distance to P-tap must be < 15.0um (LU 2)"
 cifmaxwidth dptap_missing 0 bend_illegal \
	"N-diff distance to P-tap in deep Nwell must be < 15.0um (LU 2.1)"
 cifmaxwidth ntap_missing 0 bend_illegal \
	"P-diff distance to N-tap must be < 15.0um (LU 3)"

 variants *

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

 width allpoly 150 "Poly width < %d (Poly 1a)"
 spacing allpoly allpoly 210 touching_ok "Poly spacing < %d (Poly 2)"
 spacing allpolynonfet alldifflvnonfet 75 corner_ok allfets \
	"Poly spacing to Diffusion < %d (Poly 4a)"
 spacing npres *nsd 480 touching_illegal \
	"Poly resistor spacing to N-tap < %d (Poly 9)"
 overhang *ndiff,rndiff nfet,scnfet,npd,npass 250 "N-Diffusion overhang of nmos < %d (Poly 7)"
 overhang *mvndiff,mvrndiff mvnfet,mvnnfet 250 \
	"N-Diffusion overhang of nmos < %d (Poly 7)"
 overhang *pdiff,rpdiff pfet,scpfet,ppu 250 "P-Diffusion overhang of pmos < %d (Poly 7)"
 overhang *mvpdiff,mvrpdiff mvpfet 250 "P-Diffusion overhang of pmos < %d (Poly 7)"
 overhang *poly allfets 130 "Poly overhang of transistor < %d (Poly 8)"
 rect_only allfets "No bends in transistors (Poly 11)"
 rect_only xhrpoly,uhrpoly "No bends in poly resistors (Poly 11)"
 extend  xpc/a xhrpoly,uhrpoly 2160 \
 	"Poly contact extends poly resistor by < %d (LIcon 1c + LI 5)"
 spacing xhrpoly,uhrpoly xhrpoly,uhrpoly 1240 touching_illegal \
	"Distance between precision resistors < %d (RPM 2 + 2 * RPM 3)"

#--------------------------------------------------------------------
# NPC (Nitride Poly Cut)
#--------------------------------------------------------------------

# Layer NPC is defined automatically around poly contacts (grow 0.1um)

#--------------------------------------------------------------------
# CONT (LICON, contact between poly/diff and LI)
#--------------------------------------------------------------------

 width ndc/li 170 "N-diffusion contact width < %d (LIcon 1)"
 width nsc/li 170 "N-tap contact width     < %d (LIcon 1)"
 width pdc/li 170 "P-diffusion contact width < %d (LIcon 1)"
 width psc/li 170 "P-tap contact width     < %d (LIcon 1)"
 width ndic/li 170 "N-diode contact width < %d (LIcon 1)"
 width pdic/li 170 "P-diode contact width < %d (LIcon 1)"
 width pc/li  170 "Poly contact width        < %d (LIcon 1)"

 width xpc/li  350 "Poly resistor contact width < %d (LIcon 1b + 2 * LI 5)"

 width mvndc/li 170 "N-diffusion contact width < %d (LIcon 1)"
 width mvnsc/li 170 "N-tap contact width     < %d (LIcon 1)"
 width mvpdc/li 170 "P-diffusion contact width < %d (LIcon 1)"
 width mvpsc/li 170 "P-tap contact width     < %d (LIcon 1)"
 width mvndic/li 170 "N-diode contact width < %d (LIcon 1)"
 width mvpdic/li 170 "P-diode contact width < %d (LIcon 1)"

 spacing allpdiffcont allndiffcont 170 touching_illegal \
	"Diffusion contact spacing < %d (LIcon 2)"
 spacing allndiffcont allndiffcont 170 touching_ok \
	"Diffusion contact spacing < %d (LIcon 2)"
 spacing allpdiffcont allpdiffcont 170 touching_ok \
	"Diffusion contact spacing < %d (LIcon 2)"
 spacing pc pc 170 touching_ok "Poly1 contact spacing < %d (LIcon 2)"

 spacing pc alldiff 190 touching_illegal \
	"Poly contact spacing to diffusion < %d (LIcon 14)"
 spacing pc allpfets 235 touching_illegal \
	"Poly contact spacing to pFET < %d (LIcon 9 + PSDM 5a)"

 spacing ndc,pdc nfet,pfet 55 touching_illegal \
	"Diffusion contact to gate < %d (LIcon 11)"
 spacing ndc,pdc scnfet,npd,npass,scpfet,ppu 50 touching_illegal \
	"Diffusion contact to standard cell gate < %d (LIcon 11)"
 spacing mvndc,mvpdc mvnfet,mvnnfet,mvpfet 55 touching_illegal \
	"Diffusion contact to gate < %d (LIcon 11)"
 spacing ndc,mvndc rnd,mvrnd 60 touching_illegal "Diffusion contact to rndiff < %d ()"
 spacing pdc,mvpdc rdp,mvrdp 60 touching_illegal "Diffusion contact to rndiff < %d ()"
 spacing nsc varactor,varhvt 250 touching_illegal \
	"Diffusion contact to varactor gate < %d (LIcon 10)"
 spacing mvnsc mvvar 250 touching_illegal \
	"Diffusion contact to varactor gate < %d (LIcon 10)"

 surround ndc/a *ndiff,nfet,scnfet,npd,npass,nfetlvt 40 absence_illegal \
	"N-diffusion overlap of N-diffusion contact < %d (LIcon 5a)"
 surround pdc/a *pdiff,pfet,scpfet,ppu,pfethvt,pfetlvt 40 absence_illegal \
	"P-diffusion overlap of P-diffusion contact < %d (LIcon 5a)"
 surround ndic/a *ndi 40 absence_illegal \
	"N-diode overlap of N-diode contact < %d (LIcon 5a)"
 surround pdic/a *pdi 40 absence_illegal \
	"P-diode overlap of N-diode contact < %d (LIcon 5a)"

 surround ndc/a *ndiff,nfet,scnfet,npd,npass,nfetlvt 60 directional \
	"N-diffusion overlap of N-diffusion contact < %d in one direction (LIcon 5c)"
 surround pdc/a *pdiff,pfet,scpfet,ppu,pfethvt,pfetlvt 60 directional \
	"P-diffusion overlap of P-diffusion contact < %d in one direction (LIcon 5c)"
 surround ndic/a *ndi 60 directional \
	"N-diode overlap of N-diode contact < %d in one direction (LIcon 5c)"
 surround pdic/a *pdi 60 directional \
	"P-diode overlap of N-diode contact < %d in one direction (LIcon 5c)"

 surround nsc/a *nsd 120 directional \
	"N-tap overlap of N-tap contact < %d in one direction (LIcon 7)"
 surround psc/a *psd 120 directional \
	"P-tap overlap of P-tap contact < %d in one direction (LIcon 7)"

 surround mvndc/a *mvndiff,mvnfet 40 absence_illegal \
	"N-diffusion overlap of N-diffusion contact < %d (LIcon 5a)"
 surround mvpdc/a *mvpdiff,mvpfet 40 absence_illegal \
	"P-diffusion overlap of P-diffusion contact < %d (LIcon 5a)"
 surround mvndic/a *mvndi 40 absence_illegal \
	"N-diode overlap of N-diode contact < %d (LIcon 5a)"
 surround mvpdic/a *mvpdi 40 absence_illegal \
	"P-diode overlap of N-diode contact < %d (LIcon 5a)"

 surround mvndc/a *mvndiff,mvnfet 60 directional \
	"N-diffusion overlap of N-diffusion contact < %d in one direction (LIcon 5c)"
 surround mvpdc/a *mvpdiff,mvpfet 60 directional \
	"P-diffusion overlap of P-diffusion contact < %d in one direction (LIcon 5c)"
 surround mvndic/a *mvndi 60 directional \
	"N-diode overlap of N-diode contact < %d in one direction (LIcon 5c)"
 surround mvpdic/a *mvpdi 60 directional \
	"P-diode overlap of N-diode contact < %d in one direction (LIcon 5c)"

 surround mvnsc/a *mvnsd 120 directional \
	"N-tap overlap of N-tap contact < %d in one direction (LIcon 7)"
 surround mvpsc/a *mvpsd 120 directional \
	"P-tap overlap of P-tap contact < %d in one direction (LIcon 7)"

 surround pc/a *poly,mrp1,xhrpoly,uhrpoly 50 absence_illegal \
	"Poly overlap of poly contact < %d (LIcon 8)"
 surround pc/a *poly,mrp1,xhrpoly,uhrpoly 80 directional \
	"Poly overlap of poly contact < %d in one direction (LIcon 8a)"

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

#-------------------------------------------------------------
# LI - Local interconnect layer
#-------------------------------------------------------------

 width *li,rli 170 "Local interconnect width < %d (LI 1)"
 width coreli 140 "Core local interconnect width < %d (LI c1)"
 spacing allli allli,*obsli 170 touching_ok  "Local interconnect spacing < %d (LI 3)"
 spacing coreli allli,*obsli 140 touching_ok  "Core local interconnect spacing < %d (LI c2)"

 surround pc/li *li 80 directional \
	"Local interconnect overlap of poly contact < %d in one direction (LI 5)"

 surround ndc/li,nsc/li,pdc/li,psc/li,ndic/li,pdic/li,mvndc/li,mvnsc/li,mvpdc/li,mvpsc/li,mvndic/li,mvpdic/li \
	*li,rli 80 directional \
	"Local interconnect overlap of diffusion contact < %d in one direction (LI 5)"

 area allli,*obsli 56100 170 "Local interconnect minimum area < %a (LI 6)"

#-------------------------------------------------------------
# MCON - Contact between local interconnect and metal1
#-------------------------------------------------------------

 width lic/m1 170 "Mcon width < %d (Mcon 1)"
 spacing lic/m1 lic/m1,obslic/m1 170 touching_ok "Mcon spacing < %d (Mcon 2)"

 exact_overlap lic/m1

#-------------------------------------------------------------
# METAL1 -
#-------------------------------------------------------------

 width *m1,rm1 140 "Metal1 width < %d (Met1 1)"
 spacing allm1 allm1,*obsm1 140 touching_ok "Metal1 spacing < %d (Met1 2)"
 area allm1,*obsm1 83000 140 "Metal1 minimum area < %a (Met1 6)"

 surround lic/m1 *met1 30 absence_illegal \
	"Metal1 overlap of local interconnect contact < %d (Met1 4)"
 surround lic/m1 *met1 60 directional \
	"Metal1 overlap of local interconnect contact < %d in one direction (Met1 5)"

variants (fast),(full)
 widespacing allm1 3000 allm1,*obsm1 280 touching_ok \
	"Metal1 > 3um spacing to unrelated m1 < %d (Met1 3a)"
 widespacing *obsm1 3000 allm1 280 touching_ok \
	"Metal1 > 3um spacing to unrelated m1 < %d (Met1 3a)"

variants (full)
 cifmaxwidth m1_hole_empty 0 bend_illegal \
	"Min area of metal1 holes > 0.14um^2 (Met1 7)"
variants *

#--------------------------------------------------
# VIA1
#--------------------------------------------------

 width v1/m1 260 "Via1 width < %d (Via 1a + 2 * Via 4a)"
 spacing v1 v1 60 touching_ok "Via1 spacing < %d (Via 2 - 2 * Via 4a)"
 surround v1/m1 *m1 30 directional \
	"Metal1 overlap of Via1 < %d in one direction (Via 5a - Via 4a)"
 surround v1/m2 *m2 30 directional \
	"Metal2 overlap of Via1 < %d in one direction (Met2 5 - Met2 4)"

 exact_overlap v1/m2

#--------------------------------------------------
# METAL2 - 
#--------------------------------------------------

 width allm2 140 "Metal2 width < %d (Met2 1)"
 spacing allm2  allm2,obsm2 140 touching_ok       "Metal2 spacing < %d (Met2 2)"
 area allm2,obsm2 67600 140 "Metal2 minimum area < %a (Met2 6)"

variants (fast),(full)
 widespacing allm2 3000 allm2,obsm2  280 touching_ok \
	"Metal2 > 3um spacing to unrelated m2 < %d (Met2 3)"
 widespacing obsm2 3000 allm2  280 touching_ok \
	"Metal2 > 3um spacing to unrelated m2 < %d (Met2 3)"

variants (full)
 cifmaxwidth m2_hole_empty 0 bend_illegal \
	"Min area of metal2 holes > 0.14um^2 (Met2 7)"
variants *

#--------------------------------------------------
# VIA2
#--------------------------------------------------

 width v2/m2 280 "Via2 width < %d (Via2 1a + 2 * Via2 4)"

 spacing v2 v2 120 touching_ok "Via2 spacing < 0.24um (Via2 2 - 2 * Via2 4)"

 surround v2/m2 *m2 45 directional \
	"Metal2 overlap of Via2 < %d in one direction (Via2 4a - Via2 4)"
 surround v2/m3 *m3 25 absence_illegal "Metal3 overlap of Via2 < %d (Met3 4)"

 exact_overlap v2/m2

#--------------------------------------------------
# METAL3 - 
#--------------------------------------------------

 width allm3 300 "Metal3 width < %d (Met3 1)"
 spacing allm3 allm3,obsm3  300 touching_ok "Metal3 spacing < %d (Met3 2)"
 area allm3,obsm3 240000 300 "Metal3 minimum area < %a (Met3 6)"

variants (fast),(full)
 widespacing allm3 3000 allm3,obsm3  400 touching_ok \
	"Metal3 > 3um spacing to unrelated m3 < %d (Met3 3d)"
 widespacing obsm3 3000 allm3  400 touching_ok \
	"Metal3 > 3um spacing to unrelated m3 < %d (Met3 3d)"
variants *


#ifdef METAL5
#--------------------------------------------------
# VIA3 - Requires METAL5 Module
#--------------------------------------------------

 width v3/m3 320 "Via3 width < %d (Via3 1 + 2 * Via3 4)"
 spacing v3 v3 80 touching_ok "Via3 spacing < %d (Via3 2 - 2 * Via3 4)"
 surround v3/m3 *m3 30 directional \
	"Metal3 overlap of Via3 in one direction < %d (Via3 5 - Via3 4)"
 surround v3/m4 *m4 5 absence_illegal \
	"Metal4 overlap of Via3 < %d (Met4 3 - Via3 4)"

 exact_overlap v3/m3

#-----------------------------
# METAL4 - METAL4 Module
#-----------------------------

variants *

 width allm4 300 "Metal4 width < %d (Met4 1)"
 spacing allm4  allm4,obsm4 300 touching_ok      "Metal4 spacing < %d (Met4 2)"
 area allm4,obsm4 240000 300 "Metal4 minimum area < %a (Met4 4a)"

variants (fast),(full)
 widespacing allm4 3000 allm4,obsm4  400 touching_ok \
	"Metal4 > 3um spacing to unrelated m4 < %d (S2M4)"
 widespacing obsm4 3000 allm4  400 touching_ok \
	"Metal4 > 3um spacing to unrelated m4 < %d (S2M4)"
variants *

#--------------------------------------------------
# VIA4 - Requires METAL5 Module
#--------------------------------------------------

 width v4/m4 1180 "Via4 width < %d (Via4 1 + 2 * Via4 4)"
 spacing v4 v4 420 touching_ok "Via4 spacing < %d (Via4 2 - 2 * Via4 4)"
 surround v4/m5 *m5 120 absence_illegal \
	"Metal5 overlap of Via4 < %d (Met5 3 - Via4 4)"

 exact_overlap v4/m4

#-----------------------------
# METAL5 - METAL5 Module
#-----------------------------

 width allm5 1600 "Metal5 width < %d (Met5 1)"
 spacing allm5  allm5,obsm5 1600 touching_ok "Metal5 spacing < %d (Met5 2)"
 area allm5,obsm5 4000000 1600 "Metal5 minimum area < %a (Met5 4)"

#endif (METAL5)

#ifdef REDISTRIBUTION

variants (full)

 width metrdl 10000 "RDL width < %d (Rdl 1)"
 spacing metrdl metrdl 10000 touching_ok "RDL spacing < %d (Rdl 2)"
 surround glass metrdl 10750 absence_ok "RDL must surround glass cut by %d (Rdl 3)"
 spacing metrdl padl 19660 surround_ok "RDL spacing to unrelated pad < %d (Rdl 6)"

variants *

#endif (REDISTRIBUTION)

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

 extend allfets *poly 420 "Transistor width < %d (Diff/tap 2)"
 # Except:  Note that standard cells allow transistor width minimum 0.36um
 width pfetlvt 350 "LVT PMOS gate length < %d (Poly 1b)"

 spacing *nsd,*mvnsd allpolynonfet 55 touching_illegal \
	"N-tap spacing to field poly < %d (Poly 5)"
 spacing *psd,*mvpsd allpolynonfet 55 touching_illegal \
	"P-tap spacing to field poly < %d (Poly 5)"

 # Full edge rule required to describe FET to butted tap distance
 edge4way *psd *ndiff 300 *ndiff *psd 300 \
	"Butting P-tap spacing to NMOS gate < %d (Poly 6)"
 edge4way *nsd *pdiff 300 *pdiff *nsd 300 \
	"Butting N-tap spacing to PMOS gate < %d (Poly 6)"
 edge4way *mvpsd *mvndiff 300 *mvndiff *mvpsd 300 \
	"Butting MV P-tap spacing to MV NMOS gate < %d (Poly 6)"
 edge4way *mvnsd *mvpdiff 300 *mvpdiff *mvnsd 300 \
	"Butting MV N-tap spacing to MV PMOS gate < %d (Poly 6)"

 # No LV FETs in HV diff
 spacing pfet,scpfet,ppu,pfetlvt,pfethvt,*pdiff *mvpdiff 360 touching_illegal \
	"LV P-diffusion to MV P-diffusion < %d (Diff/tap 23 + Diff/tap 22)"

 spacing nfet,scnfet,npd,npass,nfetlvt,varactor,varhvt,*ndiff *mvndiff 360 touching_illegal \
	"LV N-diffusion to MV N-diffusion < %d (Diff/tap 23 + Diff/tap 22)"

 # No HV FETs in LV diff
 spacing mvpfet,*mvpdiff *pdiff 360 touching_illegal \
	"MV P-diffusion to LV P-diffusion < %d (Diff/tap 23 + Diff/tap 22)"

 spacing mvnfet,mvvaractor,*mvndiff *ndiff 360 touching_illegal \
	"MV N-diffusion to LV N-diffusion < %d (Diff/tap 23 + Diff/tap 22)"

 # Minimum length of MV FETs.  Note that this is larger than the minimum
 # width (0.29um), so an edge rule is required

 edge4way mvndiff mvnfet 500 mvnfet 0 0 \
	"MV NMOS minimum length < %d (Poly 13)"

 edge4way mvnsd mvvaractor 500 mvvaractor 0 0 \
	"MV Varactor minimum length < %d (Poly 13)"

 edge4way mvpdiff mvpfet 500 mvpfet 0 0 \
	"MV PMOS minimum length < %d (Poly 13)"

#--------------------------------------------------
# mrp1 (N+ poly resistor)
#--------------------------------------------------

  width mrp1 330 "mrp1 resistor width < %d (Poly 3)"

#--------------------------------------------------
# xhrpoly (P+ poly resistor)
#--------------------------------------------------

  width xhrpoly 350 "xhrpoly resistor width < %d (P+ Poly 1a)"
  # NOTE: xhrpoly resistor requires choice of discrete widths 0.35, 0.69, ... up to 1.27.

#--------------------------------------------------
# uhrpoly (P+ poly resistor, 2kOhm/sq)
#--------------------------------------------------

  width uhrpoly 350 "uhrpoly resistor width < %d"
  spacing xhrpoly,uhrpoly,xpc alldiff 480 touching_illegal \
	"xhrpoly/uhrpoly resistor spacing to diffusion < %d (Poly 9)"

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

 overhang *nsd var,varhvt 250 \
 "N-Tap overhang of Varactor < %d (Var 4)"

 overhang *mvnsd mvvar 250 \
 "N-Tap overhang of Varactor < %d (Var 4)"

 width var,varhvt,mvvar 180 "Varactor length < %d (Var 1)"
 extend var,varhvt,mvvar *poly 1000 "Varactor width < %d (Var 2)"

#ifdef MIM
#-----------------------------------------------------------
# MiM CAP (CAPM) - 
#-----------------------------------------------------------

 width *mimcap 2000 "MiM cap width < %d (Capm 1)"
 spacing *mimcap *mimcap 840 touching_ok "MiM cap spacing < %d (Capm 2a)"
 spacing *mimcap via2/m3 1270 touching_illegal \
	"MiM cap spacing to via2 < %d (Capm 5)"
 surround *mimcc *mimcap 200 absence_illegal \
	"MiM cap must surround MiM cap contact by %d (Capm 4)"
 rect_only *mimcap "MiM cap must be rectangular (Capm 7)

 surround *mimcap *metal3/m3 140 absence_illegal \
	"Metal3 must surround MiM cap by %d (Capm 3)"
 spacing via2 *mimcap 50 touching_illegal "MiM cap cannot overlap via2 (Capm 8)"
 spacing via3 *mimcap 50 touching_illegal "MiM cap cannot overlap via3 (Capm 8)"
 # (resolve scaling issue!)
 # cifspacing mim_bottom mim_bottom 1200 touching_ok \
 #	"MiM cap bottom plate spacing < %d (Capm 2b)"

 # MiM cap contact rules (VIA3)

 width mimcc/m3 320 "MiM cap contact width < %d (Via3 1 + 2 * Via3 4)"
 spacing mimcc mimcc 80 touching_ok "MiM cap contact spacing < %d (Via3 2 - 2 * Via3 4)"
 surround mimcc/m4 *m4 5 directional \
	"Metal4 overlap of MiM cap contact in one direction < %d (Met4 3 - Via3 4)"
 exact_overlap mimcc/m3

 width *mimcap2 2000 "MiM cap width < %d (Cap2m 1)"
 spacing *mimcap2 *mimcap2 840 touching_ok "MiM cap spacing < %d (Cap2m 2a)"
 spacing *mimcap2 via3/m4 1270 touching_illegal \
	"MiM cap spacing to via3 < %d (Cap2m 5)"
 surround *mim2cc *mimcap2 200 absence_illegal \
	"MiM cap must surround MiM cap contact by %d (Cap2m 4)"
 rect_only *mimcap2 "MiM cap must be rectangular (Cap2m 7)

 surround *mimcap2 *metal4/m4 140 absence_illegal \
	"Metal4 must surround MiM cap by %d (Cap2m 3)"
 spacing via3 *mimcap2 50 touching_illegal "MiM cap cannot overlap via3 (Cap2m 8)"
 spacing via4 *mimcap2 50 touching_illegal "MiM cap cannot overlap via4 (Cap2m 8)"
 # (resolve scaling issue!)
 # cifspacing mim2_bottom mim2_bottom 1200 touching_ok \
 #	"MiM2 cap bottom plate spacing < %d (Cap2m 2b)"

 # MiM cap contact rules (VIA4)

 width mim2cc/m4 1180 "MiM2 cap contact width < %d (Via4 1 + 2 * Via4 4)"
 spacing mim2cc mim2cc 420 touching_ok \
	"MiM2 cap contact spacing < %d (Via4 2 - 2 * Via4 4)"
 surround mim2cc/m5 *m5 120 absence_illegal \
	"Metal5 overlap of MiM2 cap contact < %d (Met5 3 - Via4 4)"
 exact_overlap mim2cc/m4

#endif (MIM)

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

end

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

lef

 masterslice pwell  pwell PWELL substrate
 masterslice nwell  nwell NWELL

 routing li	li1 LI1 LI li

 routing m1	met1 MET1 m1
 routing m2	met2 MET2 m2
 routing m3	met3 MET3 m3
#ifdef METAL5
 routing m4	met4 MET4 m4
 routing m5	met5 MET5 m5
#endif (METAL5)
#ifdef REDISTRIBUTION
 routing mrdl	met6 MET6 m6 MRDL METRDL
#endif

 cut lic  mcon MCON Mcon
 cut m2c  via via1 VIA VIA1 cont2 via12
 cut m3c  via2 VIA2 cont3 via23
#ifdef METAL5
 cut via3 via3 VIA3 cont4 via34
 cut via4 via4 VIA4 cont5 via45
#endif (METAL5)

 obs obsli   li1
 obs obsm1   met1
 obs obsm2   met2
 obs obsm3   met3

#ifdef METAL5
 obs obsm4   met4
 obs obsm5   met5
#endif (METAL5)
#ifdef REDISTRIBUTION
 obs obsmrdl met6
#endif

 obs obslic mcon

end

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


extract
 style ngspice variants (lvs),(sim),(si)
 cscale 1
 # NOTE: SkyWater SPICE libraries use .option scale 1E6 so all
 # dimensions must be in units of microns in the extract file.
 # Use extract style "ngspice(si)" to override this and produce
 # a file with SI units for length/area.

 variants (lvs),(sim)
 lambda  1E6
 variants (si)
 lambda 1.0
 variants *

 units	microns
 step   7
 sidehalo 2

 # NOTE:  MiM cap layers have been purposely put out of order,
 # may want to reconsider.

 planeorder dwell 	0
 planeorder well 	1
 planeorder active 	2
 planeorder locali 	3
 planeorder metal1 	4
 planeorder metal2 	5
 planeorder metal3 	6
#ifdef METAL5
 planeorder metal4 	7
 planeorder metal5 	8
#ifdef REDISTRIBUTION
 planeorder metali	9
 planeorder block      10
 planeorder comment    11
 planeorder cap1       12
 planeorder cap2       13
#else (!REDISTRIBUTION)
 planeorder block       9	
 planeorder comment    10
 planeorder cap1       11
 planeorder cap2       12
#endif (!REDISTRIBUTION)
#else (!METAL5)
#ifdef REDISTRIBUTION
 planeorder metali     7
 planeorder block      8
 planeorder comment    9
 planeorder cap1       10
 planeorder cap2       11
#else (!REDISTRIBUTION)
 planeorder block      7
 planeorder comment    8
 planeorder cap1       9
 planeorder cap2       10
#endif (!REDISTRIBUTION)
#endif (!METAL5)

 height	dnwell 	    -0.1    0.1
 height	nwell,pwell  0.0    0.2062
 height alldiff	     0.2062 0.12
 height allpoly	     0.3262 0.18
 height alldiffcont  0.3262 0.61
 height pc	     0.5062 0.43
 height allli	     0.9361 0.10
 height lic	     1.0361 0.34
 height allm1	     1.3761 0.36
 height v1	     1.7361 0.27
 height allm2	     2.0061 0.36
 height v2	     2.3661 0.42
 height allm3	     2.7861 0.845
#ifdef METAL5
 height v3	     3.6311 0.39
 height allm4	     4.0211 0.845
 height v4	     4.8661 0.505
 height allm5	     5.3711 1.26
 height mimcap	     2.4661 0.2
 height mimcap2	     3.7311 0.2
 height mimcc	     2.6661 0.12
 height mim2cc	     3.9311 0.09
#ifdef REDISTRIBUTION
 height mrdlc	     6.6311 5.2523
 height mrdl	    11.8834 4.0
#endif (!REDISTRIBUTION)
#endif (!METAL5)

 # Antenna check parameters
 # Note that checks w/diode diffusion are not modeled
 model partial
 antenna poly sidewall 50 none
 antenna allcont surface 3 none
 antenna li sidewall 75 0 450
 antenna lic surface 3 0 18
 antenna m1,m2,m3 sidewall 400 2600 400
 antenna v1 surface 3 0 18
 antenna v2 surface 6 0 36
#ifdef METAL5
 antenna m4,m5 sidewall 400 2600 400
 antenna v3,v4 surface 6 0 36
#endif (METAL5)

 tiedown alldiffnonfet

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

# Layer resistance: Use document xp018-PDS-v4_2_1.pdf

# Resistances are in milliohms per square
# Optional 3rd argument is the corner adjustment fraction
# Device values come from trtc.cor (typical corner)
 resist (dnwell)/dwell          2200000
 resist (pwell)/well            3050000
 resist (nwell)/well            1700000
 resist (rpw)/well              3050000 0.5
 resist (*ndiff,nsd)/active 	 120000
 resist (*pdiff,*psd)/active	 197000
 resist (*mvndiff,mvnsd)/active  114000
 resist (*mvpdiff,*mvpsd)/active 191000

 resist ndiffres/active 	120000 0.5
 resist pdiffres/active 	197000 0.5
 resist mvndiffres/active 	114000 0.5
 resist mvpdiffres/active 	191000 0.5
 resist mrp1/active		 48200 0.5
 resist xhrpoly/active	        319800 0.5
 resist uhrpoly/active	       2000000 0.5

 resist (allpolynonres)/active   48200
 resist rmp/active   		 48200

 resist (allli)/locali		 12200
 resist (allm1)/metal1		   125
 resist (allm2)/metal2		   125
 resist (allm3)/metal3	            47
#ifdef METAL5
 resist (allm4)/metal4  	    47
 resist (allm5)/metal5  	    29
#endif (METAL5)
#ifdef REDISTRIBUTION
 resist mrdl/metali		     5
#endif (REDISTRIBUTION)

 contact ndc,nsc		 15000
 contact pdc,psc		 15000
 contact mvndc,mvnsc		 15000
 contact mvpdc,mvpsc	  	 15000
 contact pc			 15000
 contact lic			152000
 contact m2c			  4500
 contact m3c			  3410
#ifdef METAL5
#ifdef MIM
 contact mimcc			  4500
 contact mim2cc			  3410
#endif (MIM)
 contact via3			  3410
 contact via4			   380
#endif (METAL5)
#ifdef REDISTRIBUTION
 contact mrdlc			     6
#endif (REDISTRIBUTION)

#-------------------------------------------------------------------------
# Parasitic capacitance values:  Use document (...)
#-------------------------------------------------------------------------
# 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.  All values are taken from the
# document PEX/xRC/cap_models.  Fringe capacitance values are approximated.
# Units are 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.
#-------------------------------------------------------------------------

#n-well
# NOTE:  This value not found in PEX files
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  106
# defaultperimeter   allpolynonfet active   57

 defaultsidewall    *poly active  23
 defaultareacap     *poly active nwell,obswell,pwell well  106
 defaultperimeter   *poly active nwell,obswell,pwell well  55

#locali
 defaultsidewall    allli locali       33
 defaultareacap     allli locali nwell,obswell,pwell well  37
 defaultperimeter   allli locali nwell,obswell,pwell well  55
 defaultoverlap     allli locali nwell well 37

#locali->diff
 defaultoverlap     allli locali allactivenonfet active 37
 defaultsideoverlap allli locali allactivenonfet active 55

#locali->poly
 defaultoverlap     allli locali allpolynonres active 94
 defaultsideoverlap allli locali allpolynonres active 52
 defaultsideoverlap *poly active allli locali 25

#metal1
 defaultsidewall    allm1 metal1      45
 defaultareacap     allm1 metal1 nwell,obswell,pwell well  26
 defaultperimeter   allm1 metal1 nwell,obswell,pwell well  41
 defaultoverlap     allm1 metal1 nwell well 26

#metal1->diff
 defaultoverlap     allm1 metal1 allactivenonfet active 26
 defaultsideoverlap allm1 metal1 allactivenonfet active 41

#metal1->poly
 defaultoverlap     allm1 metal1 allpolynonres active 45
 defaultsideoverlap allm1 metal1 allpolynonres active 47
 defaultsideoverlap *poly active allm1 metal1 17

#metal1->locali
 defaultoverlap     allm1 metal1 allli locali 114
 defaultsideoverlap allm1 metal1 allli locali 59
 defaultsideoverlap allli locali allm1 metal1 35

#metal2
 defaultsidewall    allm2 metal2      50
 defaultareacap     allm2 metal2 nwell,obswell,pwell well 17
 defaultperimeter   allm2 metal2 nwell,obswell,pwell well 41
 defaultoverlap     allm2 metal2 nwell well 38

#metal2->diff
 defaultoverlap     allm2 metal2 allactivenonfet active 17
 defaultsideoverlap allm2 metal2 allactivenonfet active 41

#metal2->poly
 defaultoverlap     allm2 metal2 allpolynonres active 24
 defaultsideoverlap allm2 metal2 allpolynonres active 41
 defaultsideoverlap *poly active allm2 metal2 11

#metal2->locali
 defaultoverlap     allm2 metal2 allli locali 38
 defaultsideoverlap allm2 metal2 allli locali 46
 defaultsideoverlap allli locali allm2 metal2 22

#metal2->metal1
 defaultoverlap     allm2 metal2 allm1 metal1 134
 defaultsideoverlap allm2 metal2 allm1 metal1 67
 defaultsideoverlap allm1 metal1 allm2 metal2 48

#metal3
 defaultsidewall    allm3 metal3     63
 defaultoverlap     allm3 metal3 nwell well 12
 defaultareacap     allm3 metal3 nwell,obswell,pwell well 12
 defaultperimeter   allm3 metal3 nwell,obswell,pwell well 41

#metal3->diff
 defaultoverlap     allm3 metal3 allactive active 12
 defaultsideoverlap allm3 metal3 allactive active 41

#metal3->poly
 defaultoverlap     allm3 metal3 allpolynonres active 16
 defaultsideoverlap allm3 metal3 allpolynonres active 44
 defaultsideoverlap *poly active allm3 metal3 9

#metal3->locali
 defaultoverlap     allm3 metal3 allli locali 21
 defaultsideoverlap allm3 metal3 allli locali 47
 defaultsideoverlap allli locali allm3 metal3 15

#metal3->metal1
 defaultoverlap     allm3 metal3 allm1 metal1 35
 defaultsideoverlap allm3 metal3 allm1 metal1 55
 defaultsideoverlap allm1 metal1 allm3 metal3 27

#metal3->metal2
 defaultoverlap     allm3 metal3 allm2 metal2 86
 defaultsideoverlap allm3 metal3 allm2 metal2 70
 defaultsideoverlap allm2 metal2 allm3 metal3 44

#ifdef METAL5
#metal4
 defaultsidewall    allm4 metal4       67
# defaultareacap     alltopm metal4 well  6
 areacap     	    allm4/m4 8
 defaultoverlap     allm4 metal4 nwell well 8
 defaultperimeter   allm4 metal4 well  37

#metal4->diff
 defaultoverlap     allm4 metal4 allactivenonfet active 8
 defaultsideoverlap allm4 metal4 allactivenonfet active 37

#metal4->poly
 defaultoverlap     allm4 metal4 allpolynonres active 10
 defaultsideoverlap allm4 metal4 allpolynonres active 38
 defaultsideoverlap *poly active allm4 metal4 6

#metal4->locali
 defaultoverlap     allm4 metal4 allli locali 12
 defaultsideoverlap allm4 metal4 allli locali 40
 defaultsideoverlap allli locali allm4 metal4 10

#metal4->metal1
 defaultoverlap     allm4 metal4 allm1 metal1 15
 defaultsideoverlap allm4 metal4 allm1 metal1 43
 defaultsideoverlap allm1 metal1 allm4 metal4 16

#metal4->metal2
 defaultoverlap     allm4 metal4 allm2 metal2 20
 defaultsideoverlap allm4 metal4 allm2 metal2 46
 defaultsideoverlap allm2 metal2 allm4 metal4 22

#metal4->metal3
 defaultoverlap     allm4 metal4 allm3 metal3 84
 defaultsideoverlap allm4 metal4 allm3 metal3 71
 defaultsideoverlap allm3 metal3 allm4 metal4 43

#metal5
 defaultsidewall    allm5 metal5       127
# defaultareacap     allm5 metal5 well  6
 areacap     	    allm5/m5 6
 defaultoverlap     allm5 metal5 nwell well 6
 defaultperimeter   allm5 metal5 well  39

#metal5->diff
 defaultoverlap     allm5 metal5 allactivenonfet active 6
 defaultsideoverlap allm5 metal5 allactivenonfet active 39

#metal5->poly
 defaultoverlap     allm5 metal5 allpolynonres active 7
 defaultsideoverlap allm5 metal5 allpolynonres active 40
 defaultsideoverlap *poly active allm5 metal5 6

#metal5->locali
 defaultoverlap     allm5 metal5 allli locali 8
 defaultsideoverlap allm5 metal5 allli locali 41
 defaultsideoverlap allli locali allm5 metal5 8

#metal5->metal1
 defaultoverlap     allm5 metal5 allm1 metal1 9
 defaultsideoverlap allm5 metal5 allm1 metal1 43
 defaultsideoverlap allm1 metal1 allm5 metal5 12

#metal5->metal2
 defaultoverlap     allm5 metal5 allm2 metal2 11
 defaultsideoverlap allm5 metal5 allm2 metal2 46
 defaultsideoverlap allm2 metal2 allm5 metal5 16

#metal5->metal3
 defaultoverlap     allm5 metal5 allm3 metal3 20
 defaultsideoverlap allm5 metal5 allm3 metal3 54
 defaultsideoverlap allm3 metal3 allm5 metal5 28

#metal5->metal4
 defaultoverlap     allm5 metal5 allm4 metal4 68
 defaultsideoverlap allm5 metal5 allm4 metal4 83
 defaultsideoverlap allm4 metal4 allm5 metal5 47
#endif (METAL5)

#ifdef REDISTRIBUTION
#endif (REDISTRIBUTION)

# Devices:  Use document (...)

variants (sim)

 device msubcircuit pshort pfet,scpfet *pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w
 device msubcircuit ppu ppu *pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w
 device msubcircuit plowvt pfetlvt *pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w
 device msubcircuit phighvt pfethvt *pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w

 device msubcircuit nshort nfet,scnfet,npd,npass *ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w
 device msubcircuit npd npd *ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w
 device msubcircuit npass npass *ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w
 device msubcircuit nlowvt nfetlvt *ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w
 device msubcircuit sonos_e nsonos *ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w
 device subcircuit xcnwvc varactor *nndiff nwell error l=l w=w
 device subcircuit xcnwvc2 varhvt *nndiff nwell error l=l w=w
 device subcircuit xchvnwc mvvaractor *mvnndiff nwell error l=l w=w

 device msubcircuit phv mvpfet *mvpdiff,mvpdiffres *mvpdiff,mvpdiffres nwell error l=l w=w
 device msubcircuit nhv mvnfet *mvndiff,mvndiffres *mvndiff,mvndiffres pwell,space/w error l=l w=w
 device msubcircuit nhvnative mvnnfet *mvndiff,mvndiffres *mvndiff,mvndiffres pwell,space/w error l=l w=w

 device rsubcircuit short rmp     *poly	 space/w,pwell,nwell error l=l w=w
 device rsubcircuit short rli1    *li,coreli space/w,pwell,nwell error l=l w=w
 device rsubcircuit short rmetal1 *metal1 space/w,pwell,nwell error l=l w=w
 device rsubcircuit short rmetal2 *metal2 space/w,pwell,nwell error l=l w=w
 device rsubcircuit short rmetal3 *metal3 space/w,pwell,nwell error l=l w=w
#ifdef METAL5
 device rsubcircuit short rm4 *m4 space/w,pwell,nwell error l=l w=w
 device rsubcircuit short rm5 *m5 space/w,pwell,nwell error l=l w=w
#endif (METAL5)

 device rsubcircuit xhrpoly  xhrpoly xpc pwell,space/w error l=l w=w
 device rsubcircuit uhrpoly  uhrpoly xpc pwell,space/w error l=l w=w
 device rsubcircuit mrp1     mrp1    *poly pwell,space/w error 	l=l w=w

 device rsubcircuit mrdn     ndiffres *ndiff pwell,space/w  error l=l w=w
 device rsubcircuit mrdp     pdiffres *pdiff nwell    error l=l w=w
 device rsubcircuit xpwres   rpw       pwell dnwell error l=l w=w

 device rsubcircuit mrdn_hv  mvndiffres *mvndiff pwell,space/w error l=l w=w
 device rsubcircuit mrdp_hv  mvpdiffres *mvpdiff nwell   error l=l w=w

 device subcircuit  pdiode *pdiode nwell a=a p=p
 device msubcircuit ndiode *ndiode pwell,space/w a=a p=p
 device subcircuit  pdiode_h *mvpdiode nwell a=a p=p
 device msubcircuit ndiode_h *mvndiode pwell,space/w a=a p=p

 # These are parasitic devices
 device msubcircuit ndiode_lvt *ndiodelvt pwell,space/w a=a p=p
 device subcircuit  pdiode_lvt *pdiodelvt nwell a=a p=p
 device subcircuit  pdiode_hvt *pdiodehvt nwell a=a p=p
 device msubcircuit ndiode_native *nndiode pwell,space/w a=a p=p

#ifdef MIM
 device subcircuit xcmimc1 *mimcap  m3 nwell,pwell,space/w error a=a p=p s=subs
 device subcircuit xcmimc2 *mimcap2 m4,mimcc/m4 nwell,pwell,space/w error a=a p=p s=subs
#endif (MIM)

 variants (lvs),(si)

 device mosfet pshort scpfet,pfet pdiff,pdiffres,pdc nwell 
 device mosfet ppu ppu pdiff,pdiffres,pdc nwell 
 device mosfet plowvt pfetlvt pdiff,pdiffres,pdc nwell 
 device mosfet phighvt pfethvt pdiff,pdiffres,pdc nwell 
 device mosfet nshort scnfet,npd,npass,nfet ndiff,ndiffres,ndc pwell,space/w
 device mosfet npd npd ndiff,ndiffres,ndc pwell,space/w
 device mosfet npass npass ndiff,ndiffres,ndc pwell,space/w
 device mosfet nlowvt nfetlvt ndiff,ndiffres,ndc pwell,space/w
 device mosfet sonos_e nsonos ndiff,ndiffres,ndc pwell,space/w
 device mosfet phv mvpfet mvpdiff,mvpdiffres,mvpdc nwell 
 device mosfet nhv mvnfet mvndiff,mvndiffres,mvndc pwell,space/w
 device mosfet nhvnative mvnnfet *mvndiff,mvndiffres pwell,space/w

 # These devices always extract as subcircuits
 device subcircuit xcnwvc varactor *nndiff nwell error l=l w=w
 device subcircuit xcnwvc2 varhvt *nndiff nwell error l=l w=w
 device subcircuit xchvnwc mvvaractor *mvnndiff nwell error l=l w=w

 device resistor short rmp     *poly
 device resistor short rli1    *li,coreli
 device resistor short rmetal1 *metal1
 device resistor short rmetal2 *metal2
 device resistor short rmetal3 *metal3
#ifdef METAL5
 device resistor short rm4 *m4
 device resistor short rm5 *m5
#endif (METAL5)

 device resistor xhrpoly xhrpoly xpc 
 device resistor uhrpoly uhrpoly xpc 
 device resistor mrp1 mrp1       *poly 
 device resistor mrdn  ndiffres *ndiff 
 device resistor mrdp  pdiffres *pdiff 
 device resistor mrdn_hv   mvndiffres *mvndiff 
 device resistor mrdp_hv   mvpdiffres *mvpdiff 
 device resistor xpwres   rpw    pwell

 device pdiode pdiode *pdiode nwell a=a p=p
 device ndiode ndiode *ndiode pwell,space/w a=a p=p
 device pdiode pdiode_h *mvpdiode nwell a=a p=p
 device ndiode ndiode_h *mvndiode pwell,space/w a=a p=p

 # These are parasitic devices
 device ndiode ndiode_lvt *ndiodelvt pwell,space/w a=a p=p
 device pdiode pdiode_lvt *pdiodelvt nwell a=a p=p
 device pdiode pdiode_hvt *pdiodehvt nwell a=a p=p
 device ndiode ndiode_native *nndiode pwell,space/w a=a p=p

 device subcircuit  pdiode_h *mvpdiode nwell a=a p=p
 device msubcircuit ndiode_h *mvndiode pwell,space/w a=a p=p


#ifdef MIM
 device capacitor xcmimc1 *mimcap  *m3 1
 device capacitor xcmimc2 *mimcap2 *m4 1
#endif (MIM)

end

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

wiring
 # All wiring values are in nanometers
 scalefactor 10

 contact lic 170 li 0  0 m1 30 60
 contact v1  260 m1 0 30 m2  0 30  
 contact v2  280 m2 0 45 m3 25  0
#ifdef METAL5
 contact v3  320 m3 0 30 m4  5  5
 contact v4 1180 m4 0    m5 120 
#endif (METAL5)

 contact pc  170  poly 50 80 li 0 80
 contact pdc 170 pdiff 40 60 li 0 80
 contact ndc 170 ndiff 40 60 li 0 80
 contact psc 170   psd 40 60 li 0 80
 contact nsc 170   nsd 40 60 li 0 80

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
end

