192 lines
7.8 KiB
Python
192 lines
7.8 KiB
Python
# -*- Mode:Python; explicit-buffer-name: "technology.conf<ispd05>" -*-
|
|
|
|
import helpers
|
|
from Hurricane import DbU
|
|
|
|
# Provides standard settings for:
|
|
# - <viewerConfig>
|
|
# - <realLayersTable>
|
|
# - <compositeLayersTable>
|
|
# - <symbolicLayersTable>
|
|
|
|
execfile( helpers.sysConfDir+'/common/technology.conf' )
|
|
|
|
|
|
technoConfig = { 'name' : 'hcmos9gp'
|
|
, 'gridValue' : 0.005
|
|
, 'gridUnit' : DbU.UnitPowerMicro
|
|
, 'gridsPerLambda': 24
|
|
}
|
|
|
|
|
|
# Format of <layersExtensionsTable>:
|
|
# Each entry is a pair of (string, value).
|
|
# * string: a synthetic way to designate the real or symbolic layer on
|
|
# which it applies, an optional sub layer (BasicLayer) in case
|
|
# where there is more than one, and the dimension name.
|
|
# * value : the rule (dimension) value. If the main layer is symbolic it
|
|
# must be expressed in lambda, if it is for a real layers it
|
|
# must be expressed in microns.
|
|
|
|
layersExtensionsTable = \
|
|
( ('NWELL.nWell.extention.cap' , 0.0)
|
|
, ('PWELL.pWell.extention.cap' , 0.0)
|
|
|
|
, ('NTIE.minimum.width' , 3.0)
|
|
, ('NTIE.nWell.extention.cap' , 1.5)
|
|
, ('NTIE.nWell.extention.width' , 0.5)
|
|
, ('NTIE.nImplant.extention.cap' , 1.0)
|
|
, ('NTIE.nImplant.extention.width' , 0.5)
|
|
, ('NTIE.active.extention.cap' , 0.5)
|
|
, ('NTIE.active.extention.width' , 0.0)
|
|
|
|
, ('PTIE.minimum.width' , 3.0)
|
|
, ('PTIE.pWell.extention.cap' , 1.5)
|
|
, ('PTIE.pWell.extention.width' , 0.5)
|
|
, ('PTIE.pImplant.extention.cap' , 1.0)
|
|
, ('PTIE.pImplant.extention.width' , 0.5)
|
|
, ('PTIE.active.extention.cap' , 0.5)
|
|
, ('PTIE.active.extention.width' , 0.0)
|
|
|
|
, ('NDIF.minimum.width' , 3.0)
|
|
, ('NDIF.nImplant.extention.cap' , 1.0)
|
|
, ('NDIF.nImplant.extention.width' , 0.5)
|
|
, ('NDIF.active.extention.cap' , 0.5)
|
|
, ('NDIF.active.extention.width' , 0.0)
|
|
|
|
, ('PDIF.minimum.width' , 3.0)
|
|
, ('PDIF.pImplant.extention.cap' , 1.0)
|
|
, ('PDIF.pImplant.extention.width' , 0.5)
|
|
, ('PDIF.active.extention.cap' , 0.5)
|
|
, ('PDIF.active.extention.width' , 0.0)
|
|
|
|
, ('GATE.minimum.width' , 1.0)
|
|
, ('GATE.poly.extention.cap' , 1.5)
|
|
|
|
, ('NTRANS.minimum.width' , 1.0)
|
|
, ('NTRANS.nImplant.extention.cap' , -1.0)
|
|
, ('NTRANS.nImplant.extention.width' , 2.5)
|
|
, ('NTRANS.active.extention.cap' , -1.5)
|
|
, ('NTRANS.active.extention.width' , 2.0)
|
|
|
|
, ('PTRANS.minimum.width' , 1.0)
|
|
, ('PTRANS.nWell.extention.cap' , -1.0)
|
|
, ('PTRANS.nWell.extention.width' , 4.5)
|
|
, ('PTRANS.pImplant.extention.cap' , -1.0)
|
|
, ('PTRANS.pImplant.extention.width' , 4.0)
|
|
, ('PTRANS.active.extention.cap' , -1.5)
|
|
, ('PTRANS.active.extention.width' , 3.0)
|
|
|
|
, ('POLY.minimum.width' , 1.0)
|
|
, ('POLY.poly.extention.cap' , 0.5)
|
|
, ('POLY2.minimum.width' , 1.0)
|
|
, ('POLY2.poly.extention.cap' , 0.5)
|
|
|
|
# Routing Layers (symbolic).
|
|
, ('METAL1.minimum.width' , 1.0)
|
|
, ('METAL1.metal1.extention.cap' , 0.5)
|
|
, ('METAL2.minimum.width' , 1.0)
|
|
, ('METAL2.metal2.extention.cap' , 1.0)
|
|
, ('METAL3.minimum.width' , 1.0)
|
|
, ('METAL3.metal3.extention.cap' , 1.0)
|
|
, ('METAL4.minimum.width' , 1.0)
|
|
, ('METAL4.metal4.extention.cap' , 1.0)
|
|
, ('METAL5.minimum.width' , 2.0)
|
|
, ('METAL5.metal5.extention.cap' , 1.0)
|
|
, ('METAL6.minimum.width' , 2.0)
|
|
, ('METAL6.metal6.extention.cap' , 1.0)
|
|
, ('METAL7.minimum.width' , 2.0)
|
|
, ('METAL7.metal6.extention.cap' , 1.0)
|
|
, ('METAL8.minimum.width' , 2.0)
|
|
, ('METAL8.metal6.extention.cap' , 1.0)
|
|
|
|
# Contacts (i.e. Active <--> Metal) (symbolic).
|
|
, ('CONT_BODY_N.minimum.side' , 1.0)
|
|
, ('CONT_BODY_N.nWell.enclosure' , 1.5)
|
|
, ('CONT_BODY_N.nImplant.enclosure' , 1.5)
|
|
, ('CONT_BODY_N.active.enclosure' , 1.0)
|
|
, ('CONT_BODY_N.metal1.enclosure' , 0.5)
|
|
|
|
, ('CONT_BODY_P.minimum.side' , 1.0)
|
|
, ('CONT_BODY_P.pWell.enclosure' , 1.5)
|
|
, ('CONT_BODY_P.pImplant.enclosure' , 1.5)
|
|
, ('CONT_BODY_P.active.enclosure' , 1.0)
|
|
, ('CONT_BODY_P.metal1.enclosure' , 0.5)
|
|
|
|
, ('CONT_DIF_N.minimum.side' , 1.0)
|
|
, ('CONT_DIF_N.nImplant.enclosure' , 1.0)
|
|
, ('CONT_DIF_N.active.enclosure' , 0.5)
|
|
, ('CONT_DIF_N.metal1.enclosure' , 0.5)
|
|
|
|
, ('CONT_DIF_P.minimum.side' , 1.0)
|
|
, ('CONT_DIF_P.pImplant.enclosure' , 1.0)
|
|
, ('CONT_DIF_P.active.enclosure' , 0.5)
|
|
, ('CONT_DIF_P.metal1.enclosure' , 0.5)
|
|
|
|
, ('CONT_POLY.minimum.width' , 1.0)
|
|
, ('CONT_POLY.poly.enclosure' , 0.5)
|
|
, ('CONT_POLY.metal1.enclosure' , 0.5)
|
|
|
|
# VIAs (i.e. Metal <--> Metal) (symbolic).
|
|
, ('VIA12.minimum.side' , 1.0)
|
|
, ('VIA12.metal1.enclosure' , 0.5)
|
|
, ('VIA12.metal2.enclosure' , 0.5)
|
|
, ('VIA23.minimum.side' , 1.0)
|
|
, ('VIA23.metal2.enclosure' , 0.5)
|
|
, ('VIA23.metal3.enclosure' , 0.5)
|
|
, ('VIA34.minimum.side' , 1.0)
|
|
, ('VIA34.metal3.enclosure' , 0.5)
|
|
, ('VIA34.metal4.enclosure' , 0.5)
|
|
, ('VIA45.minimum.side' , 1.0)
|
|
, ('VIA45.metal4.enclosure' , 0.5)
|
|
, ('VIA45.metal5.enclosure' , 0.5)
|
|
, ('VIA56.minimum.side' , 1.0)
|
|
, ('VIA56.metal5.enclosure' , 0.5)
|
|
, ('VIA56.metal6.enclosure' , 0.5)
|
|
, ('VIA67.minimum.side' , 1.0)
|
|
, ('VIA67.metal6.enclosure' , 0.5)
|
|
, ('VIA67.metal7.enclosure' , 0.5)
|
|
, ('VIA78.minimum.side' , 1.0)
|
|
, ('VIA78.metal7.enclosure' , 0.5)
|
|
, ('VIA78.metal8.enclosure' , 0.5)
|
|
|
|
# Blockages (symbolic).
|
|
, ('BLOCKAGE1.minimum.width' , 1.0)
|
|
, ('BLOCKAGE1.blockage1.extention.cap' , 0.5)
|
|
, ('BLOCKAGE2.minimum.width' , 2.0)
|
|
, ('BLOCKAGE2.blockage2.extention.cap' , 0.5)
|
|
, ('BLOCKAGE3.minimum.width' , 2.0)
|
|
, ('BLOCKAGE3.blockage3.extention.cap' , 0.5)
|
|
, ('BLOCKAGE4.minimum.width' , 2.0)
|
|
, ('BLOCKAGE4.blockage4.extention.cap' , 0.5)
|
|
, ('BLOCKAGE5.minimum.width' , 2.0)
|
|
, ('BLOCKAGE5.blockage5.extention.cap' , 1.0)
|
|
, ('BLOCKAGE6.minimum.width' , 2.0)
|
|
, ('BLOCKAGE6.blockage6.extention.cap' , 1.0)
|
|
, ('BLOCKAGE7.minimum.width' , 2.0)
|
|
, ('BLOCKAGE7.blockage6.extention.cap' , 1.0)
|
|
, ('BLOCKAGE8.minimum.width' , 2.0)
|
|
, ('BLOCKAGE8.blockage6.extention.cap' , 1.0)
|
|
)
|
|
|
|
|
|
gdsLayersTable = \
|
|
( ("nWell" , "NWELL" , 3)
|
|
, ("nImplant", "NPLUS" , 26)
|
|
, ("pImplant", "PPLUS" , 25)
|
|
, ("active" , "ACTIVE" , 6)
|
|
, ("poly" , "POLY" , 17)
|
|
, ("cut0" , "CONTACT", 30)
|
|
, ("metal1" , "METAL1" , 31)
|
|
, ("cut1" , "VIA1" , 51)
|
|
, ("metal2" , "METAL2" , 32)
|
|
, ("cut2" , "VIA2" , 52)
|
|
, ("metal3" , "METAL3" , 33)
|
|
, ("cut3" , "VIA3" , 53)
|
|
, ("metal4" , "METAL4" , 34)
|
|
, ("cut4" , "VIA4" , 54)
|
|
, ("metal5" , "METAL5" , 35)
|
|
, ("cut5" , "VIA5" , 55)
|
|
, ("metal6" , "METAL6" , 36)
|
|
)
|