| #---------------------------------------------------------- | 
 | # 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 20200508 | 
 |  description "SkyWater SKY130: PRE ALPHA Vendor Open Source rules and DRC" | 
 | end | 
 |  | 
 | #---------------------------------------------------------- | 
 | # Status 7/10/20: Rev 1 (alpha): | 
 | # First public release | 
 | #-------------------------------------------------------------- | 
 |  | 
 | #-------------------------------------------------------------- | 
 | # Supported device types | 
 | #-------------------------------------------------------------- | 
 | # device name   magic ID layer  description | 
 | #------------------------------------------------------------- | 
 | # nshort    nfet        standard nFET | 
 | # nshort    scnfet      standard nFET in standard cell** | 
 | # npd       npd     special nFET in SRAM cell | 
 | # npass     npass       special nFET in SRAM cell | 
 | # nlowvt    nfetlvt     low Vt nFET | 
 | # sonos_p/e nsonos      SONOS nFET | 
 | # pshort    pfet        standard pFET | 
 | # pshort    scpfet      standard pFET in standard cell** | 
 | # ppu       ppu     special pFET in SRAM cell | 
 | # plowvt    pfetlvt     low Vt pFET | 
 | # phighvt   pfethvt     high Vt pFET | 
 | # ntvnative ---     native nFET | 
 | # phv       mvpfet      thickox pFET | 
 | # nhv       mvnfet      thickox nFET | 
 | # nhvnative mvnnfet     thickox native nFET | 
 | # ndiode    ndiode      n+ diff diode | 
 | # ndiode_h  mvndiode    thickox n+ diff diode | 
 | # pdiode    pdiode      p+ diff diode | 
 | # pdiode_h  mvpdiode    thickox p+ diff diode | 
 | # ndiode_native nndiode     diode with nndiff | 
 | # ndiode_lvt    ndiodelvt   low Vt n+ diff diode | 
 | # pdiode_lvt    pdiodelvt   low Vt p+ diff diode | 
 | # pdiode_hvt    pdiodehvt   high Vt p+ diff diode | 
 | # nwdiode   ---     nwell diode | 
 | # dnwdiode_psub ---     deep nwell diode to substrate | 
 | # dnwdiode_pw   ---     deep nwell diode to pwell | 
 | # xcmimc1   mimcap      MiM cap 1st plate | 
 | # xcmimc2   mimcap2     MiM cap 2nd plate | 
 | # mrdn      rdn     n+ diff resistor | 
 | # mrdn_hv   mvrdn       thickox n+ diff resistor | 
 | # mrdp      rdp     p+ diff resistor | 
 | # mrdp_hv   mvrdp       thickox p+ diff resistor | 
 | # mrl1      rli     local interconnect resistor | 
 | # mrp1      npres       n+ poly resistor | 
 | # xhrpoly_* ppres (*)   p+ poly resistor (300 Ohms/sq) | 
 | # uhrpoly_* xres (*)    p+ poly resistor (2k Ohms/sq) | 
 | # xcnwvc    varactor    varactor (low Vt?) | 
 | # xcnwvc2   varactorhvt high Vt varactor | 
 | # xchvnwc   mvvaractor  thickox varactor | 
 | # xpwres    rpw     pwell resistor (in deep nwell) | 
 | # | 
 | # (*) Note that ppres may extract into some generic type | 
 | # called "xhrpoly", but only specific sizes of xhrpoly are | 
 | # allowed, and these are created from fixed layouts like the | 
 | # types below. | 
 | # | 
 | # (**) nFET and pFET in standard cells are the same as devices | 
 | # outside of the standard cell except for the DRC rule for | 
 | # FET to diffusion contact spacing (which is 0.05um, not 0.055um) | 
 | # | 
 | # To avoid creating a large number of types, a few ID layers are | 
 | # used in conjunction with standard devices types:  "lvt" for | 
 | # low threshold voltage, and "hvt" for high threshold voltage. | 
 | # "dnwell" is used as an identifier layer where appropriate. | 
 | # Layer HVI (thick oxide) is treated differently, and types | 
 | # "mv*" are defined where thick oxide is required. | 
 | # | 
 | #------------------------------------------------------------- | 
 | # The following devices are not extracted but are represented | 
 | # only by script-generated subcells in the PDK. | 
 | #------------------------------------------------------------- | 
 | # nshortesd         ESD nFET | 
 | # nhvesd            ESD thickox nFET | 
 | # nhvnativeesd          ESD native nFET | 
 | # phvesd            ESD thickox pFET | 
 | # fnpass            flash nFET device | 
 | # npnpar1x*         parasitic NPN | 
 | # npn_1x1_2p0_hv        thickox gated parasitic NPN | 
 | # pnppar            parasitic PNP | 
 | # pnppar5x          parasitic PNP | 
 | # xesd_ndiode_h_***     ESD n+ diode | 
 | # xesd_pdiode_h_***     ESD p+ diode | 
 | # reslocsub         local substrate island indicator | 
 | # xcmvpp            Vpp cap | 
 | # xcmvpp_2          Vpp cap | 
 | # xcmvpp_*          Vpp cap | 
 | # xcmvpp*           Vpp cap | 
 | # balun             balun inductor | 
 | # ind4              inductor | 
 | # fuse              metal fuse device | 
 | #-------------------------------------------------------------- | 
 |  | 
 | #----------------------------------------------------- | 
 | # Tile planes | 
 | #----------------------------------------------------- | 
 |  | 
 | planes | 
 |   dwell,dw | 
 |   well,w | 
 |   active,a | 
 |   locali,li1,li | 
 |   metal1,m1 | 
 |   metal2,m2 | 
 |   metal3,m3 | 
 |   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 | 
 |  | 
 | # Transistors | 
 |   active nmos,ntransistor,nfet | 
 |  -active scnmos,scntransistor,scnfet | 
 |  -active npd,npdfet,sramnfet | 
 |  -active npass,npassfet,srampassfet | 
 |   active pmos,ptransistor,pfet | 
 |  -active scpmos,scptransistor,scpfet | 
 |  -active ppu,ppufet,srampfet | 
 |  -active nnmos,nntransistor | 
 |   active mvnmos,mvntransistor,mvnfet | 
 |   active mvpmos,mvptransistor,mvpfet | 
 |  -active mvnnmos,mvnntransistor,mvnnfet,nnfet | 
 |  -active varactor,varact,var | 
 |  -active mvvaractor,mvvaract,mvvar | 
 |  | 
 |  -active pmoslvt,pfetlvt | 
 |  -active pmoshvt,pfethvt | 
 |  -active nmoslvt,nfetlvt | 
 |  -active varactorhvt,varacthvt,varhvt | 
 |  -active nsonos,sonos | 
 |  | 
 | # Diffusions | 
 |   active ndiff,ndiffusion,ndif | 
 |   active pdiff,pdiffusion,pdif | 
 |  -active mvndiff,mvndiffusion,mvndif | 
 |  -active mvpdiff,mvpdiffusion,mvpdif | 
 |   active ndiffc,ndcontact,ndc | 
 |   active pdiffc,pdcontact,pdc | 
 |  -active mvndiffc,mvndcontact,mvndc | 
 |  -active mvpdiffc,mvpdcontact,mvpdc | 
 |   active psubdiff,psubstratepdiff,ppdiff,ppd,psd | 
 |   active nsubdiff,nsubstratendiff,nndiff,nnd,nsd | 
 |  -active mvpsubdiff,mvpsubstratepdiff,mvppdiff,mvppd,mvpsd | 
 |  -active mvnsubdiff,mvnsubstratendiff,mvnndiff,mvnnd,mvnsd | 
 |   active psubdiffcont,psubstratepcontact,psc | 
 |   active nsubdiffcont,nsubstratencontact,nsc | 
 |  -active mvpsubdiffcont,mvpsubstratepcontact,mvpsc | 
 |  -active mvnsubdiffcont,mvnsubstratencontact,mvnsc | 
 |  -active obsactive | 
 |  -active mvobsactive | 
 |  | 
 | # Poly | 
 |   active poly,p,polysilicon | 
 |   active polycont,pc,pcontact,polycut,polyc | 
 |   active xpolycontact,xpolyc,xpc | 
 |  | 
 | # Resistors | 
 |  -active npolyres,npres,mrp1 | 
 |  -active ppolyres,ppres,xhrpoly | 
 |  -active xpolyres,xpres,xres,uhrpoly | 
 |  -active ndiffres,rnd,rdn,rndiff | 
 |  -active pdiffres,rpd,rdp,rpdiff | 
 |  -active mvndiffres,mvrnd,mvrdn,mvrndiff | 
 |  -active mvpdiffres,mvrpd,mvrdp,mvrpdiff | 
 |  -active rmp | 
 |  | 
 | # Diodes | 
 |  -active pdiode,pdi | 
 |  -active ndiode,ndi | 
 |  -active nndiode,nndi | 
 |  -active pdiodec,pdic | 
 |  -active ndiodec,ndic | 
 |  -active nndiodec,nndic | 
 |  -active mvpdiode,mvpdi | 
 |  -active mvndiode,mvndi | 
 |  -active mvpdiodec,mvpdic | 
 |  -active mvndiodec,mvndic | 
 |  -active pdiodelvt,pdilvt | 
 |  -active pdiodehvt,pdihvt | 
 |  -active ndiodelvt,ndilvt | 
 |  -active pdiodelvtc,pdilvtc | 
 |  -active pdiodehvtc,pdihvtc | 
 |  -active ndiodelvtc,ndilvtc | 
 |  | 
 | # Local Interconnect  | 
 |   locali locali,li1,li | 
 |  -locali corelocali,coreli1,coreli | 
 |  -locali rlocali,rli1,rli | 
 |   locali viali,vial,lic,licon,m1c,v0 | 
 |  -locali obsli1,obsli | 
 |  -locali obsli1c,obslic,obslicon | 
 |  | 
 | # Metal 1 | 
 |   metal1 metal1,m1,met1 | 
 |  -metal1 rmetal1,rm1,rmet1 | 
 |   metal1 via1,m2contact,m2cut,m2c,via,v,v1 | 
 |  -metal1 obsm1 | 
 |  -metal1 padl | 
 |  -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 | 
 |  | 
 | end | 
 |  | 
 | #----------------------------------------------------- | 
 | # Magic contact types | 
 | #----------------------------------------------------- | 
 |  | 
 | contact | 
 |   pc       poly       locali | 
 |   ndc      ndiff      locali | 
 |   pdc      pdiff      locali | 
 |   nsc      nsd        locali | 
 |   psc      psd        locali | 
 |   ndic     ndiode     locali | 
 |   ndilvtc  ndiodelvt  locali | 
 |   nndic    nndiode    locali | 
 |   pdic     pdiode     locali | 
 |   pdilvtc  pdiodelvt  locali | 
 |   pdihvtc  pdiodehvt  locali | 
 |   xpc      xpc        locali | 
 |  | 
 |   mvndc   mvndiff   locali | 
 |   mvpdc   mvpdiff   locali | 
 |   mvnsc   mvnsd     locali | 
 |   mvpsc   mvpsd     locali | 
 |   mvndic  mvndiode  locali | 
 |   mvpdic  mvpdiode  locali | 
 |  | 
 |   lic locali metal1 | 
 |   obslic obsli obsm1 | 
 |  | 
 |   via1   metal1 metal2 | 
 |   via2   metal2 metal3 | 
 |   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 | 
 |  | 
 |   allnfets     nfet,npass,npd,scnfet,mvnfet,mvnnfet,nfetlvt,nsonos | 
 |   allpfets     pfet,ppu,scpfet,mvpfet,pfethvt,pfetlvt | 
 |   allfets      allnfets,allpfets,varactor,mvvaractor,varhvt | 
 |  | 
 |   allnactivenonfet *ndiff,*nsd,*ndiode,*nndiode,*mvndiff,*mvnsd,*mvndiode,*ndiodelvt | 
 |   allnactive       allnactivenonfet,allnfets | 
 |   allnactivenontap *ndiff,*ndiode,*nndiode,*mvndiff,*mvndiode,*ndiodelvt,allnfets | 
 |   allnactivetap    *nsd,*mvnsd,var,varhvt,mvvar | 
 |  | 
 |   allpactivenonfet *pdiff,*psd,*pdiode,*mvpdiff,*mvpsd,*mvpdiode,*pdiodelvt,*pdiodehvt | 
 |   allpactive       allpactivenonfet,allpfets | 
 |   allpactivenontap *pdiff,*pdiode,*mvpdiff,*mvpdiode,*pdiodelvt,*pdiodehvt,allpfets | 
 |   allpactivetap    *psd,*mvpsd | 
 |  | 
 |   allactivenonfet  allnactivenonfet,allpactivenonfet | 
 |   allactive    allactivenonfet,allfets | 
 |  | 
 |   allactiveres     ndiffres,pdiffres,mvndiffres,mvpdiffres | 
 |  | 
 |   allndifflv       *ndif,*nsd,*ndiode,ndiffres,nfet,npass,npd,scnfet,nfetlvt,nsonos | 
 |   allpdifflv       *pdif,*psd,*pdiode,pdiffres,pfet,ppu,scpfet,pfetlvt,pfethvt | 
 |   alldifflv        allndifflv,allpdifflv | 
 |   allndifflvnonfet *ndif,*nsd,*ndiode,*nndiode,ndiffres,*ndiodelvt | 
 |   allpdifflvnonfet *pdif,*psd,*pdiode,pdiffres,*pdiodelvt,*pdiodehvt | 
 |   alldifflvnonfet  allndifflvnonfet,allpdifflvnonfet | 
 |  | 
 |   allndiffmv       *mvndif,*mvnsd,*mvndiode,*nndiode,mvndiffres,mvnfet,mvnnfet | 
 |   allpdiffmv       *mvpdif,*mvpsd,*mvpdiode,mvpdiffres,mvpfet | 
 |   alldiffmv        allndiffmv,allpdiffmv | 
 |   allndiffmvnontap *mvndif,*mvndiode,*nndiode,mvndiffres,mvnfet,mvnnfet | 
 |   allpdiffmvnontap *mvpdif,*mvpdiode,mvpdiffres,mvpfet | 
 |   alldiffmvnontap  allndiffmvnontap,allpdiffmvnontap | 
 |   allndiffmvnonfet *mvndif,*mvnsd,*mvndiode,*nndiode,mvndiffres | 
 |   allpdiffmvnonfet *mvpdif,*mvpsd,*mvpdiode,mvpdiffres | 
 |   alldiffmvnonfet  allndiffmvnonfet,allpdiffmvnonfet | 
 |  | 
 |   alldiffnonfet    alldifflvnonfet,alldiffmvnonfet | 
 |   alldiff      alldifflv,alldiffmv | 
 |  | 
 |   allpolyres       mrp1,xhrpoly,uhrpoly,rmp | 
 |   allpolynonfet    *poly,allpolyres,xpc | 
 |   allpolynonres    *poly,allfets,xpc | 
 |  | 
 |   allpoly      allpolynonfet,allfets | 
 |   allpolynoncap    *poly,xpc,allfets,allpolyres | 
 |  | 
 |   allndiffcontlv   ndc,nsc,ndic,nndic,ndilvtc | 
 |   allpdiffcontlv   pdc,psc,pdic,pdilvtc,pdihvtc | 
 |   allndiffcontmv   mvndc,mvnsc,mvndic | 
 |   allpdiffcontmv   mvpdc,mvpsc,mvpdic | 
 |   allndiffcont     allndiffcontlv,allndiffcontmv | 
 |   allpdiffcont     allpdiffcontlv,allpdiffcontmv | 
 |   alldiffcontlv    allndiffcontlv,allpdiffcontlv | 
 |   alldiffcontmv    allndiffcontmv,allpdiffcontmv | 
 |   alldiffcont      alldiffcontlv,alldiffcontmv | 
 |  | 
 |   allcont   alldiffcont,pc | 
 |  | 
 |   allres    allpolyres,allactiveres | 
 |  | 
 |   allli     *locali,coreli,rli | 
 |   allm1     *m1,rm1 | 
 |   allm2     *m2,rm2 | 
 |   allm3     *m3,rm3 | 
 |   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 | 
 |   ppu       ptransistor    ptransistor_stripes | 
 |   var       polysilicon    ndiff_in_nwell | 
 |   ndc       ndiffusion     metal1  contact_X'es | 
 |   pdc       pdiffusion     metal1  contact_X'es | 
 |   nsc       ndiff_in_nwell metal1  contact_X'es | 
 |   psc       pdiff_in_pwell metal1  contact_X'es | 
 |  | 
 |   pfetlvt   ptransistor ptransistor_stripes implant1 | 
 |   pfethvt   ptransistor ptransistor_stripes implant2 | 
 |   nfetlvt   ntransistor ntransistor_stripes implant1 | 
 |   nsonos    ntransistor implant3 | 
 |   varhvt    polysilicon ndiff_in_nwell implant2 | 
 |  | 
 |   mvndiff   ndiffusion     hvndiff_mask | 
 |   mvpdiff   pdiffusion     hvpdiff_mask | 
 |   mvnsd     ndiff_in_nwell hvndiff_mask | 
 |   mvpsd     pdiff_in_pwell hvpdiff_mask | 
 |   mvnfet    ntransistor    ntransistor_stripes hvndiff_mask | 
 |   mvnnfet   ntransistor    ndiff_in_nwell hvndiff_mask | 
 |   mvpfet    ptransistor    ptransistor_stripes | 
 |   mvvar     polysilicon    ndiff_in_nwell hvndiff_mask | 
 |   mvndc     ndiffusion     metal1  contact_X'es hvndiff_mask | 
 |   mvpdc     pdiffusion     metal1  contact_X'es hvpdiff_mask | 
 |   mvnsc     ndiff_in_nwell metal1  contact_X'es hvndiff_mask | 
 |   mvpsc     pdiff_in_pwell metal1  contact_X'es hvpdiff_mask | 
 |  | 
 |   poly      polysilicon  | 
 |   pc        polysilicon    metal1  contact_X'es | 
 |   npolyres  polysilicon    silicide_block nselect2 | 
 |   ppolyres  polysilicon    silicide_block pselect2 | 
 |   xpc       polysilicon    pselect2  metal1  contact_X'es | 
 |   rmp       polysilicon    poly_resist_stripes | 
 |  | 
 |   pdiode    pdiffusion     pselect2 | 
 |   ndiode    ndiffusion     nselect2 | 
 |   pdiodec   pdiffusion     pselect2 metal1 contact_X'es | 
 |   ndiodec   ndiffusion     nselect2 metal1 contact_X'es | 
 |  | 
 |   nndiode   ndiffusion  nselect2 implant3 | 
 |   ndiodelvt ndiffusion  nselect2 implant1 | 
 |   pdiodelvt pdiffusion  pselect2 implant1 | 
 |   pdiodehvt pdiffusion  pselect2 implant2 | 
 |   pdilvtc   pdiffusion  pselect2 implant1 metal1 contact_X'es | 
 |   pdihvtc   pdiffusion  pselect2 implant2 metal1 contact_X'es | 
 |   ndilvtc   ndiffusion  nselect2 implant1 metal1 contact_X'es | 
 |  | 
 |   mvpdiode    pdiffusion     pselect2 hvpdiff_mask | 
 |   mvndiode    ndiffusion     nselect2 hvndiff_mask | 
 |   mvpdiodec   pdiffusion     pselect2 metal1 contact_X'es hvpdiff_mask | 
 |   mvndiodec   ndiffusion     nselect2 metal1 contact_X'es hvndiff_mask | 
 |   nndiodec    ndiff_in_nwell nselect2 metal1 contact_X'es hvndiff_mask | 
 |  | 
 |   locali    metal1 | 
 |   coreli    metal1 | 
 |   rli       metal1         poly_resist_stripes | 
 |   lic       metal1     metal2 via1arrow | 
 |   obsli     metal1 | 
 |   obslic    metal1     metal2 via1arrow | 
 |  | 
 |   metal1    metal2 | 
 |   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  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 *nwell,*nsd,*mvnsd,dnwell | 
 |   pwell,*psd,*mvpsd  pwell,*psd,*mvpsd | 
 |   *li,coreli    *li,coreli | 
 |   *m1,m1fill    *m1,m1fill | 
 |   *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 81 4 | 
 |  | 
 | # Create a boundary outside of an abutment box, so that layers | 
 | # can be made to stretch to the abutment box edges.  First strink | 
 | # so that any box that would be so small as to interact with | 
 | # itself will be removed. | 
 |  | 
 |  templayer CELLRING CELLBOUND | 
 |     shrink 345 | 
 |     grow 545 | 
 |     and-not CELLBOUND | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # DNWELL | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer DNWELL   dnwell | 
 |     calma   64 18 | 
 |  | 
 |  layer PWRES    rpw | 
 |     and dnwell | 
 |     calma   64 13 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # NWELL | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer NWELL    allnwell | 
 |     bloat-all rpw dnwell | 
 |     and-not rpw,pwell | 
 |     calma   64 20 | 
 |  | 
 |  layer WELLTXT | 
 |     labels allnwell noport | 
 |     calma 64 16 | 
 |  | 
 |  layer WELLPIN | 
 |     labels allnwell port | 
 |     calma 64 5 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # SUB (text/port only) | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer SUBTXT | 
 |     labels pwell noport | 
 |     calma 122 16 | 
 |  | 
 |  layer SUBPIN | 
 |     labels pwell port | 
 |     calma 64 59 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # DIFF | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer DIFF     allnactivenontap,allpactivenontap,allactiveres | 
 |     labels  allnactivenontap,allpactivenontap | 
 |     calma   65 20 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # TAP | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer TAP  allnactivetap,allpactivetap | 
 |     labels  allnactivetap,allpactivetap | 
 |     calma   65 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # PPLUS, NPLUS (PSDM, NSDM) | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  templayer basePPLUS pdiffres,mvpdiffres | 
 |     grow    15 | 
 |     or  xhrpoly,uhrpoly,xpc | 
 |     grow    110 | 
 |     bloat-or allpactivetap * 125 allnactivenontap 0 | 
 |     bloat-or allpactivenontap * 125 allnactivetap 0 | 
 |     bridge  380 380 | 
 |  | 
 |  templayer extendPPLUS  basePPLUS,CELLRING | 
 |     grow    185 | 
 |     shrink  185 | 
 |     and-not CELLRING | 
 |  | 
 |  layer PPLUS basePPLUS,extendPPLUS  | 
 |     close   265000 | 
 |     calma   94 20 | 
 |  | 
 |  templayer baseNPLUS ndiffres,mvndiffres | 
 |     grow    125 | 
 |     bloat-or allnactivetap * 125 allpactivenontap 0 | 
 |     bloat-or allnactivenontap * 125 allpactivetap 0 | 
 |     bridge  380 380 | 
 |  | 
 |  templayer extendNPLUS  baseNPLUS,CELLRING | 
 |     grow    185 | 
 |     shrink  185 | 
 |     and-not CELLRING | 
 |  | 
 |  layer NPLUS baseNPLUS,extendNPLUS | 
 |     close   265000 | 
 |     calma   93 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # LVTN | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer LVTN  pfetlvt,nfetlvt,mvvar,mvnnfet,nsonos,*pdiodelvt,*ndiodelvt,*nndiode | 
 |         grow 180 | 
 |     bridge  380 380 | 
 |     grow    185 | 
 |     shrink  185 | 
 |     close  265000 | 
 |     calma 125 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # HVTP | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer HVTP pfethvt,varhvt,*pdiodehvt | 
 |         grow 180 | 
 |     bridge  380 380 | 
 |     grow    185 | 
 |     shrink  185 | 
 |     close 265000 | 
 |     calma 78 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # SONOS | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer SONOS nsonos | 
 |     grow 100 | 
 |     grow-min 410 | 
 |     bridge 500 410 | 
 |     grow 250 | 
 |     shrink 250 | 
 |     calma 80 20 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # SONOS requires COREID around area (areaid.ce).  Also, the | 
 | # coreli layer indicates a cell needing COREID.  Also, devices | 
 | # npd, npass, and ppu indicate a COREID cell. | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer COREID | 
 |     bloat-all nsonos,coreli,ppu,npd,npass CELLBOUND | 
 |     calma 81 2 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # STDCELL applies to all cells containing scnfet or scpfet. | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer STDCELL scnfet | 
 |     bloat-all scpfet,scnfet CELLBOUND | 
 |     calma 81 4 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # RPM | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer RPM | 
 |     bloat-all xhrpoly xpc | 
 |     grow 200 | 
 |     grow-min 1270 | 
 |     grow 420 | 
 |     shrink 420 | 
 |     calma 86 20 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # URPM (2kOhms/sq. poly implant) | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer URPM | 
 |     bloat-all uhrpoly xpc | 
 |     grow 200 | 
 |     grow-min 1270 | 
 |     grow 420 | 
 |     shrink 420 | 
 |     calma 79 20 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # LDNTM (Tip implant for SONOS FETs) | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer LDNTM | 
 |     bloat-all nsonos *ndiff | 
 |     grow 185 | 
 |     grow    345 | 
 |     shrink  345 | 
 |     calma 11 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # HVNTM (Tip implant for MV ndiff devices) | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  templayer hvntm_block *mvpsd | 
 |     grow 185 | 
 |  | 
 |  layer HVNTM | 
 |     bloat-all mvnfet,mvnnfet,*mvndiode,mvrdn,*nndiode *mvndiff | 
 |     bloat-all mvvaractor *mvnsd | 
 |     and-not hvntm_block | 
 |         grow 185 | 
 |     grow    345 | 
 |     shrink  345 | 
 |     calma 125 20 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # POLY | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer POLY     allpoly | 
 |     calma   66 20 | 
 |  | 
 |  layer POLYTXT | 
 |     labels  allpoly noport | 
 |     calma   66 16 | 
 |  | 
 |  layer POLYPIN | 
 |     labels  allpoly port | 
 |     calma   66 5 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # THKOX (HVI) (includes rules NWELL 8-11 and DIFFTAP 14-26) | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  templayer baseTHKOX    *mvpsd | 
 |     grow-min 470 | 
 |     or alldiffmv,mvvar | 
 |     grow    185 | 
 |         bloat-all alldiffmv nwell | 
 |     grow-min 600 | 
 |     bridge  700 600 | 
 |  | 
 |  templayer extendTHKOX  baseTHKOX,CELLRING | 
 |     grow    345 | 
 |     shrink  345 | 
 |     and-not CELLRING | 
 |  | 
 |  layer THKOX    baseTHKOX,extendTHKOX | 
 |     calma   75 20 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # CONT (LICON) | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer CONT allcont | 
 |     squares-grid 0 170 170 | 
 |     calma   66 44 | 
 |  | 
 |  # Contact for pres is different than other LICON contacts | 
 |  # See rules LICON 1b, 1c (width/length) and 2b (spacing) | 
 |  templayer xpc_horiz xpc | 
 |     shrink 1007 | 
 |     grow 1007 | 
 |  | 
 |  layer CONT xpc | 
 |     and-not xpc_horiz | 
 |     # Force long edge vertical for contacts narrower than 2um | 
 |     # Minimum space is 350 but 520 satisfies no. of contacts rule | 
 |     slots 80 190 520 80 2000 350 | 
 |     calma   66 44 | 
 |  | 
 |  layer CONT xpc | 
 |     and xpc_horiz | 
 |     # Force long edge vertical for contacts wider than 2um | 
 |     # Minimum space is 350 but 520 satisfies no. of contacts rule | 
 |     slots 80 2000 350 80 190 520 | 
 |     calma   66 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # NPC (Nitride poly cut) | 
 | # surrounds CONT (LICON) on poly only (i.e., pc) | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer NPC pc | 
 |     squares-grid 0 170 170 | 
 |     grow 100 | 
 |     bridge 270 270 | 
 |     grow 130 | 
 |     shrink 130 | 
 |     calma  95 20 | 
 |  | 
 |  # NPC is also generated on xhrpoly and uhrpoly resistors | 
 |  | 
 |  layer NPC xpc,xhrpoly,uhrpoly | 
 |         # xpc surrounds precision_resistor by 0.095um | 
 |     grow 95 | 
 |     grow 130 | 
 |     shrink 130 | 
 |     calma  95 20 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # Device markers | 
 | #---------------------------------------------------------------- | 
 |  | 
 |  layer DIFFRES rdn,mvrdn,rdp,mvrdp | 
 |     calma 65 13 | 
 |  | 
 |  layer POLYRES mrp1 | 
 |     calma 66 13 | 
 |  | 
 |  # POLYSHORT is a poly layer resistor like rli, rm1, etc., for metal layers | 
 |  layer POLYSHORT rmp | 
 |     calma 66 15 | 
 |  | 
 |  # POLYRES extends to edge of contact cut | 
 |  layer POLYRES xhrpoly,uhrpoly | 
 |     grow 60 | 
 |     and xpc | 
 |     or xhrpoly,uhrpoly | 
 |     calma 66 13 | 
 |  | 
 |  layer DIODE *pdi,*ndi,*nndi,*mvpdi,*mvndi,*pdilvt,*pdihvt,*ndilvt | 
 |         # To be done:  Expand to include anode, cathode, and guard ring | 
 |     calma 81 23 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # LI | 
 | #---------------------------------------------------------------- | 
 |  layer LI allli | 
 |     calma 67 20 | 
 |  | 
 |  layer LITXT | 
 |     labels *locali,coreli noport | 
 |     calma 67 16 | 
 |  | 
 |  layer LIPIN | 
 |     labels *locali,coreli port | 
 |     calma 67 5 | 
 |  | 
 |  layer LIRES rli | 
 |     labels rli | 
 |     calma 67 13 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # MCON | 
 | #---------------------------------------------------------------- | 
 |  layer MCON lic | 
 |     squares-grid 0 170 190 | 
 |     calma   67 44 | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # MET1 | 
 | #---------------------------------------------------------------- | 
 |  layer MET1     allm1,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 | 
 |  | 
 |  | 
 | #---------------------------------------------------------------- | 
 | # 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 | 
 |  | 
 |  # SONOS nFET devices must be in deep nwell | 
 |  templayer dnwell_missing nsonos | 
 |  and-not dnwell | 
 |  | 
 |  # Define MiM cap bottom plate for spacing rule | 
 |  templayer mim_bottom | 
 |  bloat-all *mimcap *metal3 | 
 |  | 
 |  # Define MiM2 cap bottom plate for spacing rule | 
 |  templayer mim2_bottom | 
 |  bloat-all *mimcap2 *metal4 | 
 |  | 
 |  # Note that metal fill is performed by the foundry and so is not | 
 |  # an option for a cifoutput style. | 
 |  | 
 |  # Check latchup rule (15um minimum from tap LICON center to any | 
 |  # non-tap diffusion.  Note that to count as a tap, the diffusion | 
 |  # must be contacted to LI | 
 |  | 
 |  templayer ptap_reach psc,mvpsc | 
 |  and-not dnwell | 
 |  # grow total is 15um.  grow in 0.84um increments to ensure that | 
 |  # no nwell ring is crossed | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 840 | 
 |  and-not nwell,dnwell | 
 |  grow 635 | 
 |  and-not nwell,dnwell | 
 |  | 
 |  templayer ptap_missing *ndiff,*mvndiff | 
 |  and-not dnwell | 
 |  and-not ptap_reach | 
 |  | 
 |  templayer ntap_reach nsc,mvnsc | 
 |  # grow total is 15um.  grow in 1.27um increments to ensure that | 
 |  # no nwell ring is crossed.  There is no difference between | 
 |  # ntaps in and out of deep nwell. | 
 |  grow 1270 | 
 |  and nwell | 
 |  grow 1270 | 
 |  and nwell | 
 |  grow 1270 | 
 |  and nwell | 
 |  grow 1270 | 
 |  and nwell | 
 |  grow 1270 | 
 |  and nwell | 
 |  grow 1270 | 
 |  and nwell | 
 |  grow 1270 | 
 |  and nwell | 
 |  grow 1270 | 
 |  and nwell | 
 |  grow 1270 | 
 |  and nwell | 
 |  grow 1270 | 
 |  and nwell | 
 |  grow 1270 | 
 |  and nwell | 
 |  grow 945 | 
 |  and nwell | 
 |   | 
 |  templayer ntap_missing *pdiff,*mvpdiff | 
 |  and-not dnwell | 
 |  and-not ntap_reach | 
 |  | 
 |  templayer dptap_reach psc,mvpsc | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 840 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  grow 635 | 
 |  and-not nwell | 
 |  and dnwell | 
 |  | 
 |  templayer dptap_missing *ndiff,*mvndiff | 
 |  and dnwell | 
 |  and-not dptap_reach | 
 |  | 
 |  templayer m1_small_hole *m1 | 
 |  close   140000 | 
 |  | 
 |  templayer m1_hole_empty m1_small_hole | 
 |  and-not *m1 | 
 |  | 
 |  templayer m2_small_hole *m2 | 
 |  close   140000 | 
 |  | 
 |  templayer m2_hole_empty m2_small_hole | 
 |  and-not *m2 | 
 |  | 
 |  | 
 | #---------------------------------------------------------------- | 
 | style wafflefill | 
 | #---------------------------------------------------------------- | 
 | # Style used by scripts for automatically generating fill layers | 
 | #---------------------------------------------------------------- | 
 |  scalefactor 10  nanometers | 
 |  options calma-permissive-labels | 
 |  gridlimit 5 | 
 |  | 
 | #--------------------------------------------------- | 
 | # FOM fill (under development) | 
 | #--------------------------------------------------- | 
 |  templayer      slots_fom_pass1 | 
 |     bbox    top | 
 |         slots   0 4080 1320 0 4080 1320 1360 0 | 
 |  templayer      obstruct_fom_pass1 alldiff,allpoly,rpw | 
 |         grow    500 | 
 |  templayer  fomfill_pass1 slots_fom_pass1 | 
 |         and-not obstruct_fom_pass1 | 
 |         shrink  2035 | 
 |         grow    2035 | 
 |  | 
 |  templayer      slots_fom_pass2 | 
 |     bbox    top | 
 |         slots   0 2500 1320 0 2500 1320 1360 0 | 
 |  templayer      obstruct_fom_pass2 fomfill_pass1 | 
 |         grow    820 | 
 |     or  alldiff,allpoly,rpw | 
 |         grow    500 | 
 |  templayer  fomfill_pass2 slots_fom_pass2 | 
 |         and-not obstruct_fom_pass2 | 
 |         shrink  1245 | 
 |         grow    1245 | 
 |  | 
 |  templayer      slots_fom_coarse | 
 |     bbox    top | 
 |         slots   0 1500 1320 0 1500 1320 1360 0 | 
 |  templayer      obstruct_fom_coarse fomfill_pass1,fomfill_pass2 | 
 |         grow    820 | 
 |     or  alldiff,allpoly,rpw | 
 |         grow    500 | 
 |  templayer  fomfill_coarse slots_fom_coarse | 
 |         and-not obstruct_fom_coarse | 
 |         shrink  745 | 
 |         grow    745 | 
 |  | 
 |  templayer      slots_fom_fine | 
 |     bbox    top | 
 |         slots   0 500 400 0 500 400 160 0 | 
 |  templayer      obstruct_fom_fine fomfill_pass1,fomfill_pass2,fomfill_coarse | 
 |     grow    820 | 
 |     or  alldiff,allpoly,rpw | 
 |         grow    500 | 
 |  templayer  fomfill_fine slots_fom_fine | 
 |         and-not obstruct_fom_fine | 
 |         shrink  245 | 
 |         grow    245 | 
 |  | 
 |  layer  FOMMASK    fomfill_pass1  | 
 |     or  fomfill_pass2 | 
 |     or  fomfill_coarse | 
 |     or  fomfill_fine | 
 |     calma   23 0 | 
 |  | 
 | #--------------------------------------------------- | 
 | # POLY fill (under development) | 
 | #--------------------------------------------------- | 
 |  templayer      slots_poly_pass1 | 
 |     bbox    top | 
 |         slots   0 720 360 0 720 360 240 0 | 
 |  templayer      obstruct_poly_pass1 alldiff,allpoly,rpw | 
 |         grow    1000 | 
 |  templayer  polyfill_pass1 slots_poly_pass1 | 
 |         and-not obstruct_poly_pass1 | 
 |         shrink  355 | 
 |         grow    355 | 
 |  | 
 |  templayer      slots_poly_coarse | 
 |     bbox    top | 
 |         slots   0 720 360 0 720 360 240 120 | 
 |  templayer      obstruct_poly_coarse alldiff,allpoly,rpw | 
 |         grow    640 | 
 |     or  polyfill_pass1 | 
 |     grow    360 | 
 |  templayer  polyfill_coarse slots_poly_coarse | 
 |         and-not obstruct_poly_coarse | 
 |         shrink  355 | 
 |         grow    355 | 
 |  | 
 |  templayer      slots_poly_medium | 
 |     bbox    top | 
 |         slots   0 540 360 0 540 360 240 100 | 
 |  templayer      obstruct_poly_medium alldiff,allpoly,rpw | 
 |         grow    650 | 
 |     or  polyfill_pass1,polyfill_coarse | 
 |     grow    360 | 
 |  templayer  polyfill_medium slots_poly_medium | 
 |         and-not obstruct_poly_medium | 
 |         shrink  265 | 
 |         grow    265 | 
 |  | 
 |  templayer      slots_poly_fine | 
 |     bbox    top | 
 |         slots   0 480 360 0 480 360 240 200 | 
 |  templayer      obstruct_poly_fine alldiff,allpoly,rpw | 
 |         grow    650 | 
 |     or  polyfill_pass1,polyfill_coarse,polyfill_medium | 
 |     grow    360 | 
 |  templayer  polyfill_fine slots_poly_fine | 
 |         and-not obstruct_poly_fine | 
 |         shrink  235 | 
 |         grow    235 | 
 |  | 
 |  layer  POLYMASK    polyfill_pass1  | 
 |     or  polyfill_coarse | 
 |     or  polyfill_medium | 
 |     or  polyfill_fine | 
 |     calma   28 0 | 
 |  | 
 | #--------------------------------------------------- | 
 | # MET1 fill | 
 | #--------------------------------------------------- | 
 |  templayer      slots_m1_coarse | 
 |         bbox    top | 
 |         slots   0 2000 200 0 2000 200 700 0 | 
 |  templayer      obstruct_m1_coarse allm1,allpad,obsm1,m1fill,fillblock | 
 |         grow    3000 | 
 |  templayer  met1fill_coarse slots_m1_coarse | 
 |         and-not obstruct_m1_coarse | 
 |         shrink  995 | 
 |         grow    995 | 
 |  | 
 |  templayer      slots_m1_medium | 
 |         bbox    top | 
 |         slots   0 1000 200 0 1000 200 700 0 | 
 |  templayer      obstruct_m1_medium allm1,allpad,obsm1,m1fill,fillblock | 
 |         grow    2800 | 
 |     or  met1fill_coarse | 
 |         grow    200 | 
 |  templayer  met1fill_medium slots_m1_medium | 
 |         and-not obstruct_m1_medium | 
 |         shrink  495 | 
 |         grow    495 | 
 |  | 
 |  templayer      slots_m1_fine | 
 |         bbox    top | 
 |         slots   0 580 200 0 580 200 700 0 | 
 |  templayer      obstruct_m1_fine allm1,allpad,obsm1,m1fill,fillblock | 
 |         grow    300 | 
 |     or  met1fill_coarse,met1fill_medium | 
 |         grow    200 | 
 |  templayer  met1fill_fine slots_m1_fine | 
 |         and-not obstruct_m1_fine | 
 |         shrink  285 | 
 |         grow    285 | 
 |  | 
 |  templayer      slots_m1_veryfine | 
 |         bbox    top | 
 |         slots   0 300 200 0 300 200 100 50 | 
 |  templayer      obstruct_m1_veryfine allm1,allpad,obsm1,m1fill,fillblock | 
 |         grow    100 | 
 |     or  met1fill_coarse,met1fill_medium,met1fill_fine | 
 |         grow    200 | 
 |  templayer  met1fill_veryfine slots_m1_veryfine | 
 |         and-not obstruct_m1_veryfine | 
 |         shrink  145 | 
 |         grow    145 | 
 |  | 
 |  layer  MET1MASK met1fill_coarse | 
 |     or  met1fill_medium | 
 |     or  met1fill_fine | 
 |     or  met1fill_veryfine | 
 |     calma   36 0 | 
 |  | 
 | #--------------------------------------------------- | 
 | # MET2 fill | 
 | #--------------------------------------------------- | 
 |  templayer      slots_m2_coarse | 
 |         bbox    top | 
 |         slots   0 2000 200 0 2000 200 700 350 | 
 |  templayer      obstruct_m2 allm2,allpad,obsm2,m2fill,fillblock | 
 |         grow    3000 | 
 |  templayer  met2fill_coarse slots_m2_coarse | 
 |         and-not obstruct_m2 | 
 |         shrink  995 | 
 |         grow    995 | 
 |  | 
 |  templayer      slots_m2_medium | 
 |         bbox    top | 
 |         slots   0 1000 200 0 1000 200 700 350 | 
 |  templayer      obstruct_m2_medium allm2,allpad,obsm2,m2fill,fillblock | 
 |         grow    2800 | 
 |     or  met2fill_coarse | 
 |         grow    200 | 
 |  templayer  met2fill_medium slots_m2_medium | 
 |         and-not obstruct_m2_medium | 
 |         shrink  495 | 
 |         grow    495 | 
 |  | 
 |  templayer      slots_m2_fine | 
 |         bbox    top | 
 |         slots   0 580 200 0 580 200 700 350 | 
 |  templayer      obstruct_m2_fine allm2,allpad,obsm2,m2fill,fillblock | 
 |         grow    300 | 
 |     or  met2fill_coarse,met2fill_medium | 
 |         grow    200 | 
 |  templayer  met2fill_fine slots_m2_fine | 
 |         and-not obstruct_m2_fine | 
 |         shrink  285 | 
 |         grow    285 | 
 |  | 
 |  templayer      slots_m2_veryfine | 
 |         bbox    top | 
 |         slots   0 300 200 0 300 200 100 100 | 
 |  templayer      obstruct_m2_veryfine allm2,allpad,obsm2,m2fill,fillblock | 
 |         grow    100 | 
 |     or  met2fill_coarse,met2fill_medium,met2fill_fine | 
 |         grow    200 | 
 |  templayer  met2fill_veryfine slots_m2_veryfine | 
 |         and-not obstruct_m2_veryfine | 
 |         shrink  145 | 
 |         grow    145 | 
 |  | 
 |  layer  MET2MASK met2fill_coarse | 
 |     or met2fill_medium | 
 |     or met2fill_fine | 
 |     or met2fill_veryfine | 
 |     calma   41 0 | 
 |  | 
 | #--------------------------------------------------- | 
 | # MET3 fill | 
 | #--------------------------------------------------- | 
 |  templayer      slots_m3_coarse | 
 |         bbox    top | 
 |         slots   0 2000 300 0 2000 300 700 700 | 
 |  templayer      obstruct_m3 allm3,allpad,obsm3,m3fill,fillblock | 
 |         grow    3000 | 
 |  templayer  met3fill_coarse slots_m3_coarse | 
 |         and-not obstruct_m3 | 
 |         shrink  995 | 
 |         grow    995 | 
 |  | 
 |  templayer      slots_m3_medium | 
 |         bbox    top | 
 |         slots   0 1000 300 0 1000 300 700 700 | 
 |  templayer      obstruct_m3_medium allm3,allpad,obsm3,m3fill,fillblock | 
 |         grow    2700 | 
 |     or  met3fill_coarse | 
 |         grow    300 | 
 |  templayer  met3fill_medium slots_m3_medium | 
 |         and-not obstruct_m3_medium | 
 |         shrink  495 | 
 |         grow    495 | 
 |  | 
 |  templayer      slots_m3_fine | 
 |         bbox    top | 
 |         slots   0 580 300 0 580 300 700 700 | 
 |  templayer      obstruct_m3_fine allm3,allpad,obsm3,m3fill,fillblock | 
 |         grow    200 | 
 |     or  met3fill_coarse,met3fill_medium | 
 |         grow    300 | 
 |  templayer  met3fill_fine slots_m3_fine | 
 |         and-not obstruct_m3_fine | 
 |         shrink  285 | 
 |         grow    285 | 
 |  | 
 |  templayer      slots_m3_veryfine | 
 |         bbox    top | 
 |         slots   0 400 300 0 400 300 150 200 | 
 |  templayer      obstruct_m3_veryfine allm3,allpad,obsm3,m3fill,fillblock | 
 |     or  met3fill_coarse,met3fill_medium,met3fill_fine | 
 |         grow    300 | 
 |  templayer  met3fill_veryfine slots_m3_veryfine | 
 |         and-not obstruct_m3_veryfine | 
 |         shrink  195 | 
 |         grow    195 | 
 |  | 
 |  layer  MET3MASK met3fill_coarse | 
 |     or  met3fill_medium | 
 |     or  met3fill_fine | 
 |     or  met3fill_veryfine | 
 |     calma   34 0 | 
 |  | 
 | #--------------------------------------------------- | 
 | # MET4 fill | 
 | #--------------------------------------------------- | 
 |  templayer      slots_m4_coarse | 
 |         bbox    top | 
 |         slots   0 2000 300 0 2000 300 700 1050 | 
 |  templayer      obstruct_m4 allm4,allpad,obsm4,m4fill,fillblock | 
 |         grow    3000 | 
 |  templayer  met4fill_coarse slots_m4_coarse | 
 |         and-not obstruct_m4 | 
 |         shrink  995 | 
 |         grow    995 | 
 |  | 
 |  templayer      slots_m4_medium | 
 |         bbox    top | 
 |         slots   0 1000 300 0 1000 300 700 1050 | 
 |  templayer      obstruct_m4_medium allm4,allpad,obsm4,m4fill,fillblock | 
 |         grow    2700 | 
 |     or  met4fill_coarse | 
 |         grow    300 | 
 |  templayer  met4fill_medium slots_m4_medium | 
 |         and-not obstruct_m4_medium | 
 |         shrink  495 | 
 |         grow    495 | 
 |  | 
 |  templayer      slots_m4_fine | 
 |         bbox    top | 
 |         slots   0 580 300 0 580 300 700 1050 | 
 |  templayer      obstruct_m4_fine allm4,allpad,obsm4,m4fill,fillblock | 
 |         grow    200 | 
 |     or  met4fill_coarse,met4fill_medium | 
 |         grow    300 | 
 |  templayer  met4fill_fine slots_m4_fine | 
 |         and-not obstruct_m4_fine | 
 |         shrink  285 | 
 |         grow    285 | 
 |  | 
 |  templayer      slots_m4_veryfine | 
 |         bbox    top | 
 |         slots   0 400 300 0 400 300 150 300 | 
 |  templayer      obstruct_m4_veryfine allm4,allpad,obsm4,m4fill,fillblock | 
 |     or  met4fill_coarse,met4fill_medium,met4fill_fine | 
 |         grow    300 | 
 |  templayer  met4fill_veryfine slots_m4_veryfine | 
 |         and-not obstruct_m4_veryfine | 
 |         shrink  195 | 
 |         grow    195 | 
 |  | 
 |  layer  MET4MASK met4fill_coarse | 
 |     or  met4fill_medium | 
 |     or  met4fill_fine | 
 |     or  met4fill_veryfine | 
 |     calma   51 0 | 
 |  | 
 | #--------------------------------------------------- | 
 | # MET5 fill | 
 | #--------------------------------------------------- | 
 |  templayer      slots_m5 | 
 |         bbox    top | 
 |         slots   0 3000 1600 0 3000 1600 1000 100 | 
 |  templayer      obstruct_m5 allm5,allpad,obsm5,m5fill,fillblock | 
 |         grow    3000 | 
 |  templayer  met5fill_gen slots_m5 | 
 |         and-not obstruct_m5 | 
 |         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  vendorimport | 
 |  scalefactor 10 nanometers | 
 |  gridlimit 5 | 
 |  | 
 |  options ignore-unknown-layer-labels no-reconnect-labels | 
 |  | 
 |  ignore NPC | 
 |  ignore SEALID | 
 |  ignore NPNID | 
 |  ignore PNPID | 
 |  ignore CAPID | 
 |  ignore LDNTM | 
 |  ignore HVNTM | 
 |  ignore POLYMOD | 
 |  ignore LOWTAPDENSITY | 
 |  | 
 |  layer nwell NWELL,WELLTXT,WELLPIN | 
 |  labels NWELL | 
 |  labels WELLTXT text | 
 |  labels WELLPIN port | 
 |  | 
 |  layer pwell SUBTXT,SUBPIN | 
 |  labels SUBTXT text | 
 |  labels SUBPIN port | 
 |  | 
 |  layer dnwell DNWELL | 
 |  labels DNWELL | 
 |  | 
 |  layer rpw PWRES | 
 |  and DNWELL | 
 |  labels PWRES | 
 |  | 
 |  templayer ndiffarea DIFF,DIFFTXT,DIFFPIN | 
 |  and-not POLY | 
 |  and-not NWELL | 
 |  and-not PPLUS | 
 |  and-not DIODE | 
 |  and-not DIFFRES | 
 |  and-not THKOX | 
 |  and NPLUS | 
 |  copyup ndifcheck | 
 |  labels DIFF | 
 |  labels DIFFTXT text | 
 |  labels DIFFPIN port | 
 |  labels TAPPIN port | 
 |  | 
 |  layer ndiff ndiffarea | 
 |  | 
 |  # Copy ndiff areas up for contact checks | 
 |  templayer xndifcheck ndifcheck | 
 |  copyup ndifcheck | 
 |  | 
 |  templayer mvndiffarea DIFF,DIFFTXT,DIFFPIN | 
 |  and-not POLY | 
 |  and-not NWELL | 
 |  and-not PPLUS | 
 |  and-not DIODE | 
 |  and-not DIFFRES | 
 |  and THKOX | 
 |  and NPLUS | 
 |  copyup ndifcheck | 
 |  labels DIFF | 
 |  labels DIFFTXT text | 
 |  labels DIFFPIN port | 
 |  | 
 |  layer mvndiff mvndiffarea | 
 |  | 
 |  # Copy ndiff areas up for contact checks | 
 |  templayer mvxndifcheck mvndifcheck | 
 |  copyup mvndifcheck | 
 |  | 
 |  layer ndiode DIFF | 
 |  and NPLUS | 
 |  and DIODE | 
 |  and-not NWELL | 
 |  and-not POLY | 
 |  and-not PPLUS | 
 |  and-not THKOX | 
 |  and-not LVTN | 
 |  labels DIFF | 
 |  | 
 |  layer ndiodelvt DIFF | 
 |  and NPLUS | 
 |  and DIODE | 
 |  and-not NWELL | 
 |  and-not POLY | 
 |  and-not PPLUS | 
 |  and-not THKOX | 
 |  and LVTN | 
 |  labels DIFF | 
 |  | 
 |  templayer ndiodearea DIODE | 
 |  and NPLUS | 
 |  and-not THKOX | 
 |  and-not NWELL | 
 |  copyup DIODE,NPLUS | 
 |  | 
 |  layer ndiffres DIFFRES | 
 |  and NPLUS | 
 |  and-not THKOX | 
 |  labels DIFF | 
 |  | 
 |  templayer pdiffarea DIFF,DIFFTXT,DIFFPIN | 
 |  and-not POLY | 
 |  and NWELL | 
 |  and-not NPLUS | 
 |  and-not DIODE | 
 |  and-not THKOX | 
 |  and PPLUS | 
 |  copyup pdifcheck | 
 |  labels DIFF  | 
 |  labels DIFFTXT text | 
 |  labels DIFFPIN port | 
 |  | 
 |  layer pdiff pdiffarea | 
 |  | 
 |  layer mvndiode DIFF | 
 |  and NPLUS | 
 |  and DIODE | 
 |  and THKOX | 
 |  and-not POLY | 
 |  and-not PPLUS | 
 |  and-not LVTN | 
 |  labels DIFF | 
 |  | 
 |  layer nndiode DIFF | 
 |  and NPLUS | 
 |  and DIODE | 
 |  and THKOX | 
 |  and-not POLY | 
 |  and-not PPLUS | 
 |  and LVTN | 
 |  labels DIFF | 
 |  | 
 |  templayer mvndiodearea DIODE | 
 |  and NPLUS | 
 |  and THKOX | 
 |  and-not NWELL | 
 |  copyup DIODE,NPLUS | 
 |  | 
 |  layer mvndiffres DIFFRES | 
 |  and NPLUS | 
 |  and THKOX | 
 |  labels DIFF | 
 |  | 
 |  templayer mvpdiffarea DIFF,DIFFTXT,DIFFPIN | 
 |  and-not POLY | 
 |  and NWELL | 
 |  and-not NPLUS | 
 |  and THKOX | 
 |  and-not DIODE | 
 |  and-not DIFFRES | 
 |  and PPLUS | 
 |  copyup mvpdifcheck | 
 |  labels DIFF | 
 |  labels DIFFTXT text | 
 |  labels DIFFPIN port | 
 |  | 
 |  layer mvpdiff mvpdiffarea | 
 |  | 
 |  # Copy pdiff areas up for contact checks | 
 |  templayer xpdifcheck pdifcheck | 
 |  copyup pdifcheck | 
 |  | 
 |  layer pdiode DIFF | 
 |  and PPLUS | 
 |  and-not POLY | 
 |  and-not NPLUS | 
 |  and-not THKOX | 
 |  and-not LVTN | 
 |  and-not HVTP | 
 |  and DIODE | 
 |  labels DIFF | 
 |  | 
 |  layer pdiodelvt DIFF | 
 |  and PPLUS | 
 |  and-not POLY | 
 |  and-not NPLUS | 
 |  and-not THKOX | 
 |  and LVTN | 
 |  and-not HVTP | 
 |  and DIODE | 
 |  labels DIFF | 
 |  | 
 |  layer pdiodehvt DIFF | 
 |  and PPLUS | 
 |  and-not POLY | 
 |  and-not NPLUS | 
 |  and-not THKOX | 
 |  and-not LVTN | 
 |  and HVTP | 
 |  and DIODE | 
 |  labels DIFF | 
 |  | 
 |  templayer pdiodearea DIODE | 
 |  and PPLUS | 
 |  and-not THKOX | 
 |  copyup DIODE,PPLUS | 
 |  | 
 |  # Define pfet areas as known pdiff, regardless of the presence of a well. | 
 |  | 
 |  templayer pfetarea DIFF | 
 |  and-not NPLUS | 
 |  and-not THKOX | 
 |  and POLY | 
 |  | 
 |  layer pfet pfetarea | 
 |  and-not LVTN | 
 |  and-not HVTP | 
 |  and-not STDCELL | 
 |  and-not COREID | 
 |  labels DIFF | 
 |  | 
 |  layer scpfet pfetarea | 
 |  and-not LVTN | 
 |  and-not HVTP | 
 |  and STDCELL | 
 |  labels DIFF | 
 |  | 
 |  layer ppu pfetarea | 
 |  and-not LVTN | 
 |  and-not HVTP | 
 |  and COREID | 
 |  labels DIFF | 
 |  | 
 |  layer pfetlvt pfetarea | 
 |  and LVTN | 
 |  labels DIFF | 
 |  | 
 |  layer pfethvt pfetarea | 
 |  and HVTP | 
 |  labels DIFF | 
 |  | 
 |  # Always force nwell under pfet (nwell encloses pdiff by 0.18) | 
 |  layer nwell pfetarea | 
 |  grow 180 | 
 |  | 
 |  # Copy mvpdiff areas up for contact checks | 
 |  templayer mvxpdifcheck mvpdifcheck | 
 |  copyup mvpdifcheck | 
 |  | 
 |  layer mvpdiode DIFF | 
 |  and PPLUS | 
 |  and-not POLY | 
 |  and-not NPLUS | 
 |  and THKOX | 
 |  and DIODE | 
 |  labels DIFF | 
 |  | 
 |  templayer mvpdiodearea DIODE | 
 |  and PPLUS | 
 |  and THKOX | 
 |  copyup DIODE,PPLUS | 
 |  | 
 |  # Define pfet areas as known pdiff, | 
 |  # regardless of the presence of a | 
 |  # well. | 
 |  | 
 |  templayer mvpfetarea DIFF | 
 |  and-not NPLUS | 
 |  and THKOX | 
 |  and POLY | 
 |  | 
 |  layer mvpfet mvpfetarea | 
 |  labels DIFF | 
 |  | 
 |  layer pdiff DIFF,DIFFTXT,DIFFPIN | 
 |  and-not NPLUS | 
 |  and-not POLY | 
 |  and-not THKOX | 
 |  and-not DIODE | 
 |  and-not DIFFRES | 
 |  labels DIFF | 
 |  labels DIFFTXT text | 
 |  labels DIFFPIN port | 
 |  | 
 |  layer pdiffres DIFFRES | 
 |  and PPLUS | 
 |  and NWELL | 
 |  and-not THKOX | 
 |  labels DIFF | 
 |  | 
 |  layer nfet DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and-not THKOX | 
 |  and-not LVTN | 
 |  and-not SONOS | 
 |  and-not STDCELL | 
 |  labels DIFF | 
 |  | 
 |  layer scnfet DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and-not NWELL | 
 |  and-not THKOX | 
 |  and-not LVTN | 
 |  and-not SONOS | 
 |  and STDCELL | 
 |  labels DIFF | 
 |  | 
 |  layer npd DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and-not NWELL | 
 |  and COREID | 
 |  labels DIFF | 
 |  | 
 |  # layer npass DIFF | 
 |  # and POLY | 
 |  # and-not PPLUS | 
 |  # and NPLUS | 
 |  # and-not NWELL | 
 |  # and COREID | 
 |  # labels DIFF | 
 |  | 
 |  layer nfetlvt DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and-not THKOX | 
 |  and LVTN | 
 |  and-not SONOS | 
 |  labels DIFF | 
 |  | 
 |  layer nsonos DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and-not THKOX | 
 |  and LVTN | 
 |  and SONOS | 
 |  labels DIFF | 
 |  | 
 |  templayer nsdarea TAP | 
 |  and NPLUS | 
 |  and NWELL | 
 |  and-not POLY | 
 |  and-not PPLUS | 
 |  and-not THKOX | 
 |  copyup nsubcheck | 
 |  | 
 |  layer nsd nsdarea | 
 |  labels TAP | 
 |  | 
 |  layer nsd TAP,TAPPIN | 
 |  and NPLUS | 
 |  and-not POLY | 
 |  and-not THKOX | 
 |  labels TAP | 
 |  labels TAPPIN port | 
 |  | 
 |  templayer nsdexpand nsdarea | 
 |  grow 500 | 
 |  | 
 |  # Copy nsub areas up for contact checks | 
 |  templayer xnsubcheck nsubcheck | 
 |  copyup nsubcheck | 
 |  | 
 |  templayer psdarea TAP | 
 |  and PPLUS | 
 |  and-not NWELL | 
 |  and-not POLY | 
 |  and-not NPLUS | 
 |  and-not THKOX | 
 |  and-not pfetexpand | 
 |  copyup psubcheck | 
 |  | 
 |  layer psd psdarea | 
 |  labels TAP | 
 |  | 
 |  layer psd TAP,TAPPIN | 
 |  and PPLUS | 
 |  and-not POLY | 
 |  and-not THKOX | 
 |  labels TAP | 
 |  labels TAPPIN port | 
 |  | 
 |  templayer psdexpand psdarea | 
 |  grow 500 | 
 |  | 
 |  layer mvpdiff DIFF,DIFFTXT,DIFFPIN | 
 |  and-not NPLUS | 
 |  and-not POLY | 
 |  and THKOX | 
 |  and mvpfetexpand | 
 |  labels DIFF | 
 |  labels DIFFTXT text | 
 |  labels DIFFPIN port | 
 |  | 
 |  layer mvpdiffres DIFFRES | 
 |  and PPLUS | 
 |  and NWELL | 
 |  and THKOX | 
 |  and-not mvrdpioedge | 
 |  labels DIFF | 
 |  | 
 |  layer mvnfet DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and-not LVTN | 
 |  and THKOX | 
 |  labels DIFF | 
 |  | 
 |  layer mvnnfet DIFF | 
 |  and POLY | 
 |  and-not PPLUS | 
 |  and NPLUS | 
 |  and LVTN | 
 |  and THKOX | 
 |  labels DIFF | 
 |  | 
 |  templayer mvnsdarea TAP | 
 |  and NPLUS | 
 |  and NWELL | 
 |  and-not POLY | 
 |  and-not PPLUS | 
 |  and THKOX | 
 |  copyup mvnsubcheck | 
 |  | 
 |  layer mvnsd mvnsdarea | 
 |  labels TAP | 
 |  | 
 |  layer mvnsd TAP,TAPPIN | 
 |  and NPLUS | 
 |  and THKOX | 
 |  labels TAP | 
 |  labels TAPPIN port | 
 |  | 
 |  templayer mvnsdexpand mvnsdarea | 
 |  grow 500 | 
 |  | 
 |  # Copy nsub areas up for contact checks | 
 |  templayer mvxnsubcheck mvnsubcheck | 
 |  copyup mvnsubcheck | 
 |  | 
 |  templayer mvpsdarea DIFF | 
 |  and PPLUS | 
 |  and-not NWELL | 
 |  and-not POLY | 
 |  and-not NPLUS | 
 |  and THKOX | 
 |  and-not mvpfetexpand | 
 |  copyup mvpsubcheck | 
 |  | 
 |  layer mvpsd mvpsdarea | 
 |  labels DIFF | 
 |  | 
 |  layer mvpsd TAP,TAPPIN | 
 |  and PPLUS | 
 |  and THKOX | 
 |  labels TAP | 
 |  labels TAPPIN port | 
 |  | 
 |  templayer mvpsdexpand mvpsdarea | 
 |  grow 500 | 
 |  | 
 |  # Copy psub areas up for contact checks | 
 |  templayer xpsubcheck psubcheck | 
 |  copyup psubcheck | 
 |  | 
 |  templayer mvxpsubcheck mvpsubcheck | 
 |  copyup mvpsubcheck | 
 |  | 
 |  layer psd TAP | 
 |  and-not PPLUS | 
 |  and-not NPLUS | 
 |  and-not POLY | 
 |  and-not THKOX | 
 |  and-not pfetexpand | 
 |  and psdexpand | 
 |  | 
 |  layer nsd TAP | 
 |  and-not PPLUS | 
 |  and-not NPLUS | 
 |  and-not POLY | 
 |  and-not THKOX | 
 |  and nsdexpand | 
 |  | 
 |  layer mvpsd TAP | 
 |  and-not PPLUS | 
 |  and-not NPLUS | 
 |  and-not POLY | 
 |  and THKOX | 
 |  and-not mvpfetexpand | 
 |  and mvpsdexpand | 
 |  | 
 |  layer mvnsd TAP | 
 |  and-not PPLUS | 
 |  and-not NPLUS | 
 |  and-not POLY | 
 |  and THKOX | 
 |  and mvnsdexpand | 
 |  | 
 |  templayer hresarea POLY | 
 |  and RPM | 
 |  grow 3000 | 
 |  | 
 |  templayer uresarea POLY | 
 |  and URPM | 
 |  grow 3000 | 
 |  | 
 |  templayer diffresarea DIFFRES | 
 |  and-not THKOX | 
 |  grow 3000 | 
 |  | 
 |  templayer mvdiffresarea DIFFRES | 
 |  and THKOX | 
 |  grow 3000 | 
 |  | 
 |  templayer resarea diffresarea,mvdiffresarea,hresarea,uresarea | 
 |  | 
 |  layer pfet POLY | 
 |  and DIFF | 
 |  and diffresarea | 
 |  and-not NPLUS | 
 |  and-not STDCELL | 
 |  | 
 |  layer scpfet POLY | 
 |  and DIFF | 
 |  and diffresarea | 
 |  and-not NPLUS | 
 |  and STDCELL | 
 |  | 
 |  templayer xpolyterm RPM,URPM | 
 |  and POLY | 
 |  and-not POLYRES | 
 |  # add back the 0.06um contact surround in the direction of the resistor | 
 |  grow 60 | 
 |  and POLY | 
 |  | 
 |  layer xpc xpolyterm | 
 |  | 
 |  templayer polyarea POLY | 
 |  and-not POLYRES | 
 |  and-not POLYSHORT | 
 |  and-not DIFF | 
 |  and-not RPM | 
 |  and-not URPM | 
 |  copyup polycheck | 
 |  | 
 |  layer poly polyarea,POLYTXT,POLYPIN | 
 |  labels POLY | 
 |  labels POLYTXT text | 
 |  labels POLYPIN port | 
 |  | 
 |  # Copy (non-resistor) poly areas up for contact checks | 
 |  templayer xpolycheck polycheck | 
 |  copyup polycheck | 
 |  | 
 |  layer mrp1 POLY | 
 |  and POLYRES | 
 |  and-not RPM | 
 |  and-not URPM | 
 |  labels POLY | 
 |  | 
 |  layer rmp POLY | 
 |  and POLYSHORT | 
 |  labels POLY | 
 |  | 
 |  layer xhrpoly POLY | 
 |  and POLYRES | 
 |  and RPM | 
 |  and-not URPM | 
 |  and PPLUS | 
 |  and NPC | 
 |  and-not xpolyterm | 
 |  labels POLY | 
 |  | 
 |  layer uhrpoly POLY | 
 |  and POLYRES | 
 |  and URPM | 
 |  and-not RPM | 
 |  and NPC | 
 |  and-not xpolyterm | 
 |  labels POLY | 
 |  | 
 |  templayer ndcbase CONT | 
 |  and DIFF | 
 |  and NPLUS | 
 |  and-not NWELL | 
 |  and LI | 
 |  and-not THKOX | 
 |  | 
 |  layer ndc ndcbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or ndcbase | 
 |  labels CONT | 
 |  | 
 |  templayer nscbase CONT | 
 |  and DIFF,TAP | 
 |  and NPLUS | 
 |  and NWELL | 
 |  and LI | 
 |  and-not THKOX | 
 |  | 
 |  layer nsc nscbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or nscbase | 
 |  labels CONT | 
 |  | 
 |  templayer pdcbase CONT | 
 |  and DIFF | 
 |  and PPLUS | 
 |  and NWELL | 
 |  and LI | 
 |  and-not THKOX | 
 |  | 
 |  layer pdc pdcbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or pdcbase | 
 |  labels CONT | 
 |  | 
 |  templayer pdcnowell CONT | 
 |  and DIFF | 
 |  and PPLUS | 
 |  and pfetexpand | 
 |  and LI | 
 |  and-not THKOX | 
 |  | 
 |  layer pdc pdcnowell | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or pdcnowell | 
 |  labels CONT | 
 |  | 
 |  templayer pscbase CONT | 
 |  and DIFF,TAP | 
 |  and PPLUS | 
 |  and-not NWELL | 
 |  and-not pfetexpand | 
 |  and LI | 
 |  and-not THKOX | 
 |  | 
 |  layer psc pscbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or pscbase | 
 |  labels CONT | 
 |  | 
 |  templayer pcbase CONT | 
 |  and POLY | 
 |  and-not DIFF | 
 |  and-not RPM,URPM | 
 |  and LI | 
 |  | 
 |  layer pc pcbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or pcbase | 
 |  labels CONT | 
 |  | 
 |  templayer ndicbase CONT | 
 |  and DIFF | 
 |  and NPLUS | 
 |  and DIODE | 
 |  and-not POLY | 
 |  and-not PPLUS | 
 |  and-not THKOX | 
 |  and-not LVTN | 
 |  | 
 |  layer ndic ndicbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or ndicbase | 
 |  labels CONT | 
 |  | 
 |  templayer ndilvtcbase CONT | 
 |  and DIFF | 
 |  and NPLUS | 
 |  and DIODE | 
 |  and-not POLY | 
 |  and-not PPLUS | 
 |  and-not THKOX | 
 |  and LVTN | 
 |  | 
 |  layer ndilvtc ndilvtcbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or ndilvtcbase | 
 |  labels CONT | 
 |  | 
 |  templayer pdicbase CONT | 
 |  and DIFF | 
 |  and PPLUS | 
 |  and DIODE | 
 |  and-not POLY | 
 |  and-not NPLUS | 
 |  and-not THKOX | 
 |  and-not LVTN | 
 |  and-not HVTP | 
 |  | 
 |  layer pdic pdicbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or pdicbase | 
 |  labels CONT | 
 |  | 
 |  templayer pdilvtcbase CONT | 
 |  and DIFF | 
 |  and PPLUS | 
 |  and DIODE | 
 |  and-not POLY | 
 |  and-not NPLUS | 
 |  and-not THKOX | 
 |  and LVTN | 
 |  and-not HVTP | 
 |  | 
 |  layer pdilvtc pdilvtcbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or pdilvtcbase | 
 |  labels CONT | 
 |  | 
 |  templayer pdihvtcbase CONT | 
 |  and DIFF | 
 |  and PPLUS | 
 |  and DIODE | 
 |  and-not POLY | 
 |  and-not NPLUS | 
 |  and-not THKOX | 
 |  and-not LVTN | 
 |  and HVTP | 
 |  | 
 |  layer pdihvtc pdihvtcbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or pdihvtcbase | 
 |  labels CONT | 
 |  | 
 |  templayer mvndcbase CONT | 
 |  and DIFF | 
 |  and NPLUS | 
 |  and-not NWELL | 
 |  and LI | 
 |  and THKOX | 
 |  | 
 |  layer mvndc mvndcbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvndcbase | 
 |  labels CONT | 
 |  | 
 |  templayer mvnscbase CONT | 
 |  and DIFF,TAP | 
 |  and NPLUS | 
 |  and NWELL | 
 |  and LI | 
 |  and THKOX | 
 |  | 
 |  layer mvnsc mvnscbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvnscbase | 
 |  labels CONT | 
 |  | 
 |  templayer mvpdcbase CONT | 
 |  and DIFF | 
 |  and PPLUS | 
 |  and NWELL | 
 |  and LI | 
 |  and THKOX | 
 |  | 
 |  layer mvpdc mvpdcbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvpdcbase | 
 |  labels CONT | 
 |  | 
 |  templayer mvpdcnowell CONT | 
 |  and DIFF | 
 |  and PPLUS | 
 |  and mvpfetexpand | 
 |  and MET1 | 
 |  and THKOX | 
 |  | 
 |  layer mvpdc mvpdcnowell | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvpdcnowell | 
 |  labels CONT | 
 |  | 
 |  templayer mvpscbase CONT | 
 |  and DIFF,TAP | 
 |  and PPLUS | 
 |  and-not NWELL | 
 |  and-not mvpfetexpand | 
 |  and LI | 
 |  and THKOX | 
 |  | 
 |  layer mvpsc mvpscbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvpscbase | 
 |  labels CONT | 
 |  | 
 |  templayer mvndicbase CONT | 
 |  and DIFF | 
 |  and NPLUS | 
 |  and DIODE | 
 |  and-not POLY | 
 |  and-not PPLUS | 
 |  and-not LVTN | 
 |  and THKOX | 
 |  | 
 |  layer mvndic mvndicbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvndicbase | 
 |  labels CONT | 
 |  | 
 |  templayer nndicbase CONT | 
 |  and DIFF | 
 |  and NPLUS | 
 |  and DIODE | 
 |  and-not POLY | 
 |  and-not PPLUS | 
 |  and LVTN | 
 |  and THKOX | 
 |  | 
 |  layer nndic nndicbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or nndicbase | 
 |  labels CONT | 
 |  | 
 |  templayer mvpdicbase CONT | 
 |  and DIFF | 
 |  and PPLUS | 
 |  and DIODE | 
 |  and-not POLY | 
 |  and-not NPLUS | 
 |  and THKOX | 
 |  | 
 |  layer mvpdic mvpdicbase | 
 |  grow 85 | 
 |  shrink 85 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or mvpdicbase | 
 |  labels CONT | 
 |  | 
 |  layer locali LI,LITXT,LIPIN | 
 |  and-not LIRES,LISHORT | 
 |  and-not COREID | 
 |  labels LI | 
 |  labels LITXT text | 
 |  labels LIPIN port | 
 |  | 
 |  layer coreli LI,LITXT,LIPIN | 
 |  and-not LIRES,LISHORT | 
 |  and COREID | 
 |  labels LI | 
 |  labels LITXT text | 
 |  labels LIPIN port | 
 |  | 
 |  layer rli LI | 
 |  and LIRES,LISHORT | 
 |  labels LIRES,LISHORT | 
 |  | 
 |  layer lic MCON | 
 |  grow 95 | 
 |  shrink 95 | 
 |  shrink 85 | 
 |  grow 85 | 
 |  or MCON | 
 |  labels MCON | 
 |  | 
 |  layer m1 MET1,MET1TXT,MET1PIN | 
 |  and-not MET1RES,MET1SHORT | 
 |  labels MET1 | 
 |  labels MET1TXT text | 
 |  labels MET1PIN port | 
 |  | 
 |  layer rm1 MET1 | 
 |  and MET1RES,MET1SHORT | 
 |  labels MET1RES,MET1SHORT | 
 |  | 
 |  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 | 
 |  # HVTP | 
 |  calma HVTP 78 44 | 
 |  # SONOS (TUNM) | 
 |  calma SONOS 80 20 | 
 |  # NPLUS = NSDM | 
 |  calma NPLUS 93 44 | 
 |  # PPLUS = PSDM | 
 |  calma PPLUS 94 20 | 
 |  # HVI | 
 |  calma THKOX 75 20 | 
 |  # NPC | 
 |  calma NPC 95 20 | 
 |  # P+ POLY MASK | 
 |  calma RPM 86 20 | 
 |  calma URPM 79 20 | 
 |  calma LDNTM 11 44 | 
 |  calma HVNTM 125 20 | 
 |  # Poly resistor ID mark | 
 |  calma POLYRES 66 13 | 
 |  # Diffusion resistor ID mark | 
 |  calma DIFFRES 65 13 | 
 |  calma POLY 66 20 | 
 |  calma POLYMOD 66 83 | 
 |  # Diode ID mark | 
 |  calma DIODE 81 23 | 
 |  # Bipolar NPN mark | 
 |  calma NPNID 82 20 | 
 |  # Bipolar PNP mark | 
 |  calma PNPID 82 20 | 
 |  # Capacitor ID | 
 |  calma CAPID 82 64 | 
 |  # Core area ID mark | 
 |  calma COREID 81 2 | 
 |  # Standard cell ID mark | 
 |  calma STDCELL 81 4 | 
 |  # Padframe cell ID mark | 
 |  calma PADCELL 81 3 | 
 |  # Seal ring ID mark | 
 |  calma SEALID 81 1 | 
 |  # Low tap density ID mark | 
 |  calma LOWTAPDENSITY 81 14 | 
 |   | 
 |  # LICON | 
 |  calma CONT 66 44 | 
 |  calma LI   67 20 | 
 |  calma MCON 67 44 | 
 |  | 
 |  calma MET1 68 20 | 
 |  calma VIA1 68 44 | 
 |  calma MET2 69 20 | 
 |  calma VIA2 69 44 | 
 |  calma MET3 70 20 | 
 |  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 | 
 |  | 
 | end | 
 |  | 
 | #----------------------------------------------------- | 
 | # Digital flow maze router cost parameters | 
 | #----------------------------------------------------- | 
 |  | 
 | mzrouter | 
 | end | 
 |  | 
 | #----------------------------------------------------- | 
 | # Vendor DRC rules | 
 | #----------------------------------------------------- | 
 |  | 
 | drc | 
 |  | 
 |  style drc variants (fast),(full),(routing) | 
 |  | 
 |  scalefactor 10  | 
 |  | 
 |  cifstyle drc | 
 |  | 
 |  variants (fast),(full) | 
 |  | 
 | #----------------------------- | 
 | # DNWELL | 
 | #----------------------------- | 
 |  | 
 |  width dnwell 3000 "Deep N-well width < %d (Dnwell 2)" | 
 |  spacing dnwell dnwell 6300 touching_ok "Deep N-well spacing < %d (Dnwell 3)" | 
 |  spacing dnwell allnwell 4500 surround_ok \ | 
 |     "Deep N-well spacing to N-well < %d (Nwell 7)" | 
 |  cifmaxwidth nwell_missing 0 bend_illegal \ | 
 |     "N-well overlap of Deep N-well < 0.4um outside, 1.03um inside (Nwell 5a, 7)" | 
 |  cifmaxwidth dnwell_missing 0 bend_illegal \ | 
 |     "SONOS nFET must be in Deep N-well (Tunm 6a)" | 
 |  | 
 | #----------------------------- | 
 | # NWELL | 
 | #----------------------------- | 
 |  | 
 |  width allnwell 840 "N-well width < %d (Nwell 1)" | 
 |  spacing allnwell allnwell 1270 touching_ok "N-well spacing < %d (Nwell 2a)" | 
 |  | 
 | #----------------------------- | 
 | # DIFF | 
 | #----------------------------- | 
 |  | 
 |  width *ndiff,nfet,scnfet,npd,npass,*nsd,*ndiode,ndiffres,*pdiff,pfet,scpfet,ppu,*psd,*pdiode,pdiffres \ | 
 |     150 "Diffusion width < %d (Diff/tap 1)" | 
 |  width *mvndiff,mvnfet,mvnnfet,*mvndiode,*nndiode,mvndiffres,*mvpdiff,mvpfet,*mvpdiode 290 \ | 
 |     "MV Diffusion width < %d (Diff/tap 14)" | 
 |  width *mvnsd,*mvpsd 150 "MV Tap width < %d (Diff/tap 1)" | 
 |  extend *mvpsd *mvndiff 700 "MV Butting tap length < %d (Diff/tap 16)" | 
 |  extend *mvnsd *mvpdiff 700 "MV Butting tap length < %d (Diff/tap 16)" | 
 |  extend *psd *ndiff 290 "Butting tap length < %d (Diff/tap 4)" | 
 |  extend *nsd *pdiff 290 "Butting tap length < %d (Diff/tap 4)" | 
 |  width mvpdiffres 150 "MV P-Diffusion resistor width < %d (Diff/tap 14a)" | 
 |  spacing alldifflv,var,varhvt alldifflv,var,varhvt 270 touching_ok \ | 
 |     "Diffusion spacing < %d (Diff/tap 3)" | 
 |  spacing alldiffmvnontap,mvvar alldiffmvnontap,mvvar 300 touching_ok \ | 
 |     "MV Diffusion spacing < %d (Diff/tap 15a)" | 
 |  spacing alldiffmv *mvnsd,*mvpsd 270 touching_ok \ | 
 |     "MV Diffusion to MV tap spacing < %d (Diff/tap 3)" | 
 |  spacing *mvndiff,mvnfet,mvnnfet,*mvndiode,*nndiode,mvndiffres,mvvar *mvpsd 370 \ | 
 |     touching_ok "MV P-Diffusion to MV N-tap spacing < %d (Diff/tap 15b)" | 
 |  spacing *mvnsd,*mvpdiff,mvpfet,mvvar,*mvpdiode *mvpsd,*psd 760 touching_illegal \ | 
 |     "MV Diffusion in N-well to P-tap spacing < %d (Diff/tap 20 + Diff/tap 17,19)" | 
 |  spacing *ndiff,*ndiode,nfet allnwell 340 touching_illegal \ | 
 |     "N-Diffusion spacing to N-well < %d (Diff/tap 9)" | 
 |  spacing *mvndiff,*mvndiode,mvnfet,mvnnfet allnwell 340 touching_illegal \ | 
 |     "N-Diffusion spacing to N-well < %d (Diff/tap 9)" | 
 |  spacing *psd allnwell 130 touching_illegal \ | 
 |     "P-tap spacing to N-well < %d (Diff/tap 11)" | 
 |  spacing *mvpsd allnwell 130 touching_illegal \ | 
 |     "P-tap spacing to N-well < %d (Diff/tap 11)" | 
 |  surround *nsd allnwell 180 absence_illegal \ | 
 |     "N-well overlap of N-tap < %d (Diff/tap 10)" | 
 |  surround *mvnsd allnwell 330 absence_illegal \ | 
 |     "N-well overlap of MV N-tap < %d (Diff/tap 19)" | 
 |  surround *pdiff,*pdiode,pfet,scpfet,ppu allnwell 180 absence_illegal \ | 
 |     "N-well overlap of P-Diffusion < %d (Diff/tap 8)" | 
 |  surround *mvpdiff,*mvpdiode,mvpfet allnwell 330 absence_illegal \ | 
 |     "N-well overlap of P-Diffusion < %d (Diff/tap 17)" | 
 |  surround mvvar allnwell 560 absence_illegal \ | 
 |     "N-well overlap of MV varactor < %d (LVTN 10 + LVTN 4b)" | 
 |  spacing *mvndiode *mvndiode 1070 touching_ok \ | 
 |     "MV N-diode spacing < %d (HVNTM.2 + 2 * HVNTM.3)" | 
 |  | 
 |  # Butting junction rules | 
 |  edge4way (*psd)/a ~(*ndiff,*psd)/a 125 ~(*ndiff)/a (*ndiff)/a 125 \ | 
 |     "N-Diffusion to P-tap spacing < %d across butted junction" | 
 |  edge4way (*ndiff)/a ~(*ndiff,*psd)/a 125 ~(*psd)/a (*psd)/a 125 \ | 
 |     "N-Diffusion to P-tap spacing < %d across butted junction" | 
 |  edge4way (*nsd)/a ~(*pdiff,*nsd)/a 125 ~(*pdiff)/a (*pdiff)/a 125 \ | 
 |     "P-Diffusion to N-tap spacing < %d across butted junction" | 
 |  edge4way (*pdiff)/a ~(*pdiff,*nsd)/a 125 ~(*nsd)/a (*nsd)/a 125 \ | 
 |     "P-Diffusion to N-tap spacing < %d across butted junction" | 
 |  | 
 |  edge4way (*mvpsd)/a ~(*mvndiff,*mvpsd)/a 125 ~(*mvndiff)/a (*mvndiff)/a 125 \ | 
 |     "MV N-Diffusion to MV P-tap spacing < %d across butted junction" | 
 |  edge4way (*mvndiff)/a ~(*mvndiff,*mvpsd)/a 125 ~(*mvpsd)/a (*mvpsd)/a 125 \ | 
 |     "MV N-Diffusion to MV P-tap spacing < %d across butted junction" | 
 |  edge4way (*mvnsd)/a ~(*mvpdiff,*mvnsd)/a 125 ~(*mvpdiff)/a (*mvpdiff)/a 125 \ | 
 |     "MV P-Diffusion to MV N-tap spacing < %d across butted junction" | 
 |  edge4way (*mvpdiff)/a ~(*mvpdiff,*mvnsd)/a 125 ~(*mvnsd)/a (*mvnsd)/a 125 \ | 
 |     "MV P-Diffusion to MV N-tap spacing < %d across butted junction" | 
 |  | 
 |  variants (full) | 
 |  | 
 |  # Latchup rules | 
 |  cifmaxwidth ptap_missing 0 bend_illegal \ | 
 |     "N-diff distance to P-tap must be < 15.0um (LU 2)" | 
 |  cifmaxwidth dptap_missing 0 bend_illegal \ | 
 |     "N-diff distance to P-tap in deep Nwell must be < 15.0um (LU 2.1)" | 
 |  cifmaxwidth ntap_missing 0 bend_illegal \ | 
 |     "P-diff distance to N-tap must be < 15.0um (LU 3)" | 
 |  | 
 |  variants * | 
 |  | 
 | #----------------------------- | 
 | # POLY | 
 | #----------------------------- | 
 |  | 
 |  width allpoly 150 "Poly width < %d (Poly 1a)" | 
 |  spacing allpoly allpoly 210 touching_ok "Poly spacing < %d (Poly 2)" | 
 |  spacing allpolynonfet alldifflvnonfet 75 corner_ok allfets \ | 
 |     "Poly spacing to Diffusion < %d (Poly 4a)" | 
 |  spacing npres *nsd 480 touching_illegal \ | 
 |     "Poly resistor spacing to N-tap < %d (Poly 9)" | 
 |  overhang *ndiff,rndiff nfet,scnfet,npd,npass 250 "N-Diffusion overhang of nmos < %d (Poly 7)" | 
 |  overhang *mvndiff,mvrndiff mvnfet,mvnnfet 250 \ | 
 |     "N-Diffusion overhang of nmos < %d (Poly 7)" | 
 |  overhang *pdiff,rpdiff pfet,scpfet,ppu 250 "P-Diffusion overhang of pmos < %d (Poly 7)" | 
 |  overhang *mvpdiff,mvrpdiff mvpfet 250 "P-Diffusion overhang of pmos < %d (Poly 7)" | 
 |  overhang *poly allfets 130 "Poly overhang of transistor < %d (Poly 8)" | 
 |  rect_only allfets "No bends in transistors (Poly 11)" | 
 |  rect_only xhrpoly,uhrpoly "No bends in poly resistors (Poly 11)" | 
 |  extend  xpc/a xhrpoly,uhrpoly 2160 \ | 
 |     "Poly contact extends poly resistor by < %d (LIcon 1c + LI 5)" | 
 |  spacing xhrpoly,uhrpoly xhrpoly,uhrpoly 1240 touching_illegal \ | 
 |     "Distance between precision resistors < %d (RPM 2 + 2 * RPM 3)" | 
 |  | 
 | #-------------------------------------------------------------------- | 
 | # NPC (Nitride Poly Cut) | 
 | #-------------------------------------------------------------------- | 
 |  | 
 | # Layer NPC is defined automatically around poly contacts (grow 0.1um) | 
 |  | 
 | #-------------------------------------------------------------------- | 
 | # CONT (LICON, contact between poly/diff and LI) | 
 | #-------------------------------------------------------------------- | 
 |  | 
 |  width ndc/li 170 "N-diffusion contact width < %d (LIcon 1)" | 
 |  width nsc/li 170 "N-tap contact width     < %d (LIcon 1)" | 
 |  width pdc/li 170 "P-diffusion contact width < %d (LIcon 1)" | 
 |  width psc/li 170 "P-tap contact width     < %d (LIcon 1)" | 
 |  width ndic/li 170 "N-diode contact width < %d (LIcon 1)" | 
 |  width pdic/li 170 "P-diode contact width < %d (LIcon 1)" | 
 |  width pc/li  170 "Poly contact width        < %d (LIcon 1)" | 
 |  | 
 |  width xpc/li  350 "Poly resistor contact width < %d (LIcon 1b + 2 * LI 5)" | 
 |  | 
 |  width mvndc/li 170 "N-diffusion contact width < %d (LIcon 1)" | 
 |  width mvnsc/li 170 "N-tap contact width     < %d (LIcon 1)" | 
 |  width mvpdc/li 170 "P-diffusion contact width < %d (LIcon 1)" | 
 |  width mvpsc/li 170 "P-tap contact width     < %d (LIcon 1)" | 
 |  width mvndic/li 170 "N-diode contact width < %d (LIcon 1)" | 
 |  width mvpdic/li 170 "P-diode contact width < %d (LIcon 1)" | 
 |  | 
 |  spacing allpdiffcont allndiffcont 170 touching_illegal \ | 
 |     "Diffusion contact spacing < %d (LIcon 2)" | 
 |  spacing allndiffcont allndiffcont 170 touching_ok \ | 
 |     "Diffusion contact spacing < %d (LIcon 2)" | 
 |  spacing allpdiffcont allpdiffcont 170 touching_ok \ | 
 |     "Diffusion contact spacing < %d (LIcon 2)" | 
 |  spacing pc pc 170 touching_ok "Poly1 contact spacing < %d (LIcon 2)" | 
 |  | 
 |  spacing pc alldiff 190 touching_illegal \ | 
 |     "Poly contact spacing to diffusion < %d (LIcon 14)" | 
 |  spacing pc allpfets 235 touching_illegal \ | 
 |     "Poly contact spacing to pFET < %d (LIcon 9 + PSDM 5a)" | 
 |  | 
 |  spacing ndc,pdc nfet,pfet 55 touching_illegal \ | 
 |     "Diffusion contact to gate < %d (LIcon 11)" | 
 |  spacing ndc,pdc scnfet,npd,npass,scpfet,ppu 50 touching_illegal \ | 
 |     "Diffusion contact to standard cell gate < %d (LIcon 11)" | 
 |  spacing mvndc,mvpdc mvnfet,mvnnfet,mvpfet 55 touching_illegal \ | 
 |     "Diffusion contact to gate < %d (LIcon 11)" | 
 |  spacing ndc,mvndc rnd,mvrnd 60 touching_illegal "Diffusion contact to rndiff < %d ()" | 
 |  spacing pdc,mvpdc rdp,mvrdp 60 touching_illegal "Diffusion contact to rndiff < %d ()" | 
 |  spacing nsc varactor,varhvt 250 touching_illegal \ | 
 |     "Diffusion contact to varactor gate < %d (LIcon 10)" | 
 |  spacing mvnsc mvvar 250 touching_illegal \ | 
 |     "Diffusion contact to varactor gate < %d (LIcon 10)" | 
 |  | 
 |  surround ndc/a *ndiff,nfet,scnfet,npd,npass,nfetlvt 40 absence_illegal \ | 
 |     "N-diffusion overlap of N-diffusion contact < %d (LIcon 5a)" | 
 |  surround pdc/a *pdiff,pfet,scpfet,ppu,pfethvt,pfetlvt 40 absence_illegal \ | 
 |     "P-diffusion overlap of P-diffusion contact < %d (LIcon 5a)" | 
 |  surround ndic/a *ndi 40 absence_illegal \ | 
 |     "N-diode overlap of N-diode contact < %d (LIcon 5a)" | 
 |  surround pdic/a *pdi 40 absence_illegal \ | 
 |     "P-diode overlap of N-diode contact < %d (LIcon 5a)" | 
 |  | 
 |  surround ndc/a *ndiff,nfet,scnfet,npd,npass,nfetlvt 60 directional \ | 
 |     "N-diffusion overlap of N-diffusion contact < %d in one direction (LIcon 5c)" | 
 |  surround pdc/a *pdiff,pfet,scpfet,ppu,pfethvt,pfetlvt 60 directional \ | 
 |     "P-diffusion overlap of P-diffusion contact < %d in one direction (LIcon 5c)" | 
 |  surround ndic/a *ndi 60 directional \ | 
 |     "N-diode overlap of N-diode contact < %d in one direction (LIcon 5c)" | 
 |  surround pdic/a *pdi 60 directional \ | 
 |     "P-diode overlap of N-diode contact < %d in one direction (LIcon 5c)" | 
 |  | 
 |  surround nsc/a *nsd 120 directional \ | 
 |     "N-tap overlap of N-tap contact < %d in one direction (LIcon 7)" | 
 |  surround psc/a *psd 120 directional \ | 
 |     "P-tap overlap of P-tap contact < %d in one direction (LIcon 7)" | 
 |  | 
 |  surround mvndc/a *mvndiff,mvnfet 40 absence_illegal \ | 
 |     "N-diffusion overlap of N-diffusion contact < %d (LIcon 5a)" | 
 |  surround mvpdc/a *mvpdiff,mvpfet 40 absence_illegal \ | 
 |     "P-diffusion overlap of P-diffusion contact < %d (LIcon 5a)" | 
 |  surround mvndic/a *mvndi 40 absence_illegal \ | 
 |     "N-diode overlap of N-diode contact < %d (LIcon 5a)" | 
 |  surround mvpdic/a *mvpdi 40 absence_illegal \ | 
 |     "P-diode overlap of N-diode contact < %d (LIcon 5a)" | 
 |  | 
 |  surround mvndc/a *mvndiff,mvnfet 60 directional \ | 
 |     "N-diffusion overlap of N-diffusion contact < %d in one direction (LIcon 5c)" | 
 |  surround mvpdc/a *mvpdiff,mvpfet 60 directional \ | 
 |     "P-diffusion overlap of P-diffusion contact < %d in one direction (LIcon 5c)" | 
 |  surround mvndic/a *mvndi 60 directional \ | 
 |     "N-diode overlap of N-diode contact < %d in one direction (LIcon 5c)" | 
 |  surround mvpdic/a *mvpdi 60 directional \ | 
 |     "P-diode overlap of N-diode contact < %d in one direction (LIcon 5c)" | 
 |  | 
 |  surround mvnsc/a *mvnsd 120 directional \ | 
 |     "N-tap overlap of N-tap contact < %d in one direction (LIcon 7)" | 
 |  surround mvpsc/a *mvpsd 120 directional \ | 
 |     "P-tap overlap of P-tap contact < %d in one direction (LIcon 7)" | 
 |  | 
 |  surround pc/a *poly,mrp1,xhrpoly,uhrpoly 50 absence_illegal \ | 
 |     "Poly overlap of poly contact < %d (LIcon 8)" | 
 |  surround pc/a *poly,mrp1,xhrpoly,uhrpoly 80 directional \ | 
 |     "Poly overlap of poly contact < %d in one direction (LIcon 8a)" | 
 |  | 
 |  exact_overlap ndc/a,pdc/a,psc/a,nsc/a,pc/a,ndic/a,pdic/a | 
 |  exact_overlap mvndc/a,mvpdc/a,mvpsc/a,mvnsc/a,mvndic/a,mvpdic/a | 
 |  | 
 | #------------------------------------------------------------- | 
 | # LI - Local interconnect layer | 
 | #------------------------------------------------------------- | 
 |  | 
 |  width *li,rli 170 "Local interconnect width < %d (LI 1)" | 
 |  width coreli 140 "Core local interconnect width < %d (LI c1)" | 
 |  spacing allli allli,*obsli 170 touching_ok  "Local interconnect spacing < %d (LI 3)" | 
 |  spacing coreli allli,*obsli 140 touching_ok  "Core local interconnect spacing < %d (LI c2)" | 
 |  | 
 |  surround pc/li *li 80 directional \ | 
 |     "Local interconnect overlap of poly contact < %d in one direction (LI 5)" | 
 |  | 
 |  surround ndc/li,nsc/li,pdc/li,psc/li,ndic/li,pdic/li,mvndc/li,mvnsc/li,mvpdc/li,mvpsc/li,mvndic/li,mvpdic/li \ | 
 |     *li,rli 80 directional \ | 
 |     "Local interconnect overlap of diffusion contact < %d in one direction (LI 5)" | 
 |  | 
 |  area allli,*obsli 56100 170 "Local interconnect minimum area < %a (LI 6)" | 
 |  | 
 | #------------------------------------------------------------- | 
 | # MCON - Contact between local interconnect and metal1 | 
 | #------------------------------------------------------------- | 
 |  | 
 |  width lic/m1 170 "Mcon width < %d (Mcon 1)" | 
 |  spacing lic/m1 lic/m1,obslic/m1 170 touching_ok "Mcon spacing < %d (Mcon 2)" | 
 |  | 
 |  exact_overlap lic/m1 | 
 |  | 
 | #------------------------------------------------------------- | 
 | # METAL1 - | 
 | #------------------------------------------------------------- | 
 |  | 
 |  width *m1,rm1 140 "Metal1 width < %d (Met1 1)" | 
 |  spacing allm1 allm1,*obsm1 140 touching_ok "Metal1 spacing < %d (Met1 2)" | 
 |  area allm1,*obsm1 83000 140 "Metal1 minimum area < %a (Met1 6)" | 
 |  | 
 |  surround lic/m1 *met1 30 absence_illegal \ | 
 |     "Metal1 overlap of local interconnect contact < %d (Met1 4)" | 
 |  surround lic/m1 *met1 60 directional \ | 
 |     "Metal1 overlap of local interconnect contact < %d in one direction (Met1 5)" | 
 |  | 
 | variants (fast),(full) | 
 |  widespacing allm1 3000 allm1,*obsm1 280 touching_ok \ | 
 |     "Metal1 > 3um spacing to unrelated m1 < %d (Met1 3a)" | 
 |  widespacing *obsm1 3000 allm1 280 touching_ok \ | 
 |     "Metal1 > 3um spacing to unrelated m1 < %d (Met1 3a)" | 
 |  | 
 | variants (full) | 
 |  cifmaxwidth m1_hole_empty 0 bend_illegal \ | 
 |     "Min area of metal1 holes > 0.14um^2 (Met1 7)" | 
 | variants * | 
 |  | 
 | #-------------------------------------------------- | 
 | # VIA1 | 
 | #-------------------------------------------------- | 
 |  | 
 |  width v1/m1 260 "Via1 width < %d (Via 1a + 2 * Via 4a)" | 
 |  spacing v1 v1 60 touching_ok "Via1 spacing < %d (Via 2 - 2 * Via 4a)" | 
 |  surround v1/m1 *m1 30 directional \ | 
 |     "Metal1 overlap of Via1 < %d in one direction (Via 5a - Via 4a)" | 
 |  surround v1/m2 *m2 30 directional \ | 
 |     "Metal2 overlap of Via1 < %d in one direction (Met2 5 - Met2 4)" | 
 |  | 
 |  exact_overlap v1/m2 | 
 |  | 
 | #-------------------------------------------------- | 
 | # METAL2 -  | 
 | #-------------------------------------------------- | 
 |  | 
 |  width allm2 140 "Metal2 width < %d (Met2 1)" | 
 |  spacing allm2  allm2,obsm2 140 touching_ok       "Metal2 spacing < %d (Met2 2)" | 
 |  area allm2,obsm2 67600 140 "Metal2 minimum area < %a (Met2 6)" | 
 |  | 
 | variants (fast),(full) | 
 |  widespacing allm2 3000 allm2,obsm2  280 touching_ok \ | 
 |     "Metal2 > 3um spacing to unrelated m2 < %d (Met2 3)" | 
 |  widespacing obsm2 3000 allm2  280 touching_ok \ | 
 |     "Metal2 > 3um spacing to unrelated m2 < %d (Met2 3)" | 
 |  | 
 | variants (full) | 
 |  cifmaxwidth m2_hole_empty 0 bend_illegal \ | 
 |     "Min area of metal2 holes > 0.14um^2 (Met2 7)" | 
 | variants * | 
 |  | 
 | #-------------------------------------------------- | 
 | # VIA2 | 
 | #-------------------------------------------------- | 
 |  | 
 |  width v2/m2 280 "Via2 width < %d (Via2 1a + 2 * Via2 4)" | 
 |  | 
 |  spacing v2 v2 120 touching_ok "Via2 spacing < 0.24um (Via2 2 - 2 * Via2 4)" | 
 |  | 
 |  surround v2/m2 *m2 45 directional \ | 
 |     "Metal2 overlap of Via2 < %d in one direction (Via2 4a - Via2 4)" | 
 |  surround v2/m3 *m3 25 absence_illegal "Metal3 overlap of Via2 < %d (Met3 4)" | 
 |  | 
 |  exact_overlap v2/m2 | 
 |  | 
 | #-------------------------------------------------- | 
 | # METAL3 -  | 
 | #-------------------------------------------------- | 
 |  | 
 |  width allm3 300 "Metal3 width < %d (Met3 1)" | 
 |  spacing allm3 allm3,obsm3  300 touching_ok "Metal3 spacing < %d (Met3 2)" | 
 |  area allm3,obsm3 240000 300 "Metal3 minimum area < %a (Met3 6)" | 
 |  | 
 | variants (fast),(full) | 
 |  widespacing allm3 3000 allm3,obsm3  400 touching_ok \ | 
 |     "Metal3 > 3um spacing to unrelated m3 < %d (Met3 3d)" | 
 |  widespacing obsm3 3000 allm3  400 touching_ok \ | 
 |     "Metal3 > 3um spacing to unrelated m3 < %d (Met3 3d)" | 
 | variants * | 
 |  | 
 |  | 
 | #-------------------------------------------------- | 
 | # VIA3 - Requires METAL5 Module | 
 | #-------------------------------------------------- | 
 |  | 
 |  width v3/m3 320 "Via3 width < %d (Via3 1 + 2 * Via3 4)" | 
 |  spacing v3 v3 80 touching_ok "Via3 spacing < %d (Via3 2 - 2 * Via3 4)" | 
 |  surround v3/m3 *m3 30 directional \ | 
 |     "Metal3 overlap of Via3 in one direction < %d (Via3 5 - Via3 4)" | 
 |  surround v3/m4 *m4 5 absence_illegal \ | 
 |     "Metal4 overlap of Via3 < %d (Met4 3 - Via3 4)" | 
 |  | 
 |  exact_overlap v3/m3 | 
 |  | 
 | #----------------------------- | 
 | # METAL4 - METAL4 Module | 
 | #----------------------------- | 
 |  | 
 | variants * | 
 |  | 
 |  width allm4 300 "Metal4 width < %d (Met4 1)" | 
 |  spacing allm4  allm4,obsm4 300 touching_ok      "Metal4 spacing < %d (Met4 2)" | 
 |  area allm4,obsm4 240000 300 "Metal4 minimum area < %a (Met4 4a)" | 
 |  | 
 | variants (fast),(full) | 
 |  widespacing allm4 3000 allm4,obsm4  400 touching_ok \ | 
 |     "Metal4 > 3um spacing to unrelated m4 < %d (S2M4)" | 
 |  widespacing obsm4 3000 allm4  400 touching_ok \ | 
 |     "Metal4 > 3um spacing to unrelated m4 < %d (S2M4)" | 
 | variants * | 
 |  | 
 | #-------------------------------------------------- | 
 | # VIA4 - Requires METAL5 Module | 
 | #-------------------------------------------------- | 
 |  | 
 |  width v4/m4 1180 "Via4 width < %d (Via4 1 + 2 * Via4 4)" | 
 |  spacing v4 v4 420 touching_ok "Via4 spacing < %d (Via4 2 - 2 * Via4 4)" | 
 |  surround v4/m5 *m5 120 absence_illegal \ | 
 |     "Metal5 overlap of Via4 < %d (Met5 3 - Via4 4)" | 
 |  | 
 |  exact_overlap v4/m4 | 
 |  | 
 | #----------------------------- | 
 | # METAL5 - METAL5 Module | 
 | #----------------------------- | 
 |  | 
 |  width allm5 1600 "Metal5 width < %d (Met5 1)" | 
 |  spacing allm5  allm5,obsm5 1600 touching_ok "Metal5 spacing < %d (Met5 2)" | 
 |  area allm5,obsm5 4000000 1600 "Metal5 minimum area < %a (Met5 4)" | 
 |  | 
 |  | 
 |  | 
 | 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 * | 
 |  | 
 |  | 
 | #-------------------------------------------------- | 
 | # NMOS, PMOS | 
 | #-------------------------------------------------- | 
 |  | 
 |  extend allfets *poly 420 "Transistor width < %d (Diff/tap 2)" | 
 |  # Except:  Note that standard cells allow transistor width minimum 0.36um | 
 |  width pfetlvt 350 "LVT PMOS gate length < %d (Poly 1b)" | 
 |  | 
 |  spacing *nsd,*mvnsd allpolynonfet 55 touching_illegal \ | 
 |     "N-tap spacing to field poly < %d (Poly 5)" | 
 |  spacing *psd,*mvpsd allpolynonfet 55 touching_illegal \ | 
 |     "P-tap spacing to field poly < %d (Poly 5)" | 
 |  | 
 |  # Full edge rule required to describe FET to butted tap distance | 
 |  edge4way *psd *ndiff 300 *ndiff *psd 300 \ | 
 |     "Butting P-tap spacing to NMOS gate < %d (Poly 6)" | 
 |  edge4way *nsd *pdiff 300 *pdiff *nsd 300 \ | 
 |     "Butting N-tap spacing to PMOS gate < %d (Poly 6)" | 
 |  edge4way *mvpsd *mvndiff 300 *mvndiff *mvpsd 300 \ | 
 |     "Butting MV P-tap spacing to MV NMOS gate < %d (Poly 6)" | 
 |  edge4way *mvnsd *mvpdiff 300 *mvpdiff *mvnsd 300 \ | 
 |     "Butting MV N-tap spacing to MV PMOS gate < %d (Poly 6)" | 
 |  | 
 |  # No LV FETs in HV diff | 
 |  spacing pfet,scpfet,ppu,pfetlvt,pfethvt,*pdiff *mvpdiff 360 touching_illegal \ | 
 |     "LV P-diffusion to MV P-diffusion < %d (Diff/tap 23 + Diff/tap 22)" | 
 |  | 
 |  spacing nfet,scnfet,npd,npass,nfetlvt,varactor,varhvt,*ndiff *mvndiff 360 touching_illegal \ | 
 |     "LV N-diffusion to MV N-diffusion < %d (Diff/tap 23 + Diff/tap 22)" | 
 |  | 
 |  # No HV FETs in LV diff | 
 |  spacing mvpfet,*mvpdiff *pdiff 360 touching_illegal \ | 
 |     "MV P-diffusion to LV P-diffusion < %d (Diff/tap 23 + Diff/tap 22)" | 
 |  | 
 |  spacing mvnfet,mvvaractor,*mvndiff *ndiff 360 touching_illegal \ | 
 |     "MV N-diffusion to LV N-diffusion < %d (Diff/tap 23 + Diff/tap 22)" | 
 |  | 
 |  # Minimum length of MV FETs.  Note that this is larger than the minimum | 
 |  # width (0.29um), so an edge rule is required | 
 |  | 
 |  edge4way mvndiff mvnfet 500 mvnfet 0 0 \ | 
 |     "MV NMOS minimum length < %d (Poly 13)" | 
 |  | 
 |  edge4way mvnsd mvvaractor 500 mvvaractor 0 0 \ | 
 |     "MV Varactor minimum length < %d (Poly 13)" | 
 |  | 
 |  edge4way mvpdiff mvpfet 500 mvpfet 0 0 \ | 
 |     "MV PMOS minimum length < %d (Poly 13)" | 
 |  | 
 | #-------------------------------------------------- | 
 | # mrp1 (N+ poly resistor) | 
 | #-------------------------------------------------- | 
 |  | 
 |   width mrp1 330 "mrp1 resistor width < %d (Poly 3)" | 
 |  | 
 | #-------------------------------------------------- | 
 | # xhrpoly (P+ poly resistor) | 
 | #-------------------------------------------------- | 
 |  | 
 |   width xhrpoly 350 "xhrpoly resistor width < %d (P+ Poly 1a)" | 
 |   # NOTE: xhrpoly resistor requires choice of discrete widths 0.35, 0.69, ... up to 1.27. | 
 |  | 
 | #-------------------------------------------------- | 
 | # uhrpoly (P+ poly resistor, 2kOhm/sq) | 
 | #-------------------------------------------------- | 
 |  | 
 |   width uhrpoly 350 "uhrpoly resistor width < %d" | 
 |   spacing xhrpoly,uhrpoly,xpc alldiff 480 touching_illegal \ | 
 |     "xhrpoly/uhrpoly resistor spacing to diffusion < %d (Poly 9)" | 
 |  | 
 | #------------------------------------ | 
 | # MOS Varactor device rules | 
 | #------------------------------------ | 
 |  | 
 |  overhang *nsd var,varhvt 250 \ | 
 |  "N-Tap overhang of Varactor < %d (Var 4)" | 
 |  | 
 |  overhang *mvnsd mvvar 250 \ | 
 |  "N-Tap overhang of Varactor < %d (Var 4)" | 
 |  | 
 |  width var,varhvt,mvvar 180 "Varactor length < %d (Var 1)" | 
 |  extend var,varhvt,mvvar *poly 1000 "Varactor width < %d (Var 2)" | 
 |  | 
 | #----------------------------------------------------------- | 
 | # MiM CAP (CAPM) -  | 
 | #----------------------------------------------------------- | 
 |  | 
 |  width *mimcap 2000 "MiM cap width < %d (Capm 1)" | 
 |  spacing *mimcap *mimcap 840 touching_ok "MiM cap spacing < %d (Capm 2a)" | 
 |  spacing *mimcap via2/m3 1270 touching_illegal \ | 
 |     "MiM cap spacing to via2 < %d (Capm 5)" | 
 |  surround *mimcc *mimcap 200 absence_illegal \ | 
 |     "MiM cap must surround MiM cap contact by %d (Capm 4)" | 
 |  rect_only *mimcap "MiM cap must be rectangular (Capm 7) | 
 |  | 
 |  surround *mimcap *metal3/m3 140 absence_illegal \ | 
 |     "Metal3 must surround MiM cap by %d (Capm 3)" | 
 |  spacing via2 *mimcap 50 touching_illegal "MiM cap cannot overlap via2 (Capm 8)" | 
 |  spacing via3 *mimcap 50 touching_illegal "MiM cap cannot overlap via3 (Capm 8)" | 
 |  # (resolve scaling issue!) | 
 |  # cifspacing mim_bottom mim_bottom 1200 touching_ok \ | 
 |  #  "MiM cap bottom plate spacing < %d (Capm 2b)" | 
 |  | 
 |  # MiM cap contact rules (VIA3) | 
 |  | 
 |  width mimcc/m3 320 "MiM cap contact width < %d (Via3 1 + 2 * Via3 4)" | 
 |  spacing mimcc mimcc 80 touching_ok "MiM cap contact spacing < %d (Via3 2 - 2 * Via3 4)" | 
 |  surround mimcc/m4 *m4 5 directional \ | 
 |     "Metal4 overlap of MiM cap contact in one direction < %d (Met4 3 - Via3 4)" | 
 |  exact_overlap mimcc/m3 | 
 |  | 
 |  width *mimcap2 2000 "MiM cap width < %d (Cap2m 1)" | 
 |  spacing *mimcap2 *mimcap2 840 touching_ok "MiM cap spacing < %d (Cap2m 2a)" | 
 |  spacing *mimcap2 via3/m4 1270 touching_illegal \ | 
 |     "MiM cap spacing to via3 < %d (Cap2m 5)" | 
 |  surround *mim2cc *mimcap2 200 absence_illegal \ | 
 |     "MiM cap must surround MiM cap contact by %d (Cap2m 4)" | 
 |  rect_only *mimcap2 "MiM cap must be rectangular (Cap2m 7) | 
 |  | 
 |  surround *mimcap2 *metal4/m4 140 absence_illegal \ | 
 |     "Metal4 must surround MiM cap by %d (Cap2m 3)" | 
 |  spacing via3 *mimcap2 50 touching_illegal "MiM cap cannot overlap via3 (Cap2m 8)" | 
 |  spacing via4 *mimcap2 50 touching_illegal "MiM cap cannot overlap via4 (Cap2m 8)" | 
 |  # (resolve scaling issue!) | 
 |  # cifspacing mim2_bottom mim2_bottom 1200 touching_ok \ | 
 |  #  "MiM2 cap bottom plate spacing < %d (Cap2m 2b)" | 
 |  | 
 |  # MiM cap contact rules (VIA4) | 
 |  | 
 |  width mim2cc/m4 1180 "MiM2 cap contact width < %d (Via4 1 + 2 * Via4 4)" | 
 |  spacing mim2cc mim2cc 420 touching_ok \ | 
 |     "MiM2 cap contact spacing < %d (Via4 2 - 2 * Via4 4)" | 
 |  surround mim2cc/m5 *m5 120 absence_illegal \ | 
 |     "Metal5 overlap of MiM2 cap contact < %d (Met5 3 - Via4 4)" | 
 |  exact_overlap mim2cc/m4 | 
 |  | 
 |  | 
 | #---------------------------- | 
 | # 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 | 
 |  | 
 |  obs obslic mcon | 
 |  | 
 | end | 
 |  | 
 | #----------------------------------------------------- | 
 | # Device and Parasitic extraction | 
 | #----------------------------------------------------- | 
 |  | 
 | extract | 
 |  style ngspice variants (lvs),(sim),(si) | 
 |  cscale 1 | 
 |  # NOTE: SkyWater SPICE libraries use .option scale 1E6 so all | 
 |  # dimensions must be in units of microns in the extract file. | 
 |  # Use extract style "ngspice(si)" to override this and produce | 
 |  # a file with SI units for length/area. | 
 |  | 
 |  variants (lvs),(sim),(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:  Use document (...) | 
 |  | 
 | variants (sim) | 
 |  | 
 |  device msubcircuit pshort pfet,scpfet *pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w | 
 |  device msubcircuit ppu ppu *pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w | 
 |  device msubcircuit plowvt pfetlvt *pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w | 
 |  device msubcircuit phighvt pfethvt *pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w | 
 |  | 
 |  device msubcircuit nshort nfet,scnfet,npd,npass *ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w | 
 |  device msubcircuit npd npd *ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w | 
 |  device msubcircuit npass npass *ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w | 
 |  device msubcircuit nlowvt nfetlvt *ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w | 
 |  device msubcircuit sonos_e nsonos *ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w | 
 |  device subcircuit xcnwvc varactor *nndiff nwell error l=l w=w | 
 |  device subcircuit xcnwvc2 varhvt *nndiff nwell error l=l w=w | 
 |  device subcircuit xchvnwc mvvaractor *mvnndiff nwell error l=l w=w | 
 |  | 
 |  device msubcircuit phv mvpfet *mvpdiff,mvpdiffres *mvpdiff,mvpdiffres nwell error l=l w=w | 
 |  device msubcircuit nhv mvnfet *mvndiff,mvndiffres *mvndiff,mvndiffres pwell,space/w error l=l w=w | 
 |  device msubcircuit nhvnative mvnnfet *mvndiff,mvndiffres *mvndiff,mvndiffres pwell,space/w error l=l w=w | 
 |  | 
 |  device rsubcircuit short rmp     *poly  space/w,pwell,nwell error l=l w=w | 
 |  device rsubcircuit short rli1    *li,coreli space/w,pwell,nwell error l=l w=w | 
 |  device rsubcircuit short rmetal1 *metal1 space/w,pwell,nwell error l=l w=w | 
 |  device rsubcircuit short rmetal2 *metal2 space/w,pwell,nwell error l=l w=w | 
 |  device rsubcircuit short rmetal3 *metal3 space/w,pwell,nwell error l=l w=w | 
 |  device rsubcircuit short rm4 *m4 space/w,pwell,nwell error l=l w=w | 
 |  device rsubcircuit short rm5 *m5 space/w,pwell,nwell error l=l w=w | 
 |  | 
 |  device rsubcircuit xhrpoly  xhrpoly xpc pwell,space/w error l=l w=w | 
 |  device rsubcircuit uhrpoly  uhrpoly xpc pwell,space/w error l=l w=w | 
 |  device rsubcircuit mrp1     mrp1    *poly pwell,space/w error  l=l w=w | 
 |  | 
 |  device rsubcircuit mrdn     ndiffres *ndiff pwell,space/w  error l=l w=w | 
 |  device rsubcircuit mrdp     pdiffres *pdiff nwell    error l=l w=w | 
 |  device rsubcircuit xpwres   rpw       pwell dnwell error l=l w=w | 
 |  | 
 |  device rsubcircuit mrdn_hv  mvndiffres *mvndiff pwell,space/w error l=l w=w | 
 |  device rsubcircuit mrdp_hv  mvpdiffres *mvpdiff nwell   error l=l w=w | 
 |  | 
 |  device subcircuit  pdiode *pdiode nwell a=a p=p | 
 |  device msubcircuit ndiode *ndiode pwell,space/w a=a p=p | 
 |  device subcircuit  pdiode_h *mvpdiode nwell a=a p=p | 
 |  device msubcircuit ndiode_h *mvndiode pwell,space/w a=a p=p | 
 |  | 
 |  # These are parasitic devices | 
 |  device msubcircuit ndiode_lvt *ndiodelvt pwell,space/w a=a p=p | 
 |  device subcircuit  pdiode_lvt *pdiodelvt nwell a=a p=p | 
 |  device subcircuit  pdiode_hvt *pdiodehvt nwell a=a p=p | 
 |  device msubcircuit ndiode_native *nndiode pwell,space/w a=a p=p | 
 |  | 
 |  device subcircuit xcmimc1 *mimcap  m3 nwell,pwell,space/w error a=a p=p s=subs | 
 |  device subcircuit xcmimc2 *mimcap2 m4,mimcc/m4 nwell,pwell,space/w error a=a p=p s=subs | 
 |  | 
 |  variants (lvs),(si) | 
 |  | 
 |  device mosfet pshort scpfet,pfet pdiff,pdiffres,pdc nwell  | 
 |  device mosfet ppu ppu pdiff,pdiffres,pdc nwell  | 
 |  device mosfet plowvt pfetlvt pdiff,pdiffres,pdc nwell  | 
 |  device mosfet phighvt pfethvt pdiff,pdiffres,pdc nwell  | 
 |  device mosfet nshort scnfet,npd,npass,nfet ndiff,ndiffres,ndc pwell,space/w | 
 |  device mosfet npd npd ndiff,ndiffres,ndc pwell,space/w | 
 |  device mosfet npass npass ndiff,ndiffres,ndc pwell,space/w | 
 |  device mosfet nlowvt nfetlvt ndiff,ndiffres,ndc pwell,space/w | 
 |  device mosfet sonos_e nsonos ndiff,ndiffres,ndc pwell,space/w | 
 |  device mosfet phv mvpfet mvpdiff,mvpdiffres,mvpdc nwell  | 
 |  device mosfet nhv mvnfet mvndiff,mvndiffres,mvndc pwell,space/w | 
 |  device mosfet nhvnative mvnnfet *mvndiff,mvndiffres pwell,space/w | 
 |  | 
 |  # These devices always extract as subcircuits | 
 |  device subcircuit xcnwvc varactor *nndiff nwell error l=l w=w | 
 |  device subcircuit xcnwvc2 varhvt *nndiff nwell error l=l w=w | 
 |  device subcircuit xchvnwc mvvaractor *mvnndiff nwell error l=l w=w | 
 |  | 
 |  device resistor short rmp     *poly | 
 |  device resistor short rli1    *li,coreli | 
 |  device resistor short rmetal1 *metal1 | 
 |  device resistor short rmetal2 *metal2 | 
 |  device resistor short rmetal3 *metal3 | 
 |  device resistor short rm4 *m4 | 
 |  device resistor short rm5 *m5 | 
 |  | 
 |  device resistor xhrpoly xhrpoly xpc  | 
 |  device resistor uhrpoly uhrpoly xpc  | 
 |  device resistor mrp1 mrp1       *poly  | 
 |  device resistor mrdn  ndiffres *ndiff  | 
 |  device resistor mrdp  pdiffres *pdiff  | 
 |  device resistor mrdn_hv   mvndiffres *mvndiff  | 
 |  device resistor mrdp_hv   mvpdiffres *mvpdiff  | 
 |  device resistor xpwres   rpw    pwell | 
 |  | 
 |  device pdiode pdiode *pdiode nwell a=a p=p | 
 |  device ndiode ndiode *ndiode pwell,space/w a=a p=p | 
 |  device pdiode pdiode_h *mvpdiode nwell a=a p=p | 
 |  device ndiode ndiode_h *mvndiode pwell,space/w a=a p=p | 
 |  | 
 |  # These are parasitic devices | 
 |  device ndiode ndiode_lvt *ndiodelvt pwell,space/w a=a p=p | 
 |  device pdiode pdiode_lvt *pdiodelvt nwell a=a p=p | 
 |  device pdiode pdiode_hvt *pdiodehvt nwell a=a p=p | 
 |  device ndiode ndiode_native *nndiode pwell,space/w a=a p=p | 
 |  | 
 |  device subcircuit  pdiode_h *mvpdiode nwell a=a p=p | 
 |  device msubcircuit ndiode_h *mvndiode pwell,space/w a=a p=p | 
 |  | 
 |  | 
 |  device capacitor xcmimc1 *mimcap  *m3 1 | 
 |  device capacitor xcmimc2 *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 |