[Magic-dev] Re: Magic lef read problems

R. Timothy Edwards tim.edwards at multigig.com
Mon Jan 23 20:46:20 EST 2006


Dear Frank,

 > I get errors trying to do "lef read ibm01.lef" for a
 > well-known public benchmark in
 > http://er.cs.ucla.edu/benchmarks/ibm-place2/LEFDEF/ibm01-v2-lefdef.tar.gz
 >
 > I suppose the benchmark should be okay since it
 > probably get used many times.
 > So I suspect that I might did something wrong with my
 > magic.

The default "scmos.tech" doesn't have a "lef" section that
tells magic how to map layers from the LEF file to magic
planes and layers.  The "ibm01.lef" benchmark is a 4-layer
metal technology, so you'll want to start with a 4-metal-
layer (at least) techfile.  I've attached "scmos8m.tech",
which is posted on my website, except in the attached
version I have pasted in a simple LEF section that I
ripped out of another techfile.  I used this on "ibm01.lef"
and got better results.  Note that LEF files, like GDS,
don't define a current or top-level cell, so nothing
shows up immediately.  Do "cellname top" to get a list
of the defined LEF macros that were loaded.

I guess the LEF/DEF stuff is well-developed enough now that
I should include a "lef" section in the default scmos.tech
file, and the sample scmos8m.tech and scmos9m.tech files.

					Regards,
					Tim

+--------------------------------+-------------------------------------+
| Dr. R. Timothy Edwards (Tim)   | email: tim.edwards at multigig.com     |
| MultiGiG, Inc.                 | web:   http://www.multigig.com      |
| 100 Enterprise Way, Suite A-3  | phone: (831) 621-3283               |
| Scotts Valley, CA 95066        | cell:  (240) 401-0616               |
+--------------------------------+-------------------------------------+
-------------- next part --------------
tech
 version 29
 scmos
end

version
 version 2003
 description "SCMOS: Generic 8-metal layer process with stacked contacts"
end

# NOTES:
# This tech file is designed to be used with magic version 7.3.4 or newer.
# The stacked contacts are not compatible with magic versions 7.2 or earlier.

planes
  well,w
  active,a
  metal1,m1
  metal2,m2
  metal3,m3
  metal4,m4
  metal5,m5
  metal6,m6
  metal7,m7
  metal8,m8
  oxide,ox
  comment,c
end

types
  well	  nwell,nw
  well	  pwell,pw
  well	  rnwell,rnw,wellres
  active  ntransistor,nfet
  active  ptransistor,pfet
  active  ndiffusion,ndif,green
  active  pdiffusion,pdif,brown
  active  rndiffusion,rndiff,rnd
  active  rpdiffusion,rpdiff,rpd
  active  ndcontact,ndc
  active  pdcontact,pdc
  active  psubstratepdiff,ppdiff,ppd,psd
  active  nsubstratendiff,nndiff,nnd,nsd
  active  psubstratepcontact,pwcontact,pwc,psc
  active  nsubstratencontact,nwcontact,nwc,nsc
  active  polysilicon,red,poly,p,pl
  active  polycontact,pcontact,polycut,pc,pl-m1
  active  rpoly,rp,resistor,res
  metal1  metal1,m1,blue
  metal1  m2contact,m2cut,m2c,via,v,via12,m1-m2
  metal2  metal2,m2,purple
  metal2  m3contact,m3cut,m3c,via2,v2,via23,m2-m3
  metal3  metal3,m3,cyan
  metal3  m4contact,m4cut,m4c,via3,v3,via34,m3-m4
  metal4  metal4,m4,yellow
  metal4  m5contact,m5cut,m5c,via4,v4,via45,m4-m5
  metal5  metal5,m5
  metal5  m6contact,m6cut,m6c,via5,v5,via56,m5-m6
  metal6  metal6,m6
  metal6  m7contact,m7cut,m7c,via6,v6,via67,m6-m7
  metal7  metal7,m7
  metal7  m8contact,m8cut,m8c,via7,v7,via78,m7-m8
  metal8  metal8,m8,topmetal,mtop
  metal8  pad
  oxide   glass
  comment comment
end

contact
  pc   poly    metal1
  ndc  ndiff   metal1
  pdc  pdiff   metal1
  nsc  nsd     metal1
  psc  psd     metal1
  m2c  metal1  metal2
  m3c  metal2  metal3
  m4c  metal3  metal4
  m5c  metal4  metal5
  m6c  metal5  metal6
  m7c  metal6  metal7
  m8c  metal7  metal8
  stackable
end

styles
 styletype  mos
  nwell   nwell
  pwell   pwell
  ndiff   ndiffusion
  pdiff	  pdiffusion
  nsd	  ndiff_in_nwell
  psd	  pdiff_in_pwell
  nfet	  ntransistor    ntransistor_stripes
  pfet	  ptransistor    ptransistor_stripes 
  ndc	  ndiffusion     metal1_alt contact_X'es
  pdc 	  pdiffusion     metal1_alt contact_X'es
  nsc	  ndiff_in_nwell metal1_alt contact_X'es
  psc	  pdiff_in_pwell metal1_alt contact_X'es
  poly	  polysilicon
  pc	  poly_contact   contact_X'es
  metal1  metal1
  m2c	  metal1 metal2  contact_waffle
  metal2  metal2
  m3c	  metal2 metal3  via2
  metal3  metal3
  m4c	  metal3 metal4  via3
  metal4  metal4
  m5c	  metal4 metal5  via4
  metal5  metal5
  m6c	  metal5 metal6  via5
  metal6  metal6
  m7c	  metal6 metal7  via6
  metal7  metal7
  m8c	  metal7 metal8  via7
  metal8  metal8
  pad	  metal3 metal4 overglass via3
  glass   overglass
  res	  poly_resist poly_resist_stripes
  rnd	  ndiffusion  poly_resist_stripes
  rpd	  pdiffusion  nwell_field_implant
  rnw	  nwell       nwell_field_implant
  comment  comment 
  error_p  error_waffle
  error_s  error_waffle
  error_ps error_waffle
  magnet   via5
  rotate   via6
  fence    via7
end

compose
  compose  nfet  poly  ndiff
  compose  pfet  poly  pdiff

  paint  ndc   nwell  pdc
  paint  nfet  nwell  pfet
  paint  ndiff nwell  pdiff
  paint  psd   nwell  nsd
  paint  psc   nwell  nsc

  paint  pdc   pwell  ndc
  paint  pfet  pwell  nfet
  paint  pdiff pwell  ndiff
  paint  nsd   pwell  psd
  paint  nsc   pwell  psc

  paint  pad  m1  pad
  paint  pad  m2c pad
  paint  pad  m2  pad
  paint  pad  m3  pad
  paint  pad  m4  pad
  paint  pad  m5  pad
  paint  pad  m6  pad
  paint  pad  m7  pad
  paint  pad  m8  pad
end

connect
  nwell,*nsd nwell,*nsd
  pwell,*psd pwell,*psd
  *m1 *m1
  *m2 *m2
  *m3 *m3
  *m4 *m4
  *m5 *m5
  *m6 *m6
  *m7 *m7
  *m8 *m8
  *ndiff,*nsd,*pdiff,*psd *ndiff,*nsd,*pdiff,*psd
  *poly,nfet,pfet *poly,nfet,pfet
  pad  m1,m2,m3,m4,m5,m6,m7,m8
end

cifoutput

style  lambda=0.065
 scalefactor  65 calmaonly nanometers

 layer CWN nwell,rnw
 bloat-or *pdiff,pfet * 390
 bloat-or *nsd * 195
 grow 195
 shrink 195
 calma 21 0

 templayer TNS ndc/m1,nsc/m1
 grow 36

 templayer TPS pdc/m1,psc/m1
 grow 36

#diffusion auto-nselect (will have priority)
 templayer XDN
 bloat-or *ndiff,rnd * 130 *psd 0
 or TNS

#diffusion auto-pselect (will have priority)
 templayer XDP
 bloat-or *pdiff,rpd * 130 *nsd 0
 or TPS

#final pselect 
 templayer FSP
 bloat-or *pdiff,*psd,rpd,pfet * 180 *ndiff,*nsd,rnd,nfet 0
 or XDP
#give diff nselect priority
 and-not XDN
 or TPS
 shrink 100
 grow 100
 grow 100
 shrink 100

#final nselect
 templayer FSN
 bloat-or *ndiff,*nsd,rnd,nfet * 180 *pdiff,*psd,rpd,pfet 0
 or XDN
#never conflict with final pselect
 and-not FSP
#drawn select always goes
 or TNS
 shrink 100
 grow 100
 grow 100
 shrink 100

 layer CSN FSN
 calma 32 0

 layer CSP FSP
 calma 31 0

 layer CAA *ndiff,rnd,nfet,*nsd,*pdiff,rpd,pfet,*psd
 labels *ndiff,rnd,nfet,*nsd,*pdiff,rpd,pfet,*psd
 calma 22 0

 layer CCA ndc/m1,nsc/m1
 squares 65 130 260
 calma 33 0

 layer CCA pdc/m1,psc/m1
 squares 65 130 260
 calma 33 0

 layer CPG *poly,rp,nfet,pfet
 labels *poly,rp,nfet,pfet
 calma 30 0

 layer CCP pc/m1
 squares 65 130 260
 calma 33 0

 layer CVA m2c/m1
 squares 65 195 195
 calma 35 0

 layer CVS m3c/m2
 squares 65 195 195
 calma 38 0

 layer CVT m4c/m3
 squares 65 195 195
 calma 40 0

 layer CVQ m5c/m4
 squares 65 195 195
 calma 41 0

 layer CV5 m6c/m5
 squares 65 195 195
 calma 82 0

 layer CV6 m7c/m6
 squares 65 195 195
 calma 127 0

 layer CV7 m8c/m7
 squares 65 360 360
 calma 129 0

 templayer XPAD1 pad
 shrink 54

 templayer XPAD2 XPAD1
 shrink 54

 layer CM8 pad
 calma 53 0

 layer CV7 XPAD2
 squares 65 360 520
 calma 129 0

 layer CM7 pad
 calma 128 0

 layer CV6 XPAD2
 squares 520 195 585
 calma 127 0

 layer CM6 pad
 calma 126 0

 layer CV5 XPAD2
 squares 130 195 585
 calma 82 0

 layer CMP pad
 calma 81 0

 layer CVQ XPAD2
 squares 520 195 585
 calma 41 0

 layer CMQ pad
 calma 46 0

 layer CVT XPAD2
 squares 130 195 585
 calma 40 0

 layer CMT pad
 calma 42 0

 layer CVS XPAD2
 squares 520 195 585
 calma 38 0

 layer CMS pad
 calma 36 0

 layer CVA XPAD2
 squares 130 195 585
 calma 35 0

 layer CMF pad
 calma 34 0

 layer CMF *m1
 labels *m1
 calma 34 0

 templayer BM2 *m2
 shrink 100
 grow 100
 
 layer CMS *m2
 and-not BM2
 grow 5
 or BM2
 labels *m2
 calma 36 0

 templayer BM3 *m3
 shrink 100
 grow 100

 layer CMT *m3
 and-not BM3
 grow 5
 or BM3
 labels *m3
 calma 42 0

 templayer BM4 *m4
 shrink 100
 grow 100

 layer CMQ *m4
 and-not BM4
 grow 5
 or BM4
 labels *m4
 calma 46 0

 templayer BM5 *m5
 shrink 100
 grow 100

 layer CMP *m5
 and-not BM5
 grow 5
 or BM5
 labels *m5
 calma 81 0

 templayer BM6 *m6
 shrink 100
 grow 100

 layer CM6 *m6
 and-not BM6
 grow 5
 or BM6
 labels *m6
 calma 126 0

 templayer BM7 *m7
 shrink 100
 grow 100

 layer CM7 *m7
 and-not BM7
 grow 5
 or BM7
 labels *m7
 calma 128 0

 layer CM8 *m8
 labels *m8
 calma 53 0

 layer COG pad
 shrink 364
 or glass
 calma 37 0

 render CWN 12  -0.2   0.2
 render CAA 2   -0.15  0.15
 render CPG 1    0.025 0.05
 render CCA 19   0.0   0.2
 render CCP 19   0.075 0.125
 render CMF 20   0.2   0.05
 render CVA 19   0.25  0.05
 render CMS 21   0.3   0.05
 render CVS 19   0.35  0.05
 render CMT 22   0.4   0.05
 render CVT 19   0.45  0.05
 render CMQ 23   0.5   0.05
 render CVQ 19   0.55  0.05
 render CMP 24   0.6   0.05
 render CV5 19   0.65  0.05
 render CM6 64   0.7   0.05
 render CV6 19   0.75  0.05
 render CM7 65   0.8   0.05
 render CV7 19   0.85  0.05
 render CM8 66   0.9   0.05


style  lambda=0.09(p)
 scalefactor  9 calmaonly

 layer CWN nwell,rnw
 bloat-or *pdiff,rpd,pfet * 54
 bloat-or *nsd * 27
 grow 27
 shrink 27
 calma 42 0

 layer CWP pwell
 bloat-or *ndiff,rnd,nfet * 54
 bloat-or *psd * 27
 grow 27
 shrink 27
 and-not CWN
 calma 41 0

 templayer TNS ndc/m1,nsc/m1
 grow 5

 templayer TPS pdc/m1,psc/m1
 grow 5

#diffusion auto-nselect (will have priority)
 templayer XDN
 bloat-or *ndiff,rnd * 18 *psd 0
 or TNS

#diffusion auto-pselect (will have priority)
 templayer XDP
 bloat-or *pdiff,rpd * 18 *nsd 0
 or TPS

#final pselect 
 templayer FSP
 bloat-or *pdiff,rpd,pfet,*psd * 18 *ndiff,rnd,*nsd,nfet 0
 or XDP
#give diff nselect priority
 and-not XDN
 or TPS
 shrink 14
 grow 14
 grow 14
 shrink 14

#final nselect
 templayer FSN
 bloat-or *ndiff,rnd,nfet,*nsd * 18 *pdiff,rpd,*psd,pfet 0
 or XDN
#never conflict with final pselect
 and-not FSP
#drawn select always goes
 or TNS
 shrink 14
 grow 14
 grow 14
 shrink 14

 layer CAA *ndiff,rnd,nfet,*nsd,*pdiff,rpd,pfet,*psd
 labels *ndiff,rnd,nfet,*nsd,*pdiff,rpd,pfet,*psd
 calma 43 0

 layer CCA ndc/m1,nsc/m1
 squares 09 18 36
 calma 48 0

 layer CCA pdc/m1,psc/m1
 squares 09 18 36
 calma 48 0

 layer CPG *poly,rp,nfet,pfet
 labels *poly,rp,nfet,pfet
 calma 46 0

 layer CCP pc/m1
 squares 09 18 36
 calma 47 0

 layer CVA m2c/m1
 squares 09 27 27
 calma 50 0

 layer CVS m3c/m2
 squares 09 27 27
 calma 61 0

 layer CVT m4c/m3
 squares 09 27 27
 calma 30 0

 layer CVQ m5c/m4
 squares 09 27 27
 calma 32 0

 layer CV5 m6c/m5
 squares 09 36 36
 calma 36 0

 templayer XPAD1 pad
 shrink 54

 templayer XPAD2 XPAD1
 shrink 54

 layer CM6 pad
 calma 37 0

 layer CV5 XPAD2
 squares 09 36 72
 calma 36 0

 layer CMP pad
 calma 33 0

 layer CVQ XPAD2
 squares 72 27 81
 calma 32 0

 layer CMQ pad
 calma 31 0

 layer CVT XPAD2
 squares 18 27 81
 calma 30 0

 layer CMT pad
 calma 62 0

 layer CVS XPAD2
 squares 72 27 81
 calma 61 0

 layer CMS pad
 calma 51 0

 layer CVA XPAD2
 squares 18 27 81
 calma 50 0

 layer CMF pad
 calma 49 0

 layer CMF *m1
 labels *m1
 calma 49 0

 layer CMS *m2
 labels *m2
 calma 51 0

 layer CMT *m3
 labels *m3
 calma 62 0

 layer CMQ *m4
 labels *m4
 calma 31 0

 layer CMP *m5
 labels *m5
 calma 33 0

 layer CM6 *m6
 labels *m6
 calma 37 0

 layer COG pad
 shrink 504
 or glass
 calma 52 0

#CRE/CRM
 layer CRW rnw
 calma 65 0
 layer CRG rp
 calma 67 0
 layer CRD rnd,rpd
 calma 66 0
 layer CRE rnw,rp,rnd,rpd
 calma 64 0

 layer CX comment
 calma 63 0
end

cifinput

style  lambda=0.065(chartered)
 scalefactor  65 calmaonly nanometers

 layer nwell CWN
 and-not CRW
 labels CWN
 calma CWN 42 *

 layer rnw CWN
 and CRW
 calma CWN 42 *

 layer pwell CWP
 labels CWP
 calma CWP 41 *

 layer ndiff CAA
 and-not CPG
 and-not CWN
 and-not CSP
 and CSN
 labels CAA
 calma CAA 43 *

 layer rnd CAA
 and CRD
 and-not CPG
 and-not CWN
 and-not CSP
 and CSN
 calma CAA 43 *

 layer pdiff CAA
 and-not CPG
 and CWN
 and-not CSN
 and CSP
 labels CAA
 calma CAA 43 *

 layer rpd CAA
 and CRD
 and-not CPG
 and CWN
 and-not CSN
 and CSP
 calma CAA 43 *

 layer nfet CAA
 and CPG
 and-not CWN
 and-not CSP
 and CSN
 labels CAA
 calma CAA 43 *

 layer pfet CAA
 and CPG
 and CWN
 and-not CSN
 and CSP
 labels CAA
 calma CAA 43 *

 layer nsd CAA
 and CWN
 and CSN
 and-not CSP
 labels CAA
 calma CAA 43 *

 layer psd CAA
 and-not CWN
 and-not CSN
 and CSP
 labels CAA
 calma CAA 43 *

 layer ndc CCA,CCC
 and CAA
 and CSN
 and-not CWN
 and CMF
 grow 65
 grow 65
 shrink 65
 calma CCA 48 *

 layer nsc CCA,CCC
 and CAA
 and CSN
 and CWN
 and CMF
 grow 65
 grow 65
 shrink 65
 calma CCA 48 *

 layer pdc CCA,CCC
 and CAA
 and CSP
 and CWN
 and CMF
 grow 65
 grow 65
 shrink 65
 calma CCA 48 *

 layer psc CCA,CCC
 and CAA
 and CSP
 and-not CWN
 and CMF
 grow 65
 grow 65
 shrink 65
 calma CCA 48 *

 layer poly CPG
 labels CPG
 calma CPG 46 *

 layer rp CPG
 and CRG
 calma CPG 46 *

 layer pc CCP,CCC
 and CPG
 and-not CAA
 grow 65
 and CMF
 grow 65
 shrink 65
 calma CCP 47 *

 layer m2c CVA
 and-not XP
 grow 65
 and CMS
 and CMF
 grow 35
 shrink 35
 calma CVA 50 *

 layer m1 CMF
 and-not XP
 labels CMF
 calma CMF 49 *

 layer m2 CMS
 and-not XP
 labels CMS
 calma CMS 51 *

 layer m3c CVS
 and-not XP
 grow 65
 and CMT
 and CMS
 grow 35
 shrink 35
 calma CVS 61 *

 layer m3 CMT
 and-not XP
 labels CMT
 calma CMT 62 *

 layer m4 CMQ
 and-not XP
 labels CMQ
 calma CMQ 31 *

 layer m4c CVT
 and-not XP
 grow 65
 and CMQ
 and CMT
 grow 65
 shrink 65
 calma CVT 30 *

 layer m5 CMP
 and-not XP
 labels CMP
 calma CMP 33 *

 layer m5c CVQ
 and-not XP
 grow 65
 and CMP
 and CMQ
 grow 65
 shrink 65
 calma CVQ 32 *

 layer m6 CM6
 and-not XP
 labels CM6
 calma CM6 37 *

 layer m6c CV5
 and-not XP
 grow 65
 and CM6
 and CMP
 grow 65
 shrink 65
 calma CV5 36 *

 layer m7 CM7
 and-not XP
 labels CM7
 calma CM7 128 *

 layer m7c CV6
 and-not XP
 grow 65
 and CM7
 and CM6
 grow 65
 shrink 65
 calma CV6 127 *

 layer m8 CM8
 and-not XP
 labels CM8
 calma CM8 53 *

 layer m8c CV7
 and-not XP
 grow 65
 and CM8
 and CM7
 grow 65
 shrink 65
 calma CV7 129 *

 layer pad XP
 labels pad
 calma XP 26 *

 layer glass COG
 and-not XP
 labels COG
 calma COG 52 *

style  lambda=0.09(p)
 scalefactor  09

 layer nwell CWN
 and-not CRW
 labels CWN
 calma CWN 42 *

 layer rnw CWN
 and CRW
 calma CWN 42 *

 layer pwell CWP
 labels CWP
 calma CWP 41 *

 layer ndiff CAA
 and-not CRD
 and-not CPG
 and-not CWN
 and-not CSP
 and CSN
 labels CAA
 calma CAA 43 *

 layer rnd CAA
 and CRD
 and-not CPG
 and-not CWN
 and-not CSP
 and CSN
 calma CAA 43 *

 layer pdiff CAA
 and-not CRD
 and-not CPG
 and CWN
 and-not CSN
 and CSP
 labels CAA
 calma CAA 43 *

 layer rpd CAA
 and CRD
 and-not CPG
 and CWN
 and-not CSN
 and CSP
 calma CAA 43 *

 layer nfet CAA
 and CPG
 and-not CWN
 and-not CSP
 and CSN
 labels CAA
 calma CAA 43 *

 layer pfet CAA
 and CPG
 and CWN
 and-not CSN
 and CSP
 labels CAA
 calma CAA 43 *

 layer nsd CAA
 and CWN
 and CSN
 and-not CSP
 labels CAA
 calma CAA 43 *

 layer psd CAA
 and-not CWN
 and-not CSN
 and CSP
 labels CAA
 calma CAA 43 *

 layer ndc CCA,CCC
 and CAA
 and CSN
 and-not CWN
 and CMF
 grow 09
 grow 9
 shrink 9
 calma CCA 48 *

 layer nsc CCA,CCC
 and CAA
 and CSN
 and CWN
 and CMF
 grow 09
 grow 9
 shrink 9
 calma CCA 48 *

 layer pdc CCA,CCC
 and CAA
 and CSP
 and CWN
 and CMF
 grow 09
 grow 9
 shrink 9
 calma CCA 48 *

 layer psc CCA,CCC
 and CAA
 and CSP
 and-not CWN
 and CMF
 grow 09
 grow 9
 shrink 9
 calma CCA 48 *

 layer poly CPG
 and-not CRG
 labels CPG
 calma CPG 46 *

 layer rp CPG
 and CRG
 calma CPG 46 *

 layer pc CCP,CCC
 and CPG
 and-not CAA
 grow 09
 and CMF
 grow 9
 shrink 9
 calma CCP 47 *

 layer m2c CVA
 and-not XP
 grow 09
 and CMS
 and CMF
 grow 5
 shrink 5
 calma CVA 50 *

 layer m1 CMF
 and-not XP
 labels CMF
 calma CMF 49 *

 layer m2 CMS
 and-not XP
 labels CMS
 calma CMS 51 *

 layer m3c CVS
 and-not XP
 grow 09
 and CMT
 and CMS
 grow 5
 shrink 5
 calma CVS 61 *

 layer m3 CMT
 and-not XP
 labels CMT
 calma CMT 62 *

 layer m4 CMQ
 and-not XP
 labels CMQ
 calma CMQ 31 *

 layer m4c CVT
 and-not XP
 grow 09
 and CMQ
 and CMT
 grow 09
 shrink 09
 calma CVT 30 *

 layer m5 CMP
 and-not XP
 labels CMP
 calma CMP 33 *

 layer m5c CVQ
 and-not XP
 grow 09
 and CMP
 and CMQ
 grow 09
 shrink 09
 calma CVQ 32 *

 layer m6 CM6
 and-not XP
 labels CM6
 calma CM6 37 *

 layer m6c CV5
 and-not XP
 grow 09
 and CM6
 and CMP
 grow 09
 shrink 09
 calma CV5 36 *

 layer pad XP
 labels pad
 calma XP 26 *

 layer glass COG
 and-not XP
 labels COG
 calma COG 52 *

 layer comment CX
 labels CX
 calma CX 63 *

end

mzrouter
 style irouter
#		layer	hCost	vCost	jogCost	hintCost 
 layer		metal6	2	1	2	1
 layer		metal5	1	2	2	1
 layer		metal4	2	1	2	1
 layer		metal3	1	2	2	1
 layer		metal2	2	1	2	1
 layer		metal1	2	3	2	1
 layer		poly	10	10	11	1
 contact	m6contact	metal6	metal5	2
 contact	m5contact	metal5	metal4	3
 contact	m4contact	metal4	metal3	4
 contact	m3contact	metal3	metal2	5
 contact	m2contact	metal2	metal1	6
 contact	pcontact	metal1	poly	7
 notactive	poly	pcontact

style	garouter
 layer	m2	32	64	256	1
 layer	m1	64	32	256	1
 contact	m2contact	metal1	metal2	1024
end

drc
 width nwell 12 \
 "N-well width < 12 (#NW.1a)"

 width rnw 28 \
 "rnwell (for resistor L/W extraction) width < 28 (Mosis #1.1)"

 width pwell 12 \
 "P-well width < 12 (Mosis #1.1)"

 width *ndiff,rnd,nfet,*nsd,*pdiff,rpd,pfet,*psd 3 \
 "Diffusion width < 3 (#DF.1a)"

 edge4way *nsd *pdiff,rpd 4 ~(*nsd)/active *pdiff,rpd 4 \
 "P-Diffusion width in N-Ohmic < 4 (Mosis #2.1)"

 edge4way *psd *ndiff,rnd 4 ~(*psd)/active *ndiff,rnd 4 \
 "N-Diffusion width in P-Ohmic < 4 (Mosis #2.1)"

 edge4way *pdiff,rpd *nsd 4 ~(*pdiff,rpd)/active *nsd 4 \
 "N-Ohmic width in P-Diffusion < 4 (Mosis #2.1)"

 edge4way *ndiff,rnd *psd 4 ~(*ndiff,rnd)/active *psd 4 \
 "P-Ohmic width in N-Diffusion < 4 (Mosis #2.1)"

 width *poly,rp,nfet,pfet 2 \
 "Poly width < 2 (Mosis #3.1)"

 width *ndiff,rnd,*nsd 3 \
 "N-Diffusion,N-Ohmic width < 3 (Mosis #4.4)"

 width *pdiff,rpd,*psd 3 \
 "P-Diffusion,P-Ohmic width < 3 (Mosis #4.4)"

 width pc/m1 4 \
 "Poly contact width < 4 (Mosis #5.1)"

 width ndc/m1 4 \
 "Diffusion contact width < 4 (Mosis #6.1)"

 width nsc/m1 4 \
 "Diffusion contact width < 4 (Mosis #6.1)"

 width pdc/m1 4 \
 "Diffusion contact width < 4 (Mosis #6.1)"

 width psc/m1 4 \
 "Diffusion contact width < 4 (Mosis #6.1)"

 width (*m1)/m1 3 \
 "Metal1 width < 3 (Mosis #7.1)"

 width (*m2)/m2 3 \
 "Metal2 width < 3 (Mosis #9.1)"

 width (*m3)/m3 3 \
 "Metal3 width < 3 (Mosis #15.1)"

 width (*m4)/m4 3 \
 "Metal4 width < 3 (Mosis #22.1)"

 width (*m5)/m5 3 \
 "Metal5 width < 3 (Mosis #26.2)"

 width (*m6)/m6 3 \
 "Metal6 width < 3 (#M6.1)"

 width (*m7)/m7 3 \
 "Metal7 width < 3 (#M7.1)"

 width (*m8)/m8 7 \
 "Metal8 width < 7 (#M8.1)"

 width m2c 5 \
 "Via1 width < 5 (#V1.1)"

 width m3c 5 \
 "Via2 width < 5 (#V2.1)"

 width m4c 5 \
 "Via3 width < 5 (#V3.1)"

 width m5c 5 \
 "Via4 width < 5 (#V4.1)"

 width m6c 5 \
 "Via5 width < 5 (#V5.1)"

 width m7c 5 \
 "Via6 width < 5 (#V6.1)"

 width m8c 9 \
 "Via7 width < 9 (#V7.1)"

 spacing nwell nwell 6 touching_ok \
 "N-well(at-same-potential) spacing < 6 (Mosis #1.3)"

 spacing pwell pwell 6 touching_ok \
 "P-well(at-same-potential) spacing < 6 (Mosis #1.3)"

 spacing rnw nwell 18 touching_illegal \
 "rnw (for resistor L/W extraction) spacing to N-well < 18 (Mosis #2.3)"

 edge4way ~(pwell)/well pwell 1 ~(rnw)/active 0 0 \
 "P-well cannot touch rnw (for resistor L/W extraction) (Mosis #1.4)"

 spacing *ndiff,rnd,*nsd,*pdiff,rpd,*psd,nfet,pfet \
 *ndiff,rnd,*nsd,*pdiff,rpd,*psd,nfet,pfet 3 touching_ok \
 "Diffusion spacing < 3 (Mosis #2.2)"

 spacing nwell *ndiff,rnd,nfet 6 touching_illegal \
 "N-well spacing to N-Diffusion < 6 (Mosis #2.3)"

 spacing pwell *pdiff,rpd,pfet 6 touching_illegal \
 "P-well spacing to P-Diffusion < 6 (Mosis #2.3)"

 spacing *ndiff,rnd,nfet *pdiff,rpd,pfet 12 touching_illegal \
 "N-Diffusion spacing to P-Diffusion < 12 (Mosis #2.3+2.3)"

 surround *pdiff,rpd,pfet nwell 6 absence_ok \
 "N-well overlap of P-Diffusion < 6 (Mosis #2.4)"

 surround *ndiff,rnd,nfet pwell 6 absence_ok \
 "P-well overlap of N-Diffusion < 6 (Mosis #2.4)"

 surround *nsd nwell 3 absence_ok \
 "N-well overlap of N-Ohmic < 3 (Mosis #2.4)"

 surround *psd pwell 3 absence_ok \
 "P-well overlap of P-Ohmic < 3 (Mosis #2.4)"

 spacing *ndiff,rnd *nsd 9 touching_illegal \
 "N-Diffusion spacing to N-Ohmic < 9 (Mosis #2.3+2.4)"

 spacing *pdiff,rpd *psd 9 touching_illegal \
 "P-Diffusion spacing to P-Ohmic < 9 (Mosis #2.3+2.4)"

 spacing nwell *psd 3 touching_illegal \
 "N-well spacing to P-Ohmic < 3 (Mosis #2.4)"

 spacing pwell *nsd 3 touching_illegal \
 "P-well spacing to N-Ohmic < 3 (Mosis #2.4)"

 spacing *psd rnw 3 touching_illegal \
 "P-Ohmic spacing to rnw < 3 (Mosis #2.4)"

 spacing *nsd *psd 6 touching_illegal \
 "N-Ohmic spacing to P-Ohmic < 6 (Mosis #2.4+2.4)"

 spacing *ndiff,rnd,nfet *psd 4 touching_ok \
 "N-Diffusion spacing to P-Ohmic < 4 (Mosis #2.5)"

 spacing *pdiff,rpd,pfet *nsd 4 touching_ok \
 "P-Diffusion spacing to N-Ohmic < 4 (Mosis #2.5)"

 spacing *poly,rp,nfet,pfet *poly,rp,nfet,pfet 3 touching_ok \
 "Poly spacing < 3 (Mosis #3.2)"

 spacing nfet,pfet nfet,pfet 4 touching_ok \
 "Poly spacing < 4 (Mosis #3.2.a)"

 overhang *poly,rp nfet,pfet 3 \
 "Poly overhang of Transistor < 3 (Mosis #3.3)"

 overhang *ndiff,rnd,*pdiff,rpd nfet,pfet 4 \
 "N-Diffusion,P-Diffusion overhang of Transistor < 4 (Mosis #3.4)"

 edge4way *poly,rp ~(*poly,rp,nfet,pfet)/active 1 space space 1 \
 "Poly spacing to Diffusion < 1 (Mosis #3.5)"

 edge4way nfet ~(nfet)/active 4 ~(*psd)/active ~(nfet)/active 3 \
 "N-Transistor space to P-Ohmic < 4 (Mosis #4.1)"

 edge4way pfet ~(pfet)/active 4 ~(*nsd)/active ~(pfet)/active 3 \
 "P-Transistor space to N-Ohmic < 4 (Mosis #4.1)"

  area *nsd,*psd 16 3 \
 "Ohmic-Diffusion area < 16 (Mosis #+++)"

  edge4way *ndiff,rnd *psd 2 ~(*ndiff,rnd)/active 0 0 \
 "P-Ohmic (that touches N-Diffusion) width < 2 (Mosis #4.4)"

  edge4way *pdiff,rpd *nsd 2 ~(*pdiff,rpd)/active 0 0 \
 "N-Ohmic (that touches P-Diffusion) width < 2 (Mosis #4.4)"

 spacing *poly,rp pc/a 4 touching_ok \
 "Poly spacing to Poly contact < 4 (Mosis #5.5.b)"

 spacing pc/a pc/a 2 touching_ok \
 "Poly contact spacing < 2 (Mosis #6.3)"

 spacing ndc/a,pdc/a,psc/a,nsc/a ndc/a,pdc/a,psc/a,nsc/a 2 touching_ok \
 "Diffusion contact spacing < 2 (Mosis #6.3)"

# edge4way *ndiff,rnd ~(*ndiff,rnd)/active 0 ~(pdc/a,psc/a)/active \
# ~(*ndiff,rnd)/active 0 \
# "N-Diffusion space to Diffusion contact < 0 (Mosis #6.2x)"

# edge4way *pdiff,rpd ~(*pdiff,rpd)/active 0 ~(ndc/a,nsc/a)/active \
# ~(*pdiff,rpd)/active 0 \
# "P-Diffusion space to Diffusion contact < 0 (Mosis #6.2x)"

# edge4way *nsd ~(*nsd)/active 0 ~(pdc/a,psc/a)/active ~(*nsd)/active 0 \
# "N-Ohmic space to Diffusion contact < 0 (Mosis #6.2x)"

# edge4way *psd ~(*psd)/active 0 ~(ndc/a,nsc/a)/active ~(*psd)/active 0 \
# "P-Ohmic space to Diffusion contact < 0 (Mosis #6.2x)"

 spacing nsc/m1 pdc/m1 2 touching_illegal \
 "nsc spacing to pdc < 2 (Mosis #6.3)"

 spacing psc/m1 ndc/m1 2 touching_illegal \
 "psc spacing to ndc < 2 (Mosis #6.3)"

 spacing nfet,pfet ndc/a,pdc/a,nsc/a,psc/a 1 touching_illegal \
 "N-Transistor,P-Transistor spacing to Diffusion contact < 1 (Mosis #6.4)"

 spacing *ndiff,rnd,nfet,*nsd,*pdiff,rpd,pfet,*psd pc/a 1 touching_illegal \
 "Diffusion spacing to Poly contact < 1 (Mosis #6.5.b)"

 spacing *ndiff,rnd,nfet,*nsd,*pdiff,rpd,pfet,*psd ndc/a,pdc/a,psc/a,nsc/a \
 4 touching_ok \
 "Diffusion spacing to Diffusion contact < 4 (Mosis #6.5.b)"

 spacing pc/a ndc/a,pdc/a,psc/a,nsc/a 2 touching_illegal \
 "Poly contact spacing to Diffusion contact < 2 (Mosis #6.7)"

 spacing *m1 *m1 3 touching_ok \
 "Metal1 spacing < 3 (Mosis #7.2)"

 widespacing m1 153 m1 10 touching_ok \
 "Spacing to wide (> 10um) metal1 < 10 (#M1.2B)"

 spacing *m2 *m2 4 touching_ok \
 "Metal2 spacing < 4 (Mosis #9.2)"

 width glass 10 \
 "overglass width < 10 (Mosis #10.2)"

 surround glass pad 67 absence_illegal \
 "pad overlap of overglass < 67 (Mosis #10.3)"

 spacing *m3 *m3 4 touching_ok \
 "Metal3 spacing < 4 (Mosis #15.2)"

 spacing *m4 *m4 4 touching_ok \
 "Metal4 spacing < 4 (Mosis #22.2)"

 spacing *m5 *m5 4 touching_ok \
 "Metal5 spacing < 4 (Mosis #26.3)"

 spacing m6c/m5 m6c/m5 2 touching_ok \
 "Metal6 contact spacing < 2 (Mosis #29.3b)"

 spacing *m6 *m6 4 touching_ok \
 "Metal6 spacing < 4 (Mosis #30.3)"

 spacing *m7 *m7 4 touching_ok \
 "Metal7 spacing < 4 (Mosis #30.3)"

 spacing *m8 *m8 8 touching_ok \
 "Metal8 spacing < 8 (#MT.2a)"

 rect_only ndc/a,nsc/a "Contact not rectangular (Magic rule)"
 rect_only pdc/a,psc/a "Contact not rectangular (Magic rule)"
 rect_only pc/a "Contact not rectangular (Magic rule)"
 rect_only m2c/m1 "Contact not rectangular (Magic rule)"
 rect_only m3c/m2 "Contact not rectangular (Magic rule)"
 rect_only m4c/m3 "Contact not rectangular (Magic rule)"
 rect_only m5c/m4 "Contact not rectangular (Magic rule)"
 rect_only m6c/m5 "Contact not rectangular (Magic rule)"
 rect_only m7c/m6 "Contact not rectangular (Magic rule)"
 rect_only m8c/m7 "Contact not rectangular (Magic rule)"

 exact_overlap ndc/a,pdc/a,psc/a,nsc/a,pc/a
 exact_overlap ndc/m1,nsc/m1,pdc/m1,psc/m1,pc/m1
 exact_overlap m2c/m2
 exact_overlap m3c/m3
 exact_overlap m4c/m4
 exact_overlap m5c/m5
 exact_overlap m6c/m6
 exact_overlap m7c/m7
 exact_overlap m8c/m8

 rect_only nfet,pfet "Transistor cannot bend in this process (#PL.6)"

 stepsize 400

end

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

lef

# LEF layer names corresponding to magic layer names
 masterslice  ndiff   diffusion       active
 masterslice  poly    poly    POLY1   pl
 routing  m1      m1 metal1  METAL1  METAL_1
 routing  m2      m2 metal2  METAL2  METAL_2
 routing  m3      m3 metal3  METAL3  METAL_3
 routing  m4      m4 metal4  METAL4  METAL_4
 routing  m5      m5 metal5  METAL5  METAL_5
 routing  m6      m6 metal6  METAL6  METAL_6
 routing  m7      m7 metal7  METAL7  METAL_7
 routing  m8      m8 metal8  METAL8  METAL_8

 cut  pc      cont1           pl-m1
 cut  m2c     via1 cont2   VIA12   m1-m2
 cut  m3c     via2 cont3   VIA23   m2-m3
 cut  m4c     via3 cont4   VIA34   m3-m4
 cut  m5c     via4 cont5   VIA45   m4-m5
 cut  m6c     via5 cont6   VIA56   m5-m6
 cut  m7c     via6 cont7   VIA67   m6-m7
 cut  m8c     via7 cont8   VIA78   m7-m8

 overlap  comment overlap OVERLAP

# LEF layer name translations for obstruction geometry

 obs   obsact   diffusion       ISLND_BLK
 obs   obspoly  poly            POLY_BLK
 obs   obsm1    metal1  cont2   MET1_BLK
 obs   obsm2    metal2  cont3   MET2_BLK
 obs   obsm3    metal3  cont4   MET3_BLK
 obs   obsm4    metal4  cont5   MET4_BLK
 obs   obsm5    metal5  cont6   MET5_BLK
 obs   obsm6    metal6  cont7   MET6_BLK
 obs   obsm7    metal7  cont8   MET7_BLK
 obs   obsm8    metal8  	MET8_BLK

end


extract
    style standard
	cscale 1
	lambda 9
	step   100
	sidehalo 8

	planeorder well	   0
	planeorder active  1
	planeorder metal1  2
	planeorder metal2  3
	planeorder metal3  4
	planeorder metal4  5
	planeorder metal5  6
	planeorder metal6  7
	planeorder metal7  8
	planeorder metal8  9
	planeorder oxide   10
	planeorder comment 11

	resist (*ndiff,rnd,*nsd)/active 4700
	resist (*pdiff,rpd,*psd)/active 3500
	resist (nwell)/well 1191000
	resist (rnw)/active 1191000
	resist (pwell)/well 1
	resist (*poly,nfet,pfet)/active 4200
	resist (rp)/active 4200
	resist (*m1)/metal1  60
	resist (*m2)/metal2  80
	resist (*m3)/metal3  80
	resist (*m4)/metal4  80
	resist (*m5)/metal5  30
	resist (*m6)/metal6  30

	contact ndc 4 6700
	contact pdc 4 5700
	contact pc  4 5700
	contact m2c 4 2020
	contact m3c 4 4070
	contact m4c 4 5790

	#nwell,pwell
	areacap (nwell)/well   0.502

	#rnw
	areacap (rnw)/active   0.502

	#ndiff
	# MODEL HANDLES THIS: areacap (*ndiff)/active  15.163
	# MODEL HANDLES THIS: overlap (*ndiff)/active ~space/w  15.163
	# MODEL HANDLES THIS: perimc (*ndiff)/active ~(*ndiff,nfet,pfet)/active  39.600
	# MODEL HANDLES THIS: sideoverlap (*ndiff)/active ~(*ndiff,nfet,pfet)/active \
	#	~space/w  39.600

	areacap (rnd)/active  15.163
	overlap (rnd)/active ~space/w  15.163
	perimc (rnd)/active ~(rnd)/active  39.600
	sideoverlap (rnd)/active ~(rnd)/active ~space/w  39.600

	#pdiff
	# MODEL HANDLES THIS: areacap (*pdiff)/active  15.204
	# MODEL HANDLES THIS: overlap (*pdiff)/active ~space/w  15.204
	# MODEL HANDLES THIS: perimc (*pdiff)/active ~(*pdiff,nfet,pfet)/active  31.680
	# MODEL HANDLES THIS: sideoverlap (*pdiff)/active ~(*pdiff,nfet,pfet)/active \
	#	~space/w  31.680

	areacap (rpd)/active  15.204
	overlap (rpd)/active ~space/w  15.204
	perimc (rpd)/active ~(rpd)/active  31.680
	sideoverlap (rpd)/active ~(rpd)/active ~space/w  31.680

	#poly
	# MODEL HANDLES THIS: overlap (nfet)/active (*ndiff,rnd)/active  47.887
	# MODEL HANDLES THIS: sideoverlap (nfet)/active ~(nfet)/active \
	#	(*ndiff,rnd)/active  56.430
	# MODEL HANDLES THIS: overlap (pfet)/active (*pdiff)/active  46.097
	# MODEL HANDLES THIS: sideoverlap (pfet)/active ~(pfet)/active \
	#	(*pdiff,rpd)/active  50.310

	sidewall (*poly,rp)/active ~(*poly,rp)/active ~(*poly,rp)/active \
		(*poly,rp)/active  12.714
	areacap (*poly,rp)/active   0.786
	overlap (*poly,rp)/active ~space/w   0.786
	perimc (*poly,rp)/active ~(*poly,rp)/active   2.316
	sideoverlap (*poly,rp)/active ~(*poly,rp)/active ~space/w   2.316

	#metal1
	sidewall (*m1)/metal1 ~(*m1)/metal1 ~(*m1)/metal1 (*m1)/metal1  23.087
	areacap (*m1)/metal1   0.308

	#metal1-sub blocked by ~space/a
	overlap (*m1)/metal1 ~space/w   0.308 ~space/a
	perimc (*m1)/metal1 ~(*m1)/metal1   2.070
	sideoverlap (*m1)/metal1 ~(*m1)/metal1 ~space/w   2.070 ~space/a

	#rnw
	overlap (*m1)/metal1 rnw/active   0.308 
	sideoverlap (*m1)/metal1 ~(*m1)/metal1 rnw/active   2.070 

	#metal1-diff blocked by 
	overlap (*m1)/metal1 (*ndiff,rnd)/active   0.405 
	sideoverlap (*m1)/metal1 ~(*m1)/metal1 (*ndiff,rnd)/active   2.070 
	overlap (*m1)/metal1 (*pdiff,rpd)/active   0.405 
	sideoverlap (*m1)/metal1 ~(*m1)/metal1 (*pdiff,rpd)/active   2.070 

	#metal1-poly blocked by 
	overlap (*m1)/metal1 (*poly,rp,nfet,pfet)/active   0.510 
	sideoverlap (*m1)/metal1 ~(*m1)/metal1 (*poly,rp,nfet,pfet)/active   6.300 
	sideoverlap (*poly,rp,nfet,pfet)/active ~(*poly,rp,nfet,pfet)/active \
		(*m1)/metal1   6.300 

	#metal2
	sidewall (*m2)/metal2 ~(*m2)/metal2 ~(*m2)/metal2 (*m2)/metal2  25.475
	areacap (*m2)/metal2   0.154

	#metal2-sub blocked by 
	overlap (m2,m3c)/metal2 ~space/w   0.154 ~space/a,~space/m1
	perimc (*m2)/metal2 ~(*m2)/metal2   5.400
	sideoverlap (*m2)/metal2 ~(*m2)/metal2 ~space/w   5.400 ~space/a,~space/m1
	overlap (m2,m3c)/metal2 rnw/active   0.154 ~space/m1
	sideoverlap (*m2)/metal2 ~(*m2)/metal2 rnw/active   5.400 ~space/m1

	#metal2-*diff blocked by ~space/m1
	overlap (m2,m3c)/metal2 (*ndiff,rnd)/active   0.162 ~space/m1
	sideoverlap (*m2)/metal2 ~(*m2)/metal2 (*ndiff,rnd)/active   5.400 ~space/m1
	overlap (m2,m3c)/metal2 (*pdiff,rpd)/active   0.162 ~space/m1
	sideoverlap (*m2)/metal2 ~(*m2)/metal2 (*pdiff,rpd)/active   5.400 ~space/m1

	#metal2-poly blocked by ~space/m1
	overlap (m2,m3c)/metal2 (*poly,rp,nfet,pfet)/active   0.138 ~space/m1
	sideoverlap (*m2)/metal2 ~(*m2)/metal2 (*poly,rp,nfet,pfet)/active \
		3.780 ~space/m1
	sideoverlap (*poly,rp,nfet,pfet)/active ~(*poly,rp,nfet,pfet)/active \
		(*m2)/metal2   3.780 ~space/m1

	#M2->M1
	overlap (m2,m3c)/metal2 (*m1)/metal1   0.300
	sideoverlap (*m2)/metal2 ~(*m2)/metal2 (*m1)/metal1   4.680
	sideoverlap (*m1)/metal1 ~(*m1)/metal1 (*m2)/metal2   4.680

	#metal3
	sidewall (*m3)/metal3 ~(*m3)/metal3 ~(*m3)/metal3 (*m3)/metal3  26.825
	areacap (*m3)/metal3   0.105

	#metal3-sub blocked by ~space/a,~space/m1,~space/m2
	overlap (m3,m4c)/metal3 ~space/w   0.105 ~space/a,~space/m1,~space/m2
	perimc (*m3)/metal3 ~(*m3)/metal3   5.040
	sideoverlap (*m3)/metal3 ~(*m3)/metal3 ~space/w  5.040 \
		~space/a,~space/m1,~space/m2

	#rnw
	overlap (m3,m4c)/metal3 rnw/active   0.105 ~space/m1,~space/m2
	sideoverlap (*m3)/metal3 ~(*m3)/metal3 rnw/active   5.040 \
		~space/m1,~space/m2

	#metal3-*diff blocked by ~space/m1,~space/m2
	overlap (m3,m4c)/metal3 (*ndiff,rnd)/active   0.113 ~space/m1,~space/m2
	sideoverlap (*m3)/metal3 ~(*m3)/metal3 (*ndiff,rnd)/active   5.040 \
		~space/m1,~space/m2
	overlap (m3,m4c)/metal3 (*pdiff,rpd)/active   0.113 ~space/m1,~space/m2
	sideoverlap (*m3)/metal3 ~(*m3)/metal3 (*pdiff,rpd)/active   5.040 \
		~space/m1,~space/m2

	#metal3-poly blocked by ~space/m1,~space/m2
	overlap (m3,m4c)/metal3 (*poly,rp,nfet,pfet)/active   0.081 ~space/m1,~space/m2
	sideoverlap (*m3)/metal3 ~(*m3)/metal3 (*poly,rp,nfet,pfet)/active   2.700 \
		~space/m1,~space/m2
	sideoverlap (*poly,rp,nfet,pfet)/active ~(*poly,rp,nfet,pfet)/active \
		(*m3)/metal3   2.700 ~space/m1,~space/m2

	#M3->M1

	#metal3-metal1 blocked by ~space/m2
	overlap (m3,m4c)/metal3 (*m1)/metal1   0.122 ~space/m2
	sideoverlap (*m3)/metal3 ~(*m3)/metal3 (*m1)/metal1   3.240 ~space/m2
	sideoverlap (*m1)/metal1 ~(*m1)/metal1 (*m3)/metal3   3.240 ~space/m2

	#M3->M2
	overlap (m3,m4c)/metal3 (*m2)/metal2   0.308
	sideoverlap (*m3)/metal3 ~(*m3)/metal3 (*m2)/metal2   4.410
	sideoverlap (*m2)/metal2 ~(*m2)/metal2 (*m3)/metal3   4.410

	#metal4
	sidewall (*m4)/metal4 ~(*m4)/metal4 ~(*m4)/metal4 (*m4)/metal4  72.420
	areacap (m4)/metal4   0.065

	#metal4-sub blocked by ~space/a,~space/m1,~space/m2,~space/m3
	overlap (m4)/metal4 ~space/w   0.065 ~space/a,~space/m1,~space/m2,~space/m3
	perimc (*m4)/metal4 ~(*m4)/metal4   3.780
	sideoverlap (*m4)/metal4 ~(*m4)/metal4 ~space/w   3.780 \
		~space/a,~space/m1,~space/m2,~space/m3

	#rnw
	overlap (m4)/metal4 rnw/active   0.065 ~space/m1,~space/m2,~space/m3
	sideoverlap (*m4)/metal4 ~(*m4)/metal4 rnw/active   3.780 \
		~space/m1,~space/m2,~space/m3

	#metal4-*diff blocked by ~space/m1,~space/m2,~space/m3
	overlap (m4)/metal4 (*ndiff,rnd)/active   0.089 ~space/m1,~space/m2,~space/m3
	sideoverlap (*m4)/metal4 ~(*m4)/metal4 (*ndiff,rnd)/active   3.780 \
		~space/m1,~space/m2,~space/m3
	overlap (m4)/metal4 (*pdiff,rpd)/active   0.089 ~space/m1,~space/m2,~space/m3
	sideoverlap (*m4)/metal4 ~(*m4)/metal4 (*pdiff,rpd)/active   3.780 \
		~space/m1,~space/m2,~space/m3

	#metal4-poly blocked by ~space/m1,~space/m2,~space/m3
	overlap (m4)/metal4 (*poly,rp,nfet,pfet)/active   0.057 \
		~space/m1,~space/m2,~space/m3
	sideoverlap (*m4)/metal4 ~(*m4)/metal4 (*poly,rp,nfet,pfet)/active   2.160 \
		~space/m1,~space/m2,~space/m3
	sideoverlap (*poly,rp,nfet,pfet)/active ~(*poly,rp,nfet,pfet)/active \
		(*m4)/metal4   2.160 ~space/m1,~space/m2,~space/m3

	#M4->M1

	#metal4-metal1 blocked by ~space/m2,~space/m3
	overlap (m4)/metal4 (*m1)/metal1   0.073 ~space/m2,~space/m3
	sideoverlap (*m4)/metal4 ~(*m4)/metal4 (*m1)/metal1   2.610 ~space/m2,~space/m3
	sideoverlap (*m1)/metal1 ~(*m1)/metal1 (*m4)/metal4   2.610 ~space/m2,~space/m3

	#M4->M2

	#metal4-metal2 blocked by ~space/m3
	overlap (m4)/metal4 (*m2)/metal2   0.122 ~space/m3
	sideoverlap (*m4)/metal4 ~(*m4)/metal4 (*m2)/metal2   3.240 ~space/m3
	sideoverlap (*m2)/metal2 ~(*m2)/metal2 (*m4)/metal4   3.240 ~space/m3

	#M4->M3
	overlap (m4)/metal4 (*m3)/metal3   0.308
	sideoverlap (*m4)/metal4 ~(*m4)/metal4 (*m3)/metal3   4.680
	sideoverlap (*m3)/metal3 ~(*m3)/metal3 (*m4)/metal4   4.680

	#metal5
	sidewall (*m5)/metal5 ~(*m5)/metal5 ~(*m5)/metal5 (*m5)/metal5  13.090
	areacap (m5)/metal5   0.065

	#metal5-sub blocked by ~space/a,~space/m1,~space/m2,~space/m3,~space/m4
	overlap (m5)/metal5 ~space/w   0.065 \
		~space/a,~space/m1,~space/m2,~space/m3,~space/m4
	perimc (*m5)/metal5 ~(*m5)/metal5   2.160
	sideoverlap (*m5)/metal5 ~(*m5)/metal5 ~space/w   2.160 \
		~space/a,~space/m1,~space/m2,~space/m3,~space/m4

	#rnw
	overlap (m5)/metal5 rnw/active   0.065 \
		~space/m1,~space/m2,~space/m3,~space/m4
	sideoverlap (*m5)/metal5 ~(*m5)/metal5 rnw/active   2.160 \
		~space/m1,~space/m2,~space/m3,~space/m4

	#metal5-*diff blocked by ~space/m1,~space/m2,~space/m3,~space/m4
	overlap (m5)/metal5 (*ndiff,rnd)/active   0.073 \
		~space/m1,~space/m2,~space/m3,~space/m4
	sideoverlap (*m5)/metal5 ~(*m5)/metal5 (*ndiff,rnd)/active   2.160 \
		~space/m1,~space/m2,~space/m3,~space/m4
	overlap (m5)/metal5 (*pdiff,rpd)/active   0.073 \
		~space/m1,~space/m2,~space/m3,~space/m4
	sideoverlap (*m5)/metal5 ~(*m5)/metal5 (*pdiff,rpd)/active   2.160 \
		~space/m1,~space/m2,~space/m3,~space/m4

	#metal5-poly blocked by ~space/m1,~space/m2,~space/m3,~space/m4
	overlap (m5)/metal5 (*poly,rp,nfet,pfet)/active   0.049 \
		~space/m1,~space/m2,~space/m3,~space/m4
	sideoverlap (*m5)/metal5 ~(*m5)/metal5 (*poly,rp,nfet,pfet)/active   1.890 \
		~space/m1,~space/m2,~space/m3,~space/m4
	sideoverlap (*poly,rp,nfet,pfet)/active ~(*poly,rp,nfet,pfet)/active \
		(*m5)/metal5   1.890 ~space/m1,~space/m2,~space/m3,~space/m4

	#M5->M1

	#metal5-metal1 blocked by ~space/m2,~space/m3,~space/m4
	overlap (m5)/metal5 (*m1)/metal1   0.073 ~space/m2,~space/m3,~space/m4
	sideoverlap (*m5)/metal5 ~(*m5)/metal5 (*m1)/metal1   2.160 \
		~space/m2,~space/m3,~space/m4
	sideoverlap (*m1)/metal1 ~(*m1)/metal1 (*m5)/metal5   2.160 \
		~space/m2,~space/m3,~space/m4

	#M5->M2

	#metal5-metal2 blocked by ~space/(m3,m4)
	overlap (m5)/metal5 (*m2)/metal2   0.073 ~space/m3,~space/m4
	sideoverlap (*m5)/metal5 ~(*m5)/metal5 (*m2)/metal2   2.610 ~space/m3,~space/m4
	sideoverlap (*m2)/metal2 ~(*m2)/metal2 (*m5)/metal5   2.610 ~space/m3,~space/m4

	#M5->M3

	#metal5-metal3 blocked by ~space/m4
	overlap (m5)/metal5 (*m3)/metal3   0.122 ~space/m4
	sideoverlap (*m5)/metal5 ~(*m5)/metal5 (*m3)/metal3   3.420 ~space/m4
	sideoverlap (*m3)/metal3 ~(*m3)/metal3 (*m5)/metal5   3.420 ~space/m4

	#M5->M4
	overlap (m5)/metal5 (*m4)/metal4   0.300
	sideoverlap (*m5)/metal5 ~(*m5)/metal5 (*m4)/metal4   5.850
	sideoverlap (*m4)/metal4 ~(*m4)/metal4 (*m5)/metal5   5.850

	#metal6
	sidewall (*m6)/metal6 ~(*m6)/metal6 ~(*m6)/metal6 (*m6)/metal6  27.675
	areacap (m6)/metal6   0.065

	#metal6-sub blocked by ~space/(a,m1,m2,m3,m4,m5)
	overlap (m6)/metal6 ~space/w   0.065 \
		~space/a,~space/m1,~space/m2,~space/m3,~space/m4,~space/m5
	perimc (*m6)/metal6 ~(*m6)/metal6   2.160
	sideoverlap (*m6)/metal6 ~(*m6)/metal6 ~space/w   2.160 \
		~space/a,~space/m1,~space/m2,~space/m3,~space/m4,~space/m5

	#rnw
	overlap (m6)/metal6 rnw/active   0.065 \
		~space/m1,~space/m2,~space/m3,~space/m4,~space/m5
	sideoverlap (*m6)/metal6 ~(*m6)/metal6 rnw/active   2.160 \
		~space/m1,~space/m2,~space/m3,~space/m4,~space/m5

	#metal6-*diff blocked by ~space/m1,~space/m2,~space/m3,~space/m4,~space/m5
	overlap (m6)/metal6 (*ndiff,rnd)/active   0.073 \
		~space/m1,~space/m2,~space/m3,~space/m4,~space/m5
	sideoverlap (*m6)/metal6 ~(*m6)/metal6 (*ndiff,rnd)/active   2.160 \
		~space/m1,~space/m2,~space/m3,~space/m4,~space/m5
	overlap (m6)/metal6 (*pdiff,rpd)/active   0.073 \
		~space/m1,~space/m2,~space/m3,~space/m4,~space/m5
	sideoverlap (*m6)/metal6 ~(*m6)/metal6 (*pdiff,rpd)/active   2.160 \
		~space/m1,~space/m2,~space/m3,~space/m4,~space/m5

	#metal6-poly blocked by ~space/m1,~space/m2,~space/m3,~space/m4,~space/m5
	overlap (m6)/metal6 (*poly,rp,nfet,pfet)/active   0.049 \
		~space/m1,~space/m2,~space/m3,~space/m4,~space/m5
	sideoverlap (*m6)/metal6 ~(*m6)/metal6 (*poly,rp,nfet,pfet)/active   1.890 \
		~space/m1,~space/m2,~space/m3,~space/m4,~space/m5
	sideoverlap (*poly,rp,nfet,pfet)/active ~(*poly,rp,nfet,pfet)/active \
		(*m6)/metal6   1.890 ~space/m1,~space/m2,~space/m3,~space/m4,~space/m5

	#M6->M1

	#metal6-metal1 blocked by ~space/m2,~space/m3,~space/m4,~space/m5
	overlap (m6)/metal6 (*m1)/metal1   0.073 ~space/m2,~space/m3,~space/m4,~space/m5
	sideoverlap (*m6)/metal6 ~(*m6)/metal6 (*m1)/metal1   2.160 \
		~space/m2,~space/m3,~space/m4,~space/m5
	sideoverlap (*m1)/metal1 ~(*m1)/metal1 (*m6)/metal6   2.160 \
		~space/m2,~space/m3,~space/m4,~space/m5

	#M6->M2

	#metal6-metal2 blocked by ~space/m3,~space/m4,~space/m5
	overlap (m6)/metal6 (*m2)/metal2   0.073 ~space/m3,~space/m4,~space/m5
	sideoverlap (*m6)/metal6 ~(*m6)/metal6 (*m2)/metal2   2.610 \
		~space/m3,~space/m4,~space/m5
	sideoverlap (*m2)/metal2 ~(*m2)/metal2 (*m6)/metal6   2.610 \
		~space/m3,~space/m4,~space/m5

	#M6->M3

	#metal6-metal3 blocked by ~space/m4,~space/m5
	overlap (m6)/metal6 (*m3)/metal3   0.122 ~space/m4,~space/m5
	sideoverlap (*m6)/metal6 ~(*m6)/metal6 (*m3)/metal3   3.420 ~space/m4,~space/m5
	sideoverlap (*m3)/metal3 ~(*m3)/metal3 (*m6)/metal6   3.420 ~space/m4,~space/m5

	#M6->M4

	#metal6-metal4 blocked by ~space/m5
	overlap (m6)/metal6 (*m4)/metal4   0.300 ~space/m5
	sideoverlap (*m6)/metal6 ~(*m6)/metal6 (*m4)/metal4   5.850 ~space/m5
	sideoverlap (*m4)/metal4 ~(*m4)/metal4 (*m6)/metal6   5.850 ~space/m5

	#M6->M5
	overlap (m6)/metal6 (*m5)/metal5   0.300
	sideoverlap (*m6)/metal6 ~(*m6)/metal6 (*m5)/metal5   5.850 
	sideoverlap (*m5)/metal5 ~(*m5)/metal5 (*m6)/metal6   5.850 

	#devices

	device mosfet pfet pfet pdiff,pdc nwell Vdd! 50 46
	device mosfet nfet nfet ndiff,ndc pwell Gnd! 50 46

	fetresis  pfet linear		41017
	fetresis  pfet saturation	41017
	fetresis  nfet linear		8770
	fetresis  nfet saturation	8770

	device resistor nwellResistor rnw  *nsd
	device resistor polyResistor  rp   *poly
	device resistor ndiffResistor rnd  *ndiff
	device resistor pdiffResistor rpd  *pdiff

	# layer heights and thicknesses for inductance extraction and 3D rendering

	height nwell -0.1 0.1
	height ndiff,pdiff,nsd,psd -0.075 0.075
	height poly,pfet,nfet 0.1 0.05
	height ndc,pdc,nsc,psc 0.001 0.25
	height pc 0.1 0.15
	height m1 0.2 0.05
	height m2c 0.2 0.15
	height m2 0.3 0.05
	height m3c 0.3 0.15
	height m3 0.4 0.05
	height m4c 0.4 0.15
	height m4 0.5 0.05
	height m5c 0.5 0.15
	height m5 0.6 0.05
	height m6c 0.6 0.15
	height m6 0.7 0.05
	height m7c 0.7 0.15
	height m7 0.8 0.05
	height m8c 0.9 0.15
	height m8 0.9 0.2
end

wiring
 contact	pdcontact	4	metal1	0	pdiff	0
 contact	ndcontact	4	metal1	0	ndiff	0
 contact	pcontact	4	metal1	0	poly	0
 contact	m2contact	4	metal1	0	metal2	0
 contact	m3contact	5	metal2	0	metal3 1
 contact	m4contact	4	metal3	0	metal4 0
 contact	m5contact	5	metal4	0	metal5 0
 contact	m6contact	6	metal5	0	metal6 0
end

router
 layer2 metal2 3 *m2 4 *poly,rp,m1 1
 layer1 metal1 3 *m1 3
 contacts m2contact 4
 gridspacing 8
end

plowing
 fixed		nfet,pfet,glass,pad
 covered	nfet,pfet
 drag		nfet,pfet
end

plot
    style pnm
	draw metal1
	draw metal2
	draw metal3
	draw metal4
	draw metal5
	draw metal6
	draw metal7
	draw metal8
	draw polysilicon
	draw ndiffusion
	draw pdiffusion
	draw ntransistor
	draw ptransistor
	map psubstratepdiff pdiffusion
	map nsubstratendiff ndiffusion
	map polycontact polysilicon metal1
	map m2contact metal1 metal2
	map m3contact metal2 metal3
	map m4contact metal3 metal4
	map m5contact metal4 metal5
	map m6contact metal5 metal6
	map m7contact metal6 metal7
	map m8contact metal7 metal8
	map ndcontact ndiffusion metal1
	map pdcontact pdiffusion metal1
	map nsubstratencontact ndiffusion metal1
	map psubstratepcontact pdiffusion metal1

    style postscript
	 1 C0C0C0C0 C0C0C0C0 00000000 00000000 0C0C0C0C 0C0C0C0C 00000000 00000000
	 2 A0A0A0A0 0A0A0A0A A0A0A0A0 0A0A0A0A A0A0A0A0 0A0A0A0A A0A0A0A0 0A0A0A0A
	 3 00030003 000C000C 00300030 00C000C0 03000300 0C000C00 30003000 C000C000
	 4 00000000 00000000 C0C0C0C0 00000000 00000000 00000000 0C0C0C0C 00000000
	 5 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
	 6 07070707 0E0E0E0E 1C1C1C1C 38383838 70707070 E0E0E0E0 C1C1C1C1 83838383
	 7 18181818 30303030 60606060 C0C0C0C0 81818181 03030303 06060606 0C0C0C0C
	 8 18181818 0C0C0C0C 06060606 03030303 81818181 C0C0C0C0 60606060 30303030
	 9 18181818 3C3C3C3C 3C3C3C3C 18181818 81818181 C3C3C3C3 C3C3C3C3 81818181
	10 F0F0F0F0 60606060 06060606 0F0F0F0F 0F0F0F0F 06060606 60606060 F0F0F0F0
	11 01000080 02000040 0C000030 F000000F 000FF000 00300C00 00400200 00800100
	12 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
	13 00000000 00000000 33333333 33333333 00000000 00000000 CCCCCCCC CCCCCCCC

	 1 47 95 111 0
	 2 223 31 223 0
	 3 0 0 0 192
	 4 31 111 31 0
	 5 31 111 255 0
	 6 63 95 191 0
	 7 255 63 255 0
	 8 0 0 0 127
	 9 223 47 223 0
	10 0 255 255 0
	11 0 0 255 0
	12 191 127 0 0
	13 95 223 63 0
	14 0 0 0 255
	15 191 127 63 0
	16 111 151 244 0
	17 23 175 183 0

	pc,ndc,pdc,psc,nsc 14 X
	m2c,pad,glass 14 B
	pad,glass 14 11
	m2c 14 13
	m2,m2c,pad 13 10
	pdc,ndc,psc,nsc,pc,m1,m2c 12 9
	nsd,nsc 7 1
	psd,psc 6 1
	nfet 9 8
	pfet 1 7
	poly,pc 10 5
	nfet 16 5
	pfet 17 5
	pdiff,pdc 1 5
	ndiff,ndc 9 5
	pwell 1 4
	nwell 2 4
end


More information about the magic-dev mailing list