New coriolis launcher. Configuration files cleanup.
* Change: In CRL Core, simplify the loading sequence. The technology, both symbolic and real is now loaded directly from coriolisInit.py and not through the Alliance loader. This was a leftover from the time configuration was in XML. Remove others traces of XML loading. Remove SYMB_TECHNO_NAME, REAL_TECHNO_NAME & DISPLAY from the Alliance environement, as they was no longer used. Note that technology *still* need to be loader *after* Alliance framework has been initialized. Gauge information is moved from <alliance.conf> to <kite.conf>. * Bug: In Coloquinte, in optimization_subproblems.cxx static variables must not be inlined. Generate a problem when linking in debug mode (seems the symbol gets optimised out). * Bug: In Katabatic, in Grid::getGCell(), when the coordinate is *outside* the area, do not try to find a GCell, directly return NULL. * New: In Unicorn, create a generic command launcher named "coriolis" which automatically take cares of all environement setup, then run a command by default, it's <cgt>, but it can be anything. For example: <zsh>.
This commit is contained in:
parent
bacea5214c
commit
db60fe0aa6
|
@ -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"
|
||||
|
|
|
@ -133,7 +133,7 @@ std::vector<capacity_t> transport_1D(std::vector<t1D_elt> sources, std::vector<
|
|||
namespace{ // Anonymous namespace to hide the transportation structures
|
||||
|
||||
class current_allocation{
|
||||
static const index_t null_ind = std::numeric_limits<index_t>::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<index_t>::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();
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
# -*- Mode:Python; explicit-buffer-name: "technology.conf<cmos065>" -*-
|
||||
|
||||
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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
# -*- Mode:Python; explicit-buffer-name: "technology.conf<hcmos9>" -*-
|
||||
|
||||
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)
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
# -*- Mode:Python; explicit-buffer-name: "technology.conf<scn6m_deep>" -*-
|
||||
|
||||
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)
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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 ()
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -15,7 +15,10 @@ from helpers import ErrorMessage
|
|||
realFile = '<No real file specified>'
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@ from CRL import AllianceFramework
|
|||
from helpers import ErrorMessage
|
||||
|
||||
|
||||
symbolicTechno = None
|
||||
symbolicFile = '<No symbolic file specified>'
|
||||
|
||||
|
||||
|
@ -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:<viewerConfig>.')
|
||||
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
|
||||
|
|
|
@ -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 <cmos>.'
|
||||
print '[WARNING] The symbolic technology name is not set. Using <cmos>.'
|
||||
if moduleGlobals.has_key('realTechnology'):
|
||||
realTechno = realTechnology
|
||||
else:
|
||||
print '[ERROR] The real technology name is not set. Using <hcmos9gp>.'
|
||||
print '[WARNING] The real technology name is not set. Using <hcmos9gp>.'
|
||||
|
||||
symbolicDir = os.path.join( sysConfDir, symbolicTechno )
|
||||
realDir = os.path.join( sysConfDir, realTechno )
|
||||
|
|
|
@ -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 ("<notset>")
|
||||
, _REAL_TECHNO_NAME ("<notset>")
|
||||
, _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 << " <not set or empty>.\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 ) );
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 );
|
||||
|
|
|
@ -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 |
|
||||
|
|
|
@ -206,6 +206,8 @@ namespace Katabatic {
|
|||
template<typename GCellT>
|
||||
GCellT* Grid<GCellT>::getGCell ( const Point p ) const
|
||||
{
|
||||
if (not getBoundingBox().contains(p)) return NULL;
|
||||
|
||||
bool onColumn;
|
||||
bool onRow;
|
||||
|
||||
|
@ -219,6 +221,9 @@ namespace Katabatic {
|
|||
template<typename GCellT>
|
||||
GCellT* Grid<GCellT>::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;
|
||||
|
|
|
@ -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 )
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
|
||||
try:
|
||||
import sys
|
||||
import os.path
|
||||
|
|
|
@ -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 )
|
Loading…
Reference in New Issue