From 72e63309e733dbd8960c2c991fc0c2f05461f506 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Sat, 17 Jul 2010 10:34:46 +0000 Subject: [PATCH] * All Main Python Modules: - Change: New problem identified with the Python modules: each module seems to be built as a complete binary, so all the static C++ initializers are allocated in each module. In particular the C++ tree inheritance is built for *each* module so we cannot longer uses the typeid() comparisons across modules... It was used by boost::program_options to perform is casts with boost::any and was starting throwing exceptions because of bad casts. program_option was first initialized in "configuration" first included by PyViewer then in PyCRL (see Utilities.cpp). A first solution is to re-order the import of Python modules in stratus1/st_model so that CRL is imported first. The second is to not not link "configuration" with boost::program_option as only the binary vlsisapd-conf-editor needs it. That is a serious problem of which we must be aware and can cause further strange behaviors. Debug code used to diagnostic has been kept commented in the sources a it may be needed again :-( This behavior do not affect our singletons because they are part of dynamic libraries that seems to be correctly shared between the various Python modules. * ./stratus1, ./cumulus: - Change: Replace calls to CRL.getAllianceFramework() by CRL.AllianceFramework.get(). --- cumulus/src/placeandroute.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cumulus/src/placeandroute.py b/cumulus/src/placeandroute.py index cd708584..118247ec 100644 --- a/cumulus/src/placeandroute.py +++ b/cumulus/src/placeandroute.py @@ -205,7 +205,7 @@ def pyAlimVerticalRail ( cell, xcoord ) : # print "Placement of vertical rail" # print "Reference ", reference - power_cell = CRL.getAllianceFramework().getCell ( "powmid_x0", CRL.Catalog.State.Views ) + power_cell = CRL.AllianceFramework.get().getCell ( "powmid_x0", CRL.Catalog.State.Views ) Height_power = power_cell.getAbutmentBox().getHeight() Width_power = power_cell.getAbutmentBox().getWidth() @@ -363,7 +363,7 @@ def pyAlimHorizontalRail ( cell, ycoord ) : # Create horizontal rail rail_horizontal = Horizontal ( pin1 , pin2 , metal4 , pin_y, pin_height, 0 , 0 ) - power_hur_cell = CRL.getAllianceFramework().getCell ( "powmid_x0", CRL.Catalog.State.Views ) + power_hur_cell = CRL.AllianceFramework.get().getCell ( "powmid_x0", CRL.Catalog.State.Views ) Width_power = power_hur_cell.getAbutmentBox().getWidth() nb_pitchs = Width_power / DbU_lambda(PITCH) # avoir l'interval du cellule power @@ -1635,7 +1635,7 @@ def create_inst ( model, name, cell ) : raise err # Load model in the database - modelmastercell = CRL.getAllianceFramework().getCell ( model, CRL.Catalog.State.Views ) + modelmastercell = CRL.AllianceFramework.get().getCell ( model, CRL.Catalog.State.Views ) # Error : if the model is not found in the libraries if not modelmastercell : @@ -1832,7 +1832,7 @@ def temporarySave ( cell = None ) : UpdateSession.open() - framework = CRL.getAllianceFramework() + framework = CRL.AllianceFramework.get() if cell == None : for cell in framework.getLibrary(0).getCells():