diff --git a/bootstrap/coriolisEnv.py b/bootstrap/coriolisEnv.py index 7a9f6c5e..4c0f2d40 100755 --- a/bootstrap/coriolisEnv.py +++ b/bootstrap/coriolisEnv.py @@ -177,6 +177,10 @@ if __name__ == "__main__": coriolisTop = "/usr" sysconfDir = scriptDir shellMessage = "Using system-wide Coriolis 2 (/usr)" + elif scriptDir.startswith("/etc/coriolis2"): + coriolisTop = "/opt/rh/devtoolset-2/root/usr" + sysconfDir = scriptDir + shellMessage = "Using system-wide devtoolset-2 Coriolis 2 (/opt/rh/devtoolset-2/root/usr)" elif scriptDir.startswith("/users/outil/coriolis/coriolis-2.x/") \ or scriptDir.startswith("/soc/coriolis2/"): coriolisTop = "/soc/coriolis2" diff --git a/coloquinte/src/optimization_subproblems.cxx b/coloquinte/src/optimization_subproblems.cxx index 76417f67..92a26f68 100644 --- a/coloquinte/src/optimization_subproblems.cxx +++ b/coloquinte/src/optimization_subproblems.cxx @@ -133,7 +133,7 @@ std::vector transport_1D(std::vector sources, std::vector< namespace{ // Anonymous namespace to hide the transportation structures class current_allocation{ - static const index_t null_ind = std::numeric_limits::max(); + static const index_t null_ind; // Internal data structures @@ -216,6 +216,8 @@ class current_allocation{ index_t get_iterations_cnt() const { return dijkstra_cnt; } }; +const index_t current_allocation::null_ind = std::numeric_limits::max(); + void current_allocation::update_edge(index_t r1, index_t r2){ while(not best_interregions_costs[r1][r2].empty() and sr_allocations[r1][best_interregions_costs[r1][r2].top().source] == 0){ best_interregions_costs[r1][r2].pop(); diff --git a/crlcore/etc/c35b4/technology.conf b/crlcore/etc/c35b4/technology.conf index 16833827..785291a9 100644 --- a/crlcore/etc/c35b4/technology.conf +++ b/crlcore/etc/c35b4/technology.conf @@ -2,13 +2,16 @@ # # AMS 0.35 microns. +from Hurricane import DbU + + technoConfig = { 'name' : 'c35b4' , 'gridValue' : 0.025 , 'gridUnit' : DbU.UnitPowerMicro , 'gridsPerLambda': 24 } -realLayersTable = \ +gdsLayersTable = \ ( ("nWell" , "NTUB" , 5) , ("nImplant", "NPLUS" , 23) , ("pImplant", "PPLUS" , 24) diff --git a/crlcore/etc/cmos/alliance.conf b/crlcore/etc/cmos/alliance.conf index ae13ea35..05c99819 100644 --- a/crlcore/etc/cmos/alliance.conf +++ b/crlcore/etc/cmos/alliance.conf @@ -9,12 +9,7 @@ cellsTop = allianceTop+'/cells/' allianceConfig = \ - ( ( 'SYMB_TECHNO_NAME' , helpers.symbolicTechno ) - , ( 'REAL_TECHNO_NAME' , helpers.realTechno ) - , ( 'SYMBOLIC_TECHNOLOGY', helpers.symbolicDir+'/technology.conf' ) - , ( 'REAL_TECHNOLOGY' , helpers.realDir +'/technology.conf' ) - , ( 'DISPLAY' , helpers.sysConfDir +'/display.xml' ) - , ( 'CATALOG' , 'CATAL') + ( ( 'CATALOG' , 'CATAL') , ( 'WORKING_LIBRARY' , '.') , ( 'SYSTEM_LIBRARY' , ( (cellsTop+'sxlib' , AddMode.Append) , (cellsTop+'dp_sxlib', AddMode.Append) @@ -24,7 +19,6 @@ allianceConfig = \ , (cellsTop+'rf2lib' , AddMode.Append) , (cellsTop+'pxlib' , AddMode.Append) , (cellsTop+'padlib' , AddMode.Append) ) ) - , ( 'SCALE_X' , 100) , ( 'IN_LO' , 'vst') , ( 'IN_PH' , 'ap') , ( 'OUT_LO' , 'vst') @@ -35,34 +29,9 @@ allianceConfig = \ , ( 'BLOCKAGE' , '^blockage[Nn]et*') , ( 'PAD' , '.*_px$') # The following are only read by the Alliance tool wrappers. + , ( 'SCALE_X' , 100) , ( 'ALLIANCE_TOP' , allianceTop) , ( 'MBK_TARGET_LIB' , cellsTop+'sxlib') , ( 'RDS_TECHNO_NAME' , allianceTop+'/etc/cmos.rds') , ( 'GRAAL_TECHNO_NAME' , allianceTop+'/etc/graal.rds') ) - - -# Format of routingGaugesTable (dictionary): -# A list of entry of the form: -# ( METAL_NAME, (Direction, Type, depth, density, offset, pitch, wire_width, via_width) ) - -routingGaugesTable = {} - -routingGaugesTable['sxlib'] = \ - ( ( 'METAL1', ( Gauge.Vertical , Gauge.PinOnly, 0, 0.0, 0, 5, 2, 1 ) ) - , ( 'METAL2', ( Gauge.Horizontal, Gauge.Default, 1, 7.0, 0, 5, 2, 1 ) ) - , ( 'METAL3', ( Gauge.Vertical , Gauge.Default, 2, 0.0, 0, 5, 2, 1 ) ) - , ( 'METAL4', ( Gauge.Horizontal, Gauge.Default, 3, 0.0, 0, 5, 2, 1 ) ) - , ( 'METAL5', ( Gauge.Vertical , Gauge.Default, 4, 0.0, 0, 5, 2, 1 ) ) - #, ( 'METAL6', ( Gauge.Horizontal, Gauge.Default, 5, 0.0, 0, 5, 2, 1 ) ) - #, ( 'METAL7', ( Gauge.Vertical , Gauge.Default, 6, 0.0, 0, 5, 2, 1 ) ) - ) - - -# Format of cellGaugesTable (dictionary): -# A list of entry of the form: -# ( METAL_PIN, xy_common_pitch, slice_height, slice_step ) - -cellGaugesTable = {} -cellGaugesTable['sxlib'] = ('metal2', 5.0, 50.0, 5.0) - diff --git a/crlcore/etc/cmos/kite.conf b/crlcore/etc/cmos/kite.conf index 6deac6e4..62866f63 100644 --- a/crlcore/etc/cmos/kite.conf +++ b/crlcore/etc/cmos/kite.conf @@ -21,3 +21,28 @@ parametersTable = \ , ("kite.globalRipupLimit" ,TypeInt ,5 , { 'min':1 } ) , ("kite.longGlobalRipupLimit" ,TypeInt ,5 , { 'min':1 } ) ) + + +# Format of routingGaugesTable (dictionary): +# A list of entry of the form: +# ( METAL_NAME, (Direction, Type, depth, density, offset, pitch, wire_width, via_width) ) + +routingGaugesTable = {} + +routingGaugesTable['sxlib'] = \ + ( ( 'METAL1', ( Gauge.Vertical , Gauge.PinOnly, 0, 0.0, 0, 5, 2, 1 ) ) + , ( 'METAL2', ( Gauge.Horizontal, Gauge.Default, 1, 7.0, 0, 5, 2, 1 ) ) + , ( 'METAL3', ( Gauge.Vertical , Gauge.Default, 2, 0.0, 0, 5, 2, 1 ) ) + , ( 'METAL4', ( Gauge.Horizontal, Gauge.Default, 3, 0.0, 0, 5, 2, 1 ) ) + , ( 'METAL5', ( Gauge.Vertical , Gauge.Default, 4, 0.0, 0, 5, 2, 1 ) ) + #, ( 'METAL6', ( Gauge.Horizontal, Gauge.Default, 5, 0.0, 0, 5, 2, 1 ) ) + #, ( 'METAL7', ( Gauge.Vertical , Gauge.Default, 6, 0.0, 0, 5, 2, 1 ) ) + ) + + +# Format of cellGaugesTable (dictionary): +# A list of entry of the form: +# ( METAL_PIN, xy_common_pitch, slice_height, slice_step ) + +cellGaugesTable = {} +cellGaugesTable['sxlib'] = ('metal2', 5.0, 50.0, 5.0) diff --git a/crlcore/etc/cmos065/technology.conf b/crlcore/etc/cmos065/technology.conf index 308c8479..7d39a62e 100644 --- a/crlcore/etc/cmos065/technology.conf +++ b/crlcore/etc/cmos065/technology.conf @@ -1,12 +1,15 @@ # -*- Mode:Python; explicit-buffer-name: "technology.conf" -*- +from Hurricane import DbU + + technoConfig = { 'name' : 'cmos065' , 'gridValue' : 0.005 , 'gridUnit' : DbU.UnitPowerMicro , 'gridsPerLambda': 24 } -realLayersTable = \ +gdsLayersTable = \ ( ("nWell" , "NWELL" , 3) , ("nImplant", "NPLUS" , 26) , ("pImplant", "PPLUS" , 25) diff --git a/crlcore/etc/common/technology.conf b/crlcore/etc/common/technology.conf index 80cbe1e7..7814e731 100644 --- a/crlcore/etc/common/technology.conf +++ b/crlcore/etc/common/technology.conf @@ -2,6 +2,14 @@ # # Those settings are common to all the symbolic technologies. +from Hurricane import BasicLayer +from helpers.SymbolicTechnology import TypeRegular +from helpers.SymbolicTechnology import TypeDiffusion +from helpers.SymbolicTechnology import TypeTransistor +from helpers.SymbolicTechnology import TypeContact +from helpers.SymbolicTechnology import TypeVia + + viewerConfig = { 'precision':2, 'gridstep':1.0 } # The informations here are extracted from the Alliance ".rds" file, diff --git a/crlcore/etc/hcmos9gp/technology.conf b/crlcore/etc/hcmos9gp/technology.conf index e2dfd3af..0b147812 100644 --- a/crlcore/etc/hcmos9gp/technology.conf +++ b/crlcore/etc/hcmos9gp/technology.conf @@ -1,12 +1,15 @@ # -*- Mode:Python; explicit-buffer-name: "technology.conf" -*- +from Hurricane import DbU + + technoConfig = { 'name' : 'hcmos9' , 'gridValue' : 0.005 , 'gridUnit' : DbU.UnitPowerMicro , 'gridsPerLambda': 24 } -realLayersTable = \ +gdsLayersTable = \ ( ("nWell" , "NWELL" , 3) , ("nImplant", "NPLUS" , 26) , ("pImplant", "PPLUS" , 25) diff --git a/crlcore/etc/ispd05/alliance.conf b/crlcore/etc/ispd05/alliance.conf index da646820..cada55d8 100644 --- a/crlcore/etc/ispd05/alliance.conf +++ b/crlcore/etc/ispd05/alliance.conf @@ -9,12 +9,7 @@ cellsTop = allianceTop+'/cells/' allianceConfig = \ - ( ( 'SYMB_TECHNO_NAME' , helpers.symbolicTechno ) - , ( 'REAL_TECHNO_NAME' , helpers.realTechno ) - , ( 'SYMBOLIC_TECHNOLOGY', helpers.symbolicDir+'/technology.conf' ) - , ( 'REAL_TECHNOLOGY' , helpers.realDir +'/technology.conf' ) - , ( 'DISPLAY' , helpers.sysConfDir +'/display.xml' ) - , ( 'CATALOG' , 'CATAL') + ( ( 'CATALOG' , 'CATAL') , ( 'WORKING_LIBRARY' , '.') , ( 'SYSTEM_LIBRARY' , ( (cellsTop+'sxlib' , AddMode.Append) , (cellsTop+'dp_sxlib', AddMode.Append) @@ -40,29 +35,3 @@ allianceConfig = \ , ( 'RDS_TECHNO_NAME' , allianceTop+'/etc/cmos.rds') , ( 'GRAAL_TECHNO_NAME' , allianceTop+'/etc/graal.rds') ) - - -# Format of routingGaugesTable (dictionary): -# A list of entry of the form: -# ( METAL_NAME, (Direction, Type, depth, density, offset, pitch, wire_width, via_width) ) - -routingGaugesTable = {} - -routingGaugesTable['sxlib'] = \ - ( ( 'METAL1', ( Gauge.Vertical , Gauge.PinOnly, 0, 0.0, 0, 5, 2, 1 ) ) - , ( 'METAL2', ( Gauge.Horizontal, Gauge.Default, 1, 7.0, 0, 5, 2, 1 ) ) - , ( 'METAL3', ( Gauge.Vertical , Gauge.Default, 2, 0.0, 0, 5, 2, 1 ) ) - , ( 'METAL4', ( Gauge.Horizontal, Gauge.Default, 3, 0.0, 0, 5, 2, 1 ) ) - , ( 'METAL5', ( Gauge.Vertical , Gauge.Default, 4, 0.0, 0, 5, 2, 1 ) ) - #, ( 'METAL6', ( Gauge.Horizontal, Gauge.Default, 5, 0.0, 0, 5, 2, 1 ) ) - #, ( 'METAL7', ( Gauge.Vertical , Gauge.Default, 6, 0.0, 0, 5, 2, 1 ) ) - ) - - -# Format of cellGaugesTable (dictionary): -# A list of entry of the form: -# ( METAL_PIN, xy_common_pitch, slice_height, slice_step ) - -cellGaugesTable = {} -cellGaugesTable['ispd05'] = ('metal2', 5.0, 60.0, 5.0) - diff --git a/crlcore/etc/ispd05/kite.conf b/crlcore/etc/ispd05/kite.conf index 6deac6e4..e230a7de 100644 --- a/crlcore/etc/ispd05/kite.conf +++ b/crlcore/etc/ispd05/kite.conf @@ -21,3 +21,29 @@ parametersTable = \ , ("kite.globalRipupLimit" ,TypeInt ,5 , { 'min':1 } ) , ("kite.longGlobalRipupLimit" ,TypeInt ,5 , { 'min':1 } ) ) + + +# Format of routingGaugesTable (dictionary): +# A list of entry of the form: +# ( METAL_NAME, (Direction, Type, depth, density, offset, pitch, wire_width, via_width) ) + +routingGaugesTable = {} + +routingGaugesTable['sxlib'] = \ + ( ( 'METAL1', ( Gauge.Vertical , Gauge.PinOnly, 0, 0.0, 0, 5, 2, 1 ) ) + , ( 'METAL2', ( Gauge.Horizontal, Gauge.Default, 1, 7.0, 0, 5, 2, 1 ) ) + , ( 'METAL3', ( Gauge.Vertical , Gauge.Default, 2, 0.0, 0, 5, 2, 1 ) ) + , ( 'METAL4', ( Gauge.Horizontal, Gauge.Default, 3, 0.0, 0, 5, 2, 1 ) ) + , ( 'METAL5', ( Gauge.Vertical , Gauge.Default, 4, 0.0, 0, 5, 2, 1 ) ) + #, ( 'METAL6', ( Gauge.Horizontal, Gauge.Default, 5, 0.0, 0, 5, 2, 1 ) ) + #, ( 'METAL7', ( Gauge.Vertical , Gauge.Default, 6, 0.0, 0, 5, 2, 1 ) ) + ) + + +# Format of cellGaugesTable (dictionary): +# A list of entry of the form: +# ( METAL_PIN, xy_common_pitch, slice_height, slice_step ) + +cellGaugesTable = {} +cellGaugesTable['ispd05'] = ('metal2', 5.0, 60.0, 5.0) + diff --git a/crlcore/etc/scmos_deep_018/alliance.conf b/crlcore/etc/scmos_deep_018/alliance.conf index fe718d52..c8076079 100644 --- a/crlcore/etc/scmos_deep_018/alliance.conf +++ b/crlcore/etc/scmos_deep_018/alliance.conf @@ -9,12 +9,7 @@ cellsTop = allianceTop+'/cells' allianceConfig = \ - ( ( 'SYMB_TECHNO_NAME' , helpers.symbolicTechno ) - , ( 'REAL_TECHNO_NAME' , helpers.realTechno ) - , ( 'SYMBOLIC_TECHNOLOGY', helpers.symbolicDir+'/technology.conf' ) - , ( 'REAL_TECHNOLOGY' , helpers.realDir +'/technology.conf' ) - , ( 'DISPLAY' , helpers.sysConfDir +'/display.xml' ) - , ( 'CATALOG' , 'CATAL') + ( ( 'CATALOG' , 'CATAL') , ( 'WORKING_LIBRARY' , '.') , ( 'SYSTEM_LIBRARY' , ( (cellsTop+'/msxlib' , Environment.Append) , (cellsTop+'/mpxlib' , Environment.Append)) ) @@ -34,28 +29,3 @@ allianceConfig = \ , ( 'RDS_TECHNO_NAME' , allianceTop+'/etc/scn6m_deep_09.rds') , ( 'GRAAL_TECHNO_NAME' , allianceTop+'/etc/graal.rds') ) - - -# Format of routingGaugesTable (dictionary): -# A list of entry of the form: -# ( METAL_NAME, (Direction, Type, depth, density, offset, pitch, wire_width, via_width) ) - -routingGaugesTable = {} - -routingGaugesTable['msxlib'] = \ - ( ( 'METAL1' , ( Gauge.Vertical , Gauge.PinOnly, 0, 0.0, 0, 10, 2, 2 ) ) - , ( 'METAL2' , ( Gauge.Horizontal, Gauge.Default, 1, 0.0, 0, 10, 3, 2 ) ) - , ( 'METAL3' , ( Gauge.Vertical , Gauge.Default, 2, 0.0, 0, 10, 3, 2 ) ) - , ( 'METAL4' , ( Gauge.Horizontal, Gauge.Default, 3, 0.0, 0, 10, 3, 2 ) ) - , ( 'METAL5' , ( Gauge.Vertical , Gauge.Default, 4, 0.0, 0, 10, 3, 2 ) ) - #, ( 'METAL6' , ( Gauge.Horizontal, Gauge.Default, 5, 0.0, 0, 10, 5, 2 ) ) - ) - - -# Format of cellGaugesTable (dictionary): -# A list of entry of the form: -# ( METAL_PIN, xy_common_pitch, slice_height, slice_step ) - -cellGaugesTable = {} -cellGaugesTable['msxlib'] = ('metal2', 10, 100, 10) - diff --git a/crlcore/etc/scmos_deep_018/kite.conf b/crlcore/etc/scmos_deep_018/kite.conf index 751e6b53..bcf416b7 100644 --- a/crlcore/etc/scmos_deep_018/kite.conf +++ b/crlcore/etc/scmos_deep_018/kite.conf @@ -21,3 +21,28 @@ parametersTable = \ , ("kite.globalRipupLimit" ,TypeInt ,5 , { 'min':1 } ) , ("kite.longGlobalRipupLimit" ,TypeInt ,5 , { 'min':1 } ) ) + + +# Format of routingGaugesTable (dictionary): +# A list of entry of the form: +# ( METAL_NAME, (Direction, Type, depth, density, offset, pitch, wire_width, via_width) ) + +routingGaugesTable = {} + +routingGaugesTable['msxlib'] = \ + ( ( 'METAL1' , ( Gauge.Vertical , Gauge.PinOnly, 0, 0.0, 0, 10, 2, 2 ) ) + , ( 'METAL2' , ( Gauge.Horizontal, Gauge.Default, 1, 0.0, 0, 10, 3, 2 ) ) + , ( 'METAL3' , ( Gauge.Vertical , Gauge.Default, 2, 0.0, 0, 10, 3, 2 ) ) + , ( 'METAL4' , ( Gauge.Horizontal, Gauge.Default, 3, 0.0, 0, 10, 3, 2 ) ) + , ( 'METAL5' , ( Gauge.Vertical , Gauge.Default, 4, 0.0, 0, 10, 3, 2 ) ) + #, ( 'METAL6' , ( Gauge.Horizontal, Gauge.Default, 5, 0.0, 0, 10, 5, 2 ) ) + ) + + +# Format of cellGaugesTable (dictionary): +# A list of entry of the form: +# ( METAL_PIN, xy_common_pitch, slice_height, slice_step ) + +cellGaugesTable = {} +cellGaugesTable['msxlib'] = ('metal2', 10, 100, 10) + diff --git a/crlcore/etc/scn6m_deep_09/technology.conf b/crlcore/etc/scn6m_deep_09/technology.conf index 411920b1..7e178ed2 100644 --- a/crlcore/etc/scn6m_deep_09/technology.conf +++ b/crlcore/etc/scn6m_deep_09/technology.conf @@ -1,5 +1,8 @@ # -*- Mode:Python; explicit-buffer-name: "technology.conf" -*- +from Hurricane import DbU + + technoConfig = { 'name' : 'scn6m_deep' , 'gridValue' : 0.005 , 'gridUnit' : DbU.UnitPowerMicro @@ -8,7 +11,7 @@ technoConfig = { 'name' : 'scn6m_deep' # Format of an entry in the table: # (Symbolic_Name, CIF_Name, GDSII_Number) -realLayersTable = \ +gdsLayersTable = \ ( ("pWell" , "CWN" , 41) , ("nWell" , "CWP" , 42) , ("active" , "CAA" , 43) diff --git a/crlcore/etc/vsc200/alliance.conf b/crlcore/etc/vsc200/alliance.conf index 20115530..6842c7bf 100644 --- a/crlcore/etc/vsc200/alliance.conf +++ b/crlcore/etc/vsc200/alliance.conf @@ -8,12 +8,7 @@ cellsTop = '/usr/share/pharosc/alliance/cells/' allianceConfig = \ - ( ( 'SYMB_TECHNO_NAME' , helpers.symbolicTechno ) - , ( 'REAL_TECHNO_NAME' , helpers.realTechno ) - , ( 'SYMBOLIC_TECHNOLOGY', helpers.symbolicDir+'/technology.conf' ) - , ( 'REAL_TECHNOLOGY' , helpers.realDir +'/technology.conf' ) - , ( 'DISPLAY' , helpers.sysConfDir +'/display.xml' ) - , ( 'CATALOG' , 'CATAL') + ( ( 'CATALOG' , 'CATAL') , ( 'WORKING_LIBRARY' , '.') , ( 'SYSTEM_LIBRARY' , ( (cellsTop+'vsclib' , AddMode.Append) , ) ) @@ -27,29 +22,3 @@ allianceConfig = \ , ( 'CLOCK' , '^ck.*') , ( 'BLOCKAGE' , '^blockage[Nn]et*') ) - - -# Format of routingGaugesTable (dictionary): -# A list of entry of the form: -# ( METAL_NAME, (Direction, Type, depth, density, offset, pitch, wire_width, via_width) ) - -routingGaugesTable = {} - -routingGaugesTable['vsclib'] = \ - ( ( 'METAL1', ( Gauge.Vertical , Gauge.PinOnly, 0, 0.0, 4, 8, 3, 2 ) ) - , ( 'METAL2', ( Gauge.Horizontal, Gauge.Default, 1, 7.0, 0, 8, 4, 2 ) ) - , ( 'METAL3', ( Gauge.Vertical , Gauge.Default, 2, 0.0, 4, 8, 4, 2 ) ) - , ( 'METAL4', ( Gauge.Horizontal, Gauge.Default, 3, 0.0, 0, 8, 4, 2 ) ) - , ( 'METAL5', ( Gauge.Vertical , Gauge.Default, 4, 0.0, 4, 8, 4, 2 ) ) - #, ( 'METAL6', ( Gauge.Horizontal, Gauge.Default, 5, 0.0, 0, 8, 4, 2 ) ) - #, ( 'METAL7', ( Gauge.Vertical , Gauge.Default, 6, 0.0, 4, 8, 4, 2 ) ) - ) - - -# Format of cellGaugesTable (dictionary): -# A list of entry of the form: -# ( METAL_PIN, xy_common_pitch, slice_height, slice_step ) - -cellGaugesTable = {} -cellGaugesTable['vsclib'] = ('metal2', 8.0, 72.0, 8.0) - diff --git a/crlcore/etc/vsc200/kite.conf b/crlcore/etc/vsc200/kite.conf index cfb97161..e028661f 100644 --- a/crlcore/etc/vsc200/kite.conf +++ b/crlcore/etc/vsc200/kite.conf @@ -21,3 +21,29 @@ parametersTable = \ , ("kite.globalRipupLimit" ,TypeInt ,5 , { 'min':1 } ) , ("kite.longGlobalRipupLimit" ,TypeInt ,5 , { 'min':1 } ) ) + + +# Format of routingGaugesTable (dictionary): +# A list of entry of the form: +# ( METAL_NAME, (Direction, Type, depth, density, offset, pitch, wire_width, via_width) ) + +routingGaugesTable = {} + +routingGaugesTable['vsclib'] = \ + ( ( 'METAL1', ( Gauge.Vertical , Gauge.PinOnly, 0, 0.0, 4, 8, 3, 2 ) ) + , ( 'METAL2', ( Gauge.Horizontal, Gauge.Default, 1, 7.0, 0, 8, 4, 2 ) ) + , ( 'METAL3', ( Gauge.Vertical , Gauge.Default, 2, 0.0, 4, 8, 4, 2 ) ) + , ( 'METAL4', ( Gauge.Horizontal, Gauge.Default, 3, 0.0, 0, 8, 4, 2 ) ) + , ( 'METAL5', ( Gauge.Vertical , Gauge.Default, 4, 0.0, 4, 8, 4, 2 ) ) + #, ( 'METAL6', ( Gauge.Horizontal, Gauge.Default, 5, 0.0, 0, 8, 4, 2 ) ) + #, ( 'METAL7', ( Gauge.Vertical , Gauge.Default, 6, 0.0, 4, 8, 4, 2 ) ) + ) + + +# Format of cellGaugesTable (dictionary): +# A list of entry of the form: +# ( METAL_PIN, xy_common_pitch, slice_height, slice_step ) + +cellGaugesTable = {} +cellGaugesTable['vsclib'] = ('metal2', 8.0, 72.0, 8.0) + diff --git a/crlcore/python/coriolisInit.py b/crlcore/python/coriolisInit.py index e60895f3..31e947db 100644 --- a/crlcore/python/coriolisInit.py +++ b/crlcore/python/coriolisInit.py @@ -32,6 +32,8 @@ try: from helpers.Display import Group from helpers.Display import Drawing from helpers import Alliance + from helpers import SymbolicTechnology + from helpers import RealTechnology import helpers.Display except ImportError, e: serror = str(e) @@ -57,46 +59,58 @@ moduleGlobals = globals() SystemFile = 0x0001 AllianceHelper = 0x0002 -PatternsHelper = 0x0004 -DisplayHelper = 0x0008 -ConfigurationHelper = 0x0010 -HelpersMask = AllianceHelper|PatternsHelper|DisplayHelper|ConfigurationHelper +SymbolicHelper = 0x0004 +RealHelper = 0x0008 +PatternsHelper = 0x0010 +DisplayHelper = 0x0020 +ConfigurationHelper = 0x0040 +KiteHelper = 0x0080 +HelpersMask = AllianceHelper \ + | SymbolicHelper \ + | RealHelper \ + | PatternsHelper \ + | DisplayHelper \ + | ConfigurationHelper \ + | KiteHelper SystemMandatory = 0x0100 -DisabledByXml = 0x0200 def coriolisConfigure(): global symbolicTechno - confHelpers = ( ('allianceConfig' , Alliance.loadAllianceConfig , SystemMandatory|DisabledByXml|AllianceHelper) - , ('routingGaugesTable', Alliance.loadRoutingGaugesTable, SystemMandatory|DisabledByXml|AllianceHelper) - , ('cellGaugesTable' , Alliance.loadCellGaugesTable , SystemMandatory|DisabledByXml|AllianceHelper) - , ('patternsTable' , Patterns.loadPatterns , SystemMandatory|DisabledByXml|PatternsHelper) - , ('stylesTable' , Display.loadStyles , SystemMandatory|DisabledByXml|DisplayHelper) - , ('defaultStyle' , Display.loadDefaultStyle , SystemMandatory|DisabledByXml|DisplayHelper) - , ('parametersTable' , Configuration.loadParameters , DisabledByXml|ConfigurationHelper) - , ('layoutTable' , Configuration.loadLayout , DisabledByXml|ConfigurationHelper) + confHelpers = ( ('allianceConfig' , Alliance.loadAllianceConfig , SystemMandatory|AllianceHelper) + , ('routingGaugesTable' , Alliance.loadRoutingGaugesTable , SystemMandatory|KiteHelper) + , ('cellGaugesTable' , Alliance.loadCellGaugesTable , SystemMandatory|KiteHelper) + , ('viewerConfig' , SymbolicTechnology.loadViewerConfig , SystemMandatory|SymbolicHelper) + , ('realLayersTable' , SymbolicTechnology.loadRealLayers , SystemMandatory|SymbolicHelper) + , ('symbolicLayersTable', SymbolicTechnology.loadSymbolicLayers, SystemMandatory|SymbolicHelper) + , ('symbolicRulesTable' , SymbolicTechnology.loadSymbolicRules , SystemMandatory|SymbolicHelper) + , ('workingLayersTable' , SymbolicTechnology.loadWorkingLayers , SystemMandatory|SymbolicHelper) + , ('technoConfig' , RealTechnology.loadTechnoConfig , SystemMandatory|RealHelper) + , ('gdsLayersTable' , RealTechnology.loadGdsLayers , SystemMandatory|RealHelper) + , ('patternsTable' , Patterns.loadPatterns , SystemMandatory|PatternsHelper) + , ('stylesTable' , Display.loadStyles , SystemMandatory|DisplayHelper) + , ('defaultStyle' , Display.loadDefaultStyle , SystemMandatory|DisplayHelper) + , ('parametersTable' , Configuration.loadParameters , ConfigurationHelper) + , ('layoutTable' , Configuration.loadLayout , ConfigurationHelper) ) - helpers.xmlCompatMode = False - print ' o Running configuration hook: coriolisConfigure().' #print ' - sysConfDir: <%s>' % helpers.sysConfDir Cfg.Configuration.pushDefaultPriority ( Cfg.Parameter.Priority.ConfigurationFile ) - confFiles = [ (helpers.symbolicDir+'/alliance.conf', SystemFile|AllianceHelper) - , (helpers.symbolicDir+'/patterns.conf', SystemFile|PatternsHelper) - , (helpers.symbolicDir+'/display.conf' , SystemFile|DisplayHelper) - , (helpers.symbolicDir+'/misc.conf' , SystemFile|ConfigurationHelper) - #, (helpers.symbolicDir+'/hMetis.conf' , SystemFile|ConfigurationHelper) - #, (helpers.symbolicDir+'/nimbus.conf' , SystemFile|ConfigurationHelper) - #, (helpers.symbolicDir+'/mauka.conf' , SystemFile|ConfigurationHelper) - , (helpers.symbolicDir+'/etesian.conf' , SystemFile|ConfigurationHelper) - , (helpers.symbolicDir+'/kite.conf' , SystemFile|ConfigurationHelper) - , (helpers.symbolicDir+'/stratus1.conf', SystemFile|ConfigurationHelper) - , (helpers.symbolicDir+'/plugins.conf' , SystemFile|ConfigurationHelper) + confFiles = [ (helpers.symbolicDir+'/alliance.conf' , SystemFile|AllianceHelper) + , (helpers.symbolicDir+'/technology.conf', SystemFile|SymbolicHelper) + , (helpers.symbolicDir+'/patterns.conf' , SystemFile|PatternsHelper) + , (helpers.symbolicDir+'/display.conf' , SystemFile|DisplayHelper) + , (helpers.symbolicDir+'/misc.conf' , SystemFile|ConfigurationHelper) + , (helpers.symbolicDir+'/etesian.conf' , SystemFile|ConfigurationHelper) + , (helpers.symbolicDir+'/kite.conf' , SystemFile|ConfigurationHelper|KiteHelper) + , (helpers.symbolicDir+'/stratus1.conf' , SystemFile|ConfigurationHelper) + , (helpers.symbolicDir+'/plugins.conf' , SystemFile|ConfigurationHelper) + , (helpers.realDir +'/technology.conf', SystemFile|RealHelper) ] if os.getenv('HOME'): confFiles += [ (os.getenv('HOME')+'/.coriolis2/settings.py', 0) ] @@ -107,11 +121,6 @@ def coriolisConfigure(): confFiles += [ (os.getcwd()+'/.coriolis2/settings.py', 0) ] - - if helpers.xmlCompatMode: - Alliance.loadCompatXml() - Configuration.loadCompatXml() - for confFile, confFlags in confFiles: if confFile.endswith('settings.py'): Cfg.Configuration.pushDefaultPriority ( Cfg.Parameter.Priority.UserFile ) @@ -134,16 +143,15 @@ def coriolisConfigure(): print ' Trying to continue anyway...' for symbol, loader, loaderFlags in confHelpers: - if not (loaderFlags & DisabledByXml and helpers.xmlCompatMode): - if moduleGlobals.has_key(symbol): - loader( moduleGlobals[symbol], confFile ) - del moduleGlobals[symbol] - else: - if confFlags & loaderFlags & HelpersMask: - if confFlags & SystemFile and loaderFlags & SystemMandatory: - print '[ERROR] Mandatory symbol <%s> is missing in system configuration file:' % symbol - print ' <%s>' % confFile - print ' Trying to continue anyway...' + if moduleGlobals.has_key(symbol): + loader( moduleGlobals[symbol], confFile ) + del moduleGlobals[symbol] + else: + if confFlags & loaderFlags & HelpersMask: + if confFlags & SystemFile and loaderFlags & SystemMandatory: + print '[ERROR] Mandatory symbol <%s> is missing in system configuration file:' % symbol + print ' <%s>' % confFile + print ' Trying to continue anyway...' if confFile.endswith('settings.py'): Cfg.Configuration.popDefaultPriority () diff --git a/crlcore/python/helpers/Alliance.py b/crlcore/python/helpers/Alliance.py index 6e6d3d1a..bd17d397 100644 --- a/crlcore/python/helpers/Alliance.py +++ b/crlcore/python/helpers/Alliance.py @@ -97,10 +97,6 @@ def _loadAllianceConfig ( af, allianceConfig ): ]) key, value = entry - if key == 'SYMB_TECHNO_NAME': env.setSYMB_TECHNO_NAME(value) - if key == 'REAL_TECHNO_NAME': env.setREAL_TECHNO_NAME(value) - if key == 'SYMBOLIC_TECHNOLOGY': env.setSYMBOLIC_TECHNOLOGY(value) - if key == 'REAL_TECHNOLOGY': env.setREAL_TECHNOLOGY(value) if key == 'DISPLAY': env.setDISPLAY(value) if key == 'CATALOG': env.setCATALOG(value) if key == 'SCALE_X': env.setSCALE_X(value) @@ -215,34 +211,12 @@ def loadAllianceConfig ( table, fromFile ): global allianceFile allianceFile = fromFile - loadTechno = False af = AllianceFramework.get() db = DataBase.getDB() technology = db.getTechnology() if not technology: - loadTechno = True - technology = Hurricane.Technology.create(db,'Alliance') + technology = Hurricane.Technology.create(db,'Alliance') _loadAllianceConfig( af, table ) env = af.getEnvironment() - env.loadFromShell() - - if loadTechno: - helpers.SymbolicTechnology.load(xmlToConf(env.getSYMBOLIC_TECHNOLOGY())) - helpers.RealTechnology.load (xmlToConf(env.getREAL_TECHNOLOGY())) - return - - -def loadCompatXml (): - af = AllianceFramework.get() - db = DataBase.getDB() - technology = Hurricane.Technology.create(db,'Alliance') - - env = af.getEnvironment() - env.loadFromXml() - env.loadFromShell() - - af.loadSymbTechnoFromXml(env.getSYMBOLIC_TECHNOLOGY()) - af.loadRealTechnoFromXml(env.getREAL_TECHNOLOGY()) - af.loadGraphicsFromXml (env.getDISPLAY()) return diff --git a/crlcore/python/helpers/RealTechnology.py b/crlcore/python/helpers/RealTechnology.py index df0b780a..ba061a2d 100644 --- a/crlcore/python/helpers/RealTechnology.py +++ b/crlcore/python/helpers/RealTechnology.py @@ -15,7 +15,10 @@ from helpers import ErrorMessage realFile = '' -def loadRealLayers ( technology, basicLayersData ): +def loadGdsLayers ( realLayersTable, confFile ): + realFile = confFile + technology = DataBase.getDB().getTechnology() + entryNo = 0 for entry in realLayersTable: entryNo += 1 @@ -49,7 +52,10 @@ def loadRealLayers ( technology, basicLayersData ): return -def loadTechnoConfig ( technology, technoConfig ): +def loadTechnoConfig ( technoConfig, confFile ): + realFile = confFile + technology = DataBase.getDB().getTechnology() + gridValue = 1 gridUnit = DbU.UnitPowerMicro for key in [ 'gridUnit', 'gridValue', 'gridsPerLambda' ]: @@ -90,29 +96,3 @@ def loadTechnoConfig ( technology, technoConfig ): except Exception, e: ErrorMessage.wrapPrint(e) return - - -def load ( realPath ): - tables = ( ('technoConfig' , loadTechnoConfig ) - , ('realLayersTable', loadRealLayers ) - ) - - global realFile - realFile = os.path.basename(realPath) - - confGlobals = globals() - execfile(realPath,confGlobals) - - technology = DataBase.getDB().getTechnology() - - for symbol, loader in tables: - if not confGlobals.has_key(symbol): - print '[ERROR] The <%s> table is missing in the configuration file.' % symbol - print ' <%s>' % realFile - print ' Attempting to continue anyway.' - else: - loader( technology, confGlobals[ symbol ]) - - return - - diff --git a/crlcore/python/helpers/SymbolicTechnology.py b/crlcore/python/helpers/SymbolicTechnology.py index 27b3aede..d0b28f01 100644 --- a/crlcore/python/helpers/SymbolicTechnology.py +++ b/crlcore/python/helpers/SymbolicTechnology.py @@ -19,7 +19,6 @@ from CRL import AllianceFramework from helpers import ErrorMessage -symbolicTechno = None symbolicFile = '' @@ -97,7 +96,11 @@ class LayersLUT ( object ): layersLUT = LayersLUT() -def loadRealLayers ( technology, basicLayersData ): +def loadRealLayers ( realLayersTable, confFile ): + global symbolicFile + symbolicFile = confFile + technology = DataBase.getDB().getTechnology() + entryNo = 0 for entry in realLayersTable: entryNo += 1 @@ -133,7 +136,11 @@ def loadRealLayers ( technology, basicLayersData ): return -def loadSymbolicLayers ( technology, symbolicLayersData ): +def loadSymbolicLayers ( symbolicLayersData, confFile ): + global symbolicFile + symbolicFile = confFile + technology = DataBase.getDB().getTechnology() + entryNo = 0 for entry in symbolicLayersData: entryNo += 1 @@ -194,7 +201,11 @@ def loadSymbolicLayers ( technology, symbolicLayersData ): return -def loadSymbolicRules ( technology, symbolicRulesTable ): +def loadSymbolicRules ( symbolicRulesTable, confFile ): + global symbolicFile + symbolicFile = confFile + technology = DataBase.getDB().getTechnology() + entryNo = 0 for rule in symbolicRulesTable: entryNo += 1 @@ -246,7 +257,11 @@ def loadSymbolicRules ( technology, symbolicRulesTable ): return -def loadWorkingLayers ( technology, workingLayersTable ): +def loadWorkingLayers ( workingLayersTable, confFile ): + global symbolicFile + symbolicFile = confFile + technology = DataBase.getDB().getTechnology() + entryNo = 0 for layerName in workingLayersTable: entryNo += 1 @@ -259,39 +274,11 @@ def loadWorkingLayers ( technology, workingLayersTable ): return -def loadViewerConfig ( technology, viewerConfig ): +def loadViewerConfig ( viewerConfig, confFile ): + global symbolicFile + symbolicFile = confFile try: if viewerConfig.has_key('precision'): DbU.setPrecision(viewerConfig['precision']) except Exception, e: ErrorMessage.wrapPrint(e,'In %s:.') return - - -def load ( symbolicPath ): - tables = ( ('viewerConfig' , loadViewerConfig ) - , ('realLayersTable' , loadRealLayers ) - , ('symbolicLayersTable', loadSymbolicLayers) - , ('symbolicRulesTable' , loadSymbolicRules ) - , ('workingLayersTable' , loadWorkingLayers ) - ) - - global symbolicTechno - global symbolicFile - symbolicFile = os.path.basename(symbolicPath) - symbolicTechno = AllianceFramework.get().getEnvironment().getSYMB_TECHNO_NAME() - - confGlobals = globals() - execfile(symbolicPath,confGlobals) - - db = DataBase.getDB() - technology = db.getTechnology() - - for symbol, loader in tables: - if not confGlobals.has_key(symbol): - print '[ERROR] The <%s> table is missing in the configuration file.' % symbol - print ' <%s>' % symbolicFile - print ' Attempting to continue anyway.' - else: - loader( technology, confGlobals[ symbol ]) - - return diff --git a/crlcore/python/helpers/__init__.py b/crlcore/python/helpers/__init__.py index 1944d3df..7e223455 100644 --- a/crlcore/python/helpers/__init__.py +++ b/crlcore/python/helpers/__init__.py @@ -26,10 +26,9 @@ import traceback import Hurricane sysConfDir = None -xmlCompatMode = False symbolicTechno = 'cmos' symbolicDir = None -realTechno = 'hcmos9' +realTechno = 'hcmos9gp' realDir = None tab = None _trace = None @@ -266,11 +265,11 @@ def initTechno ( quiet ): if moduleGlobals.has_key('symbolicTechnology'): symbolicTechno = symbolicTechnology else: - print '[ERROR] The symbolic technology name is not set. Using .' + print '[WARNING] The symbolic technology name is not set. Using .' if moduleGlobals.has_key('realTechnology'): realTechno = realTechnology else: - print '[ERROR] The real technology name is not set. Using .' + print '[WARNING] The real technology name is not set. Using .' symbolicDir = os.path.join( sysConfDir, symbolicTechno ) realDir = os.path.join( sysConfDir, realTechno ) diff --git a/crlcore/src/ccore/Environment.cpp b/crlcore/src/ccore/Environment.cpp index 327b35e7..4cb2b5f6 100644 --- a/crlcore/src/ccore/Environment.cpp +++ b/crlcore/src/ccore/Environment.cpp @@ -330,6 +330,7 @@ namespace { void XmlEnvironmentParser::parseConfig () { +#if THIS_IS_DISABLED string config = readTextAsString().toStdString(); expandVariables ( config ); switch ( _state ) { @@ -337,6 +338,7 @@ namespace { case RealTechnology: _environment.setREAL_TECHNOLOGY ( config.c_str() ); break; case Display: _environment.setDISPLAY ( config.c_str() ); break; } +#endif } @@ -506,12 +508,8 @@ namespace CRL { Environment::Environment () : _CORIOLIS_TOP (CORIOLIS_TOP) - , _SYMB_TECHNO_NAME ("") - , _REAL_TECHNO_NAME ("") , _displayStyle () , _SCALE_X (10) - , _SYMBOLIC_TECHNOLOGY("") - , _DISPLAY ("") , _IN_LO ("vst") , _IN_PH ("ap") , _OUT_LO ("vst") @@ -519,14 +517,6 @@ namespace CRL { , _CATALOG ("CATAL") , _inConstructor (true) { - if ( sysConfDir[0] == '/' ) { - _SYMBOLIC_TECHNOLOGY = sysConfDir + "/coriolis2/technology.symbolic.xml"; - _DISPLAY = sysConfDir + "/coriolis2/display.xml"; - } else { - _SYMBOLIC_TECHNOLOGY = _CORIOLIS_TOP + "/" + sysConfDir + "/coriolis2/technology.symbolic.xml"; - _DISPLAY = _CORIOLIS_TOP + "/" + sysConfDir + "/coriolis2/display.xml"; - } - setPOWER ( "vdd" ); setGROUND ( "vss" ); setCLOCK ( "^ck$" ); @@ -549,22 +539,6 @@ namespace CRL { } - void Environment::loadFromXml ( const string& path, bool warnNotFound ) - { - XmlEnvironmentParser::load ( *this, path, warnNotFound ); - - validate (); - } - - - void Environment::loadFromShell () - { - _CORIOLIS_TOP = getEnv ( "CORIOLIS_TOP", CORIOLIS_TOP ); - - validate (); - } - - bool Environment::isPOWER ( const char* name ) const { return regexec ( &_PowerRegex, name, 0, NULL, 0 ) == 0; @@ -635,42 +609,35 @@ namespace CRL { ostringstream s; s << "\n" - << " o Hurricane/Alliance environment.\n" - << " o Configuration files.\n" - << " - Coriolis directory:\n" - << " \"" << _CORIOLIS_TOP << "\"\n" - << " - Symbolic Technology:\n" - << " \"" << _SYMBOLIC_TECHNOLOGY << "\"\n" - << " - Display configuration:\n" - << " \"" << _DISPLAY << "\"\n"; + << " o Hurricane/Alliance environment.\n"; s << " o Libraries.\n" - << " - Catalog := \"" << _CATALOG << "\"\n" + << " - Catalog: \"" << _CATALOG << "\"\n" << " - Working Library:\n" - << " 0:\"" << _LIBRARIES[0].getPath() << "\"\n" + << " [ 0]:\"" << _LIBRARIES[0].getPath() << "\"\n" << " - System Libraries:\n"; if ( _LIBRARIES.getSize() <= 1 ) { s << " .\n"; } else { for ( size_t i = 1; i < _LIBRARIES.getSize() ; i++ ) { - s << " " << setw(2) << i << ":\"" << _LIBRARIES[i].getPath() << "\"\n"; + s << " [" << setw(2) << i << "]:\"" << _LIBRARIES[i].getPath() << "\"\n"; } } s << " o I/O Formats.\n" - << " - Scale := " << _SCALE_X << "\n" - << " - Input, logical := \"" << _IN_LO << "\"\n" - << " - Input, physical := \"" << _IN_PH << "\"\n" - << " - Output, logical := \"" << _OUT_LO << "\"\n" - << " - Output, physical := \"" << _OUT_PH << "\"\n" + << Dots::asULong ( " - Scale", _SCALE_X ) << "\n" + << Dots::asString( " - Input, logical" , _IN_LO ) << "\n" + << Dots::asString( " - Input, physical" , _IN_PH ) << "\n" + << Dots::asString( " - Output, logical" , _OUT_LO ) << "\n" + << Dots::asString( " - Output, physical", _OUT_PH ) << "\n" << " o Special Signals.\n" - << " - Power Signal := \"" << _POWER << "\"\n" - << " - Ground Signal := \"" << _GROUND << "\"\n" - << " - Clock Signal := \"" << _CLOCK << "\"\n" - << " - Blockages := \"" << _BLOCKAGE << "\"\n" + << Dots::asString( " - Power Signal" , _POWER ) << "\n" + << Dots::asString( " - Ground Signal" , _GROUND ) << "\n" + << Dots::asString( " - Clock Signal" , _CLOCK ) << "\n" + << Dots::asString( " - Blockages" , _BLOCKAGE ) << "\n" << " o Special Cells.\n" - << " - Pads := \"" << _pad << "\"\n\n"; + << Dots::asString( " - Pads" , _pad ) << "\n\n"; return s.str(); } @@ -766,9 +733,6 @@ namespace CRL { record->add ( getSlot ( "_CORIOLIS_TOP" , &_CORIOLIS_TOP ) ); record->add ( getSlot ( "_displayStyle" , &_displayStyle ) ); record->add ( getSlot ( "_SCALE_X" , &_SCALE_X ) ); - record->add ( getSlot ( "_SYMBOLIC_TECHNOLOGY", &_SYMBOLIC_TECHNOLOGY ) ); - record->add ( getSlot ( "_REAL_TECHNOLOGY" , &_REAL_TECHNOLOGY ) ); - record->add ( getSlot ( "_DISPLAY" , &_DISPLAY ) ); record->add ( getSlot ( "_IN_LO" , &_IN_LO ) ); record->add ( getSlot ( "_IN_PH" , &_IN_PH ) ); record->add ( getSlot ( "_OUT_LO" , &_OUT_LO ) ); diff --git a/crlcore/src/ccore/crlcore/Environment.h b/crlcore/src/ccore/crlcore/Environment.h index 4da5392e..facceecd 100644 --- a/crlcore/src/ccore/crlcore/Environment.h +++ b/crlcore/src/ccore/crlcore/Environment.h @@ -36,12 +36,8 @@ namespace CRL { ~Environment (); // Accessors. inline const std::string& getCORIOLIS_TOP () const; - inline const std::string& getSYMB_TECHNO_NAME () const; - inline const std::string& getREAL_TECHNO_NAME () const; inline const std::string& getDisplayStyle () const; inline long getSCALE_X () const; - inline const std::string& getSYMBOLIC_TECHNOLOGY () const; - inline const std::string& getREAL_TECHNOLOGY () const; inline const std::string& getDISPLAY () const; inline const std::string& getIN_LO () const; inline const std::string& getIN_PH () const; @@ -63,14 +59,8 @@ namespace CRL { bool isPad ( const char* name ) const; // Modifiers. void validate () const; - void loadFromXml ( const std::string& path="", bool warnNotFound=true ); - void loadFromShell (); - inline void setSYMB_TECHNO_NAME ( const char* value ); - inline void setREAL_TECHNO_NAME ( const char* value ); inline void setDisplayStyle ( const char* ); inline void setSCALE_X ( long value ); - inline void setSYMBOLIC_TECHNOLOGY ( const char* value ); - inline void setREAL_TECHNOLOGY ( const char* value ); inline void setDISPLAY ( const char* value ); inline void setIN_LO ( const char* value ); inline void setIN_PH ( const char* value ); @@ -92,12 +82,8 @@ namespace CRL { protected: // Internal: Attributes. std::string _CORIOLIS_TOP; - std::string _SYMB_TECHNO_NAME; - std::string _REAL_TECHNO_NAME; std::string _displayStyle; long _SCALE_X; - std::string _SYMBOLIC_TECHNOLOGY; - std::string _REAL_TECHNOLOGY; std::string _DISPLAY; std::string _IN_LO; std::string _IN_PH; @@ -123,13 +109,8 @@ namespace CRL { // Inline Member Functions. inline const std::string& Environment::getCORIOLIS_TOP () const { return _CORIOLIS_TOP; } - inline const std::string& Environment::getSYMB_TECHNO_NAME () const { return _SYMB_TECHNO_NAME; } - inline const std::string& Environment::getREAL_TECHNO_NAME () const { return _REAL_TECHNO_NAME; } inline const std::string& Environment::getDisplayStyle () const { return _displayStyle; } inline long Environment::getSCALE_X () const { return _SCALE_X; } - inline const std::string& Environment::getSYMBOLIC_TECHNOLOGY () const { return _SYMBOLIC_TECHNOLOGY; } - inline const std::string& Environment::getREAL_TECHNOLOGY () const { return _REAL_TECHNOLOGY; } - inline const std::string& Environment::getDISPLAY () const { return _DISPLAY; } inline const std::string& Environment::getIN_LO () const { return _IN_LO; } inline const std::string& Environment::getIN_PH () const { return _IN_PH; } inline const std::string& Environment::getOUT_LO () const { return _OUT_LO; } @@ -142,13 +123,8 @@ namespace CRL { inline const std::string& Environment::getCATALOG () const { return _CATALOG; } inline SearchPath& Environment::getLIBRARIES () { return _LIBRARIES; } - inline void Environment::setSYMB_TECHNO_NAME ( const char* value ) { _SYMB_TECHNO_NAME = value; } - inline void Environment::setREAL_TECHNO_NAME ( const char* value ) { _REAL_TECHNO_NAME = value; } inline void Environment::setDisplayStyle ( const char* value ) { _displayStyle = value; } inline void Environment::setSCALE_X ( long value ) { _SCALE_X = value; } - inline void Environment::setSYMBOLIC_TECHNOLOGY ( const char* value ) { _SYMBOLIC_TECHNOLOGY = value; } - inline void Environment::setREAL_TECHNOLOGY ( const char* value ) { _REAL_TECHNOLOGY = value; } - inline void Environment::setDISPLAY ( const char* value ) { _DISPLAY = value; } inline void Environment::setIN_LO ( const char* value ) { _IN_LO = value; } inline void Environment::setIN_PH ( const char* value ) { _IN_PH = value; } inline void Environment::setOUT_LO ( const char* value ) { _OUT_LO = value; } diff --git a/crlcore/src/pyCRL/PyAllianceFramework.cpp b/crlcore/src/pyCRL/PyAllianceFramework.cpp index e62919f6..d345b0c8 100644 --- a/crlcore/src/pyCRL/PyAllianceFramework.cpp +++ b/crlcore/src/pyCRL/PyAllianceFramework.cpp @@ -102,77 +102,6 @@ extern "C" { } - extern PyObject* PyAllianceFramework_loadGraphicsFromXml ( PyAllianceFramework* self, PyObject* args ) - { - trace << "PyAllianceFramework_loadGraphicsFromXml ()" << endl; - - HTRY - METHOD_HEAD("AllianceFramework.loadGraphicsFromXml()") - - bool status = false; - char* name = NULL; - if (PyArg_ParseTuple(args,"s:AllianceFramework.loadGraphicsFromXml", &name)) { - status = GraphicsParser::load( af->getEnvironment()->getDISPLAY() ); - } else { - PyErr_SetString ( ConstructorError, "invalid number of parameters for loadGraphicsFromXml." ); - return NULL; - } - if ( status ) Py_RETURN_TRUE; - - HCATCH - - Py_RETURN_FALSE; - } - - - extern PyObject* PyAllianceFramework_loadSymbTechnoFromXml ( PyAllianceFramework* self, PyObject* args ) - { - trace << "PyAllianceFramework_loadSymbTechnoFromXml ()" << endl; - - HTRY - METHOD_HEAD("AllianceFramework.loadSymbTechnoFromXml()") - - bool status = false; - char* name = NULL; - if (PyArg_ParseTuple(args,"s:AllianceFramework.loadSymbTechnoFromXml", &name)) { - status = SymbolicTechnologyParser::load( DataBase::getDB() - , af->getEnvironment()->getSYMBOLIC_TECHNOLOGY() ); - } else { - PyErr_SetString ( ConstructorError, "invalid number of parameters for loadSymbTechnoFromXml." ); - return NULL; - } - if ( status ) Py_RETURN_TRUE; - - HCATCH - - Py_RETURN_FALSE; - } - - - extern PyObject* PyAllianceFramework_loadRealTechnoFromXml ( PyAllianceFramework* self, PyObject* args ) - { - trace << "PyAllianceFramework_loadRealTechnoFromXml ()" << endl; - - HTRY - METHOD_HEAD("AllianceFramework.loadRealTechnoFromXml()") - - bool status = false; - char* name = NULL; - if (PyArg_ParseTuple(args,"s:AllianceFramework.loadRealTechnoFromXml", &name)) { - status = RealTechnologyParser::load( DataBase::getDB() - , af->getEnvironment()->getREAL_TECHNOLOGY() ); - } else { - PyErr_SetString ( ConstructorError, "invalid number of parameters for loadRealTechnoFromXml." ); - return NULL; - } - if ( status ) Py_RETURN_TRUE; - - HCATCH - - Py_RETURN_FALSE; - } - - extern PyObject* PyAllianceFramework_getLibrary ( PyAllianceFramework* self, PyObject* args ) { trace << "PyAllianceFramework_getLibrary ()" << endl; @@ -373,12 +302,6 @@ extern "C" { , "Gets the Alliance Framework." } , { "getEnvironment" , (PyCFunction)PyAllianceFramework_getEnvironment , METH_NOARGS , "Gets the Alliance Environment." } - , { "loadGraphicsFromXml" , (PyCFunction)PyAllianceFramework_loadGraphicsFromXml , METH_VARARGS - , "Load the legacy display XML configuration file." } - , { "loadSymbTechnoFromXml", (PyCFunction)PyAllianceFramework_loadSymbTechnoFromXml, METH_VARARGS - , "Load the legacy symbolic technology XML configuration file." } - , { "loadRealTechnoFromXml", (PyCFunction)PyAllianceFramework_loadRealTechnoFromXml, METH_VARARGS - , "Load the legacy real technology XML configuration file." } , { "getLibrary" , (PyCFunction)PyAllianceFramework_getLibrary , METH_VARARGS , "Gets a Library, by index." } , { "getCell" , (PyCFunction)PyAllianceFramework_getCell , METH_VARARGS diff --git a/crlcore/src/pyCRL/PyEnvironment.cpp b/crlcore/src/pyCRL/PyEnvironment.cpp index a5884808..9b713eb7 100644 --- a/crlcore/src/pyCRL/PyEnvironment.cpp +++ b/crlcore/src/pyCRL/PyEnvironment.cpp @@ -64,49 +64,6 @@ extern "C" { } - PyObject* PyEnvironment_loadFromXml ( PyEnvironment* self, PyObject* args, PyObject* kwArgs ) - { - trace << "PyEnvironment_loadFromXml()" << endl; - - HTRY - METHOD_HEAD("Environment.loadFromXml()") - char* path = NULL; - PyObject* pyWarnMode = NULL; - - static char* keywords[] = { "path", "warnNotFound", NULL }; - - if (PyArg_ParseTupleAndKeywords( args - , kwArgs - , "|si:Environment.loadFromXml" - , keywords - , &path - , &pyWarnMode )) { - - string spath; - bool warnMode = (pyWarnMode == NULL) or (pyWarnMode == Py_True); - if ( path != NULL ) - spath = path; - - env->loadFromXml(spath, warnMode); - } else { - PyErr_SetString ( ConstructorError, "invalid number of parameters for Environment.loadFromXml." ); - return NULL; - } - HCATCH - - Py_RETURN_NONE; - } - - - static PyObject* PyEnvironment_loadFromShell ( PyEnvironment *self ) - { - METHOD_HEAD("Environment.loadFromShell()") - env->loadFromShell(); - - Py_RETURN_NONE; - } - - PyObject* PyEnvironment_addSYSTEM_LIBRARY ( PyEnvironment* self, PyObject* args, PyObject* kwArgs ) { trace << "PyEnvironment_addSYSTEM_LIBRARY()" << endl; @@ -186,13 +143,8 @@ extern "C" { // Standart Accessors (Attributes). DirectGetStringAttribute(PyEnvironment_getCORIOLIS_TOP ,getCORIOLIS_TOP ,PyEnvironment,Environment) - DirectGetStringAttribute(PyEnvironment_getSYMB_TECHNO_NAME ,getSYMB_TECHNO_NAME ,PyEnvironment,Environment) - DirectGetStringAttribute(PyEnvironment_getREAL_TECHNO_NAME ,getREAL_TECHNO_NAME ,PyEnvironment,Environment) DirectGetStringAttribute(PyEnvironment_getDisplayStyle ,getDisplayStyle ,PyEnvironment,Environment) DirectGetLongAttribute (PyEnvironment_getSCALE_X ,getSCALE_X ,PyEnvironment,Environment) - DirectGetStringAttribute(PyEnvironment_getSYMBOLIC_TECHNOLOGY,getSYMBOLIC_TECHNOLOGY,PyEnvironment,Environment) - DirectGetStringAttribute(PyEnvironment_getREAL_TECHNOLOGY ,getREAL_TECHNOLOGY ,PyEnvironment,Environment) - DirectGetStringAttribute(PyEnvironment_getDISPLAY ,getDISPLAY ,PyEnvironment,Environment) DirectGetStringAttribute(PyEnvironment_getIN_LO ,getIN_LO ,PyEnvironment,Environment) DirectGetStringAttribute(PyEnvironment_getIN_PH ,getIN_PH ,PyEnvironment,Environment) DirectGetStringAttribute(PyEnvironment_getOUT_LO ,getOUT_LO ,PyEnvironment,Environment) @@ -212,13 +164,8 @@ extern "C" { DirectIsAFromCStringAttribute(PyEnvironment_isPad ,isPad ,PyEnvironment,Environment) // Standart Mutators (Attributes). - DirectSetCStringAttribute(PyEnvironment_setSYMB_TECHNO_NAME ,setSYMB_TECHNO_NAME ,"Environment.setSYMB_TECHNO_NAME" ,PyEnvironment,Environment) - DirectSetCStringAttribute(PyEnvironment_setREAL_TECHNO_NAME ,setREAL_TECHNO_NAME ,"Environment.setSYMB_TECHNO_NAME" ,PyEnvironment,Environment) DirectSetCStringAttribute(PyEnvironment_setDisplayStyle ,setDisplayStyle ,"Environment.setDisplayStyle" ,PyEnvironment,Environment) DirectSetLongAttribute (PyEnvironment_setSCALE_X ,setSCALE_X ,"Environment.setSCALE_X" ,PyEnvironment,Environment) - DirectSetCStringAttribute(PyEnvironment_setSYMBOLIC_TECHNOLOGY,setSYMBOLIC_TECHNOLOGY,"Environment.setSYMBOLIC_TECHNOLOGY",PyEnvironment,Environment) - DirectSetCStringAttribute(PyEnvironment_setREAL_TECHNOLOGY ,setREAL_TECHNOLOGY ,"Environment.setREAL_TECHNOLOGY" ,PyEnvironment,Environment) - DirectSetCStringAttribute(PyEnvironment_setDISPLAY ,setDISPLAY ,"Environment.setDISPLAY" ,PyEnvironment,Environment) DirectSetCStringAttribute(PyEnvironment_setIN_LO ,setIN_LO ,"Environment.setIN_LO" ,PyEnvironment,Environment) DirectSetCStringAttribute(PyEnvironment_setIN_PH ,setIN_PH ,"Environment.setIN_PH" ,PyEnvironment,Environment) DirectSetCStringAttribute(PyEnvironment_setOUT_LO ,setOUT_LO ,"Environment.setOUT_LO" ,PyEnvironment,Environment) @@ -239,20 +186,10 @@ extern "C" { PyMethodDef PyEnvironment_Methods[] = { { "getCORIOLIS_TOP" , (PyCFunction)PyEnvironment_getCORIOLIS_TOP , METH_NOARGS , "Gets the symbolic technology file." } - , { "getSYMB_TECHNO_NAME" , (PyCFunction)PyEnvironment_getSYMB_TECHNO_NAME , METH_NOARGS - , "Gets the symbolic technology name." } - , { "getREAL_TECHNO_NAME" , (PyCFunction)PyEnvironment_getREAL_TECHNO_NAME , METH_NOARGS - , "Gets the real (target) technology name." } , { "getDisplayStyle" , (PyCFunction)PyEnvironment_getDisplayStyle , METH_NOARGS , "Gets the name of the display style currently in use." } , { "getSCALE_X" , (PyCFunction)PyEnvironment_getSCALE_X , METH_NOARGS , "Gets the SCALE_X factor (for fixed point computation)." } - , { "getSYMBOLIC_TECHNOLOGY", (PyCFunction)PyEnvironment_getSYMBOLIC_TECHNOLOGY, METH_NOARGS - , "Gets the symbolic technology file path (deprecated)." } - , { "getREAL_TECHNOLOGY" , (PyCFunction)PyEnvironment_getREAL_TECHNOLOGY , METH_NOARGS - , "Gets the real technology file path (deprecated)." } - , { "getDISPLAY" , (PyCFunction)PyEnvironment_getDISPLAY , METH_NOARGS - , "Gets the display file path (deprecated)." } , { "getIN_LO" , (PyCFunction)PyEnvironment_getIN_LO , METH_NOARGS , "Gets the netlist input format." } , { "getIN_PH" , (PyCFunction)PyEnvironment_getIN_PH , METH_NOARGS @@ -289,24 +226,10 @@ extern "C" { , "Checks if a name is a pad cell name." } , { "validate" , (PyCFunction)PyEnvironment_validate , METH_NOARGS , "Validate the coherency of the settings (raise an exception)." } - , { "loadFromXml" , (PyCFunction)PyEnvironment_loadFromXml , METH_VARARGS|METH_KEYWORDS - , "Call the legacy XML Alliance environment parser." } - , { "loadFromShell" , (PyCFunction)PyEnvironment_loadFromShell , METH_NOARGS - , "Read the the environment from the process UNIX context." } - , { "setSYMB_TECHNO_NAME" , (PyCFunction)PyEnvironment_setSYMB_TECHNO_NAME , METH_VARARGS - , "Sets the symbolic technology name." } - , { "setREAL_TECHNO_NAME" , (PyCFunction)PyEnvironment_setREAL_TECHNO_NAME , METH_VARARGS - , "Sets the real (target) technology name." } , { "setDisplayStyle" , (PyCFunction)PyEnvironment_setDisplayStyle , METH_VARARGS , "Sets the name of the display style to be used." } , { "setSCALE_X" , (PyCFunction)PyEnvironment_setSCALE_X , METH_VARARGS , "Sets the SCALE_X factor (for fixed point computation)." } - , { "setSYMBOLIC_TECHNOLOGY", (PyCFunction)PyEnvironment_setSYMBOLIC_TECHNOLOGY, METH_VARARGS - , "Sets the symbolic technology file path (deprecated)." } - , { "setREAL_TECHNOLOGY" , (PyCFunction)PyEnvironment_setREAL_TECHNOLOGY , METH_VARARGS - , "Sets the real technology file path (deprecated)." } - , { "setDISPLAY" , (PyCFunction)PyEnvironment_setDISPLAY , METH_VARARGS - , "Sets the display file path (deprecated)." } , { "setIN_LO" , (PyCFunction)PyEnvironment_setIN_LO , METH_VARARGS , "Sets the netlist input format." } , { "setIN_PH" , (PyCFunction)PyEnvironment_setIN_PH , METH_VARARGS diff --git a/hurricane/src/viewer/CellWidget.cpp b/hurricane/src/viewer/CellWidget.cpp index c735b8f4..24487cdf 100644 --- a/hurricane/src/viewer/CellWidget.cpp +++ b/hurricane/src/viewer/CellWidget.cpp @@ -368,7 +368,8 @@ namespace Hurricane { _linePen = pen; _linePen.setStyle( Qt::SolidLine ); -#if (QT_VERSION == QT_VERSION_CHECK(4,8,5)) +#if 0 + //#if (QT_VERSION == QT_VERSION_CHECK(4,8,5)) //cerr << "CellWidget::DrawingPlanes::setPen() Buggy 4.8.5 Qt, diagonal lines may appears..." << endl; _normalPen.setWidth( 2 ); _linePen.setWidth( 2 ); diff --git a/katabatic/src/Grid.cpp b/katabatic/src/Grid.cpp index 87868288..e62d5e03 100644 --- a/katabatic/src/Grid.cpp +++ b/katabatic/src/Grid.cpp @@ -2,7 +2,7 @@ // -*- C++ -*- // // This file is part of the Coriolis Software. -// Copyright (c) UPMC/LIP6 2008-2013, All Rights Reserved +// Copyright (c) UPMC 2008-2015, All Rights Reserved // // +-----------------------------------------------------------------+ // | C O R I O L I S | diff --git a/katabatic/src/katabatic/Grid.h b/katabatic/src/katabatic/Grid.h index 54b9a6a2..2b053298 100644 --- a/katabatic/src/katabatic/Grid.h +++ b/katabatic/src/katabatic/Grid.h @@ -206,6 +206,8 @@ namespace Katabatic { template GCellT* Grid::getGCell ( const Point p ) const { + if (not getBoundingBox().contains(p)) return NULL; + bool onColumn; bool onRow; @@ -219,6 +221,9 @@ namespace Katabatic { template GCellT* Grid::getGCell ( const Point p1, const Point p2 ) const { + if (not getBoundingBox().contains(p1)) return NULL; + if (not getBoundingBox().contains(p2)) return NULL; + bool onColumn1; bool onColumn2; bool onRow1; diff --git a/unicorn/src/CMakeLists.txt b/unicorn/src/CMakeLists.txt index ad7bccb7..59d7afb1 100644 --- a/unicorn/src/CMakeLists.txt +++ b/unicorn/src/CMakeLists.txt @@ -93,6 +93,7 @@ install( TARGETS unicorn DESTINATION lib${LIB_SUFFIX} ) install( TARGETS cgt.bin DESTINATION bin ) install( PROGRAMS cgt.py DESTINATION bin RENAME cgt ) + install( PROGRAMS coriolis.py DESTINATION bin RENAME coriolis ) install( FILES ${includes} ${mocincludes} DESTINATION include/coriolis2/unicorn ) diff --git a/unicorn/src/cgt.py b/unicorn/src/cgt.py index cc44dd30..7360693c 100755 --- a/unicorn/src/cgt.py +++ b/unicorn/src/cgt.py @@ -1,5 +1,6 @@ #!/usr/bin/env python + try: import sys import os.path diff --git a/unicorn/src/coriolis.py b/unicorn/src/coriolis.py new file mode 100755 index 00000000..af97f7ba --- /dev/null +++ b/unicorn/src/coriolis.py @@ -0,0 +1,161 @@ +#!/usr/bin/env python +# +# This file is part of the Coriolis Software. +# Copyright (c) UPMC/LIP6 2015-2015, All Rights Reserved +# +# +-----------------------------------------------------------------+ +# | C O R I O L I S | +# | C o r i o l i s - Generic Program Launcher | +# | | +# | Author : Jean-Paul CHAPUT | +# | E-mail : Jean-Paul.Chaput@lip6.fr | +# | =============================================================== | +# | Python : "./src/coriolis.py" | +# +-----------------------------------------------------------------+ + + +import sys +import os.path +import optparse +import subprocess +import distutils.sysconfig + + +class Location ( object ): + SetCoriolisTop = 0x0001 + SetLdLibraryPath = 0x0002 + SetBasePythonPath = 0x0004 + BaseSysconfDir = 0x0008 + BaseSystem = SetCoriolisTop|BaseSysconfDir + Devtoolset2 = SetCoriolisTop|BaseSysconfDir|SetBasePythonPath + UserDefined = SetCoriolisTop|SetLdLibraryPath|SetBasePythonPath + + +def truncPath ( path, ifirst, ilast ): + rawDirectories = path.split('/') + directories = [] + for directory in rawDirectories: + if len(directory): directories.append( directory ) + truncated = os.path.join( *directories[ifirst:ilast] ) + if ifirst == 0 and rawDirectories[0] == '': + truncated = '/'+truncated + return truncated + + +def uname ( arguments ): + return subprocess.Popen( ["uname"] + arguments + , stdout=subprocess.PIPE ).stdout.readlines()[0][:-1] + + +class Pathes ( object ): + + def __init__ ( self, name ): + self.name = name + self.components = [] + if os.environ.has_key(name): + self.components = os.environ[name].split(':') + return + + def asString ( self ): + s = '' + for i in range(len(self.components)): + if s: s += ':' + s += self.components[i] + return s + + def export ( self ): + os.environ[self.name] = self.asString() + return + + def insert ( self, index, path ): + self.components.insert( index, path ) + return + + def show ( self ): + print ' %s:' % self.name + for component in self.components: + print ' %s' % component + return + + +osType = uname( ['-s'] ) +arch = uname( ['-m'] ) + +libDir = '/lib' +if arch == 'x86_64': libDir = '/lib64' + +pythonSitePackages = os.path.join( *(distutils.sysconfig.get_python_lib(1).split('/')[-3:]) ) + +print ' ========================================' +print ' OS:\n %s' % osType + +scriptBinPath = os.path.abspath(os.path.dirname(sys.argv[0])) +print ' Script location:\n %s' % scriptBinPath +if scriptBinPath == '/usr/bin': + location = Location.BaseSystem + coriolisTop = '/usr' + print ' Using standard system installation scheme.' +elif scriptBinPath == '/opt/rh/devtoolset-2/root/usr/bin': + location = Location.Devtoolset2 + coriolisTop = '/opt/rh/devtoolset-2/root/usr' + print ' Using RHEL6 installation scheme.' +else: + location = Location.UserDefined + coriolisTop = truncPath( scriptBinPath, 0, -1 ) + print ' Using User installation scheme.' + +if location & Location.SetCoriolisTop: + os.environ['CORIOLIS_TOP'] = coriolisTop + print ' CORIOLIS_TOP:\n %s' % coriolisTop + +if location & Location.BaseSysconfDir: + sysConfDir = truncPath( coriolisTop, 0, -1 ) + '/etc/coriolis2' +else: + sysConfDir = coriolisTop + '/etc/coriolis2' +print ' Configuration directory:\n %s' % sysConfDir + +os.environ['STRATUS_MAPPING_NAME'] = sysConfDir+'/stratus2sxlib.xml' + +binPath = Pathes( 'PATH' ) +binPath.insert( 0, scriptBinPath ) +binPath.export() +binPath.show() + +ldLibraryPathName = 'LD_LIBRARY_PATH' +if osType == 'Darwin': + ldLibraryPathName = 'DYLD_LIBRARY_PATH' + +if location & Location.SetLdLibraryPath: + ldLibraryPath = Pathes( ldLibraryPathName ) + ldLibraryPath.insert( 0, coriolisTop+libDir ) + ldLibraryPath.export() + ldLibraryPath.show() + +pythonPath = Pathes( 'PYTHONPATH' ) +if location & Location.SetBasePythonPath: + pythonPath.insert( 0, os.path.join(coriolisTop,pythonSitePackages) ) +pythonPath.insert( 0, os.path.join(coriolisTop,pythonSitePackages,'crlcore') ) +pythonPath.insert( 0, os.path.join(coriolisTop,pythonSitePackages,'stratus') ) +pythonPath.insert( 0, os.path.join(coriolisTop,pythonSitePackages,'cumulus') ) +pythonPath.insert( 0, os.path.join(coriolisTop,pythonSitePackages,'pharos' ) ) +pythonPath.export() +pythonPath.show() + + +argvStart = 0 +slaveScript = 'cgt' +if len(sys.argv) > 1 and sys.argv[1].startswith('--run='): + argvStart = 1 + slaveScript = sys.argv[1][6:] + +print ' Script:\n %s' % slaveScript +print ' ========================================' + +try: + os.execvp( slaveScript, sys.argv[argvStart:] ) +except Exception, e: + print '[ERROR] An exception occured while lauching <%s>\n' % slaveScript + print e + sys.exit( 3 ) + +sys.exit( 0 )