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:
Jean-Paul Chaput 2015-04-13 18:54:09 +02:00
parent bacea5214c
commit db60fe0aa6
30 changed files with 409 additions and 501 deletions

View File

@ -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"

View File

@ -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();

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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,

View 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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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 ()

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 )

View File

@ -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 ) );

View File

@ -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; }

View File

@ -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

View File

@ -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

View File

@ -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 );

View File

@ -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 |

View File

@ -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;

View File

@ -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 )

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python
try:
import sys
import os.path

161
unicorn/src/coriolis.py Executable file
View File

@ -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 )