diff --git a/crlcore/etc/130/hcmos9gp/technology.conf b/crlcore/etc/130/hcmos9gp/technology.conf deleted file mode 100644 index 0b147812..00000000 --- a/crlcore/etc/130/hcmos9gp/technology.conf +++ /dev/null @@ -1,30 +0,0 @@ -# -*- Mode:Python; explicit-buffer-name: "technology.conf" -*- - -from Hurricane import DbU - - -technoConfig = { 'name' : 'hcmos9' - , 'gridValue' : 0.005 - , 'gridUnit' : DbU.UnitPowerMicro - , 'gridsPerLambda': 24 - } - -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) - ) diff --git a/crlcore/etc/scmos_deep_018/alliance.conf b/crlcore/etc/180/scn6m_deep_09/alliance.conf similarity index 100% rename from crlcore/etc/scmos_deep_018/alliance.conf rename to crlcore/etc/180/scn6m_deep_09/alliance.conf diff --git a/crlcore/etc/scmos_deep_018/display.conf b/crlcore/etc/180/scn6m_deep_09/display.conf similarity index 100% rename from crlcore/etc/scmos_deep_018/display.conf rename to crlcore/etc/180/scn6m_deep_09/display.conf diff --git a/crlcore/etc/cmos/etesian.conf b/crlcore/etc/180/scn6m_deep_09/etesian.conf similarity index 100% rename from crlcore/etc/cmos/etesian.conf rename to crlcore/etc/180/scn6m_deep_09/etesian.conf diff --git a/crlcore/etc/scmos_deep_018/hMetis.conf b/crlcore/etc/180/scn6m_deep_09/hMetis.conf similarity index 100% rename from crlcore/etc/scmos_deep_018/hMetis.conf rename to crlcore/etc/180/scn6m_deep_09/hMetis.conf diff --git a/crlcore/etc/scmos_deep_018/kite.conf b/crlcore/etc/180/scn6m_deep_09/kite.conf similarity index 100% rename from crlcore/etc/scmos_deep_018/kite.conf rename to crlcore/etc/180/scn6m_deep_09/kite.conf diff --git a/crlcore/etc/scmos_deep_018/mauka.conf b/crlcore/etc/180/scn6m_deep_09/mauka.conf similarity index 100% rename from crlcore/etc/scmos_deep_018/mauka.conf rename to crlcore/etc/180/scn6m_deep_09/mauka.conf diff --git a/crlcore/etc/scmos_deep_018/misc.conf b/crlcore/etc/180/scn6m_deep_09/misc.conf similarity index 100% rename from crlcore/etc/scmos_deep_018/misc.conf rename to crlcore/etc/180/scn6m_deep_09/misc.conf diff --git a/crlcore/etc/scmos_deep_018/nimbus.conf b/crlcore/etc/180/scn6m_deep_09/nimbus.conf similarity index 100% rename from crlcore/etc/scmos_deep_018/nimbus.conf rename to crlcore/etc/180/scn6m_deep_09/nimbus.conf diff --git a/crlcore/etc/scmos_deep_018/patterns.conf b/crlcore/etc/180/scn6m_deep_09/patterns.conf similarity index 100% rename from crlcore/etc/scmos_deep_018/patterns.conf rename to crlcore/etc/180/scn6m_deep_09/patterns.conf diff --git a/crlcore/etc/scmos_deep_018/plugins.conf b/crlcore/etc/180/scn6m_deep_09/plugins.conf similarity index 100% rename from crlcore/etc/scmos_deep_018/plugins.conf rename to crlcore/etc/180/scn6m_deep_09/plugins.conf diff --git a/crlcore/etc/scmos_deep_018/stratus1.conf b/crlcore/etc/180/scn6m_deep_09/stratus1.conf similarity index 100% rename from crlcore/etc/scmos_deep_018/stratus1.conf rename to crlcore/etc/180/scn6m_deep_09/stratus1.conf diff --git a/crlcore/etc/180/scn6m_deep_09/technology.conf b/crlcore/etc/180/scn6m_deep_09/technology.conf index d1f00346..059d339b 100644 --- a/crlcore/etc/180/scn6m_deep_09/technology.conf +++ b/crlcore/etc/180/scn6m_deep_09/technology.conf @@ -1,40 +1,169 @@ -# -*- Mode:Python; explicit-buffer-name: "technology.conf" -*- +# -*- Mode:Python; explicit-buffer-name: "technology.conf" -*- -from Hurricane import DbU +import helpers -# MOSIS SCN6M_DEEP is a portable technology where lengths are expresseds -# in symbolic unit (lambda). We only know that the lambda is equal to half -# the value of the technology, that is 180nm gives 90nm. We have no information -# about the foundry grid. +# The informations here are extracted from the Alliance ".rds" file, +# and must be consistent with it. # -# We set the foundry grid to .005um and set the gridsPerLambda to 18. +# Provides standard settings for: +# - +# - +# - +# - -technoConfig = { 'name' : 'scn6m_deep' - , 'gridValue' : 0.005 - , 'gridUnit' : DbU.UnitPowerMicro - , 'gridsPerLambda': 18 - } +execfile( helpers.sysConfDir+'/common/technology.conf' ) -# Format of an entry in the table: -# (Symbolic_Name, CIF_Name, GDSII_Number) -gdsLayersTable = \ - ( ("pWell" , "CWN" , 41) - , ("nWell" , "CWP" , 42) - , ("active" , "CAA" , 43) - , ("pImplant", "CSP" , 44) - , ("nImplant", "CSN" , 45) - , ("poly" , "CPG" , 46) - , ("poly2" , "CM1" , 49) # poly2 is in fact metal1. - , ("cut0" , "CCC" , 25) - , ("metal1" , "CM1" , 49) - , ("cut1" , "CV1" , 50) - , ("metal2" , "CM2" , 51) - , ("cut2" , "CV2" , 61) - , ("metal3" , "CM3" , 62) - , ("cut3" , "CV3" , 30) - , ("metal4" , "CM4" , 31) - , ("cut4" , "CV4" , 32) - , ("metal5" , "CM5" , 33) - , ("cut5" , "CV5" , 36) - , ("metal6" , "CM6" , 37) + +# Format of : +# Each entry is a pair of (string, value). +# * string: a synthetic way to designate the symbolic layer on which +# it applies, an optional real layer in case where there is +# more than one, and the dimension name. +# * value : the rule (dimension) value expressed in lambda. + +symbolicRulesTable = \ + ( ('NWELL.nWell.extention.cap' , 4.0) + , ('PWELL.pWell.extention.cap' , 4.0) + + , ('NTIE.minimum.width' , 3.0) + , ('NTIE.nWell.extention.cap' , 3.0) + , ('NTIE.nWell.extention.width' , 2.0) + , ('NTIE.nImplant.extention.cap' , 2.5) + , ('NTIE.nImplant.extention.width' , 1.5) + , ('NTIE.active.extention.cap' , 0.5) + , ('NTIE.active.extention.width' , -0.5) + + , ('PTIE.minimum.width' , 3.0) + , ('PTIE.pWell.extention.cap' , 3.0) + , ('PTIE.pWell.extention.width' , 2.0) + , ('PTIE.pImplant.extention.cap' , 2.5) + , ('PTIE.pImplant.extention.width' , 1.5) + , ('PTIE.active.extention.cap' , 0.5) + , ('PTIE.active.extention.width' , -0.5) + + , ('NDIF.minimum.width' , 3.0) + , ('NDIF.nImplant.extention.cap' , 4.0) + , ('NDIF.nImplant.extention.width' , 2.0) + , ('NDIF.active.extention.cap' , 2.0) + , ('NDIF.active.extention.width' , 0.0) + + , ('PDIF.minimum.width' , 3.0) + , ('PDIF.pImplant.extention.cap' , 4.0) + , ('PDIF.pImplant.extention.width' , 2.0) + , ('PDIF.active.extention.cap' , 2.0) + , ('PDIF.active.extention.width' , 0.0) + + , ('GATE.minimum.width' , 2.0) + , ('GATE.poly.extention.cap' , 2.5) + + , ('NTRANS.minimum.width' , 2.0) + , ('NTRANS.nImplant.extention.cap' , 2.0) + , ('NTRANS.nImplant.extention.width' , 7.0) + , ('NTRANS.active.extention.cap' , 0.0) + , ('NTRANS.active.extention.width' , 3.0) + , ('NTRANS.poly.extention.cap' , 3.0) + , ('NTRANS.poly.extention.width' , 0.0) + + , ('PTRANS.minimum.width' , 2.0) + , ('PTRANS.nWell.extention.cap' , 2.5) + , ('PTRANS.nWell.extention.width' , 7.5) + , ('PTRANS.pImplant.extention.cap' , 2.0) + , ('PTRANS.pImplant.extention.width' , 7.0) + , ('PTRANS.active.extention.cap' , 0.0) + , ('PTRANS.active.extention.width' , 3.0) + , ('PTRANS.poly.extention.cap' , 3.0) + , ('PTRANS.poly.extention.width' , 0.0) + + , ('POLY.minimum.width' , 2.0) + , ('POLY.poly.extention.cap' , 1.0) + , ('POLY2.minimum.width' , 2.0) + , ('POLY2.poly2.extention.cap' , 2.0) + + # Routing Layers. + , ('METAL1.minimum.width' , 2.0) + , ('METAL1.metal1.extention.cap' , 2.0) + , ('METAL1.metal1.extention.width' , 0.5) + , ('METAL2.minimum.width' , 3.0) + , ('METAL2.metal2.extention.cap' , 1.5) + , ('METAL3.minimum.width' , 3.0) + , ('METAL3.metal3.extention.cap' , 1.5) + , ('METAL4.minimum.width' , 3.0) + , ('METAL4.metal4.extention.cap' , 1.5) + , ('METAL5.minimum.width' , 3.0) + , ('METAL5.metal5.extention.cap' , 1.5) + , ('METAL6.minimum.width' , 5.0) + , ('METAL6.metal6.extention.cap' , 2.5) + #, ('METAL7.minimum.width' , 2.0) + #, ('METAL7.metal7.extention.cap' , 2.5) + #, ('METAL8.minimum.width' , 2.0) + #, ('METAL8.metal8.extention.cap' , 2.5) + + # Blockages. + , ('BLOCKAGE1.minimum.width' , 3.0) + , ('BLOCKAGE1.blockage1.extention.cap' , 2.0) + , ('BLOCKAGE1.blockage1.extention.width', 0.5) + , ('BLOCKAGE2.minimum.width' , 3.0) + , ('BLOCKAGE2.blockage2.extention.cap' , 2.0) + , ('BLOCKAGE3.minimum.width' , 3.0) + , ('BLOCKAGE3.blockage3.extention.cap' , 2.0) + , ('BLOCKAGE4.minimum.width' , 3.0) + , ('BLOCKAGE4.blockage4.extention.cap' , 2.0) + , ('BLOCKAGE5.minimum.width' , 3.0) + , ('BLOCKAGE5.blockage5.extention.cap' , 2.0) + , ('BLOCKAGE6.minimum.width' , 4.0) + , ('BLOCKAGE6.blockage6.extention.cap' , 2.5) + #, ('BLOCKAGE7.minimum.width' , 2.0) + #, ('BLOCKAGE7.blockage6.extention.cap' , 4.0) + #, ('BLOCKAGE8.minimum.width' , 2.0) + #, ('BLOCKAGE8.blockage6.extention.cap' , 4.0) + + # Contacts (i.e. Active <--> Metal). + , ('CONT_BODY_N.minimum.side' , 2.0) + , ('CONT_BODY_N.nWell.enclosure' , 4.0) + , ('CONT_BODY_N.nImplant.enclosure' , 3.5) + , ('CONT_BODY_N.active.enclosure' , 1.5) + , ('CONT_BODY_N.metal1.enclosure' , 1.0) + + , ('CONT_BODY_P.minimum.side' , 2.0) + , ('CONT_BODY_P.pWell.enclosure' , 4.0) + , ('CONT_BODY_P.pImplant.enclosure' , 3.5) + , ('CONT_BODY_P.active.enclosure' , 1.5) + , ('CONT_BODY_P.metal1.enclosure' , 1.0) + + , ('CONT_DIF_N.minimum.side' , 2.0) + , ('CONT_DIF_N.nImplant.enclosure' , 4.0) + , ('CONT_DIF_N.active.enclosure' , 2.0) + , ('CONT_DIF_N.metal1.enclosure' , 1.0) + + , ('CONT_DIF_P.minimum.side' , 2.0) + , ('CONT_DIF_P.pImplant.enclosure' , 4.0) + , ('CONT_DIF_P.active.enclosure' , 2.0) + , ('CONT_DIF_P.metal1.enclosure' , 1.0) + + , ('CONT_POLY.minimum.width' , 2.0) + , ('CONT_POLY.poly.enclosure' , 2.0) + , ('CONT_POLY.metal1.enclosure' , 1.0) + + # VIAs (i.e. Metal <--> Metal). + , ('VIA12.minimum.side' , 3.0) + , ('VIA12.metal1.enclosure' , 1.0) + , ('VIA12.metal2.enclosure' , 1.0) + , ('VIA23.minimum.side' , 3.0) + , ('VIA23.metal2.enclosure' , 1.0) + , ('VIA23.metal3.enclosure' , 1.0) + , ('VIA34.minimum.side' , 3.0) + , ('VIA34.metal3.enclosure' , 1.0) + , ('VIA34.metal4.enclosure' , 1.0) + , ('VIA45.minimum.side' , 3.0) + , ('VIA45.metal4.enclosure' , 1.0) + , ('VIA45.metal5.enclosure' , 1.0) + , ('VIA56.minimum.side' , 5.0) + , ('VIA56.metal5.enclosure' , 1.0) + , ('VIA56.metal6.enclosure' , 1.5) + #, ('VIA67.minimum.side' , 2.0) + #, ('VIA67.metal6.enclosure' , 3.0) + #, ('VIA67.metal7.enclosure' , 3.0) + #, ('VIA78.minimum.side' , 2.0) + #, ('VIA78.metal7.enclosure' , 3.0) + #, ('VIA78.metal8.enclosure' , 3.0) ) diff --git a/crlcore/etc/scmos_deep_018/technology.conf b/crlcore/etc/scmos_deep_018/technology.conf deleted file mode 100644 index 059d339b..00000000 --- a/crlcore/etc/scmos_deep_018/technology.conf +++ /dev/null @@ -1,169 +0,0 @@ -# -*- Mode:Python; explicit-buffer-name: "technology.conf" -*- - -import helpers - -# The informations here are extracted from the Alliance ".rds" file, -# and must be consistent with it. -# -# Provides standard settings for: -# - -# - -# - -# - - -execfile( helpers.sysConfDir+'/common/technology.conf' ) - - -# Format of : -# Each entry is a pair of (string, value). -# * string: a synthetic way to designate the symbolic layer on which -# it applies, an optional real layer in case where there is -# more than one, and the dimension name. -# * value : the rule (dimension) value expressed in lambda. - -symbolicRulesTable = \ - ( ('NWELL.nWell.extention.cap' , 4.0) - , ('PWELL.pWell.extention.cap' , 4.0) - - , ('NTIE.minimum.width' , 3.0) - , ('NTIE.nWell.extention.cap' , 3.0) - , ('NTIE.nWell.extention.width' , 2.0) - , ('NTIE.nImplant.extention.cap' , 2.5) - , ('NTIE.nImplant.extention.width' , 1.5) - , ('NTIE.active.extention.cap' , 0.5) - , ('NTIE.active.extention.width' , -0.5) - - , ('PTIE.minimum.width' , 3.0) - , ('PTIE.pWell.extention.cap' , 3.0) - , ('PTIE.pWell.extention.width' , 2.0) - , ('PTIE.pImplant.extention.cap' , 2.5) - , ('PTIE.pImplant.extention.width' , 1.5) - , ('PTIE.active.extention.cap' , 0.5) - , ('PTIE.active.extention.width' , -0.5) - - , ('NDIF.minimum.width' , 3.0) - , ('NDIF.nImplant.extention.cap' , 4.0) - , ('NDIF.nImplant.extention.width' , 2.0) - , ('NDIF.active.extention.cap' , 2.0) - , ('NDIF.active.extention.width' , 0.0) - - , ('PDIF.minimum.width' , 3.0) - , ('PDIF.pImplant.extention.cap' , 4.0) - , ('PDIF.pImplant.extention.width' , 2.0) - , ('PDIF.active.extention.cap' , 2.0) - , ('PDIF.active.extention.width' , 0.0) - - , ('GATE.minimum.width' , 2.0) - , ('GATE.poly.extention.cap' , 2.5) - - , ('NTRANS.minimum.width' , 2.0) - , ('NTRANS.nImplant.extention.cap' , 2.0) - , ('NTRANS.nImplant.extention.width' , 7.0) - , ('NTRANS.active.extention.cap' , 0.0) - , ('NTRANS.active.extention.width' , 3.0) - , ('NTRANS.poly.extention.cap' , 3.0) - , ('NTRANS.poly.extention.width' , 0.0) - - , ('PTRANS.minimum.width' , 2.0) - , ('PTRANS.nWell.extention.cap' , 2.5) - , ('PTRANS.nWell.extention.width' , 7.5) - , ('PTRANS.pImplant.extention.cap' , 2.0) - , ('PTRANS.pImplant.extention.width' , 7.0) - , ('PTRANS.active.extention.cap' , 0.0) - , ('PTRANS.active.extention.width' , 3.0) - , ('PTRANS.poly.extention.cap' , 3.0) - , ('PTRANS.poly.extention.width' , 0.0) - - , ('POLY.minimum.width' , 2.0) - , ('POLY.poly.extention.cap' , 1.0) - , ('POLY2.minimum.width' , 2.0) - , ('POLY2.poly2.extention.cap' , 2.0) - - # Routing Layers. - , ('METAL1.minimum.width' , 2.0) - , ('METAL1.metal1.extention.cap' , 2.0) - , ('METAL1.metal1.extention.width' , 0.5) - , ('METAL2.minimum.width' , 3.0) - , ('METAL2.metal2.extention.cap' , 1.5) - , ('METAL3.minimum.width' , 3.0) - , ('METAL3.metal3.extention.cap' , 1.5) - , ('METAL4.minimum.width' , 3.0) - , ('METAL4.metal4.extention.cap' , 1.5) - , ('METAL5.minimum.width' , 3.0) - , ('METAL5.metal5.extention.cap' , 1.5) - , ('METAL6.minimum.width' , 5.0) - , ('METAL6.metal6.extention.cap' , 2.5) - #, ('METAL7.minimum.width' , 2.0) - #, ('METAL7.metal7.extention.cap' , 2.5) - #, ('METAL8.minimum.width' , 2.0) - #, ('METAL8.metal8.extention.cap' , 2.5) - - # Blockages. - , ('BLOCKAGE1.minimum.width' , 3.0) - , ('BLOCKAGE1.blockage1.extention.cap' , 2.0) - , ('BLOCKAGE1.blockage1.extention.width', 0.5) - , ('BLOCKAGE2.minimum.width' , 3.0) - , ('BLOCKAGE2.blockage2.extention.cap' , 2.0) - , ('BLOCKAGE3.minimum.width' , 3.0) - , ('BLOCKAGE3.blockage3.extention.cap' , 2.0) - , ('BLOCKAGE4.minimum.width' , 3.0) - , ('BLOCKAGE4.blockage4.extention.cap' , 2.0) - , ('BLOCKAGE5.minimum.width' , 3.0) - , ('BLOCKAGE5.blockage5.extention.cap' , 2.0) - , ('BLOCKAGE6.minimum.width' , 4.0) - , ('BLOCKAGE6.blockage6.extention.cap' , 2.5) - #, ('BLOCKAGE7.minimum.width' , 2.0) - #, ('BLOCKAGE7.blockage6.extention.cap' , 4.0) - #, ('BLOCKAGE8.minimum.width' , 2.0) - #, ('BLOCKAGE8.blockage6.extention.cap' , 4.0) - - # Contacts (i.e. Active <--> Metal). - , ('CONT_BODY_N.minimum.side' , 2.0) - , ('CONT_BODY_N.nWell.enclosure' , 4.0) - , ('CONT_BODY_N.nImplant.enclosure' , 3.5) - , ('CONT_BODY_N.active.enclosure' , 1.5) - , ('CONT_BODY_N.metal1.enclosure' , 1.0) - - , ('CONT_BODY_P.minimum.side' , 2.0) - , ('CONT_BODY_P.pWell.enclosure' , 4.0) - , ('CONT_BODY_P.pImplant.enclosure' , 3.5) - , ('CONT_BODY_P.active.enclosure' , 1.5) - , ('CONT_BODY_P.metal1.enclosure' , 1.0) - - , ('CONT_DIF_N.minimum.side' , 2.0) - , ('CONT_DIF_N.nImplant.enclosure' , 4.0) - , ('CONT_DIF_N.active.enclosure' , 2.0) - , ('CONT_DIF_N.metal1.enclosure' , 1.0) - - , ('CONT_DIF_P.minimum.side' , 2.0) - , ('CONT_DIF_P.pImplant.enclosure' , 4.0) - , ('CONT_DIF_P.active.enclosure' , 2.0) - , ('CONT_DIF_P.metal1.enclosure' , 1.0) - - , ('CONT_POLY.minimum.width' , 2.0) - , ('CONT_POLY.poly.enclosure' , 2.0) - , ('CONT_POLY.metal1.enclosure' , 1.0) - - # VIAs (i.e. Metal <--> Metal). - , ('VIA12.minimum.side' , 3.0) - , ('VIA12.metal1.enclosure' , 1.0) - , ('VIA12.metal2.enclosure' , 1.0) - , ('VIA23.minimum.side' , 3.0) - , ('VIA23.metal2.enclosure' , 1.0) - , ('VIA23.metal3.enclosure' , 1.0) - , ('VIA34.minimum.side' , 3.0) - , ('VIA34.metal3.enclosure' , 1.0) - , ('VIA34.metal4.enclosure' , 1.0) - , ('VIA45.minimum.side' , 3.0) - , ('VIA45.metal4.enclosure' , 1.0) - , ('VIA45.metal5.enclosure' , 1.0) - , ('VIA56.minimum.side' , 5.0) - , ('VIA56.metal5.enclosure' , 1.0) - , ('VIA56.metal6.enclosure' , 1.5) - #, ('VIA67.minimum.side' , 2.0) - #, ('VIA67.metal6.enclosure' , 3.0) - #, ('VIA67.metal7.enclosure' , 3.0) - #, ('VIA78.minimum.side' , 2.0) - #, ('VIA78.metal7.enclosure' , 3.0) - #, ('VIA78.metal8.enclosure' , 3.0) - ) diff --git a/crlcore/etc/cmos/alliance.conf b/crlcore/etc/symbolic/cmos/alliance.conf similarity index 100% rename from crlcore/etc/cmos/alliance.conf rename to crlcore/etc/symbolic/cmos/alliance.conf diff --git a/crlcore/etc/cmos/display.conf b/crlcore/etc/symbolic/cmos/display.conf similarity index 100% rename from crlcore/etc/cmos/display.conf rename to crlcore/etc/symbolic/cmos/display.conf diff --git a/crlcore/etc/ispd05/etesian.conf b/crlcore/etc/symbolic/cmos/etesian.conf similarity index 100% rename from crlcore/etc/ispd05/etesian.conf rename to crlcore/etc/symbolic/cmos/etesian.conf diff --git a/crlcore/etc/cmos/hMetis.conf b/crlcore/etc/symbolic/cmos/hMetis.conf similarity index 100% rename from crlcore/etc/cmos/hMetis.conf rename to crlcore/etc/symbolic/cmos/hMetis.conf diff --git a/crlcore/etc/cmos/kite.conf b/crlcore/etc/symbolic/cmos/kite.conf similarity index 100% rename from crlcore/etc/cmos/kite.conf rename to crlcore/etc/symbolic/cmos/kite.conf diff --git a/crlcore/etc/cmos/mauka.conf b/crlcore/etc/symbolic/cmos/mauka.conf similarity index 100% rename from crlcore/etc/cmos/mauka.conf rename to crlcore/etc/symbolic/cmos/mauka.conf diff --git a/crlcore/etc/cmos/misc.conf b/crlcore/etc/symbolic/cmos/misc.conf similarity index 100% rename from crlcore/etc/cmos/misc.conf rename to crlcore/etc/symbolic/cmos/misc.conf diff --git a/crlcore/etc/cmos/nimbus.conf b/crlcore/etc/symbolic/cmos/nimbus.conf similarity index 100% rename from crlcore/etc/cmos/nimbus.conf rename to crlcore/etc/symbolic/cmos/nimbus.conf diff --git a/crlcore/etc/cmos/patterns.conf b/crlcore/etc/symbolic/cmos/patterns.conf similarity index 100% rename from crlcore/etc/cmos/patterns.conf rename to crlcore/etc/symbolic/cmos/patterns.conf diff --git a/crlcore/etc/cmos/plugins.conf b/crlcore/etc/symbolic/cmos/plugins.conf similarity index 100% rename from crlcore/etc/cmos/plugins.conf rename to crlcore/etc/symbolic/cmos/plugins.conf diff --git a/crlcore/etc/cmos/stratus1.conf b/crlcore/etc/symbolic/cmos/stratus1.conf similarity index 100% rename from crlcore/etc/cmos/stratus1.conf rename to crlcore/etc/symbolic/cmos/stratus1.conf diff --git a/crlcore/etc/cmos/technology.conf b/crlcore/etc/symbolic/cmos/technology.conf similarity index 100% rename from crlcore/etc/cmos/technology.conf rename to crlcore/etc/symbolic/cmos/technology.conf diff --git a/crlcore/etc/ispd05/alliance.conf b/crlcore/etc/symbolic/ispd05/alliance.conf similarity index 100% rename from crlcore/etc/ispd05/alliance.conf rename to crlcore/etc/symbolic/ispd05/alliance.conf diff --git a/crlcore/etc/ispd05/display.conf b/crlcore/etc/symbolic/ispd05/display.conf similarity index 100% rename from crlcore/etc/ispd05/display.conf rename to crlcore/etc/symbolic/ispd05/display.conf diff --git a/crlcore/etc/scmos_deep_018/etesian.conf b/crlcore/etc/symbolic/ispd05/etesian.conf similarity index 100% rename from crlcore/etc/scmos_deep_018/etesian.conf rename to crlcore/etc/symbolic/ispd05/etesian.conf diff --git a/crlcore/etc/ispd05/hMetis.conf b/crlcore/etc/symbolic/ispd05/hMetis.conf similarity index 100% rename from crlcore/etc/ispd05/hMetis.conf rename to crlcore/etc/symbolic/ispd05/hMetis.conf diff --git a/crlcore/etc/ispd05/kite.conf b/crlcore/etc/symbolic/ispd05/kite.conf similarity index 100% rename from crlcore/etc/ispd05/kite.conf rename to crlcore/etc/symbolic/ispd05/kite.conf diff --git a/crlcore/etc/ispd05/mauka.conf b/crlcore/etc/symbolic/ispd05/mauka.conf similarity index 100% rename from crlcore/etc/ispd05/mauka.conf rename to crlcore/etc/symbolic/ispd05/mauka.conf diff --git a/crlcore/etc/ispd05/misc.conf b/crlcore/etc/symbolic/ispd05/misc.conf similarity index 100% rename from crlcore/etc/ispd05/misc.conf rename to crlcore/etc/symbolic/ispd05/misc.conf diff --git a/crlcore/etc/ispd05/nimbus.conf b/crlcore/etc/symbolic/ispd05/nimbus.conf similarity index 100% rename from crlcore/etc/ispd05/nimbus.conf rename to crlcore/etc/symbolic/ispd05/nimbus.conf diff --git a/crlcore/etc/ispd05/patterns.conf b/crlcore/etc/symbolic/ispd05/patterns.conf similarity index 100% rename from crlcore/etc/ispd05/patterns.conf rename to crlcore/etc/symbolic/ispd05/patterns.conf diff --git a/crlcore/etc/ispd05/plugins.conf b/crlcore/etc/symbolic/ispd05/plugins.conf similarity index 100% rename from crlcore/etc/ispd05/plugins.conf rename to crlcore/etc/symbolic/ispd05/plugins.conf diff --git a/crlcore/etc/ispd05/stratus1.conf b/crlcore/etc/symbolic/ispd05/stratus1.conf similarity index 100% rename from crlcore/etc/ispd05/stratus1.conf rename to crlcore/etc/symbolic/ispd05/stratus1.conf diff --git a/crlcore/etc/ispd05/technology.conf b/crlcore/etc/symbolic/ispd05/technology.conf similarity index 100% rename from crlcore/etc/ispd05/technology.conf rename to crlcore/etc/symbolic/ispd05/technology.conf diff --git a/crlcore/etc/vsc200/alliance.conf b/crlcore/etc/symbolic/vsc200/alliance.conf similarity index 100% rename from crlcore/etc/vsc200/alliance.conf rename to crlcore/etc/symbolic/vsc200/alliance.conf diff --git a/crlcore/etc/vsc200/display.conf b/crlcore/etc/symbolic/vsc200/display.conf similarity index 100% rename from crlcore/etc/vsc200/display.conf rename to crlcore/etc/symbolic/vsc200/display.conf diff --git a/crlcore/etc/vsc200/etesian.conf b/crlcore/etc/symbolic/vsc200/etesian.conf similarity index 100% rename from crlcore/etc/vsc200/etesian.conf rename to crlcore/etc/symbolic/vsc200/etesian.conf diff --git a/crlcore/etc/vsc200/hMetis.conf b/crlcore/etc/symbolic/vsc200/hMetis.conf similarity index 100% rename from crlcore/etc/vsc200/hMetis.conf rename to crlcore/etc/symbolic/vsc200/hMetis.conf diff --git a/crlcore/etc/vsc200/kite.conf b/crlcore/etc/symbolic/vsc200/kite.conf similarity index 100% rename from crlcore/etc/vsc200/kite.conf rename to crlcore/etc/symbolic/vsc200/kite.conf diff --git a/crlcore/etc/vsc200/mauka.conf b/crlcore/etc/symbolic/vsc200/mauka.conf similarity index 100% rename from crlcore/etc/vsc200/mauka.conf rename to crlcore/etc/symbolic/vsc200/mauka.conf diff --git a/crlcore/etc/vsc200/misc.conf b/crlcore/etc/symbolic/vsc200/misc.conf similarity index 100% rename from crlcore/etc/vsc200/misc.conf rename to crlcore/etc/symbolic/vsc200/misc.conf diff --git a/crlcore/etc/vsc200/nimbus.conf b/crlcore/etc/symbolic/vsc200/nimbus.conf similarity index 100% rename from crlcore/etc/vsc200/nimbus.conf rename to crlcore/etc/symbolic/vsc200/nimbus.conf diff --git a/crlcore/etc/vsc200/patterns.conf b/crlcore/etc/symbolic/vsc200/patterns.conf similarity index 100% rename from crlcore/etc/vsc200/patterns.conf rename to crlcore/etc/symbolic/vsc200/patterns.conf diff --git a/crlcore/etc/vsc200/plugins.conf b/crlcore/etc/symbolic/vsc200/plugins.conf similarity index 100% rename from crlcore/etc/vsc200/plugins.conf rename to crlcore/etc/symbolic/vsc200/plugins.conf diff --git a/crlcore/etc/vsc200/stratus1.conf b/crlcore/etc/symbolic/vsc200/stratus1.conf similarity index 100% rename from crlcore/etc/vsc200/stratus1.conf rename to crlcore/etc/symbolic/vsc200/stratus1.conf diff --git a/crlcore/etc/vsc200/technology.conf b/crlcore/etc/symbolic/vsc200/technology.conf similarity index 100% rename from crlcore/etc/vsc200/technology.conf rename to crlcore/etc/symbolic/vsc200/technology.conf diff --git a/hurricane/src/hurricane/DataBase.cpp b/hurricane/src/hurricane/DataBase.cpp index cc070d68..e417af5d 100644 --- a/hurricane/src/hurricane/DataBase.cpp +++ b/hurricane/src/hurricane/DataBase.cpp @@ -253,6 +253,26 @@ Cell* DataBase::getCell(string rpath, unsigned int flags) } +Cell* DataBase::getCell(string name) +// ********************************* +{ + vector libStack; + libStack.push_back( getRootLibrary() ); + + while ( not libStack.empty() ) { + Library* library = libStack.back(); + libStack.pop_back(); + + Cell* cell = library->getCell( name ); + if (cell) return cell; + + for ( Library* child : library->getLibraries() ) + libStack.push_back( child ); + } + + return NULL; +} + void DataBase::_toJson(JsonWriter* w) const // **************************************** { diff --git a/hurricane/src/hurricane/Technology.cpp b/hurricane/src/hurricane/Technology.cpp index 1f7aa05a..6627fc1d 100644 --- a/hurricane/src/hurricane/Technology.cpp +++ b/hurricane/src/hurricane/Technology.cpp @@ -290,9 +290,11 @@ ViaLayers Technology::getViaLayers() const Layer* Technology::getNthMetal ( int nth ) const - { - return getLayer ( _metalMask.nthbit(nth) ); - } + { return getLayer ( _metalMask.nthbit(nth) ); } + + + Layer* Technology::getNthCut ( int nth ) const + { return getLayer ( _cutMask.nthbit(nth) ); } void Technology::_onDbuChange ( float scale ) diff --git a/hurricane/src/hurricane/hurricane/DataBase.h b/hurricane/src/hurricane/hurricane/DataBase.h index bbdf9337..ef170e9e 100644 --- a/hurricane/src/hurricane/hurricane/DataBase.h +++ b/hurricane/src/hurricane/hurricane/DataBase.h @@ -86,6 +86,7 @@ class DataBase : public DBo { public: Library* getRootLibrary() const {return _rootLibrary;}; public: Library* getLibrary(string,unsigned int flags); public: Cell* getCell(string, unsigned int flags); + public: Cell* getCell(string); public: static DataBase* getDB(); }; diff --git a/hurricane/src/hurricane/hurricane/Mask.h b/hurricane/src/hurricane/hurricane/Mask.h index 1401d6a3..5cb37938 100644 --- a/hurricane/src/hurricane/hurricane/Mask.h +++ b/hurricane/src/hurricane/hurricane/Mask.h @@ -109,10 +109,11 @@ namespace Hurricane { template inline Mask Mask::nthbit ( unsigned int nth ) const { + ++nth; IntType select = 1; for ( ; select ; select=select<<1 ) { - if ( _mask & select ) nth--; - if ( !nth ) break; + if (_mask & select) nth--; + if (not nth) break; } return select; } diff --git a/hurricane/src/hurricane/hurricane/Technology.h b/hurricane/src/hurricane/hurricane/Technology.h index 53313504..618a08c8 100644 --- a/hurricane/src/hurricane/hurricane/Technology.h +++ b/hurricane/src/hurricane/hurricane/Technology.h @@ -97,6 +97,7 @@ namespace Hurricane { Layer* getCutBelow ( const Layer*, bool useWorking=true ) const; Layer* getViaBetween ( const Layer*, const Layer* ) const; Layer* getNthMetal ( int ) const; + Layer* getNthCut ( int ) const; // Updators. void setName ( const Name& ); bool setWorkingLayer ( const Name& ); diff --git a/hurricane/src/isobar/PyDataBase.cpp b/hurricane/src/isobar/PyDataBase.cpp index 4fdad060..71d89bf8 100644 --- a/hurricane/src/isobar/PyDataBase.cpp +++ b/hurricane/src/isobar/PyDataBase.cpp @@ -17,6 +17,7 @@ #include "hurricane/isobar/PyDataBase.h" #include "hurricane/isobar/PyTechnology.h" #include "hurricane/isobar/PyLibrary.h" +#include "hurricane/isobar/PyCell.h" namespace Isobar { @@ -96,6 +97,26 @@ extern "C" { return PyLibrary_Link(library); } + + static PyObject* PyDataBase_getCell ( PyDataBase* self, PyObject* args ) { + cdebug_log(20,0) << "PyDataBase_getCell ()" << endl; + + Cell* cell = NULL; + + HTRY + METHOD_HEAD("DataBase.getCell()") + char* name = NULL; + if (PyArg_ParseTuple(args,"s:DataBase.getCell", &name)) { + cell = db->getCell( name ); + } else { + PyErr_SetString ( ConstructorError, "invalid number of parameters for DataBase.getCell." ); + return NULL; + } + HCATCH + + return PyCell_Link( cell ); + } + // Standart Accessors (Attributes). // Standart Destroy (Attribute). @@ -110,8 +131,9 @@ extern "C" { , "Create the DataBase (only the first call created it)" } , { "getDB" , (PyCFunction)PyDataBase_getDB , METH_NOARGS|METH_STATIC , "Get the DataBase" } - , { "getTechnology" , (PyCFunction)PyDataBase_getTechnology , METH_NOARGS, "Return the Technology" } - , { "getRootLibrary", (PyCFunction)PyDataBase_getRootLibrary, METH_NOARGS, "Return the root library" } + , { "getTechnology" , (PyCFunction)PyDataBase_getTechnology , METH_NOARGS , "Return the Technology" } + , { "getRootLibrary", (PyCFunction)PyDataBase_getRootLibrary, METH_NOARGS , "Return the root library" } + , { "getCell" , (PyCFunction)PyDataBase_getCell , METH_VARARGS, "Return a Cell" } , { "destroy" , (PyCFunction)PyDataBase_destroy , METH_NOARGS , "Destroy associated hurricane object The python object remains." } , {NULL, NULL, 0, NULL} /* sentinel */ diff --git a/hurricane/src/isobar/PyDbU.cpp b/hurricane/src/isobar/PyDbU.cpp index f31799ba..eef41632 100644 --- a/hurricane/src/isobar/PyDbU.cpp +++ b/hurricane/src/isobar/PyDbU.cpp @@ -224,15 +224,15 @@ extern "C" { extern PyObject* PyDbU_setPhysicalsPerGrid ( PyObject* , PyObject* args ) { - double gridsPerLambda = 0.0; - unsigned int power = 0; + double physicalsPerGrid = 0.0; + unsigned int power = 0; HTRY - if (not PyArg_ParseTuple(args,"di:DbU.setPhysicalsPerGrid", &gridsPerLambda, &power) ) { + if (not PyArg_ParseTuple(args,"di:DbU.setPhysicalsPerGrid", &physicalsPerGrid, &power) ) { PyErr_SetString ( ConstructorError, "DbU.setPhysicalsPerGrid(): Invalid/bad type parameters ." ); return NULL; } - DbU::setPhysicalsPerGrid(gridsPerLambda,(DbU::UnitPower)power); + DbU::setPhysicalsPerGrid(physicalsPerGrid,(DbU::UnitPower)power); HCATCH Py_RETURN_NONE; diff --git a/hurricane/src/viewer/CellWidget.cpp b/hurricane/src/viewer/CellWidget.cpp index ce5038ea..2ab28095 100644 --- a/hurricane/src/viewer/CellWidget.cpp +++ b/hurricane/src/viewer/CellWidget.cpp @@ -1046,7 +1046,7 @@ namespace Hurricane { // Class : "Hurricane::CellWidget". - int CellWidget::_initialSide = 250; + int CellWidget::_initialSide = 500; CellWidget::CellWidget ( QWidget* parent ) @@ -1088,8 +1088,10 @@ namespace Hurricane { QFont font = Graphics::getNormalFont(); _textFontHeight = QFontMetrics(font).ascent(); - if (Graphics::isHighDpi()) resize( Graphics::toHighDpi(_initialSide) - , Graphics::toHighDpi(_initialSide) ); + if (Graphics::isHighDpi()) { + resize( Graphics::toHighDpi(_initialSide) + , Graphics::toHighDpi(_initialSide) ); + } }