| #------------------------------------------------------------------------ | 
 | # Copyright (c) 2020 R. Timothy Edwards | 
 | # Revisions:  See below | 
 | # | 
 | # This file is an Open Source foundry process describing | 
 | # the SkyWater sky130 hybrid 0.18um / 0.13um fabrication | 
 | # process.  The file may be distributed under the terms | 
 | # of the Apache 2.0 license agreement. | 
 | # | 
 | #------------------------------------------------------------------------ | 
 | # This file is designed to be used with magic versions | 
 | # 8.3.24 or newer. | 
 | #------------------------------------------------------------------------ | 
 | tech | 
 |   format 35 | 
 |   sky130A | 
 | end | 
 |  | 
 | version | 
 |  version 1.0.85-0-g32cdb20 | 
 |  description "SkyWater SKY130: PRE ALPHA Vendor Open Source rules and DRC" | 
 | end | 
 |  | 
 | #------------------------------------------------------------------------ | 
 | # Status 7/10/20: Rev 1 (alpha): | 
 | # First public release | 
 | # Status 8/14/20: Rev 2 (alpha): | 
 | # Started updating with new device/model naming convention | 
 | #------------------------------------------------------------------------ | 
 |  | 
 | #------------------------------------------------------------------------ | 
 | # Supported device types | 
 | #------------------------------------------------------------------------ | 
 | # device name			magic ID layer	description | 
 | #------------------------------------------------------------------------ | 
 | # sky130_fd_pr__nfet_01v8	nfet		standard nFET | 
 | # sky130_fd_pr__nfet_01v8	scnfet		standard nFET in standard cell** | 
 | # sky130_fd_pr__special_nfet_latch npd		special nFET in SRAM cell | 
 | # sky130_fd_pr__special_nfet_pass  npass	special nFET in SRAM cell | 
 | # sky130_fd_pr__nfet_01v8_lvt	nfetlvt		low Vt nFET | 
 | # sky130_fd_bs_flash__special_sonosfet_star nsonos SONOS nFET | 
 | # sky130_fd_pr__pfet_01v8	pfet		standard pFET | 
 | # sky130_fd_pr__pfet_01v8	scpfet		standard pFET in standard cell** | 
 | # sky130_fd_pr__special_pfet_pass ppu		special pFET in SRAM cell | 
 | # sky130_fd_pr__pfet_01v8_lvt	pfetlvt		low Vt pFET | 
 | # sky130_fd_pr__pfet_01v8_mvt	pfetmvt		med Vt pFET | 
 | # sky130_fd_pr__pfet_01v8_hvt	pfethvt		high Vt pFET | 
 | # sky130_fd_pr__nfet_03v3_nvt	---		native nFET | 
 | # sky130_fd_pr__pfet_g5v0d10v5	mvpfet		thickox pFET | 
 | # sky130_fd_pr__nfet_g5v0d10v5	mvnfet		thickox nFET | 
 | # sky130_fd_pr__nfet_01v8_nvt	mvnnfet		thickox native nFET | 
 | # sky130_fd_pr__diode_pw2nd_05v5 ndiode		n+ diff diode | 
 | # sky130_fd_pr__diode_pw2nd_05v5_lvt ndiodelvt	low Vt n+ diff diode | 
 | # sky130_fd_pr__diode_pw2nd_05v5_nvt nndiode	diode with nndiff | 
 | # sky130_fd_pr__diode_pw2nd_11v0 mvndiode	thickox n+ diff diode | 
 | # sky130_fd_pr__diode_pd2nw_05v5 pdiode		p+ diff diode | 
 | # sky130_fd_pr__diode_pd2nw_05v5_lvt pdiodelvt	low Vt p+ diff diode | 
 | # sky130_fd_pr__diode_pd2nw_05v5_hvt pdiodehvt	high Vt p+ diff diode | 
 | # sky130_fd_pr__diode_pd2nw_11v0 mvpdiode	thickox p+ diff diode | 
 | # sky130_fd_pr__npn_05v0	pbase		NPN in deep nwell | 
 | # sky130_fd_pr__npn_11v0	pbase		thick oxide gated NPN | 
 | # sky130_fd_pr__pnp_05v0	nbase		PNP | 
 | # sky130_fd_pr__cap_mim_m3_1	mimcap		MiM cap 1st plate | 
 | # sky130_fd_pr__cap_mim_m3_2	mimcap2		MiM cap 2nd plate | 
 | # sky130_fd_pr__res_generic_nd	rdn		n+ diff resistor | 
 | # sky130_fd_pr__res_generic_nd__hv mvrdn	thickox n+ diff resistor | 
 | # sky130_fd_pr__res_generic_pd	rdp		p+ diff resistor | 
 | # sky130_fd_pr__res_generic_pd__nv mvrdp	thickox p+ diff resistor | 
 | # sky130_fd_pr__res_generic_l1	rli		local interconnect resistor | 
 | # sky130_fd_pr__res_generic_po	npres		n+ poly resistor | 
 | # sky130_fd_pr__res_high_po_*	ppres (*)	p+ poly resistor (300 Ohms/sq) | 
 | # sky130_fd_pr__res_xhigh_po_*	xres (*)	p+ poly resistor (2k Ohms/sq) | 
 | # sky130_fd_pr__cap_var_lvt	varactor	low Vt varactor | 
 | # sky130_fd_pr__cap_var_hvt	varactorhvt	high Vt varactor | 
 | # sky130_fd_pr__cap_var		mvvaractor	thickox varactor | 
 | # sky130_fd_pr__res_iso_pw	rpw		pwell resistor (in deep nwell) | 
 | # | 
 | # (*) Note that ppres may extract into some generic type called | 
 | # "sky130_fd_pr__res_xhigh_po", 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) | 
 | # | 
 | #------------------------------------------------------------- | 
 | # The following devices are not extracted but are represented | 
 | # only by script-generated subcells in the PDK. | 
 | #------------------------------------------------------------- | 
 | # sky130_fd_pr__esd_nfet_01v8		ESD nFET | 
 | # sky130_fd_pr__esd_nfet_g5v0d10v5	ESD thickox nFET | 
 | # sky130_fd_pr__esd_nfet_05v0_nvt	ESD native nFET | 
 | # sky130_fd_pr__esd_pfet_g5v0d10v5	ESD thickox pFET | 
 | # sky130_fd_pr__special_nfet_pass_flash	flash nFET device | 
 | # sky130_fd_pr__esd_rf_diode_pw2nd_11v0	ESD n+ diode | 
 | # sky130_fd_pr__esd_rf_diode_pd2nw_11v0	ESD p+ diode | 
 | # sky130_fd_pr__cap_vpp_*		Vpp cap | 
 | # sky130_fd_pr__ind_*			inductor | 
 | # sky130_fd_pr__fuse_m4			metal fuse device | 
 | #-------------------------------------------------------------- | 
 |  | 
 | #----------------------------------------------------- | 
 | # Tile planes | 
 | #----------------------------------------------------- | 
 |  | 
 | planes | 
 |   dwell,dw | 
 |   well,w | 
 |   active,a | 
 |   locali,li1,li | 
 |   metal1,m1 | 
 |   metal2,m2 | 
 |   metal3,m3 | 
 |   cap1,c1 | 
 |   metal4,m4 | 
 |   cap2,c2 | 
 |   metal5,m5 | 
 |   metali,mi | 
 |   block,b | 
 |   comment,c | 
 | end | 
 |  | 
 | #----------------------------------------------------- | 
 | # Tile types | 
 | #----------------------------------------------------- | 
 |  | 
 | types | 
 | # Deep nwell | 
 |   dwell dnwell,dnw | 
 |  | 
 | # Wells | 
 |   well nwell,nw | 
 |   well pwell,pw | 
 |   well rpw,rpwell | 
 |  -well obswell | 
 |   well pbase,npn | 
 |   well nbase,pnp | 
 |  | 
 | # 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 scpmoshvt,scpfethvt | 
 |  -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 pmosmvt,pfetmvt | 
 |   active pmoshvt,pfethvt | 
 |   active nmoslvt,nfetlvt | 
 |   active varactorhvt,varacthvt,varhvt | 
 |  -active nsonos,sonos | 
 |   active sramnvar,corenvar,corenvaractor | 
 |   active srampvar,corepvar,corepvaractor | 
 |  | 
 | # 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,mcon,lic,licon,m1c,v0 | 
 |  -locali obsli1,obsli | 
 |  -locali obsli1c,obslic,obslicon | 
 |  | 
 | # Metal 1 | 
 |   metal1 metal1,m1,met1 | 
 |   metal1 rmetal1,rm1,rmet1 | 
 |   metal1 via1,m2contact,m2cut,m2c,via,v,v1 | 
 |  -metal1 obsm1 | 
 |   metal1 padl | 
 |  -metal1 m1fill | 
 |  | 
 | # Metal 2 | 
 |   metal2 metal2,m2,met2 | 
 |   metal2 rmetal2,rm2,rmet2 | 
 |   metal2 via2,m3contact,m3cut,m3c,v2 | 
 |  -metal2 obsm2 | 
 |  -metal2 m2fill | 
 |  | 
 | # Metal 3 | 
 |   metal3 metal3,m3,met3 | 
 |   metal3 rmetal3,rm3,rmet3 | 
 |  -metal3 obsm3 | 
 |   metal3 via3,v3 | 
 |  -metal3 m3fill | 
 |  | 
 |   cap1 mimcap,mim,capm | 
 |   cap1 mimcapcontact,mimcapc,mimcc,capmc | 
 |  | 
 | # Metal 4 | 
 |   metal4 metal4,m4,met4 | 
 |   metal4 rmetal4,rm4,rmet4 | 
 |  -metal4 obsm4 | 
 |   metal4 via4,v4 | 
 |  -metal4 m4fill | 
 |  | 
 |   cap2 mimcap2,mim2,capm2 | 
 |   cap2 mimcap2contact,mimcap2c,mim2cc,capm2c | 
 |  | 
 | # Metal 5 | 
 |   metal5 metal5,m5,met5 | 
 |   metal5 rm5,rmetal5,rmet5 | 
 |  -metal5 obsm5 | 
 |  -metal5 m5fill | 
 |  | 
 |   metal5 mrdlcontact,mrdlc | 
 |   metali metalrdl,mrdl,metrdl | 
 |  -metali obsmrdl | 
 |  | 
 | # Miscellaneous | 
 |  -block  glass | 
 |  -block  fillblock | 
 |   comment comment | 
 |  -comment obscomment | 
 | # fixed resistor width identifiers | 
 |  -comment res0p35 | 
 |  -comment res0p69 | 
 |  -comment res1p41 | 
 |  -comment res2p85 | 
 |  -comment res5p73 | 
 |  | 
 | 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 metal1 | 
 |  | 
 |   via1   metal1 metal2 | 
 |   via2   metal2 metal3 | 
 |   via3   metal3 metal4 | 
 |   via4   metal4 metal5 | 
 |   stackable | 
 |  | 
 |   # MiM cap contacts are not stackable! | 
 |   mimcc  mimcap metal4 | 
 |   mim2cc mimcap2 metal5 | 
 |  | 
 |   padl m1 m2 m3 m4 m5 glass | 
 |  | 
 |   mrdlc metal5 mrdl | 
 | end | 
 |  | 
 | #----------------------------------------------------- | 
 | # Layer aliases | 
 | #----------------------------------------------------- | 
 |  | 
 | aliases | 
 |  | 
 |   allwellplane     nwell | 
 |   allnwell	   nwell,obswell,pnp | 
 |  | 
 |   allnfets	   nfet,npass,npd,scnfet,mvnfet,mvnnfet,nfetlvt,nsonos | 
 |   allpfets	   pfet,ppu,scpfet,scpfethvt,mvpfet,pfethvt,pfetlvt,pfetmvt | 
 |   allfets	   allnfets,allpfets,varactor,mvvaractor,varhvt,corenvar,corepvar | 
 |   allfetsstd	   nfet,mvnfet,mvnnfet,nfetlvt,pfet,mvpfet,pfethvt,pfetlvt,pfetmvt | 
 |   allfetsspecial   scnfet,scpfet,scpfethvt | 
 |   allfetscore	   npass,npd,nsonos,ppu,corenvar,corepvar | 
 |   allfetsnolvt	   nfet,npass,npd,scnfet,mvnfet,mvnnfet,nsonos,pfet,ppu,scpfet,scpfethvt,mvpfet,pfethvt,pfetmvt,varactor,mvvaractor,varhvt,corenvar | 
 |  | 
 |   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,corenvar | 
 |  | 
 |   allpactivenonfet *pdiff,*psd,*pdiode,*mvpdiff,*mvpsd,*mvpdiode,*pdiodelvt,*pdiodehvt | 
 |   allpactive	   allpactivenonfet,allpfets | 
 |   allpactivenontap *pdiff,*pdiode,*mvpdiff,*mvpdiode,*pdiodelvt,*pdiodehvt,allpfets | 
 |   allpactivetap    *psd,*mvpsd,corepvar | 
 |  | 
 |   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,scpfethvt,pfetlvt,pfetmvt,pfethvt | 
 |   alldifflv        allndifflv,allpdifflv | 
 |   allndifflvnonfet *ndif,*nsd,*ndiode,*nndiode,ndiffres,*ndiodelvt | 
 |   allpdifflvnonfet *pdif,*psd,*pdiode,pdiffres,*pdiodelvt,*pdiodehvt | 
 |   alldifflvnonfet  allndifflvnonfet,allpdifflvnonfet | 
 |  | 
 |   allndiffmv       *mvndif,*mvnsd,*mvndiode,*nndiode,mvndiffres,mvnfet,mvnnfet | 
 |   allpdiffmv       *mvpdif,*mvpsd,*mvpdiode,mvpdiffres,mvpfet | 
 |   alldiffmv        allndiffmv,allpdiffmv | 
 |   allndiffmvnontap *mvndif,*mvndiode,*nndiode,mvndiffres,mvnfet,mvnnfet | 
 |   allpdiffmvnontap *mvpdif,*mvpdiode,mvpdiffres,mvpfet | 
 |   alldiffmvnontap  allndiffmvnontap,allpdiffmvnontap | 
 |   allndiffmvnonfet *mvndif,*mvnsd,*mvndiode,*nndiode,mvndiffres | 
 |   allpdiffmvnonfet *mvpdif,*mvpsd,*mvpdiode,mvpdiffres | 
 |   alldiffmvnonfet  allndiffmvnonfet,allpdiffmvnonfet | 
 |  | 
 |   alldiffnonfet	   alldifflvnonfet,alldiffmvnonfet | 
 |   alldiff	   alldifflv,alldiffmv | 
 |  | 
 |   allpolyres	   mrp1,xhrpoly,uhrpoly,rmp | 
 |   allpolynonfet	   *poly,allpolyres,xpc | 
 |   allpolynonres	   *poly,allfets,xpc | 
 |  | 
 |   allpoly	   allpolynonfet,allfets | 
 |   allpolynoncap	   *poly,xpc,allfets,allpolyres | 
 |  | 
 |   allndiffcontlv   ndc,nsc,ndic,nndic,ndilvtc | 
 |   allpdiffcontlv   pdc,psc,pdic,pdilvtc,pdihvtc | 
 |   allndiffcontmv   mvndc,mvnsc,mvndic | 
 |   allpdiffcontmv   mvpdc,mvpsc,mvpdic | 
 |   allndiffcont	   allndiffcontlv,allndiffcontmv | 
 |   allpdiffcont	   allpdiffcontlv,allpdiffcontmv | 
 |   alldiffcontlv	   allndiffcontlv,allpdiffcontlv | 
 |   alldiffcontmv	   allndiffcontmv,allpdiffcontmv | 
 |   alldiffcont	   alldiffcontlv,alldiffcontmv | 
 |  | 
 |   allcont	alldiffcont,pc | 
 |  | 
 |   allres	allpolyres,allactiveres | 
 |  | 
 |   allli		*locali,coreli,rli | 
 |   allm1		*m1,rm1 | 
 |   allm2		*m2,rm2 | 
 |   allm3		*m3,rm3 | 
 |   allm4	   	*m4,rm4 | 
 |   allm5	   	*m5,rm5 | 
 |  | 
 |   allpad	padl | 
 |  | 
 |   psub		pwell | 
 |    | 
 | end | 
 |  | 
 | #----------------------------------------------------- | 
 | # Layer drawing styles | 
 | #----------------------------------------------------- | 
 |  | 
 | styles | 
 |  styletype mos | 
 |   dnwell    cwell | 
 |   nwell     nwell | 
 |   pwell	    pwell | 
 |   rpwell    pwell 	ptransistor_stripes | 
 |   ndiff     ndiffusion | 
 |   pdiff     pdiffusion | 
 |   nsd       ndiff_in_nwell | 
 |   psd       pdiff_in_pwell | 
 |   nfet      ntransistor    ntransistor_stripes | 
 |   scnfet    ntransistor    ntransistor_stripes | 
 |   npass	    ntransistor	   ntransistor_stripes | 
 |   npd	    ntransistor	   ntransistor_stripes | 
 |   pfet      ptransistor    ptransistor_stripes | 
 |   scpfet    ptransistor    ptransistor_stripes | 
 |   scpfethvt ptransistor    ptransistor_stripes implant2 | 
 |   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 | 
 |   corenvar  polysilicon    ndiff_in_nwell | 
 |   corepvar  polysilicon    pdiff_in_pwell | 
 |  | 
 |   pnp	    nwell ntransistor_stripes | 
 |   npn	    pwell ptransistor_stripes | 
 |  | 
 |   pfetlvt   ptransistor	ptransistor_stripes implant1 | 
 |   pfetmvt   ptransistor	ptransistor_stripes implant3 | 
 |   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 | 
 |  | 
 |   res0p35   implant1 | 
 |   res0p69   implant1 | 
 |   res1p41   implant1 | 
 |   res2p85   implant1 | 
 |   res5p73   implant1 | 
 |  | 
 |   pdiode    pdiffusion     pselect2 | 
 |   ndiode    ndiffusion     nselect2 | 
 |   pdiodec   pdiffusion     pselect2 metal1 contact_X'es | 
 |   ndiodec   ndiffusion     nselect2 metal1 contact_X'es | 
 |  | 
 |   nndiode   ndiffusion  nselect2 implant3 | 
 |   ndiodelvt ndiffusion	nselect2 implant1 | 
 |   pdiodelvt pdiffusion  pselect2 implant1 | 
 |   pdiodehvt pdiffusion  pselect2 implant2 | 
 |   pdilvtc   pdiffusion  pselect2 implant1 metal1 contact_X'es | 
 |   pdihvtc   pdiffusion  pselect2 implant2 metal1 contact_X'es | 
 |   ndilvtc   ndiffusion  nselect2 implant1 metal1 contact_X'es | 
 |  | 
 |   mvpdiode    pdiffusion     pselect2 hvpdiff_mask | 
 |   mvndiode    ndiffusion     nselect2 hvndiff_mask | 
 |   mvpdiodec   pdiffusion     pselect2 metal1 contact_X'es hvpdiff_mask | 
 |   mvndiodec   ndiffusion     nselect2 metal1 contact_X'es hvndiff_mask | 
 |   nndiodec    ndiff_in_nwell nselect2 metal1 contact_X'es hvndiff_mask | 
 |  | 
 |   locali    metal1 | 
 |   coreli    metal1 | 
 |   rli       metal1         poly_resist_stripes | 
 |   lic	    metal1	   metal2 via1arrow | 
 |   obsli     metal1 | 
 |   obslic    metal1	   metal2 via1arrow | 
 |  | 
 |   metal1    metal2 | 
 |   m1fill    metal2 | 
 |   rm1       metal2         poly_resist_stripes | 
 |   obsm1     metal2 | 
 |   m2c       metal2         metal3  via2arrow | 
 |   metal2    metal3 | 
 |   m2fill    metal3 | 
 |   rm2       metal3         poly_resist_stripes | 
 |   obsm2     metal3 | 
 |   m3c       metal3         metal4  via3alt | 
 |   metal3    metal4 | 
 |   m3fill    metal4 | 
 |   rm3       metal4         poly_resist_stripes | 
 |   obsm3     metal4 | 
 |   mimcap    metal3         mems | 
 |   mimcc     metal3         contact_X'es mems | 
 |   mimcap2   metal4         mems | 
 |   mim2cc    metal4         contact_X'es mems | 
 |   via3      metal4         metal5  via4 | 
 |   metal4    metal5 | 
 |   m4fill    metal5 | 
 |   rm4       metal5         poly_resist_stripes | 
 |   obsm4     metal5 | 
 |   via4      metal5         metal6  via5 | 
 |   metal5    metal6 | 
 |   m5fill    metal6 | 
 |   rm5       metal6         poly_resist_stripes | 
 |   obsm5     metal6 | 
 |   mrdlc	    metal6  metal7  via6 | 
 |   metalrdl  metal7 | 
 |   obsmrdl   metal7 | 
 |  | 
 |   glass	    overglass | 
 |   mrp1      poly_resist    poly_resist_stripes | 
 |   xhrpoly   poly_resist    silicide_block | 
 |   uhrpoly   poly_resist | 
 |   ndiffres  ndiffusion	   ndop_stripes | 
 |   pdiffres  pdiffusion	   pdop_stripes | 
 |   mvndiffres  ndiffusion hvndiff_mask   ndop_stripes | 
 |   mvpdiffres  pdiffusion hvpdiff_mask   pdop_stripes | 
 |   comment   comment | 
 |   error_p   error_waffle | 
 |   error_s   error_waffle | 
 |   error_ps  error_waffle | 
 |   fillblock cwell | 
 |  | 
 |   obswell   cwell | 
 |   obsactive implant4 | 
 |  | 
 |   padl      metal6 via6 overglass | 
 |  | 
 |   magnet    substrate_field_implant | 
 |   rotate    via3alt | 
 |   fence     via5 | 
 | end | 
 |  | 
 | #----------------------------------------------------- | 
 | # Special paint/erase rules | 
 | #----------------------------------------------------- | 
 |  | 
 | compose | 
 |   compose  nfet  poly  ndiff | 
 |   compose  pfet  poly  pdiff | 
 |   compose  var   poly  nsd | 
 |  | 
 |   compose  mvnfet  poly  mvndiff | 
 |   compose  mvpfet  poly  mvpdiff | 
 |   compose  mvvar   poly  mvnsd | 
 |  | 
 |   paint	 obslic	 locali	 via1 | 
 |   paint	 obslic	 obsm1	 obsli,obsm1 | 
 |    | 
 |   paint  ndc     nwell  pdc | 
 |   paint  nfet    nwell  pfet | 
 |   paint  scnfet  nwell  scpfet | 
 |   paint  ndiff   nwell  pdiff | 
 |   paint  psd     nwell  nsd | 
 |   paint  psc     nwell  nsc | 
 |   paint  npd     nwell  ppu | 
 |  | 
 |   paint  pdc     pwell  ndc | 
 |   paint  pfet    pwell  nfet | 
 |   paint  scpfet  pwell  scnfet | 
 |   paint  pdiff   pwell  ndiff | 
 |   paint  nsd     pwell  psd | 
 |   paint  nsc     pwell  psc | 
 |   paint  ppu     pwell  npd | 
 |  | 
 |   paint  pdc	 coreli pdc | 
 |   paint  ndc	 coreli ndc | 
 |   paint  pc	 coreli pc | 
 |   paint  nsc 	 coreli nsc | 
 |   paint  psc 	 coreli psc | 
 |   paint  viali 	 coreli viali | 
 |  | 
 |   paint  coreli  pdc    pdc | 
 |   paint  coreli  ndc    ndc | 
 |   paint  coreli  pc     pc | 
 |   paint  coreli  nsc    nsc | 
 |   paint  coreli  psc    psc | 
 |   paint  coreli  viali  viali | 
 |  | 
 |   paint  m4      obsm4  m4 | 
 |   paint  m5      obsm5  m5 | 
 | end | 
 |  | 
 | #----------------------------------------------------- | 
 | # Electrical connectivity | 
 | #----------------------------------------------------- | 
 |  | 
 | connect | 
 |   *nwell,*nsd,*mvnsd,dnwell,pnp *nwell,*nsd,*mvnsd,dnwell,pnp | 
 |   pwell,*psd,*mvpsd,npn  pwell,*psd,*mvpsd,npn | 
 |   *li,coreli	*li,coreli | 
 |   *m1,m1fill,obslic	*m1,m1fill,obslic | 
 |   *m2,m2fill	*m2,m2fill | 
 |   *m3,m3fill	*m3,m3fill | 
 |   *m4,m4fill	*m4,m4fill | 
 |   *m5,m5fill	*m5,m5fill | 
 |   *mimcap     *mimcap | 
 |   *mimcap2    *mimcap2 | 
 |    allnactivenonfet	allnactivenonfet | 
 |    allpactivenonfet	allpactivenonfet | 
 |   *poly,xpc,allfets	*poly,xpc,allfets | 
 |   # RDL connects to m5 (i.e., padl) through glass cut | 
 |   *mrdl			*mrdl | 
 |   glass			metrdl | 
 | end | 
 |  | 
 | #----------------------------------------------------- | 
 | # CIF/GDS output layer definitions | 
 | #----------------------------------------------------- | 
 | # NOTE:  All values in this section MUST be multiples of 25  | 
 | # or else magic will scale below the allowed layout grid size | 
 |  | 
 | cifoutput | 
 |  | 
 | #---------------------------------------------------------------- | 
 | style gdsii | 
 | # NOTE: This section is used for actual GDS output | 
 | #---------------------------------------------------------------- | 
 |  scalefactor 10  nanometers | 
 |  options calma-permissive-labels | 
 |  gridlimit 5 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # Create a temp layer from the cell bounding box for use in | 
 | # generating ID layers.  Note that "boundary", unlike "bbox", | 
 | # requires the FIXED_BBOX property (abutment box) in the cell. | 
 | #---------------------------------------------------------------- | 
 |  templayer CELLBOUND | 
 | 	boundary | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # BOUND | 
 | #---------------------------------------------------------------- | 
 |  layer 	BOUND CELLBOUND | 
 | 	calma 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,pnp | 
 | 	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 | 
 |  | 
 |  templayer baseNPLUS ndiffres,mvndiffres | 
 |  	grow	125 | 
 | 	bloat-or allnactivetap * 125 allpactivenontap 0 | 
 | 	bloat-or allnactivenontap * 125 allpactivetap 0 | 
 |  | 
 |  templayer extendPPLUS  basePPLUS,CELLRING | 
 | 	bridge	380 380 | 
 | 	and-not baseNPLUS | 
 | 	and-not	CELLRING | 
 |  | 
 |  layer PPLUS basePPLUS,extendPPLUS  | 
 | 	grow	185 | 
 | 	shrink	185 | 
 | 	close   265000 | 
 | 	calma	94 20 | 
 |  | 
 |  templayer extendNPLUS  baseNPLUS,CELLRING | 
 | 	bridge	380 380 | 
 | 	and-not basePPLUS | 
 | 	and-not	CELLRING | 
 |  | 
 |  layer NPLUS baseNPLUS,extendNPLUS | 
 | 	grow	185 | 
 | 	shrink	185 | 
 |  	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 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # HVTR | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer HVTR  pfetmvt | 
 |         grow 180 | 
 | 	bridge	380 380 | 
 | 	grow	185 | 
 | 	shrink	185 | 
 | 	close  265000 | 
 | 	calma 18 20 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # HVTP | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer HVTP scpfethvt,ppu,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,corepvar,corenvar CELLBOUND | 
 | 	calma 81 2 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # STDCELL applies to all cells containing scnfet or scpfet. | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer STDCELL scnfet | 
 | 	bloat-all scpfet,scpfethvt,scnfet CELLBOUND | 
 | 	calma 81 4 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # NPNID and PNPID apply to bipolar transistors | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer NPNID | 
 | 	bloat-all npn dnwell | 
 | 	calma	82 20 | 
 |  | 
 |  templayer pnparea pnp | 
 | 	grow 400 | 
 |  | 
 |  layer PNPID | 
 | 	bloat-all pnparea *psd | 
 | 	or pnparea | 
 | 	calma	82 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # 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 | 
 | 	and-not hvntm_block | 
 | 	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 thkox_area 	alldiffmv,mvvar | 
 | 	grow	185 | 
 | 	bloat-all alldiffmv nwell | 
 | 	grow 345 | 
 | 	shrink 345 | 
 |  | 
 |  templayer large_ptap_mv thkox_area | 
 | 	shrink	420 | 
 | 	grow	420 | 
 |  | 
 |  templayer small_ptap_mv thkox_area | 
 | 	and-not large_ptap_mv | 
 | 	# (HVI min width rule is 0.6 but CNTM min width rule is 0.84um) | 
 | 	grow-min 840 | 
 |  | 
 |  templayer baseTHKOX 	thkox_area,small_ptap_mv | 
 | 	bridge	700 600 | 
 |  	grow 	345 | 
 |  	shrink 	345 | 
 |  | 
 |  templayer extendTHKOX	baseTHKOX,CELLRING | 
 |  	grow 	345 | 
 |  	shrink 	345 | 
 | 	and-not	CELLRING | 
 |  | 
 |  layer THKOX	baseTHKOX,extendTHKOX | 
 |  	calma 	75 20 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # CONT (LICON) | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer CONT allcont | 
 |  	squares-grid 0 170 170 | 
 |  	calma	66 44 | 
 |  | 
 |  # Contact for pres is different than other LICON contacts | 
 |  # See rules LICON 1b, 1c (width/length) and 2b (spacing) | 
 |  templayer xpc_horiz xpc | 
 | 	shrink 1007 | 
 | 	grow 1007 | 
 |  | 
 |  layer CONT xpc | 
 | 	and-not xpc_horiz | 
 | 	# Force long edge vertical for contacts narrower than 2um | 
 | 	# Minimum space is 350 but 520 satisfies no. of contacts rule | 
 |  	slots 80 190 520 80 2000 350 | 
 |  	calma	66 44 | 
 |  | 
 |  layer CONT xpc | 
 | 	and xpc_horiz | 
 | 	# Force long edge vertical for contacts wider than 2um | 
 | 	# Minimum space is 350 but 520 satisfies no. of contacts rule | 
 |  	slots 80 2000 350 80 190 520 | 
 |  	calma	66 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # NPC (Nitride poly cut) | 
 | # surrounds CONT (LICON) on poly only (i.e., pc) | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer NPC pc | 
 |  	squares-grid 0 170 170 | 
 | 	grow 100 | 
 | 	bridge 270 270 | 
 | 	grow 130 | 
 | 	shrink 130 | 
 | 	calma  95 20 | 
 |  | 
 |  # NPC is also generated on xhrpoly and uhrpoly resistors | 
 |  | 
 |  layer NPC xpc,xhrpoly,uhrpoly | 
 |         # xpc surrounds precision_resistor by 0.095um | 
 | 	grow 95 | 
 | 	grow 130 | 
 | 	shrink 130 | 
 | 	calma  95 20 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # Device markers | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer DIFFRES rdn,mvrdn,rdp,mvrdp | 
 | 	calma 65 13 | 
 |  | 
 |  layer POLYRES mrp1 | 
 | 	calma 66 13 | 
 |  | 
 |  # POLYSHORT is a poly layer resistor like rli, rm1, etc., for metal layers | 
 |  layer POLYSHORT rmp | 
 | 	calma 66 15 | 
 |  | 
 |  # POLYRES extends to edge of contact cut | 
 |  layer POLYRES xhrpoly,uhrpoly | 
 | 	grow 60 | 
 | 	and xpc | 
 | 	or xhrpoly,uhrpoly | 
 | 	calma 66 13 | 
 |  | 
 |  layer DIODE *pdi,*ndi,*nndi,*mvpdi,*mvndi,*pdilvt,*pdihvt,*ndilvt | 
 |         # To be done:  Expand to include anode, cathode, and guard ring | 
 | 	calma 81 23 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # LI | 
 | #---------------------------------------------------------------- | 
 |  layer LI allli | 
 | 	calma 67 20 | 
 |  | 
 |  layer LITXT | 
 |  	labels *locali,coreli noport | 
 | 	calma 67 16 | 
 |  | 
 |  layer LIPIN | 
 |  	labels *locali,coreli port | 
 | 	calma 67 5 | 
 |  | 
 |  layer LIRES rli | 
 | 	labels rli | 
 | 	calma 67 13 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # MCON | 
 | #---------------------------------------------------------------- | 
 |  layer MCON lic | 
 |  	squares-grid 0 170 190 | 
 |  	calma 	67 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # MET1 | 
 | #---------------------------------------------------------------- | 
 |  layer MET1 	allm1,m1fill | 
 |  	calma 	68 20 | 
 |  | 
 |  layer MET1TXT | 
 | 	labels	allm1 noport | 
 | 	calma 	68 16 | 
 |  | 
 |  layer MET1PIN | 
 | 	labels	allm1 port | 
 | 	calma 	68 5 | 
 |  | 
 |  layer MET1RES rm1 | 
 | 	labels rm1 | 
 | 	calma 68 13 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # VIA1 | 
 | #---------------------------------------------------------------- | 
 |  layer VIA1 	via1 | 
 |  	squares-grid 55 150 170 | 
 |  	calma 	68 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # MET2 | 
 | #---------------------------------------------------------------- | 
 |  layer MET2 	allm2,m2fill | 
 |  	calma 	69 20 | 
 |  | 
 |  layer MET2TXT | 
 | 	labels	allm2 noport | 
 | 	calma	69 16 | 
 |  | 
 |  layer MET2PIN | 
 | 	labels	allm2 port | 
 | 	calma	69 5 | 
 |  | 
 |  layer MET2RES rm2 | 
 | 	labels rm2 | 
 | 	calma 69 13 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # VIA2 | 
 | #---------------------------------------------------------------- | 
 |  layer VIA2 	via2 | 
 |  	squares-grid 40 200 200 | 
 |  	calma 	69 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # MET3 | 
 | #---------------------------------------------------------------- | 
 |  layer MET3 	allm3,m3fill | 
 |  	calma 	70 20 | 
 |  | 
 |  layer MET3TXT | 
 |  	labels 	allm3 noport | 
 | 	calma	70 16  | 
 |  | 
 |  layer MET3PIN | 
 | 	labels	allm3 port | 
 | 	calma	70 5 | 
 |  | 
 |  layer MET3RES rm3 | 
 | 	labels rm3 | 
 | 	calma 70 13 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # VIA3 | 
 | #---------------------------------------------------------------- | 
 |  layer VIA3	via3 | 
 | 	or mimcc | 
 |  	squares-grid 60 200 200 | 
 |  	calma 	70 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # MET4 | 
 | #---------------------------------------------------------------- | 
 |  layer MET4 	allm4,m4fill | 
 |  	calma 	71 20 | 
 |  | 
 |  layer MET4TXT | 
 | 	labels	allm4 noport | 
 | 	calma	71 16 | 
 |  | 
 |  layer MET4PIN | 
 | 	labels	allm4 port | 
 | 	calma	71 5 | 
 |  | 
 |  layer MET4RES rm4 | 
 | 	labels rm4 | 
 | 	calma 71 13 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # VIA4 | 
 | #---------------------------------------------------------------- | 
 |  layer VIA4	via4 | 
 | 	or mim2cc | 
 |  	squares-grid 190 800 800 | 
 |  	calma 	71 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # MET5 | 
 | #---------------------------------------------------------------- | 
 |  layer MET5 	allm5,m5fill | 
 |  	calma 	72 20 | 
 |  | 
 |  layer MET5TXT | 
 | 	labels	allm5 noport | 
 | 	calma	72 16 | 
 |  | 
 |  layer MET5PIN | 
 | 	labels	allm5 port | 
 | 	calma	72 5 | 
 |  | 
 |  layer MET5RES rm5 | 
 | 	labels rm5 | 
 | 	calma 72 13 | 
 |  | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # RDL | 
 | #---------------------------------------------------------------- | 
 |   layer RDL	*metrdl | 
 | 	calma   74 20 | 
 |  | 
 |   layer RDLTXT | 
 | 	labels	*metrdl noport | 
 | 	calma	74 16 | 
 |  | 
 |   layer RDLPIN | 
 | 	labels  *metrdl port | 
 | 	calma	74 5 | 
 |  | 
 |   layer PI1	*metrdl | 
 | 	and	padl,glass | 
 | 	# Test only---needs GDS layer number | 
 |  | 
 |   layer	UBM	*metrdl | 
 | 	shrink	50000 | 
 | 	grow	40000 | 
 | 	# Test only---needs GDS layer number | 
 | 	 | 
 |   layer	PI2	*metrdl | 
 | 	shrink	50000 | 
 | 	grow	25000 | 
 | 	# Test only---needs GDS layer number | 
 |  | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # GLASS | 
 | #---------------------------------------------------------------- | 
 |  layer GLASS 	glass | 
 |  	calma 	76 20 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # CAPM | 
 | #---------------------------------------------------------------- | 
 |  layer CAPM 	*mimcap | 
 |  	labels 	mimcap | 
 |  	calma 	89 44 | 
 |  | 
 |  layer CAPM2 	*mimcap2 | 
 |  	labels 	mimcap2 | 
 |  	calma 	97 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # Chip top level marker for DRC latchup rules to check 15um | 
 | # distance to taps (otherwise 6um is used) | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer LOWTAPDENSITY | 
 | 	bbox top | 
 | 	# Clear 200um for pads + 50um for required high tap density | 
 | 	# in critical area. | 
 | 	shrink 250000 | 
 | 	calma	81 14 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # FILLBLOCK | 
 | #---------------------------------------------------------------- | 
 |  layer FILLOBSM1 fillblock | 
 |  	calma 	62 24 | 
 |  | 
 |  layer FILLOBSM2 fillblock | 
 |  	calma 	105 52 | 
 |  | 
 |  layer FILLOBSM3 fillblock | 
 |  	calma 	107 24 | 
 |  | 
 |  layer FILLOBSM4 fillblock | 
 |  	calma 	112 4 | 
 |  | 
 |  render	DNWELL 	cwell       -0.1    0.1 | 
 |  render	NWELL	nwell        0.0    0.2062 | 
 |  render DIFF	ndiffusion   0.2062 0.12 | 
 |  render TAP	pdiffusion   0.2062 0.12 | 
 |  render POLY	polysilicon  0.3262 0.18 | 
 |  render CONT	via          0.5062 0.43 | 
 |  render LI	metal1       0.9361 0.10 | 
 |  render MCON	via          1.0361 0.34 | 
 |  render MET1	metal2       1.3761 0.36 | 
 |  render VIA1	via          1.7361 0.27 | 
 |  render MET2	metal3       2.0061 0.36 | 
 |  render VIA2	via          2.3661 0.42 | 
 |  render MET3	metal4       2.7861 0.845 | 
 |  render VIA3	via          3.6311 0.39 | 
 |  render MET4	metal5       4.0211 0.845 | 
 |  render VIA4	via          4.8661 0.505 | 
 |  render MET5	metal6       5.3711 1.26 | 
 |  render CAPM	metal8       2.4661 0.2 | 
 |  render CAPM2	metal9       3.7311 0.2 | 
 |  render RDL	metal7      11.8834 4.0 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | style drc | 
 | #---------------------------------------------------------------- | 
 | # NOTE:  This style is used for DRC only, not for GDS output | 
 | #---------------------------------------------------------------- | 
 |  scalefactor 10  nanometers | 
 |  options calma-permissive-labels | 
 |  | 
 |  # Ensure nwell overlaps dnwell at least 0.4um outside and 1.03um inside | 
 |  templayer dnwell_shrink dnwell | 
 |  shrink 1030 | 
 |  | 
 |  templayer nwell_missing dnwell | 
 |  grow 400 | 
 |  and-not dnwell_shrink | 
 |  and-not nwell | 
 |  | 
 |  templayer pwell_in_dnwell dnwell | 
 |  and-not nwell | 
 |  | 
 |  # SONOS nFET devices must be in deep nwell | 
 |  templayer dnwell_missing nsonos | 
 |  and-not dnwell | 
 |  | 
 |  # SONOS nFET devices must be in cell with abutment box | 
 |  templayer abutment_box | 
 | 	boundary | 
 |  | 
 |  templayer bbox_missing nsonos | 
 | 	and-not abutment_box | 
 |  | 
 |  # Make sure nwell covers varactor poly | 
 |  templayer var_poly_no_nwell | 
 | 	bloat-all varactor,mvvaractor *poly | 
 | 	grow 150 | 
 | 	and-not nwell | 
 |  | 
 |  # 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,pnp | 
 |  grow 1270 | 
 |  and nwell,pnp | 
 |  grow 1270 | 
 |  and nwell,pnp | 
 |  grow 1270 | 
 |  and nwell,pnp | 
 |  grow 1270 | 
 |  and nwell,pnp | 
 |  grow 1270 | 
 |  and nwell,pnp | 
 |  grow 1270 | 
 |  and nwell,pnp | 
 |  grow 1270 | 
 |  and nwell,pnp | 
 |  grow 1270 | 
 |  and nwell,pnp | 
 |  grow 1270 | 
 |  and nwell,pnp | 
 |  grow 1270 | 
 |  and nwell,pnp | 
 |  grow 945 | 
 |  and nwell,pnp | 
 |   | 
 |  templayer ntap_missing *pdiff,*mvpdiff | 
 |  and-not pwell_in_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 pdiff_crosses_dnwell dnwell | 
 |  grow 20 | 
 |  and-not dnwell | 
 |  and allpdifflv,allpdiffmv | 
 |  | 
 |  # MV nwell must be 2um from any other nwell | 
 |  templayer mvnwell | 
 |  bloat-all alldiffmv nwell | 
 |  grow-min 840 | 
 |  bridge	700 600 | 
 |  | 
 |  # Simple spacing checks to lvnwell must use CIF-DRC rule | 
 |  templayer allmvdiffnowell *mvndiff,*mvpsd | 
 |  | 
 |  templayer lvnwell nwell | 
 |  and-not mvnwell | 
 |  | 
 |  templayer nwell_with_tap | 
 |  bloat-all nsc,mvnsc nwell,pnp | 
 |  | 
 |  templayer nwell_missing_tap nwell,pnp | 
 |  and-not nwell_with_tap | 
 |  | 
 |  templayer tap_with_licon | 
 |  bloat-all psc,mvpsc psd,mvpsd | 
 |  bloat-all nsc,mvnsc nsd,mvnsd | 
 |  | 
 |  templayer tap_missing_licon psd,nsd,mvpsd,mvnsd | 
 |  and-not tap_with_licon | 
 |  | 
 |  # Make sure varactor nwell contains no P diffusion | 
 |  templayer pdiff_in_varactor_well | 
 |  bloat-all varactor,mvvaractor nwell | 
 |  and allpactive | 
 |  | 
 |  # HVNTM spacing requires recreating HVNTM | 
 |  templayer hvntm_block *mvpsd | 
 |  grow 185 | 
 |  | 
 |  templayer hvntm_generate | 
 |  bloat-all mvnfet,mvnnfet,*mvndiode,mvrdn,*nndiode *mvndiff | 
 |  bloat-all mvvaractor *mvnsd | 
 |  and-not hvntm_block | 
 |  grow 185 | 
 |  grow    345 | 
 |  shrink  345 | 
 |  and-not hvntm_block | 
 |  | 
 |  templayer m1_small_hole allm1,obsm1,obslic | 
 |  close   140000 | 
 |  | 
 |  templayer m1_hole_empty m1_small_hole | 
 |  and-not allm1,obsm1,obslic | 
 |  | 
 |  templayer m2_small_hole allm2,obsm2 | 
 |  close   140000 | 
 |  | 
 |  templayer m2_hole_empty m2_small_hole | 
 |  and-not allm2,obsm2 | 
 |  | 
 |  templayer m1_huge allm1 | 
 |  shrink 1500 | 
 |  grow 1500 | 
 |  | 
 |  templayer m1_large_halo m1_huge | 
 |  grow 280 | 
 |  and-not m1_huge | 
 |  and allm1 | 
 |  | 
 |  templayer m2_huge allm2 | 
 |  shrink 1500 | 
 |  grow 1500 | 
 |  | 
 |  templayer m2_large_halo m2_huge | 
 |  grow 280 | 
 |  and-not m2_huge | 
 |  and allm2 | 
 |  | 
 |  templayer m3_huge allm3 | 
 |  shrink 1500 | 
 |  grow 1500 | 
 |  | 
 |  templayer m3_large_halo m3_huge | 
 |  grow 400 | 
 |  and-not m3_huge | 
 |  and allm3 | 
 |  | 
 |  templayer m4_huge allm4 | 
 |  shrink 1500 | 
 |  grow 1500 | 
 |  | 
 |  templayer m4_large_halo m4_huge | 
 |  grow 400 | 
 |  and-not m4_huge | 
 |  and allm4 | 
 |  | 
 |  | 
 | #---------------------------------------------------------------- | 
 | style wafflefill | 
 | #---------------------------------------------------------------- | 
 | # Style used by scripts for automatically generating fill layers | 
 | # NOTE: Be sure to generate output on flattened layout. | 
 | #---------------------------------------------------------------- | 
 |  scalefactor 10  nanometers | 
 |  options calma-permissive-labels | 
 |  gridlimit 5 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # Generate and retain a layer representing the bounding box | 
 | #---------------------------------------------------------------- | 
 |  templayer	topbox | 
 | 	bbox	top | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # Generate guard-band around nwells to keep FOM from crossing | 
 | # Spacing from LV nwell = Diff/Tap 9 = 0.34um | 
 | # Spacing from HV nwell = Diff/Tap 18 = 0.43um (= 0.18 + 0.25) | 
 | # Enclosure by nwell = Diff/Tap 8 = 0.18um | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  templayer mvnwell | 
 |  	bloat-all alldiffmv nwell | 
 |  | 
 |  templayer lvnwell nwell | 
 | 	and-not mvnwell | 
 |  | 
 |  templayer	well_shrink mvnwell | 
 | 	shrink 	250 | 
 | 	or lvnwell | 
 | 	shrink	180 | 
 |  templayer	well_guardband nwell | 
 | 	grow	340 | 
 | 	and-not	well_shrink | 
 |  | 
 | #--------------------------------------------------- | 
 | # Diffusion and poly keep-out areas | 
 | #--------------------------------------------------- | 
 |  templayer      obstruct_fom alldiff,allpoly,rpw | 
 |         grow    500 | 
 | 	or	well_guardband | 
 |  | 
 |  templayer      obstruct_poly alldiff,allpoly,rpw | 
 | 	grow	1000 | 
 |  | 
 | #--------------------------------------------------- | 
 | # FOM and POLY fill | 
 | #--------------------------------------------------- | 
 |  templayer	fomfill_pass1 topbox | 
 |         slots   0 4080 1320 0 4080 1320 1360 0 | 
 |         and-not obstruct_fom | 
 | 	and	topbox | 
 |         shrink  2035 | 
 |         grow    2035 | 
 |  | 
 | #--------------------------------------------------- | 
 |  | 
 |  templayer      obstruct_poly_pass1 fomfill_pass1 | 
 |         grow    300 | 
 | 	or	obstruct_poly | 
 |  templayer	polyfill_pass1 topbox | 
 |         slots   0 720 360 0 720 360 240 0 | 
 |         and-not obstruct_poly_pass1 | 
 | 	and	topbox | 
 |         shrink  355 | 
 |         grow    355 | 
 |  | 
 | #--------------------------------------------------- | 
 |  | 
 |  templayer      obstruct_fom_pass2 fomfill_pass1 | 
 |         grow    1290 | 
 | 	or	polyfill_pass1 | 
 |         grow    300 | 
 | 	or	obstruct_fom | 
 |  templayer	fomfill_pass2 topbox | 
 |         slots   0 2500 1320 0 2500 1320 1360 0 | 
 |         and-not obstruct_fom_pass2 | 
 | 	and	topbox | 
 |         shrink  1245 | 
 |         grow    1245 | 
 |  | 
 | #--------------------------------------------------- | 
 |  | 
 |  templayer      obstruct_poly_coarse polyfill_pass1 | 
 | 	grow	60 | 
 | 	or	fomfill_pass1,fomfill_pass2 | 
 | 	grow	300 | 
 | 	or	obstruct_poly | 
 |  templayer	polyfill_coarse topbox | 
 |         slots   0 720 360 0 720 360 240 120 | 
 |         and-not obstruct_poly_coarse | 
 | 	and	topbox | 
 |         shrink  355 | 
 |         grow    355 | 
 |  | 
 | #--------------------------------------------------- | 
 |  templayer      obstruct_poly_medium polyfill_pass1,polyfill_coarse | 
 | 	grow	60 | 
 | 	or	fomfill_pass1,fomfill_pass2 | 
 |         grow    300 | 
 | 	or	obstruct_poly | 
 |  templayer	polyfill_medium topbox | 
 |         slots   0 540 360 0 540 360 240 100 | 
 |         and-not obstruct_poly_medium | 
 | 	and	topbox | 
 |         shrink  265 | 
 |         grow    265 | 
 |  | 
 | #--------------------------------------------------- | 
 |  templayer      obstruct_poly_fine polyfill_pass1,polyfill_coarse,polyfill_medium | 
 | 	grow	60 | 
 | 	or	fomfill_pass1,fomfill_pass2 | 
 | 	grow	300 | 
 | 	or	obstruct_poly | 
 |  templayer	polyfill_fine topbox | 
 |         slots   0 480 360 0 480 360 240 200 | 
 |         and-not obstruct_poly_fine | 
 | 	and	topbox | 
 |         shrink  235 | 
 |         grow    235 | 
 |  | 
 | #--------------------------------------------------- | 
 |  | 
 |  templayer      obstruct_fom_coarse fomfill_pass1,fomfill_pass2 | 
 |         grow    1290 | 
 | 	or	polyfill_pass1,polyfill_coarse,polyfill_medium,polyfill_fine | 
 | 	grow	300 | 
 | 	or	obstruct_fom | 
 |  templayer	fomfill_coarse topbox | 
 |         slots   0 1500 1320 0 1500 1320 1360 0 | 
 |         and-not obstruct_fom_coarse | 
 | 	and	topbox | 
 |         shrink  745 | 
 |         grow    745 | 
 |  | 
 | #--------------------------------------------------- | 
 |  | 
 |  templayer      obstruct_fom_fine fomfill_pass1,fomfill_pass2,fomfill_coarse | 
 |         grow    1290 | 
 | 	or	polyfill_pass1,polyfill_coarse,polyfill_medium,polyfill_fine | 
 | 	grow	300 | 
 | 	or	obstruct_fom | 
 |  templayer	fomfill_fine topbox | 
 |         slots   0 500 400 0 500 400 160 0 | 
 |         and-not obstruct_fom_fine | 
 | 	and	topbox | 
 |         shrink  245 | 
 |         grow    245 | 
 |  | 
 | #--------------------------------------------------- | 
 |  templayer	fomfill | 
 | 	or	fomfill_pass1  | 
 | 	or	fomfill_pass2 | 
 | 	or	fomfill_coarse | 
 | 	or	fomfill_fine | 
 |  | 
 |  templayer	polyfill | 
 | 	or	polyfill_pass1  | 
 | 	or	polyfill_coarse | 
 | 	or	polyfill_medium | 
 | 	or	polyfill_fine | 
 |  | 
 |  layer	FOMMASK    fomfill | 
 |  	calma 	23 0 | 
 |  layer	POLYMASK    polyfill | 
 |  	calma 	28 0 | 
 |  | 
 | #--------------------------------------------------- | 
 | # MET1 fill | 
 | #--------------------------------------------------- | 
 |  | 
 |  templayer      obstruct_m1_coarse allm1,allpad,obsm1,m1fill,fillblock | 
 |         grow    3000 | 
 |  templayer	met1fill_coarse topbox | 
 |         slots   0 2000 200 0 2000 200 700 0 | 
 |         and-not obstruct_m1_coarse | 
 | 	and	topbox | 
 |         shrink  995 | 
 |         grow    995 | 
 |  | 
 |  templayer      obstruct_m1_medium allm1,allpad,obsm1,m1fill,fillblock | 
 |         grow    2800 | 
 | 	or	met1fill_coarse | 
 |         grow    200 | 
 |  templayer	met1fill_medium topbox | 
 |         slots   0 1000 200 0 1000 200 700 0 | 
 |         and-not obstruct_m1_medium | 
 | 	and	topbox | 
 |         shrink  495 | 
 |         grow    495 | 
 |  | 
 |  templayer      obstruct_m1_fine allm1,allpad,obsm1,m1fill,fillblock | 
 |         grow    300 | 
 | 	or	met1fill_coarse,met1fill_medium | 
 |         grow    200 | 
 |  templayer	met1fill_fine topbox | 
 |         slots   0 580 200 0 580 200 700 0 | 
 |         and-not obstruct_m1_fine | 
 | 	and	topbox | 
 |         shrink  285 | 
 |         grow    285 | 
 |  | 
 |  templayer      obstruct_m1_veryfine allm1,allpad,obsm1,m1fill,fillblock | 
 |         grow    100 | 
 | 	or	met1fill_coarse,met1fill_medium,met1fill_fine | 
 |         grow    200 | 
 |  templayer	met1fill_veryfine topbox | 
 |         slots   0 300 200 0 300 200 100 50 | 
 |         and-not obstruct_m1_veryfine | 
 | 	and	topbox | 
 |         shrink  145 | 
 |         grow    145 | 
 |  | 
 |  layer	MET1MASK met1fill_coarse | 
 | 	or	met1fill_medium | 
 | 	or	met1fill_fine | 
 | 	or	met1fill_veryfine | 
 |  	calma 	36 0 | 
 |  | 
 | #--------------------------------------------------- | 
 | # MET2 fill | 
 | #--------------------------------------------------- | 
 |  templayer      obstruct_m2 allm2,allpad,obsm2,m2fill,fillblock | 
 |         grow    3000 | 
 |  templayer	met2fill_coarse topbox | 
 |         slots   0 2000 200 0 2000 200 700 350 | 
 |         and-not obstruct_m2 | 
 | 	and	topbox | 
 |         shrink  995 | 
 |         grow    995 | 
 |  | 
 |  templayer      obstruct_m2_medium allm2,allpad,obsm2,m2fill,fillblock | 
 |         grow    2800 | 
 | 	or	met2fill_coarse | 
 |         grow    200 | 
 |  templayer	met2fill_medium topbox | 
 |         slots   0 1000 200 0 1000 200 700 350 | 
 |         and-not obstruct_m2_medium | 
 | 	and	topbox | 
 |         shrink  495 | 
 |         grow    495 | 
 |  | 
 |  templayer      obstruct_m2_fine allm2,allpad,obsm2,m2fill,fillblock | 
 |         grow    300 | 
 | 	or	met2fill_coarse,met2fill_medium | 
 |         grow    200 | 
 |  templayer	met2fill_fine topbox | 
 |         slots   0 580 200 0 580 200 700 350 | 
 |         and-not obstruct_m2_fine | 
 | 	and	topbox | 
 |         shrink  285 | 
 |         grow    285 | 
 |  | 
 |  templayer      obstruct_m2_veryfine allm2,allpad,obsm2,m2fill,fillblock | 
 |         grow    100 | 
 | 	or	met2fill_coarse,met2fill_medium,met2fill_fine | 
 |         grow    200 | 
 |  templayer	met2fill_veryfine topbox | 
 |         slots   0 300 200 0 300 200 100 100 | 
 |         and-not obstruct_m2_veryfine | 
 | 	and	topbox | 
 |         shrink  145 | 
 |         grow    145 | 
 |  | 
 |  layer	MET2MASK met2fill_coarse | 
 | 	or met2fill_medium | 
 | 	or met2fill_fine | 
 | 	or met2fill_veryfine | 
 |  	calma 	41 0 | 
 |  | 
 | #--------------------------------------------------- | 
 | # MET3 fill | 
 | #--------------------------------------------------- | 
 |  templayer      obstruct_m3 allm3,allpad,obsm3,m3fill,fillblock | 
 |         grow    3000 | 
 |  templayer	met3fill_coarse topbox | 
 |         slots   0 2000 300 0 2000 300 700 700 | 
 |         and-not obstruct_m3 | 
 | 	and	topbox | 
 |         shrink  995 | 
 |         grow    995 | 
 |  | 
 |  templayer      obstruct_m3_medium allm3,allpad,obsm3,m3fill,fillblock | 
 |         grow    2700 | 
 | 	or	met3fill_coarse | 
 |         grow    300 | 
 |  templayer	met3fill_medium topbox | 
 |         slots   0 1000 300 0 1000 300 700 700 | 
 |         and-not obstruct_m3_medium | 
 | 	and	topbox | 
 |         shrink  495 | 
 |         grow    495 | 
 |  | 
 |  templayer      obstruct_m3_fine allm3,allpad,obsm3,m3fill,fillblock | 
 |         grow    200 | 
 | 	or	met3fill_coarse,met3fill_medium | 
 |         grow    300 | 
 |  templayer	met3fill_fine topbox | 
 |         slots   0 580 300 0 580 300 700 700 | 
 |         and-not obstruct_m3_fine | 
 | 	and	topbox | 
 |         shrink  285 | 
 |         grow    285 | 
 |  | 
 |  templayer      obstruct_m3_veryfine allm3,allpad,obsm3,m3fill,fillblock | 
 | 	# Note: Adding 0.1 to waffle rule to clear wide spacing rule | 
 |         grow    100 | 
 | 	or	met3fill_coarse,met3fill_medium,met3fill_fine | 
 |         grow    300 | 
 |  templayer	met3fill_veryfine topbox | 
 |         slots   0 400 300 0 400 300 150 200 | 
 |         and-not obstruct_m3_veryfine | 
 | 	and	topbox | 
 |         shrink  195 | 
 |         grow    195 | 
 |  | 
 |  layer	MET3MASK met3fill_coarse | 
 | 	or	met3fill_medium | 
 | 	or	met3fill_fine | 
 | 	or	met3fill_veryfine | 
 |  	calma 	34 0 | 
 |  | 
 | #--------------------------------------------------- | 
 | # MET4 fill | 
 | #--------------------------------------------------- | 
 |  templayer      obstruct_m4 allm4,allpad,obsm4,m4fill,fillblock | 
 |         grow    3000 | 
 |  templayer	met4fill_coarse topbox | 
 |         slots   0 2000 300 0 2000 300 700 1050 | 
 |         and-not obstruct_m4 | 
 | 	and	topbox | 
 |         shrink  995 | 
 |         grow    995 | 
 |  | 
 |  templayer      obstruct_m4_medium allm4,allpad,obsm4,m4fill,fillblock | 
 |         grow    2700 | 
 | 	or	met4fill_coarse | 
 |         grow    300 | 
 |  templayer	met4fill_medium topbox | 
 |         slots   0 1000 300 0 1000 300 700 1050 | 
 |         and-not obstruct_m4_medium | 
 |         shrink  495 | 
 |         grow    495 | 
 |  | 
 |  templayer      obstruct_m4_fine allm4,allpad,obsm4,m4fill,fillblock | 
 |         grow    200 | 
 | 	or	met4fill_coarse,met4fill_medium | 
 |         grow    300 | 
 |  templayer	met4fill_fine topbox | 
 |         slots   0 580 300 0 580 300 700 1050 | 
 |         and-not obstruct_m4_fine | 
 | 	and	topbox | 
 |         shrink  285 | 
 |         grow    285 | 
 |  | 
 |  templayer      obstruct_m4_veryfine allm4,allpad,obsm4,m4fill,fillblock | 
 | 	# Note: Adding 0.1 to waffle rule to clear wide spacing rule | 
 |         grow    100 | 
 | 	or	met4fill_coarse,met4fill_medium,met4fill_fine | 
 |         grow    300 | 
 |  templayer	met4fill_veryfine topbox | 
 |         slots   0 400 300 0 400 300 150 300 | 
 |         and-not obstruct_m4_veryfine | 
 | 	and	topbox | 
 |         shrink  195 | 
 |         grow    195 | 
 |  | 
 |  layer	MET4MASK met4fill_coarse | 
 | 	or	met4fill_medium | 
 | 	or	met4fill_fine | 
 | 	or	met4fill_veryfine | 
 |  	calma 	51 0 | 
 |  | 
 | #--------------------------------------------------- | 
 | # MET5 fill | 
 | #--------------------------------------------------- | 
 |  templayer      obstruct_m5 allm5,allpad,obsm5,m5fill,fillblock | 
 |         grow    3000 | 
 |  templayer	met5fill_gen topbox | 
 |         slots   0 3000 1600 0 3000 1600 1000 100 | 
 |         and-not obstruct_m5 | 
 | 	and	topbox | 
 |         shrink  1495 | 
 |         grow    1495 | 
 |  | 
 |  layer	MET5MASK met5fill_gen | 
 |  	calma 	59 0 | 
 |  | 
 | end | 
 |  | 
 | #----------------------------------------------------------------------- | 
 | cifinput | 
 | #----------------------------------------------------------------------- | 
 | # NOTE:  All values in this section MUST be multiples of 25  | 
 | # or else magic will scale below the allowed layout grid size | 
 | #----------------------------------------------------------------------- | 
 |  | 
 | style  sky130 | 
 |  scalefactor 10 nanometers | 
 |  gridlimit 5 | 
 |  | 
 |  options ignore-unknown-layer-labels no-reconnect-labels | 
 |  | 
 |  ignore NPC | 
 |  ignore SEALID | 
 |  ignore CAPID | 
 |  ignore LDNTM | 
 |  ignore HVNTM | 
 |  ignore POLYMOD | 
 |  ignore LOWTAPDENSITY | 
 |  | 
 |  layer pnp NWELL,WELLTXT,WELLPIN | 
 |  and PNPID | 
 |  labels NWELL | 
 |  labels WELLTXT text | 
 |  labels WELLPIN port | 
 |  | 
 |  layer nwell NWELL,WELLTXT,WELLPIN | 
 |  and-not PNPID | 
 |  labels NWELL | 
 |  labels WELLTXT text | 
 |  labels WELLPIN port | 
 |  | 
 |  layer pwell SUBTXT,SUBPIN | 
 |  labels SUBTXT text | 
 |  labels SUBPIN port | 
 |  | 
 |  # Always draw pwell under p-tap | 
 |  layer pwell TAP | 
 |  and-not NWELL | 
 |  | 
 |  layer dnwell DNWELL | 
 |  labels DNWELL | 
 |  | 
 |  layer npn DNWELL | 
 |  and-not NWELL | 
 |  and NPNID | 
 |  | 
 |  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 scpfethvt pfetarea | 
 |  and-not LVTN | 
 |  and HVTP | 
 |  and STDCELL | 
 |  labels DIFF | 
 |  | 
 |  layer ppu pfetarea | 
 |  and-not LVTN | 
 |  and HVTP | 
 |  and COREID | 
 |  labels DIFF | 
 |  | 
 |  layer pfetlvt pfetarea | 
 |  and LVTN | 
 |  labels DIFF | 
 |  | 
 |  layer pfetmvt pfetarea | 
 |  and HVTR | 
 |  labels DIFF | 
 |  | 
 |  layer pfethvt pfetarea | 
 |  and HVTP | 
 |  and-not STDCELL | 
 |  and-not COREID | 
 |  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 npass DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and-not NWELL | 
 |  and COREID | 
 |  labels DIFF | 
 |  | 
 |  layer npd DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and-not NWELL | 
 |  and COREID | 
 |  # Shrink-grow operation eliminates the smaller npass device | 
 |  shrink 70 | 
 |  grow 70 | 
 |  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 | 
 |  | 
 |  layer corenvar TAP | 
 |  and NPLUS | 
 |  and POLY | 
 |  and COREID | 
 |  labels TAP | 
 |  | 
 |  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 | 
 |  | 
 |  layer corepvar TAP | 
 |  and PPLUS | 
 |  and POLY | 
 |  and COREID | 
 |  labels TAP | 
 |  | 
 |  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 | 
 |  | 
 |  templayer mvnfetarea DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and-not LVTN | 
 |  and THKOX | 
 |  grow 1000 | 
 |  | 
 |  templayer mvnnfetarea DIFF,TAP | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and LVTN | 
 |  and THKOX | 
 |  and-not mvnfetarea | 
 |  | 
 |  layer mvnfet DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and THKOX | 
 |  and-not mvnnfetarea | 
 |  labels DIFF | 
 |  | 
 |  layer mvnnfet mvnnfetarea | 
 |  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 HVTP | 
 |  and-not NPLUS | 
 |  and STDCELL | 
 |  | 
 |  layer scpfethvt POLY | 
 |  and DIFF | 
 |  and diffresarea | 
 |  and HVTP | 
 |  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 TAP | 
 |  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 coreli LI,LITXT,LIPIN | 
 |  and-not LIRES,LISHORT | 
 |  and COREID | 
 |  labels LI | 
 |  labels LITXT text | 
 |  labels LIPIN port | 
 |  | 
 |  layer locali LI,LITXT,LIPIN | 
 |  and-not LIRES,LISHORT | 
 |  and-not COREID | 
 |  labels LI | 
 |  labels LITXT text | 
 |  labels LIPIN port | 
 |  | 
 |  layer rli LI | 
 |  and LIRES,LISHORT | 
 |  labels LIRES,LISHORT | 
 |  | 
 |  layer lic MCON | 
 |  grow 95 | 
 |  shrink 95 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or MCON | 
 |  labels MCON | 
 |  | 
 |  layer m1 MET1,MET1TXT,MET1PIN | 
 |  and-not MET1RES,MET1SHORT | 
 |  labels MET1 | 
 |  labels MET1TXT text | 
 |  labels MET1PIN port | 
 |  | 
 |  layer rm1 MET1 | 
 |  and MET1RES,MET1SHORT | 
 |  labels MET1RES,MET1SHORT | 
 |  | 
 |  layer m1fill MET1FILL | 
 |  labels MET1FILL | 
 |  | 
 |  layer mimcap MET3 | 
 |  and CAPM | 
 |  labels CAPM | 
 |  | 
 |  layer mimcc VIA3 | 
 |  and CAPM | 
 |  grow 60 | 
 |  grow 40 | 
 |  shrink 40 | 
 |  labels CAPM | 
 |  | 
 |  layer mimcap2 MET4 | 
 |  and CAPM2 | 
 |  labels CAPM2 | 
 |  | 
 |  layer mim2cc VIA4 | 
 |  and CAPM2 | 
 |  grow 190 | 
 |  grow 210 | 
 |  shrink 210 | 
 |  labels CAPM2 | 
 |  | 
 |  | 
 |  templayer m2cbase VIA1 | 
 |  grow 55 | 
 |  | 
 |  layer m2c m2cbase | 
 |  grow 30 | 
 |  shrink 30 | 
 |  shrink 130 | 
 |  grow 130 | 
 |  or m2cbase | 
 |  | 
 |  layer m2 MET2,MET2TXT,MET2PIN | 
 |  and-not MET2RES,MET2SHORT | 
 |  labels MET2 | 
 |  labels MET2TXT text | 
 |  labels MET2PIN port | 
 |  | 
 |  layer rm2 MET2 | 
 |  and MET2RES,MET2SHORT | 
 |  labels MET2RES,MET2SHORT | 
 |  | 
 |  layer m2fill MET2FILL | 
 |  labels MET2FILL | 
 |  | 
 |  templayer m3cbase VIA2 | 
 |  grow 40 | 
 |  | 
 |  layer m3c m3cbase | 
 |  grow 60 | 
 |  shrink 60 | 
 |  shrink 140  | 
 |  grow 140 | 
 |  or m3cbase | 
 |  | 
 |  layer m3 MET3,MET3TXT,MET3PIN | 
 |  and-not MET3RES,MET3SHORT | 
 |  and-not CAPM | 
 |  labels MET3 | 
 |  labels MET3TXT text | 
 |  labels MET3PIN port | 
 |  | 
 |  layer rm3 MET3 | 
 |  and MET3RES,MET3SHORT | 
 |  labels MET3RES,MET3SHORT | 
 |  | 
 |  layer m3fill MET3FILL | 
 |  labels MET3FILL | 
 |  | 
 |  | 
 |  templayer via3base VIA3 | 
 |  and-not CAPM | 
 |  grow 60 | 
 |  | 
 |  layer via3 via3base | 
 |  grow 40 | 
 |  shrink 40 | 
 |  shrink 160 | 
 |  grow 160 | 
 |  or via3base | 
 |  | 
 |  layer m4 MET4,MET4TXT,MET4PIN | 
 |  and-not MET4RES,MET4SHORT | 
 |  and-not CAPM2 | 
 |  labels MET4 | 
 |  labels MET4TXT text | 
 |  labels MET4PIN port | 
 |  | 
 |  layer rm4 MET4 | 
 |  and MET4RES,MET4SHORT | 
 |  labels MET4RES,MET4SHORT | 
 |  | 
 |  layer m4fill MET4FILL | 
 |  labels MET4FILL | 
 |  | 
 |  layer m5 MET5,MET5TXT,MET5PIN | 
 |  and-not MET5RES,MET5SHORT | 
 |  labels MET5 | 
 |  labels MET5TXT text | 
 |  labels MET5PIN port | 
 |  | 
 |  layer rm5 MET5 | 
 |  and MET5RES,MET5SHORT | 
 |  labels MET5RES,MET5SHORT | 
 |  | 
 |  layer m5fill MET5FILL | 
 |  labels MET5FILL | 
 |  | 
 |  templayer via4base VIA4 | 
 |  and-not CAPM2 | 
 |  grow 190 | 
 |  | 
 |  layer via4 via4base | 
 |  grow 210 | 
 |  shrink 210 | 
 |  shrink 590 | 
 |  grow 590 | 
 |  or via4base | 
 |  | 
 |  layer metrdl RDL,RDLTXT,RDLPIN | 
 |  labels RDL | 
 |  labels RDLTXT text | 
 |  labels RDLPIN port | 
 |  | 
 |  # Find diffusion not covered in | 
 |  # NPLUS or PPLUS and pull it into | 
 |  # the next layer up | 
 |  | 
 |  templayer gentrans DIFF | 
 |  and-not PPLUS | 
 |  and-not NPLUS | 
 |  and POLY | 
 |  copyup DIFF,POLY | 
 |  | 
 |  templayer gendiff DIFF,TAP | 
 |  and-not PPLUS | 
 |  and-not NPLUS | 
 |  and-not POLY | 
 |  copyup DIFF | 
 |  | 
 |  # Handle contacts found by copyup | 
 |  | 
 |  templayer ndiccopy CONT | 
 |  and LI | 
 |  and DIODE | 
 |  and NPLUS | 
 |  and-not THKOX | 
 |  | 
 |  layer ndic ndiccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or ndiccopy | 
 |  labels CONT | 
 |  | 
 |  templayer mvndiccopy CONT | 
 |  and LI | 
 |  and DIODE | 
 |  and NPLUS | 
 |  and THKOX | 
 |  | 
 |  layer mvndic mvndiccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvndiccopy | 
 |  labels CONT | 
 |  | 
 |  templayer pdiccopy CONT | 
 |  and LI | 
 |  and DIODE | 
 |  and PPLUS | 
 |  and-not THKOX | 
 |  | 
 |  layer pdic pdiccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or pdiccopy | 
 |  labels CONT | 
 |  | 
 |  templayer mvpdiccopy CONT | 
 |  and LI | 
 |  and DIODE | 
 |  and PPLUS | 
 |  and THKOX | 
 |  | 
 |  layer mvpdic mvpdiccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvpdiccopy | 
 |  labels CONT | 
 |  | 
 |  templayer ndccopy CONT | 
 |  and ndifcheck | 
 |  | 
 |  layer ndc ndccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or ndccopy | 
 |  labels CONT | 
 |  | 
 |  templayer mvndccopy CONT | 
 |  and mvndifcheck | 
 |  | 
 |  layer mvndc mvndccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvndccopy | 
 |  labels CONT | 
 |  | 
 |  templayer pdccopy CONT | 
 |  and pdifcheck | 
 |  | 
 |  layer pdc pdccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or pdccopy | 
 |  labels CONT | 
 |  | 
 |  templayer mvpdccopy CONT | 
 |  and mvpdifcheck | 
 |  | 
 |  layer mvpdc mvpdccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvpdccopy | 
 |  labels CONT | 
 |  | 
 |  templayer pccopy CONT | 
 |  and polycheck | 
 |  | 
 |  layer pc pccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or pccopy | 
 |  labels CONT | 
 |  | 
 |  templayer nsccopy CONT | 
 |  and nsubcheck | 
 |  | 
 |  layer nsc nsccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or nsccopy | 
 |  labels CONT | 
 |  | 
 |  templayer mvnsccopy CONT | 
 |  and mvnsubcheck | 
 |  | 
 |  layer mvnsc mvnsccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvnsccopy | 
 |  labels CONT | 
 |  | 
 |  templayer psccopy CONT | 
 |  and psubcheck | 
 |  | 
 |  layer psc psccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or psccopy | 
 |  labels CONT | 
 |  | 
 |  templayer mvpsccopy CONT | 
 |  and mvpsubcheck | 
 |  | 
 |  layer mvpsc mvpsccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvpsccopy | 
 |  labels CONT | 
 |  | 
 |  # Find contacts not covered in | 
 |  # metal and pull them into the | 
 |  # next layer up | 
 |   | 
 |  templayer gencont CONT | 
 |  and LI | 
 |  and-not DIFF,TAP | 
 |  and-not POLY | 
 |  and-not DIODE | 
 |  and-not nsubcheck | 
 |  and-not psubcheck | 
 |  and-not mvnsubcheck | 
 |  and-not mvpsubcheck | 
 |  copyup CONT,LI | 
 |  | 
 |  templayer barecont CONT | 
 |  and-not LI | 
 |  and-not nsubcheck | 
 |  and-not psubcheck | 
 |  and-not mvnsubcheck | 
 |  and-not mvpsubcheck | 
 |  copyup CONT | 
 |  | 
 |  layer glass GLASS,PADTXT,PADPIN | 
 |  labels GLASS | 
 |  labels PADTXT text | 
 |  labels PADPIN port | 
 |  | 
 |  templayer boundary BOUND,STDCELL,PADCELL | 
 |  boundary | 
 |  | 
 |  layer comment LVSTEXT | 
 |  labels LVSTEXT text | 
 |  | 
 |  layer comment TTEXT | 
 |  labels TTEXT text | 
 |  | 
 |  layer fillblock  FILLOBSM1,FILLOBSM2,FILLOBSM3,FILLOBSM4 | 
 |  labels FILLOBSM1,FILLOBSM2,FILLOBSM3,FILLOBSM4 | 
 |  | 
 | # MOS Varactor | 
 |  | 
 |  layer var POLY | 
 |  and TAP | 
 |  and NPLUS | 
 |  and NWELL | 
 |  and-not THKOX | 
 |  and-not HVTP | 
 |  # NOTE:  Else forms a varactor that is not in the vendor netlist. | 
 |  and-not COREID | 
 |  labels POLY | 
 |  | 
 |  layer varhvt POLY | 
 |  and TAP | 
 |  and NPLUS | 
 |  and NWELL | 
 |  and-not THKOX | 
 |  and HVTP | 
 |  labels POLY | 
 |  | 
 |  layer mvvar POLY | 
 |  and TAP | 
 |  and NPLUS | 
 |  and NWELL | 
 |  and THKOX | 
 |  labels POLY | 
 |  | 
 |  calma NWELL 64 20 | 
 |  calma DIFF 65 20 | 
 |  calma DNWELL 64 18 | 
 |  calma PWRES 64 13 | 
 |  calma TAP  65 44 | 
 |  # LVTN | 
 |  calma LVTN 125 44 | 
 |  # HVTR | 
 |  calma HVTR 18 20 | 
 |  # 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 44 | 
 |  # Capacitor ID | 
 |  calma CAPID 82 64 | 
 |  # Core area ID mark | 
 |  calma COREID 81 2 | 
 |  # Standard cell ID mark | 
 |  calma STDCELL 81 4 | 
 |  # Padframe cell ID mark | 
 |  calma PADCELL 81 3 | 
 |  # Seal ring ID mark | 
 |  calma SEALID 81 1 | 
 |  # Low tap density ID mark | 
 |  calma LOWTAPDENSITY 81 14 | 
 |   | 
 |  # LICON | 
 |  calma CONT 66 44 | 
 |  calma LI   67 20 | 
 |  calma MCON 67 44 | 
 |  | 
 |  calma MET1 68 20 | 
 |  calma VIA1 68 44 | 
 |  calma MET2 69 20 | 
 |  calma VIA2 69 44 | 
 |  calma MET3 70 20 | 
 |  calma VIA3 70 44 | 
 |  calma MET4 71 20 | 
 |  calma VIA4 71 44 | 
 |  calma MET5 72 20 | 
 |  calma RDL 74 20 | 
 |  calma GLASS 76 20 | 
 |  | 
 |  calma SUBPIN  64 59 | 
 |  calma PADPIN  76 5 | 
 |  calma DIFFPIN 65 6 | 
 |  calma TAPPIN  65 5 | 
 |  calma WELLPIN  64 5 | 
 |  calma LIPIN 67 5 | 
 |  calma POLYPIN 66 5 | 
 |  calma MET1PIN 68 5 | 
 |  calma MET2PIN 69 5 | 
 |  calma MET3PIN 70 5 | 
 |  calma MET4PIN 71 5 | 
 |  calma MET5PIN 72 5 | 
 |  calma RDLPIN 74 5 | 
 |  | 
 |  calma LIRES 67 13 | 
 |  calma MET1RES 68 13 | 
 |  calma MET2RES 69 13 | 
 |  calma MET3RES 70 13 | 
 |  calma MET4RES 71 13 | 
 |  calma MET5RES 72 13 | 
 |  | 
 |  calma MET1FILL 68 28 | 
 |  calma MET2FILL 69 28 | 
 |  calma MET3FILL 70 28 | 
 |  calma MET4FILL 71 28 | 
 |  calma MET5FILL 72 28 | 
 |  | 
 |  calma POLYSHORT 66 15 | 
 |  calma LISHORT 67 15 | 
 |  calma MET1SHORT 68 15 | 
 |  calma MET2SHORT 69 15 | 
 |  calma MET3SHORT 70 15 | 
 |  calma MET4SHORT 71 15 | 
 |  calma MET5SHORT 72 15 | 
 |  | 
 |  calma SUBTXT 122 16 | 
 |  calma PADTXT 76 16 | 
 |  calma DIFFTXT 65 16 | 
 |  calma POLYTXT 66 16 | 
 |  calma WELLTXT 64 16 | 
 |  calma LITXT 67 16 | 
 |  calma MET1TXT 68 16 | 
 |  calma MET2TXT 69 16 | 
 |  calma MET3TXT 70 16 | 
 |  calma MET4TXT 71 16 | 
 |  calma MET5TXT 72 16 | 
 |  calma RDLPIN 74 16 | 
 |  | 
 |  calma BOUND 235 4 | 
 |  | 
 |  calma LVSTEXT 83 44 | 
 |  | 
 |  calma CAPM 89 44 | 
 |  calma CAPM2 97 44 | 
 |  | 
 |  calma FILLOBSM1  62  24 | 
 |  calma FILLOBSM2  105 52 | 
 |  calma FILLOBSM3  107 24 | 
 |  calma FILLOBSM4  112 4 | 
 |  | 
 | #----------------------------------------------------------------------- | 
 |  | 
 | style  vendorimport | 
 |  scalefactor 10 nanometers | 
 |  gridlimit 5 | 
 |  | 
 |  options ignore-unknown-layer-labels no-reconnect-labels | 
 |  | 
 |  ignore NPC | 
 |  ignore SEALID | 
 |  ignore CAPID | 
 |  ignore LDNTM | 
 |  ignore HVNTM | 
 |  ignore POLYMOD | 
 |  ignore LOWTAPDENSITY | 
 |  | 
 |  layer pnp NWELL,WELLTXT,WELLPIN | 
 |  and PNPID | 
 |  labels NWELL | 
 |  labels WELLTXT port | 
 |  labels WELLPIN port | 
 |  | 
 |  layer nwell NWELL,WELLTXT,WELLPIN | 
 |  and-not PNPID | 
 |  labels NWELL | 
 |  labels WELLTXT port | 
 |  labels WELLPIN port | 
 |  | 
 |  layer pwell SUBTXT,SUBPIN | 
 |  labels SUBTXT port | 
 |  labels SUBPIN port | 
 |  | 
 |  # Always draw pwell under p-tap | 
 |  layer pwell TAP | 
 |  and-not NWELL | 
 |  | 
 |  layer dnwell DNWELL | 
 |  labels DNWELL | 
 |  | 
 |  layer npn DNWELL | 
 |  and-not NWELL | 
 |  and NPNID | 
 |  | 
 |  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 port | 
 |  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 port | 
 |  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 port | 
 |  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 port | 
 |  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 scpfethvt pfetarea | 
 |  and-not LVTN | 
 |  and HVTP | 
 |  and STDCELL | 
 |  labels DIFF | 
 |  | 
 |  layer ppu pfetarea | 
 |  and-not LVTN | 
 |  and HVTP | 
 |  and COREID | 
 |  labels DIFF | 
 |  | 
 |  layer pfetlvt pfetarea | 
 |  and LVTN | 
 |  labels DIFF | 
 |  | 
 |  layer pfetmvt pfetarea | 
 |  and HVTR | 
 |  labels DIFF | 
 |  | 
 |  layer pfethvt pfetarea | 
 |  and HVTP | 
 |  and-not STDCELL | 
 |  and-not COREID | 
 |  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 port | 
 |  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 npass DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and-not NWELL | 
 |  and COREID | 
 |  labels DIFF | 
 |  | 
 |  layer npd DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and-not NWELL | 
 |  and COREID | 
 |  # Shrink-grow operation eliminates the smaller npass device | 
 |  shrink 70 | 
 |  grow 70 | 
 |  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 | 
 |  | 
 |  layer corenvar TAP | 
 |  and NPLUS | 
 |  and POLY | 
 |  and COREID | 
 |  labels TAP | 
 |  | 
 |  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 | 
 |  | 
 |  layer corepvar TAP | 
 |  and PPLUS | 
 |  and POLY | 
 |  and COREID | 
 |  labels TAP | 
 |  | 
 |  templayer psdexpand psdarea | 
 |  grow 500 | 
 |  | 
 |  layer mvpdiff DIFF,DIFFTXT,DIFFPIN | 
 |  and-not NPLUS | 
 |  and-not POLY | 
 |  and THKOX | 
 |  and mvpfetexpand | 
 |  labels DIFF | 
 |  labels DIFFTXT port | 
 |  labels DIFFPIN port | 
 |  | 
 |  layer mvpdiffres DIFFRES | 
 |  and PPLUS | 
 |  and NWELL | 
 |  and THKOX | 
 |  and-not mvrdpioedge | 
 |  labels DIFF | 
 |  | 
 |  templayer mvnfetarea DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and-not LVTN | 
 |  and THKOX | 
 |  grow 1000 | 
 |  | 
 |  templayer mvnnfetarea DIFF,TAP | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and LVTN | 
 |  and THKOX | 
 |  and-not mvnfetarea | 
 |  | 
 |  layer mvnfet DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and THKOX | 
 |  and-not mvnnfetarea | 
 |  labels DIFF | 
 |  | 
 |  layer mvnnfet mvnnfetarea | 
 |  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 HVTP | 
 |  and-not NPLUS | 
 |  and STDCELL | 
 |  | 
 |  layer scpfethvt POLY | 
 |  and DIFF | 
 |  and diffresarea | 
 |  and HVTP | 
 |  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 TAP | 
 |  and-not RPM | 
 |  and-not URPM | 
 |  copyup polycheck | 
 |  | 
 |  layer poly polyarea,POLYTXT,POLYPIN | 
 |  labels POLY | 
 |  labels POLYTXT port | 
 |  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 coreli LI,LITXT,LIPIN | 
 |  and-not LIRES,LISHORT | 
 |  and COREID | 
 |  labels LI | 
 |  labels LITXT port | 
 |  labels LIPIN port | 
 |  | 
 |  layer locali LI,LITXT,LIPIN | 
 |  and-not LIRES,LISHORT | 
 |  and-not COREID | 
 |  labels LI | 
 |  labels LITXT port | 
 |  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 port | 
 |  labels MET1PIN port | 
 |  | 
 |  layer rm1 MET1 | 
 |  and MET1RES,MET1SHORT | 
 |  labels MET1RES,MET1SHORT | 
 |  | 
 |  layer m1fill MET1FILL | 
 |  labels MET1FILL | 
 |  | 
 |  layer mimcap MET3 | 
 |  and CAPM | 
 |  labels CAPM | 
 |  | 
 |  layer mimcc VIA3 | 
 |  and CAPM | 
 |  grow 60 | 
 |  grow 40 | 
 |  shrink 40 | 
 |  labels CAPM | 
 |  | 
 |  layer mimcap2 MET4 | 
 |  and CAPM2 | 
 |  labels CAPM2 | 
 |  | 
 |  layer mim2cc VIA4 | 
 |  and CAPM2 | 
 |  grow 190 | 
 |  grow 210 | 
 |  shrink 210 | 
 |  labels CAPM2 | 
 |  | 
 |  | 
 |  templayer m2cbase VIA1 | 
 |  grow 55 | 
 |  | 
 |  layer m2c m2cbase | 
 |  grow 30 | 
 |  shrink 30 | 
 |  shrink 130 | 
 |  grow 130 | 
 |  or m2cbase | 
 |  | 
 |  layer m2 MET2,MET2TXT,MET2PIN | 
 |  and-not MET2RES,MET2SHORT | 
 |  labels MET2 | 
 |  labels MET2TXT port | 
 |  labels MET2PIN port | 
 |  | 
 |  layer rm2 MET2 | 
 |  and MET2RES,MET2SHORT | 
 |  labels MET2RES,MET2SHORT | 
 |  | 
 |  layer m2fill MET2FILL | 
 |  labels MET2FILL | 
 |  | 
 |  templayer m3cbase VIA2 | 
 |  grow 40 | 
 |  | 
 |  layer m3c m3cbase | 
 |  grow 60 | 
 |  shrink 60 | 
 |  shrink 140  | 
 |  grow 140 | 
 |  or m3cbase | 
 |  | 
 |  layer m3 MET3,MET3TXT,MET3PIN | 
 |  and-not MET3RES,MET3SHORT | 
 |  and-not CAPM | 
 |  labels MET3 | 
 |  labels MET3TXT port | 
 |  labels MET3PIN port | 
 |  | 
 |  layer rm3 MET3 | 
 |  and MET3RES,MET3SHORT | 
 |  labels MET3RES,MET3SHORT | 
 |  | 
 |  layer m3fill MET3FILL | 
 |  labels MET3FILL | 
 |  | 
 |  | 
 |  templayer via3base VIA3 | 
 |  and-not CAPM | 
 |  grow 60 | 
 |  | 
 |  layer via3 via3base | 
 |  grow 40 | 
 |  shrink 40 | 
 |  shrink 160 | 
 |  grow 160 | 
 |  or via3base | 
 |  | 
 |  layer m4 MET4,MET4TXT,MET4PIN | 
 |  and-not MET4RES,MET4SHORT | 
 |  and-not CAPM2 | 
 |  labels MET4 | 
 |  labels MET4TXT port | 
 |  labels MET4PIN port | 
 |  | 
 |  layer rm4 MET4 | 
 |  and MET4RES,MET4SHORT | 
 |  labels MET4RES,MET4SHORT | 
 |  | 
 |  layer m4fill MET4FILL | 
 |  labels MET4FILL | 
 |  | 
 |  layer m5 MET5,MET5TXT,MET5PIN | 
 |  and-not MET5RES,MET5SHORT | 
 |  labels MET5 | 
 |  labels MET5TXT port | 
 |  labels MET5PIN port | 
 |  | 
 |  layer rm5 MET5 | 
 |  and MET5RES,MET5SHORT | 
 |  labels MET5RES,MET5SHORT | 
 |  | 
 |  layer m5fill MET5FILL | 
 |  labels MET5FILL | 
 |  | 
 |  templayer via4base VIA4 | 
 |  and-not CAPM2 | 
 |  grow 190 | 
 |  | 
 |  layer via4 via4base | 
 |  grow 210 | 
 |  shrink 210 | 
 |  shrink 590 | 
 |  grow 590 | 
 |  or via4base | 
 |  | 
 |  layer metrdl RDL,RDLTXT,RDLPIN | 
 |  labels RDL | 
 |  labels RDLTXT port | 
 |  labels RDLPIN port | 
 |  | 
 |  # Find diffusion not covered in | 
 |  # NPLUS or PPLUS and pull it into | 
 |  # the next layer up | 
 |  | 
 |  templayer gentrans DIFF | 
 |  and-not PPLUS | 
 |  and-not NPLUS | 
 |  and POLY | 
 |  copyup DIFF,POLY | 
 |  | 
 |  templayer gendiff DIFF,TAP | 
 |  and-not PPLUS | 
 |  and-not NPLUS | 
 |  and-not POLY | 
 |  copyup DIFF | 
 |  | 
 |  # Handle contacts found by copyup | 
 |  | 
 |  templayer ndiccopy CONT | 
 |  and LI | 
 |  and DIODE | 
 |  and NPLUS | 
 |  and-not THKOX | 
 |  | 
 |  layer ndic ndiccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or ndiccopy | 
 |  labels CONT | 
 |  | 
 |  templayer mvndiccopy CONT | 
 |  and LI | 
 |  and DIODE | 
 |  and NPLUS | 
 |  and THKOX | 
 |  | 
 |  layer mvndic mvndiccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvndiccopy | 
 |  labels CONT | 
 |  | 
 |  templayer pdiccopy CONT | 
 |  and LI | 
 |  and DIODE | 
 |  and PPLUS | 
 |  and-not THKOX | 
 |  | 
 |  layer pdic pdiccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or pdiccopy | 
 |  labels CONT | 
 |  | 
 |  templayer mvpdiccopy CONT | 
 |  and LI | 
 |  and DIODE | 
 |  and PPLUS | 
 |  and THKOX | 
 |  | 
 |  layer mvpdic mvpdiccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvpdiccopy | 
 |  labels CONT | 
 |  | 
 |  templayer ndccopy CONT | 
 |  and ndifcheck | 
 |  | 
 |  layer ndc ndccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or ndccopy | 
 |  labels CONT | 
 |  | 
 |  templayer mvndccopy CONT | 
 |  and mvndifcheck | 
 |  | 
 |  layer mvndc mvndccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvndccopy | 
 |  labels CONT | 
 |  | 
 |  templayer pdccopy CONT | 
 |  and pdifcheck | 
 |  | 
 |  layer pdc pdccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or pdccopy | 
 |  labels CONT | 
 |  | 
 |  templayer mvpdccopy CONT | 
 |  and mvpdifcheck | 
 |  | 
 |  layer mvpdc mvpdccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvpdccopy | 
 |  labels CONT | 
 |  | 
 |  templayer pccopy CONT | 
 |  and polycheck | 
 |  | 
 |  layer pc pccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or pccopy | 
 |  labels CONT | 
 |  | 
 |  templayer nsccopy CONT | 
 |  and nsubcheck | 
 |  | 
 |  layer nsc nsccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or nsccopy | 
 |  labels CONT | 
 |  | 
 |  templayer mvnsccopy CONT | 
 |  and mvnsubcheck | 
 |  | 
 |  layer mvnsc mvnsccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvnsccopy | 
 |  labels CONT | 
 |  | 
 |  templayer psccopy CONT | 
 |  and psubcheck | 
 |  | 
 |  layer psc psccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or psccopy | 
 |  labels CONT | 
 |  | 
 |  templayer mvpsccopy CONT | 
 |  and mvpsubcheck | 
 |  | 
 |  layer mvpsc mvpsccopy | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvpsccopy | 
 |  labels CONT | 
 |  | 
 |  # Find contacts not covered in | 
 |  # metal and pull them into the | 
 |  # next layer up | 
 |   | 
 |  templayer gencont CONT | 
 |  and LI | 
 |  and-not DIFF,TAP | 
 |  and-not POLY | 
 |  and-not DIODE | 
 |  and-not nsubcheck | 
 |  and-not psubcheck | 
 |  and-not mvnsubcheck | 
 |  and-not mvpsubcheck | 
 |  copyup CONT,LI | 
 |  | 
 |  templayer barecont CONT | 
 |  and-not LI | 
 |  and-not nsubcheck | 
 |  and-not psubcheck | 
 |  and-not mvnsubcheck | 
 |  and-not mvpsubcheck | 
 |  copyup CONT | 
 |  | 
 |  layer glass GLASS,PADTXT,PADPIN | 
 |  labels GLASS | 
 |  labels PADTXT port | 
 |  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 | 
 |  # HVTR | 
 |  calma HVTR 18 20 | 
 |  # 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 44 | 
 |  # Capacitor ID | 
 |  calma CAPID 82 64 | 
 |  # Core area ID mark | 
 |  calma COREID 81 2 | 
 |  # Standard cell ID mark | 
 |  calma STDCELL 81 4 | 
 |  # Padframe cell ID mark | 
 |  calma PADCELL 81 3 | 
 |  # Seal ring ID mark | 
 |  calma SEALID 81 1 | 
 |  # Low tap density ID mark | 
 |  calma LOWTAPDENSITY 81 14 | 
 |   | 
 |  # LICON | 
 |  calma CONT 66 44 | 
 |  calma LI   67 20 | 
 |  calma MCON 67 44 | 
 |  | 
 |  calma MET1 68 20 | 
 |  calma VIA1 68 44 | 
 |  calma MET2 69 20 | 
 |  calma VIA2 69 44 | 
 |  calma MET3 70 20 | 
 |  calma VIA3 70 44 | 
 |  calma MET4 71 20 | 
 |  calma VIA4 71 44 | 
 |  calma MET5 72 20 | 
 |  calma RDL 74 20 | 
 |  calma GLASS 76 20 | 
 |  | 
 |  calma SUBPIN  64 59 | 
 |  calma PADPIN  76 5 | 
 |  calma DIFFPIN 65 6 | 
 |  calma TAPPIN  65 5 | 
 |  calma WELLPIN  64 5 | 
 |  calma LIPIN 67 5 | 
 |  calma POLYPIN 66 5 | 
 |  calma MET1PIN 68 5 | 
 |  calma MET2PIN 69 5 | 
 |  calma MET3PIN 70 5 | 
 |  calma MET4PIN 71 5 | 
 |  calma MET5PIN 72 5 | 
 |  calma RDLPIN 74 5 | 
 |  | 
 |  calma LIRES 67 13 | 
 |  calma MET1RES 68 13 | 
 |  calma MET2RES 69 13 | 
 |  calma MET3RES 70 13 | 
 |  calma MET4RES 71 13 | 
 |  calma MET5RES 72 13 | 
 |  | 
 |  calma MET1FILL 68 28 | 
 |  calma MET2FILL 69 28 | 
 |  calma MET3FILL 70 28 | 
 |  calma MET4FILL 71 28 | 
 |  calma MET5FILL 72 28 | 
 |  | 
 |  calma POLYSHORT 66 15 | 
 |  calma LISHORT 67 15 | 
 |  calma MET1SHORT 68 15 | 
 |  calma MET2SHORT 69 15 | 
 |  calma MET3SHORT 70 15 | 
 |  calma MET4SHORT 71 15 | 
 |  calma MET5SHORT 72 15 | 
 |  | 
 |  calma SUBTXT 122 16 | 
 |  calma PADTXT 76 16 | 
 |  calma DIFFTXT 65 16 | 
 |  calma POLYTXT 66 16 | 
 |  calma WELLTXT 64 16 | 
 |  calma LITXT 67 16 | 
 |  calma MET1TXT 68 16 | 
 |  calma MET2TXT 69 16 | 
 |  calma MET3TXT 70 16 | 
 |  calma MET4TXT 71 16 | 
 |  calma MET5TXT 72 16 | 
 |  calma RDLPIN 74 16 | 
 |  | 
 |  calma BOUND 235 4 | 
 |  | 
 |  calma LVSTEXT 83 44 | 
 |  | 
 |  calma CAPM 89 44 | 
 |  calma CAPM2 97 44 | 
 |  | 
 |  calma FILLOBSM1  62  24 | 
 |  calma FILLOBSM2  105 52 | 
 |  calma FILLOBSM3  107 24 | 
 |  calma FILLOBSM4  112 4 | 
 |  | 
 | style  waffleimport | 
 |  # This style is for reading back and validating shapes | 
 |  # generated by the "wafflefill" cifoutput style. | 
 |  | 
 |  scalefactor 10 nanometers | 
 |  gridlimit 5 | 
 |  | 
 |  options ignore-unknown-layer-labels no-reconnect-labels | 
 |  | 
 |  layer	ndiff  FOMMASK | 
 |  layer	poly   POLYMASK | 
 |  layer	metal1 MET1MASK | 
 |  layer	metal2 MET2MASK | 
 |  layer	metal3 MET3MASK | 
 |  layer	metal4 MET4MASK | 
 |  layer	metal5 MET5MASK | 
 |  | 
 |  calma  FOMMASK  23 0 | 
 |  calma 	POLYMASK 28 0 | 
 |  calma 	MET1MASK 36 0 | 
 |  calma 	MET2MASK 41 0 | 
 |  calma 	MET3MASK 34 0 | 
 |  calma 	MET4MASK 51 0 | 
 |  calma 	MET5MASK 59 0 | 
 |  | 
 | style  rdlimport | 
 |  # This style is for reading shapes generated with the RDL layers | 
 |  | 
 |  scalefactor 10 nanometers | 
 |  gridlimit 5 | 
 |  | 
 |  options ignore-unknown-layer-labels no-reconnect-labels | 
 |  | 
 |  layer mrdl RDL | 
 |  layer mrdlc RDLC | 
 |  | 
 |  calma RDL 10 0 | 
 |  calma RDLC 20 0 | 
 |  | 
 | 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)" | 
 |  | 
 |  variants (full) | 
 |  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)" | 
 |  | 
 |  cifmaxwidth pdiff_crosses_dnwell 0 bend_illegal \ | 
 | 	"P+ diff cannot straddle Deep N-well (dnwell.5)" | 
 |  variants (fast),(full) | 
 |  | 
 | #----------------------------- | 
 | # NWELL | 
 | #----------------------------- | 
 |  | 
 |  width allnwell 840 "N-well width < %d (nwell.1)" | 
 |  spacing allnwell allnwell 1270 touching_ok "N-well spacing < %d (nwell.2a)" | 
 |  | 
 |  variants (full) | 
 |  cifmaxwidth nwell_missing_tap 0 bend_illegal \ | 
 | 	"All nwells must contain metal-connected N+ taps (nwell.4)" | 
 |  | 
 |  cifspacing mvnwell lvnwell 2000 touching_illegal \ | 
 | 	"Spacing of HV nwell to LV nwell < 2.0um (nwell.8)" | 
 |  cifspacing mvnwell mvnwell 2000 touching_ok \ | 
 | 	"Spacing of HV nwell to HV nwell < 2.0um (nwell.8)" | 
 |  variants (fast),(full) | 
 |  | 
 | #----------------------------- | 
 | # DIFF | 
 | #----------------------------- | 
 |  | 
 |  width *ndiff,nfet,scnfet,npd,npass,*nsd,*ndiode,ndiffres,*pdiff,pfet,scpfet,scpfethvt,ppu,*psd,*pdiode,pdiffres \ | 
 | 	150 "Diffusion width < %d (diff/tap.1)" | 
 |  width *mvndiff,mvnfet,mvnnfet,*mvndiode,*nndiode,mvndiffres,*mvpdiff,mvpfet,*mvpdiode,mvpdiffres 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)" | 
 |  | 
 | variants (full) | 
 |  cifspacing allmvdiffnowell lvnwell 825 touching_illegal \ | 
 | 	"MV diffusion to LV nwell spacing < %d (hvi.5 + nsd/psd.5)" | 
 | variants (fast),(full) | 
 |  | 
 |  spacing allnfets allpactivenonfet 270 touching_illegal \ | 
 | 	"nFET cannot abut P-diffusion (diff/tap.3)" | 
 |  spacing allpfets allnactivenonfet 270 touching_illegal \ | 
 | 	"pFET cannot abut N-diffusion (diff/tap.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 (psd.5b)" | 
 |  edge4way (*ndiff)/a ~(*ndiff,*psd)/a 125 ~(*psd)/a (*psd)/a 125 \ | 
 | 	"N-Diffusion to P-tap spacing < %d across butted junction (psd.5a)" | 
 |  edge4way (*nsd)/a ~(*pdiff,*nsd)/a 125 ~(*pdiff)/a (*pdiff)/a 125 \ | 
 | 	"P-Diffusion to N-tap spacing < %d across butted junction (nsd.5b)" | 
 |  edge4way (*pdiff)/a ~(*pdiff,*nsd)/a 125 ~(*nsd)/a (*nsd)/a 125 \ | 
 | 	"P-Diffusion to N-tap spacing < %d across butted junction (nsd.5a)" | 
 |  | 
 |  edge4way (*mvpsd)/a ~(*mvndiff,*mvpsd)/a 125 ~(*mvndiff)/a (*mvndiff)/a 125 \ | 
 | 	"MV N-Diffusion to MV P-tap spacing < %d across butted junction (psd.5b)" | 
 |  edge4way (*mvndiff)/a ~(*mvndiff,*mvpsd)/a 125 ~(*mvpsd)/a (*mvpsd)/a 125 \ | 
 | 	"MV N-Diffusion to MV P-tap spacing < %d across butted junction (psd.5a)" | 
 |  edge4way (*mvnsd)/a ~(*mvpdiff,*mvnsd)/a 125 ~(*mvpdiff)/a (*mvpdiff)/a 125 \ | 
 | 	"MV P-Diffusion to MV N-tap spacing < %d across butted junction (nsd.5b)" | 
 |  edge4way (*mvpdiff)/a ~(*mvpdiff,*mvnsd)/a 125 ~(*mvnsd)/a (*mvnsd)/a 125 \ | 
 | 	"MV P-Diffusion to MV N-tap spacing < %d across butted junction (nsd.5a)" | 
 |  | 
 |  # Sandwiched butting junction restrictions | 
 |  edge4way (*pdiff)/a (*nsd)/a 400 ~(*pdiff)/a 0 0 "NSDM width < %d (diff/tap.5)" | 
 |  edge4way (*ndiff)/a (*psd)/a 400 ~(*ndiff)/a 0 0 "PSDM width < %d (diff/tap.5)" | 
 |  | 
 |  area  *nsd,*mvnsd 70110 150 "N-tap minimum area < 0.07011um^2 (nsd.10b)" | 
 |  area  *psd,*mvpsd 70110 150 "P-tap minimum area < 0.07011um^2 (psd.10b)" | 
 |  | 
 |  angles allactive 90 "Only 90 degree angles permitted on diff and tap (x.2)" | 
 |  | 
 |  variants (full) | 
 |  cifmaxwidth tap_missing_licon 0 bend_illegal "All taps must be contacted (licon.16)" | 
 |  | 
 |  # 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 (fast),(full) | 
 |  | 
 | #----------------------------- | 
 | # POLY | 
 | #----------------------------- | 
 |  | 
 |  width allpoly 150 "poly width < %d (poly.1a)" | 
 |  spacing allpoly allpoly 210 touching_ok "poly spacing < %d (poly.2)" | 
 |  | 
 |  spacing allpolynonfet \ | 
 | 	*ndiff,*mvndiff,*ndiode,*nndiode,ndiffres,*ndiodelvt,*pdiff,*mvpdiff,*pdiode,pdiffres,*pdiodelvt,*pdiodehvt \ | 
 | 	75 corner_ok allfets \ | 
 | 	"poly spacing to Diffusion < %d (poly.4)" | 
 |  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 nFET < %d (poly.7)" | 
 |  overhang *mvndiff,mvrndiff mvnfet,mvnnfet 250 \ | 
 | 	"N-Diffusion overhang of nFET < %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 allfetsstd,allfetsspecial 130 "poly overhang of transistor < %d (poly.8)" | 
 |  overhang *poly allfetscore 110 "poly overhang of SRAM core 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,xpc xhrpoly,uhrpoly,xpc 1240 touching_illegal \ | 
 | 	"Distance between precision resistors < %d (rpm.2 + 2 * rpm.3)" | 
 |  | 
 |  spacing xhrpoly,uhrpoly,xpc allndifflv,allndiffmv 780 touching_illegal \ | 
 | 	"Distance from precision resistor to N+ diffusion < %d (rpm.3 + rpm.6 + nsd.5a)" | 
 |  spacing xhrpoly,uhrpoly,xpc *poly 400 touching_illegal \ | 
 | 	"Distance from precision resistor to unrelated poly < %d (rpm.3 + rpm.7)" | 
 |  spacing xhrpoly,uhrpoly,xpc allndiffmvnontap 830 touching_illegal \ | 
 | 	"Distance from precision resistor to MV N+ diffusion < %d (rpm.3 + rpm.9)" | 
 |  | 
 |  angles allpoly 90 "Only 90 degree angles permitted on poly (x.2)" | 
 |  | 
 | #-------------------------------------------------------------------- | 
 | # HVTP | 
 | #-------------------------------------------------------------------- | 
 |  | 
 |  spacing pfethvt,pdiodehvt,varactorhvt pfet,ppu,scpfet,mvpfet,pfetlvt,pfetmvt \ | 
 | 		360 touching_illegal \ | 
 | 		"Min. spacing between pFET and HVTP < %d (hvtp.4)" | 
 |  | 
 |  spacing pfethvt,pdiodehvt,varactorhvt varactor 360 touching_illegal \ | 
 | 		"Min. spacing between varactor and HVTP < %d (hvtp.4 + varac.3)" | 
 |  | 
 | #-------------------------------------------------------------------- | 
 | # LVTN | 
 | #-------------------------------------------------------------------- | 
 |  | 
 |  spacing pfetlvt,nfetlvt,pdiodelvt,ndiodelvt \ | 
 | 		allfetsnolvt 360 touching_illegal \ | 
 | 		"Min. spacing between FET and LVTN < %d (lvtn.3a)" | 
 |  | 
 |  spacing pfetlvt,nfetlvt,pdiodelvt,ndiodelvt scpfethvt,pfethvt,pdiodehvt,varactorhvt \ | 
 | 		740 touching_illegal \ | 
 | 		"Min. spacing between LVTN and HVTP < %d (lvtn.9)" | 
 |  | 
 |  # Spacing across S/D direction requires edge rule | 
 |  edge4way allfetsnolvt allactivenonfet 415 \ | 
 | 	~(pfetlvt,nfetlvt,pdiodelvt,ndiodelvt)/a allfetsnolvt 415 \ | 
 | 	"Min. spacing between FET and LVTN in S/D direction < %d (lvtn.3b)" | 
 |  | 
 | #-------------------------------------------------------------------- | 
 | # 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)" | 
 |  area  xpc/li  700000 350 "poly resistor contact length < 2.0um (licon.1c)" | 
 |  area allli,*obsli 56100 170 "Local interconnect minimum area < %a (li.6)" | 
 |  | 
 |  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 allpdifflv,allpdiffmv 235 touching_illegal \ | 
 | 	"poly contact spacing to P-diffusion < %d (licon.9 + psdm.5a)" | 
 |  | 
 |  spacing ndc,pdc nfet,nfetlvt,pfet,pfethvt,pfetlvt,pfetmvt 55 touching_illegal \ | 
 | 	"Diffusion contact to gate < %d (licon.11)" | 
 |  spacing ndc,pdc scnfet,scpfet,scpfethvt 50 touching_illegal \ | 
 | 	"Diffusion contact to standard cell gate < %d (licon.11)" | 
 |  spacing ndc,pdc npd,npass,ppu 40 touching_illegal \ | 
 | 	"Diffusion contact to SRAM gate < %d (licon.11)" | 
 |  spacing mvndc,mvpdc mvnfet,mvnnfet,mvpfet 55 touching_illegal \ | 
 | 	"Diffusion contact to gate < %d (licon.11)" | 
 |  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,rnd 40 absence_illegal \ | 
 | 	"N-diffusion overlap of N-diffusion contact < %d (licon.5a)" | 
 |  surround pdc/a *pdiff,pfet,scpfet,scpfethvt,ppu,pfethvt,pfetmvt,pfetlvt,rpd \ | 
 | 	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)" | 
 |  | 
 |  spacing psc/a allnactivenontap 60 touching_illegal \ | 
 | 	"Min. space between P-tap contact and butting N diffusion < %d (licon.5b)" | 
 |  spacing nsc/a allpactivenontap 60 touching_illegal \ | 
 | 	"Min. space between N-tap contact and butting P diffusion < %d (licon.5b)" | 
 |  | 
 |  surround ndc/a *ndiff,nfet,scnfet,npd,npass,nfetlvt,rnd 60 directional \ | 
 | 	"N-diffusion overlap of N-diffusion contact < %d in one direction (licon.5c)" | 
 |  surround pdc/a *pdiff,pfet,scpfet,scpfethvt,ppu,pfethvt,pfetmvt,pfetlvt,rpd \ | 
 | 	 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,mvrnd 40 absence_illegal \ | 
 | 	"N-diffusion overlap of N-diffusion contact < %d (licon.5a)" | 
 |  surround mvpdc/a *mvpdiff,mvpfet,mvrpd 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)" | 
 |  | 
 |  spacing mvpsc/a allndiffmvnontap 60 touching_illegal \ | 
 | 	"Min. space between P-tap contact and butting N diffusion < %d (licon.5b)" | 
 |  spacing mvnsc/a allpdiffmvnontap 60 touching_illegal \ | 
 | 	"Min. space between N-tap contact and butting P diffusion < %d (licon.5b)" | 
 |  | 
 |  surround mvndc/a *mvndiff,mvnfet,mvrnd 60 directional \ | 
 | 	"N-diffusion overlap of N-diffusion contact < %d in one direction (licon.5c)" | 
 |  surround mvpdc/a *mvpdiff,mvpfet,mvrpd 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 (allcont)/a | 
 |  | 
 | #------------------------------------------------------------- | 
 | # LI - Local interconnect layer | 
 | #------------------------------------------------------------- | 
 |  | 
 | variants * | 
 |  | 
 |  width *li 170 "Local interconnect width < %d (li.1)" | 
 |  width rli 290 "Local interconnect width < %d (li.7)" | 
 |  | 
 |  spacing *locali,rli *locali,rli,*obsli 170 touching_ok  \ | 
 | 	"Local interconnect spacing < %d (li.3)" | 
 |  | 
 |  # Local interconnect in core (SRAM) cells has more relaxed rules.  There are | 
 |  # no special layers for the contacts in core cells, so they must be included | 
 |  # in the rule. | 
 |  width coreli,pc,ndc,nsc,pdc,psc,allli,*obsli 140 \ | 
 | 	"Core local interconnect width < %d (li.c1)" | 
 |  | 
 |  spacing coreli,pc,ndc,nsc,pdc,psc,lic allli,*obsli 140 touching_ok \ | 
 | 	"Core local interconnect spacing < %d (li.c2)" | 
 |  | 
 |  surround pc/li *li,coreli 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,coreli 80 directional \ | 
 | 	"Local interconnect overlap of diffusion contact < %d in one direction (li.5)" | 
 |  | 
 |  area allli,*obsli,coreli 56100 170 "Local interconnect minimum area < %a (li.6)" | 
 |  | 
 |  angles *locali,rli 90 "Only 90 degree angles permitted on local interconnect (x.2)" | 
 |  angles coreli 45 \ | 
 | 	"Only 45 degree angles permitted on local interconnect in SRAM cell (x.2)" | 
 |  | 
 | #------------------------------------------------------------- | 
 | # MCON - Contact between local interconnect and metal1 | 
 | #------------------------------------------------------------- | 
 |  | 
 |  width lic/m1 170 "mcon.width < %d (mcon.1)" | 
 |  spacing lic/m1 lic/m1,obslic/m1 190 touching_ok "mcon.spacing < %d (mcon.2)" | 
 |  | 
 |  exact_overlap lic/li | 
 |  | 
 | #------------------------------------------------------------- | 
 | # 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)" | 
 |  | 
 |  angles allm1 45 "Only 45 and 90 degree angles permitted on metal1 (x.3a)" | 
 |  | 
 | variants (fast),(full) | 
 |  widespacing allm1 3000 allm1,*obsm1 280 touching_ok \ | 
 | 	"Metal1 > 3um spacing to unrelated m1 < %d (met1.3b)" | 
 |  widespacing *obsm1 3000 allm1 280 touching_ok \ | 
 | 	"Metal1 > 3um spacing to unrelated m1 < %d (met1.3b)" | 
 |  | 
 | variants (full) | 
 |  cifmaxwidth m1_hole_empty 0 bend_illegal \ | 
 | 	"Min area of metal1 holes > 0.14um^2 (met1.7)" | 
 |  | 
 |  cifspacing m1_large_halo m1_large_halo 280 touching_ok \ | 
 | 	"Spacing of metal1 features attached to and within 0.28um of large metal1 < %d (met1.3a)" | 
 | 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/m1 | 
 |  | 
 | #-------------------------------------------------- | 
 | # 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)" | 
 |  | 
 |  angles allm2 45 "Only 45 and 90 degree angles permitted on metal2 (x.3a)" | 
 |  | 
 | variants (fast),(full) | 
 |  widespacing allm2 3000 allm2,obsm2  280 touching_ok \ | 
 | 	"Metal2 > 3um spacing to unrelated m2 < %d (met2.3b)" | 
 |  widespacing obsm2 3000 allm2  280 touching_ok \ | 
 | 	"Metal2 > 3um spacing to unrelated m2 < %d (met2.3b)" | 
 |  | 
 | variants (full) | 
 |  cifmaxwidth m2_hole_empty 0 bend_illegal \ | 
 | 	"Min area of metal2 holes > 0.14um^2 (met2.7)" | 
 |  | 
 |  cifspacing m2_large_halo m2_large_halo 280 touching_ok \ | 
 | 	"Spacing of metal2 features attached to and within 0.28um of large metal2 < %d (met2.3a)" | 
 | 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)" | 
 |  | 
 |  angles allm3 45 "Only 45 and 90 degree angles permitted on metal3 (x.3a)" | 
 |  | 
 | 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 (full) | 
 |  cifspacing m3_large_halo m3_large_halo 400 touching_ok \ | 
 | 	"Spacing of metal3 features attached to and within 0.40um of large metal3 < %d (met3.3c)" | 
 | variants * | 
 |  | 
 |  | 
 | #-------------------------------------------------- | 
 | # 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)" | 
 |  | 
 |  angles allm4 45 "Only 45 and 90 degree angles permitted on metal4 (x.3a)" | 
 |  | 
 | variants (fast),(full) | 
 |  widespacing allm4 3000 allm4,obsm4  400 touching_ok \ | 
 | 	"Metal4 > 3um spacing to unrelated m4 < %d (met4.5b)" | 
 |  widespacing obsm4 3000 allm4  400 touching_ok \ | 
 | 	"Metal4 > 3um spacing to unrelated m4 < %d (met4.5b)" | 
 | variants (full) | 
 |  cifspacing m4_large_halo m4_large_halo 400 touching_ok \ | 
 | 	"Spacing of metal4 features attached to and within 0.40um of large metal4 < %d (met4.5a)" | 
 | 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)" | 
 |  | 
 |  angles allm5 45 "Only 45 and 90 degree angles permitted on metal5 (x.3a)" | 
 |  | 
 |  | 
 |  | 
 | 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 (fast),(full) | 
 |  | 
 |  | 
 | #-------------------------------------------------- | 
 | # NMOS, PMOS | 
 | #-------------------------------------------------- | 
 |  | 
 |  edge4way *poly allfetsstd 420 allfets 0 0 \ | 
 | 	"Transistor width < %d (diff/tap.2)" | 
 |  edge4way *poly allfetsspecial 360 allfets 0 0 \ | 
 | 	"Transistor in standard cell width < %d (diff/tap.2)" | 
 |  edge4way *poly npass,npd,nsonos 210 allfets 0 0 \ | 
 | 	"N-Transistor in SRAM core width < %d (diff/tap.2)" | 
 |  edge4way *poly ppu 140 allfets 0 0 \ | 
 | 	"P-Transistor in SRAM core 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 allpolynonfet *nsd 55 corner_ok varactor \ | 
 | 	"poly spacing to diffusion tap < %d (poly.5)" | 
 |  spacing allpolynonfet *mvnsd 55 corner_ok mvvaractor \ | 
 | 	"poly spacing to diffusion tap < %d (poly.5)" | 
 |  | 
 |  edge4way *psd *ndiff 300 ~(nfet,npass,npd,scnfet,nfetlvt,nsonos)/a *psd 300 \ | 
 | 	"Butting P-tap spacing to NMOS gate < %d (poly.6)" | 
 |  edge4way *nsd *pdiff 300 ~(pfet,ppu,scpfet,scpfethvt,pfetlvt,pfetmvt)/a *nsd 300 \ | 
 | 	"Butting N-tap spacing to PMOS gate < %d (poly.6)" | 
 |  edge4way *mvpsd *mvndiff 300 ~(mvnfet,mvnnfet)/a *mvpsd 300 \ | 
 | 	"Butting MV P-tap spacing to MV NMOS gate < %d (poly.6)" | 
 |  edge4way *mvnsd *mvpdiff 300 ~mvpfet/a *mvnsd 300 \ | 
 | 	"Butting MV N-tap spacing to MV PMOS gate < %d (poly.6)" | 
 |  | 
 |  # No LV FETs in HV diff | 
 |  spacing pfet,scpfet,scpfethvt,ppu,pfetlvt,pfetmvt,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) | 
 | # uhrpoly (P+ poly resistor, 2kOhm/sq) | 
 | #-------------------------------------------------- | 
 |  | 
 |   # NOTE: u/xhrpoly resistor requires discrete widths 0.35, 0.69, ... up to 1.27. | 
 |   width xhrpoly 350 "xhrpoly resistor width < %d (P+ poly.1a)" | 
 |   width uhrpoly 350 "uhrpoly resistor width < %d (P+ poly.1a)" | 
 |  | 
 |   spacing xhrpoly,uhrpoly,xpc alldiff 480 touching_illegal \ | 
 | 	"xhrpoly/uhrpoly resistor spacing to diffusion < %d (poly.9)" | 
 |  | 
 |   spacing mrp1,xhrpoly,uhrpoly,xpc allfets 480 touching_illegal \ | 
 | 	"Poly resistor spacing to poly < %d (poly.9)" | 
 |  | 
 |   spacing xhrpoly,uhrpoly,xpc *poly 480 touching_illegal \ | 
 | 	"Poly resistor spacing to poly < %d (poly.9)" | 
 |  | 
 |   spacing mrp1 *poly 480 touching_ok \ | 
 | 	"Poly resistor spacing to poly < %d (poly.9)" | 
 |  | 
 |   spacing mrp1,xhrpoly,uhrpoly,xpc alldiff 480 touching_illegal \ | 
 | 	"Poly resistor spacing to diffusion < %d (poly.9)" | 
 |  | 
 | #------------------------------------ | 
 | # nsonos | 
 | #------------------------------------ | 
 |  | 
 | variants (full) | 
 |   cifmaxwidth bbox_missing 0 bend_illegal \ | 
 | 	"SONOS transistor must be in cell with abutment box (tunm.8)" | 
 | variants (fast),(full) | 
 |  | 
 | #------------------------------------ | 
 | # 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)" | 
 |  | 
 | variants (full) | 
 |  cifmaxwidth var_poly_no_nwell 0 bend_illegal \ | 
 | 	"N-well overlap of varactor poly < 0.15um (varac.5)" | 
 |  | 
 |  cifmaxwidth pdiff_in_varactor_well 0 bend_illegal \ | 
 | 	"Varactor N-well must not contain P+ diffusion (varac.7)" | 
 | variants (fast),(full) | 
 |  | 
 | #----------------------------------------------------------- | 
 | # MiM CAP (CAPM) -  | 
 | #----------------------------------------------------------- | 
 |  | 
 |  width *mimcap 1000 "MiM cap width < %d (capm.1)" | 
 |  spacing *mimcap *mimcap 840 touching_ok "MiM cap spacing < %d (capm.2a)" | 
 |  spacing *mimcap via3/m3 80 touching_illegal \ | 
 | 	"MiM cap spacing to via3 < %d (capm.5 - via3.4)" | 
 |  surround *mimcc *mimcap 80 absence_illegal \ | 
 | 	"MiM cap must surround MiM cap contact by %d (capm.4 - via3.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 100 touching_illegal \ | 
 | 	"MiM cap spacing to via2 < %d (capm.8 - via2.4)" | 
 |  spacing *mimcap *metal3/m3 500 surround_ok \ | 
 | 	"MiM cap spacing to unrelated metal3 < %d (capm.11)" | 
 |  | 
 | variants (full) | 
 |  cifspacing mim_bottom mim_bottom 1200 touching_ok \ | 
 | 	 "MiM cap bottom plate spacing < %d (capm.2b)" | 
 | variants (fast),(full) | 
 |  | 
 |  # MiM cap contact rules (VIA3) | 
 |  | 
 |  width mimcc/c1 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/c1 | 
 |  | 
 |  width *mimcap2 1000 "MiM2 cap width < %d (cap2m.1)" | 
 |  spacing *mimcap2 *mimcap2 840 touching_ok "MiM2 cap spacing < %d (cap2m.2a)" | 
 |  spacing *mimcap2 via4/m4 10 touching_illegal \ | 
 | 	"MiM2 cap spacing to via4 < %d (cap2m.5 - via4.4)" | 
 |  surround *mim2cc *mimcap2 10 absence_illegal \ | 
 | 	"MiM2 cap must surround MiM cap 2 contact by %d (cap2m.4 - via4.4)" | 
 |  rect_only *mimcap2 "MiM2 cap must be rectangular (cap2m.7) | 
 |  | 
 |  surround *mimcap2 *metal4/m4 140 absence_illegal \ | 
 | 	"Metal4 must surround MiM2 cap by %d (cap2m.3)" | 
 |  spacing via3,mimcc *mimcap2 80 touching_illegal \ | 
 | 	"MiM2 cap spacing to via3 < %d (cap2m.8 - via3.4)" | 
 |  spacing *mimcap2 *metal4/m4 500 surround_ok \ | 
 | 	"MiM2 cap spacing to unrelated metal4 < %d (cap2m.11)" | 
 |  | 
 | variants (full) | 
 |  cifspacing mim2_bottom mim2_bottom 1200 touching_ok \ | 
 |  	"MiM2 cap bottom plate spacing < %d (cap2m.2b)" | 
 | variants (fast),(full) | 
 |  | 
 |  # MiM cap contact rules (VIA4) | 
 |  | 
 |  width mim2cc/c2 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/c2 | 
 |  | 
 |  | 
 | #---------------------------- | 
 | # HVNTM | 
 | #---------------------------- | 
 | variants (full) | 
 |  cifspacing hvntm_generate hvntm_generate 700 touching_ok \ | 
 |  	"HVNTM spacing < %d (hvntm.2)" | 
 | variants (fast),(full) | 
 |  | 
 | #---------------------------- | 
 | # 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 | 
 |  routing m4	met4 MET4 m4 | 
 |  routing m5	met5 MET5 m5 | 
 |  routing mrdl	met6 MET6 m6 MRDL METRDL | 
 |  | 
 |  cut lic  mcon MCON Mcon | 
 |  cut m2c  via via1 VIA VIA1 cont2 via12 | 
 |  cut m3c  via2 VIA2 cont3 via23 | 
 |  cut via3 via3 VIA3 cont4 via34 | 
 |  cut via4 via4 VIA4 cont5 via45 | 
 |  | 
 |  obs obsli   li1 | 
 |  obs obsm1   met1 | 
 |  obs obsm2   met2 | 
 |  obs obsm3   met3 | 
 |  | 
 |  obs obsm4   met4 | 
 |  obs obsm5   met5 | 
 |  obs obsmrdl met6 | 
 |  | 
 |  # NOTE: obslic only used with li1, not obsli. | 
 |  obs obslic mcon | 
 |  | 
 |  # Vias on obstruction layers should be ignored, so cast to obstruction metal. | 
 |  obs obsm1   via | 
 |  obs obsm2   via2 | 
 |  obs obsm3   via3 | 
 |  obs obsm4   via4 | 
 |  | 
 | end | 
 |  | 
 | #----------------------------------------------------- | 
 | # Device and Parasitic extraction | 
 | #----------------------------------------------------- | 
 |  | 
 |  | 
 | extract | 
 |  style ngspice variants (),(orig),(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 (),(orig) | 
 |  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 | 
 |  planeorder metal4 	7 | 
 |  planeorder metal5 	8 | 
 |  planeorder metali	9 | 
 |  planeorder block      10 | 
 |  planeorder comment    11 | 
 |  planeorder cap1       12 | 
 |  planeorder cap2       13 | 
 |  | 
 |  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 | 
 |  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 | 
 |  height mrdlc	     6.6311 5.2523 | 
 |  height mrdl	    11.8834 4.0 | 
 |  | 
 |  # 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 | 
 |  antenna m4,m5 sidewall 400 2600 400 | 
 |  antenna v3,v4 surface 6 0 36 | 
 |  | 
 |  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 | 
 |  resist (allm4)/metal4  	    47 | 
 |  resist (allm5)/metal5  	    29 | 
 |  resist mrdl/metali		     5 | 
 |  | 
 |  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 | 
 |  contact mimcc			  4500 | 
 |  contact mim2cc			  3410 | 
 |  contact via3			  3410 | 
 |  contact via4			   380 | 
 |  contact mrdlc			     6 | 
 |  | 
 | #------------------------------------------------------------------------- | 
 | # 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 | 
 |  | 
 | #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 | 
 |  | 
 |  | 
 | # Devices:  Base models (not subcircuit wrappers) | 
 |  | 
 | variants (),(si) | 
 |  | 
 |  device msubcircuit sky130_fd_pr__pfet_01v8 pfet,scpfet \ | 
 | 	*pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w | 
 |  device msubcircuit sky130_fd_pr__special_pfet_pass ppu \ | 
 | 	*pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w | 
 |  device msubcircuit sky130_fd_pr__pfet_01v8_lvt pfetlvt \ | 
 | 	*pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w | 
 |  device msubcircuit sky130_fd_pr__pfet_01v8_mvt pfetmvt \ | 
 | 	*pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w | 
 |  device msubcircuit sky130_fd_pr__pfet_01v8_hvt pfethvt,scpfethvt \ | 
 | 	*pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w | 
 |  | 
 |  device msubcircuit sky130_fd_pr__nfet_01v8 nfet,scnfet \ | 
 | 	*ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w | 
 |  device msubcircuit sky130_fd_pr__special_nfet_latch npd \ | 
 | 	*ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w | 
 |  device msubcircuit sky130_fd_pr__special_nfet_pass npass \ | 
 | 	*ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w | 
 |  device msubcircuit sky130_fd_pr__nfet_01v8_lvt nfetlvt \ | 
 | 	*ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w | 
 |  device msubcircuit sky130_fd_bs_flash__special_sonosfet_star nsonos \ | 
 | 	*ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w | 
 |  device subcircuit sky130_fd_pr__cap_var_lvt varactor \ | 
 | 	*nndiff nwell error l=l w=w | 
 |  device subcircuit sky130_fd_pr__cap_var_hvt varhvt \ | 
 | 	*nndiff nwell error l=l w=w | 
 |  device subcircuit sky130_fd_pr__cap_var mvvaractor \ | 
 | 	*mvnndiff nwell error l=l w=w | 
 |  | 
 |  # Bipolars | 
 |  device msubcircuit sky130_fd_pr__npn_05v0 npn dnwell *ndiff space/w error a2=area | 
 |  device msubcircuit sky130_fd_pr__pnp_05v0 pnp pwell,space/w *pdiff a2=area | 
 |  device msubcircuit sky130_fd_pr__npn_11v0 npn dnwell *mvndiff space/w error a2=area | 
 |  | 
 |  # Ignore the extended-drain FET geometry that forms part of the high-voltage | 
 |  # bipolar devices. | 
 |  device msubcircuit Ignore mvnfet *mvndiff,mvndiffres dnwell pwell,space/w error +npn,pnp | 
 |  device msubcircuit Ignore mvpfet *mvpdiff,mvpdiffres pwell,space/w nwell error +npn,pnp | 
 |  | 
 |  # Extended drain devices (must appear before the regular devices) | 
 |  device msubcircuit sky130_fd_pr__nfet_20v0_nvt mvnnfet *mvndiff,mvndiffres \ | 
 | 	dnwell pwell,space/w error l=l w=w | 
 |  device msubcircuit sky130_fd_pr__nfet_20v0 mvnfet *mvndiff,mvndiffres \ | 
 | 	dnwell pwell,space/w error l=l w=w | 
 |  device msubcircuit sky130_fd_pr__pfet_20v0 mvpfet *mvpdiff,mvpdiffres \ | 
 | 	pwell,space/w nwell error l=l w=w | 
 |  | 
 |  device msubcircuit sky130_fd_pr__pfet_g5v0d10v5 mvpfet \ | 
 | 	*mvpdiff,mvpdiffres *mvpdiff,mvpdiffres nwell error l=l w=w | 
 |  device msubcircuit sky130_fd_pr__nfet_g5v0d10v5 mvnfet \ | 
 | 	*mvndiff,mvndiffres *mvndiff,mvndiffres pwell,space/w error l=l w=w | 
 |  device msubcircuit sky130_fd_pr__nfet_05v0_nvt mvnnfet \ | 
 | 	*mvndiff,mvndiffres *mvndiff,mvndiffres pwell,space/w error l=l w=w | 
 |  | 
 |  device resistor sky130_fd_pr__res_generic_l1 rli1 *li,coreli | 
 |  device resistor sky130_fd_pr__res_generic_m1 rmetal1 *metal1 | 
 |  device resistor sky130_fd_pr__res_generic_m2 rmetal2 *metal2 | 
 |  device resistor sky130_fd_pr__res_generic_m3 rmetal3 *metal3 | 
 |  device resistor sky130_fd_pr__res_generic_m4 rm4 *m4 | 
 |  device resistor sky130_fd_pr__res_generic_m5 rm5 *m5 | 
 |  | 
 |  device rsubcircuit sky130_fd_pr__res_high_po_0p35 xhrpoly \ | 
 | 	xpc pwell,space/w error +res0p35 l=l | 
 |  device rsubcircuit sky130_fd_pr__res_high_po_0p69  xhrpoly \ | 
 | 	xpc pwell,space/w error +res0p69 l=l | 
 |  device rsubcircuit sky130_fd_pr__res_high_po_1p41  xhrpoly \ | 
 | 	xpc pwell,space/w error +res1p41 l=l | 
 |  device rsubcircuit sky130_fd_pr__res_high_po_2p85  xhrpoly \ | 
 | 	xpc pwell,space/w error +res2p85 l=l | 
 |  device rsubcircuit sky130_fd_pr__res_high_po_5p73  xhrpoly \ | 
 | 	xpc pwell,space/w error +res5p73 l=l | 
 |  device rsubcircuit sky130_fd_pr__res_high_po	    xhrpoly \ | 
 | 	xpc pwell,space/w error l=l w=w | 
 |  device rsubcircuit sky130_fd_pr__res_xhigh_po_0p35  uhrpoly \ | 
 | 	xpc pwell,space/w error +res0p35 l=l | 
 |  device rsubcircuit sky130_fd_pr__res_xhigh_po_0p69  uhrpoly \ | 
 | 	xpc pwell,space/w error +res0p69 l=l | 
 |  device rsubcircuit sky130_fd_pr__res_xhigh_po_1p41  uhrpoly \ | 
 | 	xpc pwell,space/w error +res1p41 l=l | 
 |  device rsubcircuit sky130_fd_pr__res_xhigh_po_2p85  uhrpoly \ | 
 | 	xpc pwell,space/w error +res2p85 l=l | 
 |  device rsubcircuit sky130_fd_pr__res_xhigh_po_5p73  uhrpoly \ | 
 | 	xpc pwell,space/w error +res5p73 l=l | 
 |  device rsubcircuit sky130_fd_pr__res_xhigh_po	     uhrpoly \ | 
 | 	xpc pwell,space/w error l=l w=w | 
 |  | 
 |  device rsubcircuit sky130_fd_pr__res_generic_nd     ndiffres \ | 
 | 	*ndiff pwell,space/w  error l=l w=w | 
 |  device rsubcircuit sky130_fd_pr__res_generic_pd     pdiffres \ | 
 | 	*pdiff nwell    error l=l w=w | 
 |  device rsubcircuit sky130_fd_pr__res_iso_pw   rpw \ | 
 |         pwell dnwell error l=l w=w | 
 |  device rsubcircuit sky130_fd_pr__res_generic_nd__hv  mvndiffres \ | 
 | 	*mvndiff pwell,space/w error l=l w=w | 
 |  device rsubcircuit sky130_fd_pr__res_generic_pd__hv  mvpdiffres \ | 
 | 	*mvpdiff nwell  error l=l w=w | 
 |  | 
 |  device resistor sky130_fd_pr__res_generic_po rmp *poly | 
 |  device resistor sky130_fd_pr__res_generic_po mrp1 *poly | 
 |  | 
 |  device subcircuit  sky130_fd_pr__diode_pd2nw_05v5 *pdiode \ | 
 | 	nwell a=area | 
 |  device subcircuit  sky130_fd_pr__diode_pd2nw_05v5_lvt *pdiodelvt \ | 
 | 	nwell a=area | 
 |  device subcircuit  sky130_fd_pr__diode_pd2nw_05v5_hvt *pdiodehvt \ | 
 | 	nwell a=area | 
 |  device subcircuit  sky130_fd_pr__diode_pd2nw_11v0 *mvpdiode \ | 
 | 	nwell a=area | 
 |  | 
 |  device msubcircuit sky130_fd_pr__diode_pw2nd_05v5 *ndiode \ | 
 | 	pwell,space/w a=area | 
 |  device msubcircuit sky130_fd_pr__diode_pw2nd_05v5_lvt *ndiodelvt \ | 
 | 	pwell,space/w a=area | 
 |  device msubcircuit sky130_fd_pr__diode_pw2nd_05v5_nvt *nndiode \ | 
 | 	pwell,space/w a=area | 
 |  device msubcircuit sky130_fd_pr__diode_pw2nd_11v0 *mvndiode \ | 
 | 	pwell,space/w a=area | 
 |  | 
 |  | 
 |  device csubcircuit sky130_fd_pr__cap_mim_m3_1 *mimcap  *m3 w=w l=l | 
 |  device csubcircuit sky130_fd_pr__cap_mim_m3_2 *mimcap2 *m4 w=w l=l | 
 |  | 
 |  variants (orig) | 
 |  | 
 |  device mosfet sky130_fd_pr__pfet_01v8 scpfet,pfet pdiff,pdiffres,pdc nwell  | 
 |  device mosfet sky130_fd_pr__special_pfet_pass ppu pdiff,pdiffres,pdc nwell  | 
 |  device mosfet sky130_fd_pr__pfet_01v8_lvt pfetlvt pdiff,pdiffres,pdc nwell  | 
 |  device mosfet sky130_fd_pr__pfet_01v8_mvt pfetmvt pdiff,pdiffres,pdc nwell  | 
 |  device mosfet sky130_fd_pr__pfet_01v8_hvt scpfethvt,pfethvt pdiff,pdiffres,pdc nwell  | 
 |  device mosfet sky130_fd_pr__nfet_01v8 scnfet,nfet ndiff,ndiffres,ndc pwell,space/w | 
 |  device mosfet sky130_fd_pr__special_nfet_pass  npass ndiff,ndiffres,ndc pwell,space/w | 
 |  device mosfet sky130_fd_pr__special_nfet_latch npd ndiff,ndiffres,ndc pwell,space/w | 
 |  device mosfet sky130_fd_pr__special_nfet_latch npd ndiff,ndiffres,ndc pwell,space/w | 
 |  device mosfet sky130_fd_pr__nfet_01v8_lvt nfetlvt ndiff,ndiffres,ndc pwell,space/w | 
 |  device mosfet sky130_fd_bs_flash__special_sonosfet_star nsonos ndiff,ndiffres,ndc \ | 
 | 	pwell,space/w | 
 |  | 
 |  # Note that corenvar, corepvar are not considered devices, and extract as | 
 |  # parasitic capacitance instead (but cap values need to be added). | 
 |  | 
 |  # Extended drain devices (must appear before the regular devices) | 
 |  device mosfet sky130_fd_pr__nfet_20v0_nvt mvnnfet *mvndiff,mvndiffres \ | 
 | 	dnwell pwell,space/w error | 
 |  device mosfet sky130_fd_pr__nfet_20v0 mvnfet *mvndiff,mvndiffres \ | 
 | 	dnwell pwell,space/w error | 
 |  device mosfet sky130_fd_pr__pfet_20v0 mvpfet *mvpdiff,mvpdiffres \ | 
 | 	pwell,space/w nwell error | 
 |  | 
 |  device mosfet sky130_fd_pr__pfet_g5v0d10v5 mvpfet mvpdiff,mvpdiffres,mvpdc nwell  | 
 |  device mosfet sky130_fd_pr__nfet_g5v0d10v5 mvnfet mvndiff,mvndiffres,mvndc pwell,space/w | 
 |  device mosfet sky130_fd_pr__nfet_05v0_nvt mvnnfet *mvndiff,mvndiffres pwell,space/w | 
 |  | 
 |  # These devices always extract as subcircuits | 
 |  device subcircuit sky130_fd_pr__cap_var_lvt varactor *nndiff nwell error l=l w=w | 
 |  device subcircuit sky130_fd_pr__cap_var_hvt varhvt *nndiff nwell error l=l w=w | 
 |  device subcircuit sky130_fd_pr__cap_var mvvaractor *mvnndiff nwell error l=l w=w | 
 |  | 
 |  device resistor sky130_fd_pr__res_generic_po rmp     *poly | 
 |  device resistor sky130_fd_pr__res_generic_l1 rli1    *li,coreli | 
 |  device resistor sky130_fd_pr__res_generic_m1 rmetal1 *metal1 | 
 |  device resistor sky130_fd_pr__res_generic_m2 rmetal2 *metal2 | 
 |  device resistor sky130_fd_pr__res_generic_m3 rmetal3 *metal3 | 
 |  device resistor sky130_fd_pr__res_generic_m4 rm4 *m4 | 
 |  device resistor sky130_fd_pr__res_generic_m5 rm5 *m5 | 
 |  | 
 |  device resistor sky130_fd_pr__res_high_po_0p35 xhrpoly xpc +res0p35 | 
 |  device resistor sky130_fd_pr__res_high_po_0p69 xhrpoly xpc +res0p69 | 
 |  device resistor sky130_fd_pr__res_high_po_1p41 xhrpoly xpc +res1p41 | 
 |  device resistor sky130_fd_pr__res_high_po_2p85 xhrpoly xpc +res2p85 | 
 |  device resistor sky130_fd_pr__res_high_po_5p73 xhrpoly xpc +res5p73 | 
 |  device resistor sky130_fd_pr__res_high_po xhrpoly xpc  | 
 |  device resistor sky130_fd_pr__res_xhigh_po_0p35 uhrpoly xpc +res0p35 | 
 |  device resistor sky130_fd_pr__res_xhigh_po_0p69 uhrpoly xpc +res0p69 | 
 |  device resistor sky130_fd_pr__res_xhigh_po_1p41 uhrpoly xpc +res1p41 | 
 |  device resistor sky130_fd_pr__res_xhigh_po_2p85 uhrpoly xpc +res2p85 | 
 |  device resistor sky130_fd_pr__res_xhigh_po_5p73 uhrpoly xpc +res5p73 | 
 |  device resistor sky130_fd_pr__res_xhigh_po uhrpoly xpc  | 
 |  device resistor sky130_fd_pr__res_generic_po  mrp1     *poly  | 
 |  device resistor sky130_fd_pr__res_generic_nd  ndiffres *ndiff  | 
 |  device resistor sky130_fd_pr__res_generic_pd  pdiffres *pdiff  | 
 |  device resistor mrdn_hv   mvndiffres *mvndiff  | 
 |  device resistor mrdp_hv   mvpdiffres *mvpdiff  | 
 |  device resistor sky130_fd_pr__res_iso_pw   rpw    pwell | 
 |  | 
 |  device ndiode sky130_fd_pr__diode_pw2nd_05v5 *ndiode pwell,space/w a=area | 
 |  device ndiode sky130_fd_pr__diode_pw2nd_05v5_lvt *ndiodelvt pwell,space/w a=area | 
 |  device ndiode sky130_fd_pr__diode_pw2nd_05v5_nvt *nndiode pwell,space/w a=area | 
 |  device ndiode sky130_fd_pr__diode_pw2nd_11v0 *mvndiode pwell,space/w a=area | 
 |  | 
 |  device pdiode sky130_fd_pr__diode_pd2nw_05v5 *pdiode nwell a=area | 
 |  device pdiode sky130_fd_pr__diode_pd2nw_05v5_lvt *pdiodelvt nwell a=area | 
 |  device pdiode sky130_fd_pr__diode_pd2nw_05v5_hvt *pdiodehvt nwell a=area | 
 |  device pdiode sky130_fd_pr__diode_pd2nw_11v0 *mvpdiode nwell a=area | 
 |  | 
 |  device bjt sky130_fd_pr__npn_05v5 npn dnwell *ndiff space/w error a2=area | 
 |  device bjt sky130_fd_pr__pnp_05v5 pnp pwell,space/w *pdiff a2=area | 
 |  device bjt sky130_fd_pr__npn_11v0 npn dnwell *mvndiff space/w error a2=area | 
 |  | 
 |  device capacitor sky130_fd_pr__cap_mim_m3_1 *mimcap  *m3 1 | 
 |  device capacitor sky130_fd_pr__cap_mim_m3_2 *mimcap2 *m4 1 | 
 |  | 
 | 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 | 
 |  contact v3  320 m3 0 30 m4  5  5 | 
 |  contact v4 1180 m4 0    m5 120 | 
 |  | 
 |  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 | 
 |  |