Re-activate the LEF/DEF symbolic exporter (for benchmarking).

* Change: In bootstrap, in FindLEFDEF.cmake, adds my personal path where
    the LEF/DEF libraries are to be found (~jpc/oa/lefdef/5.7-s038/).
* Change: In CRL Core, in LEF/DEF exporters, use the default routing
    gauge and cell gauge, instead of systematically requiring "sxlib".
      IMPORTANT: In order to build a *shared* library including the
    *static* LEF/DEF libraries, those libraries, even if static, must
    be build with the "-fPIC" flag (otherwise the compiler complains).
    I have done so on my 64 bit build of LEF/DEF, but it's a completly
    *local* patch. You may have to do it manually on your installations.
This commit is contained in:
Jean-Paul Chaput 2015-06-07 14:12:00 +02:00
parent 9ac199f11b
commit 2906d90b04
3 changed files with 36 additions and 30 deletions

View File

@ -38,43 +38,46 @@
# LEFDEF_ZLEF_LIBRARY_DEBUG
macro ( _find_lefdef_lib varname libname )
find_library ( LEFDEF_${varname}_LIBRARY_RELEASE NAMES ${libname} PATHS ${LEFDEF_LIBRARY_DIR} )
find_library ( LEFDEF_${varname}_LIBRARY_DEBUG NAMES ${libname}_Debug PATHS ${LEFDEF_LIBRARY_DIR} )
macro( _find_lefdef_lib varname libname )
find_library( LEFDEF_${varname}_LIBRARY_RELEASE NAMES ${libname} PATHS ${LEFDEF_LIBRARY_DIR} )
find_library( LEFDEF_${varname}_LIBRARY_DEBUG NAMES ${libname}_Debug PATHS ${LEFDEF_LIBRARY_DIR} )
if ( LEFDEF_${varname}_LIBRARY_RELEASE AND NOT LEFDEF_${varname}_LIBRARY_DEBUG )
set ( LEFDEF_${varname}_LIBRARY_DEBUG ${LEFDEF_${varname}_LIBRARY_RELEASE} CACHE STRING "Path to a library" FORCE )
endif ( LEFDEF_${varname}_LIBRARY_RELEASE AND NOT LEFDEF_${varname}_LIBRARY_DEBUG )
if( LEFDEF_${varname}_LIBRARY_RELEASE AND NOT LEFDEF_${varname}_LIBRARY_DEBUG )
set( LEFDEF_${varname}_LIBRARY_DEBUG ${LEFDEF_${varname}_LIBRARY_RELEASE} CACHE STRING "Path to a library" FORCE )
endif()
if ( LEFDEF_${varname}_LIBRARY_DEBUG AND NOT LEFDEF_${varname}_LIBRARY_RELEASE )
set ( LEFDEF_${varname}_LIBRARY_RELEASE LEFDEF_${varname}_LIBRARY_DEBUG CACHE STRING "Path to a library" FORCE )
endif ( LEFDEF_${varname}_LIBRARY_DEBUG AND NOT LEFDEF_${varname}_LIBRARY_RELEASE )
if( LEFDEF_${varname}_LIBRARY_DEBUG AND NOT LEFDEF_${varname}_LIBRARY_RELEASE )
set( LEFDEF_${varname}_LIBRARY_RELEASE LEFDEF_${varname}_LIBRARY_DEBUG CACHE STRING "Path to a library" FORCE )
endif()
if ( LEFDEF_${varname}_LIBRARY_RELEASE )
list ( APPEND LEFDEF_LIBRARIES "optimized" ${LEFDEF_${varname}_LIBRARY_RELEASE}
"debug" ${LEFDEF_${varname}_LIBRARY_DEBUG} )
set ( LEFDEF_${varname}_LIBRARY_FOUND 1 )
mark_as_advanced ( LEFDEF_${varname}_LIBRARY_RELEASE
LEFDEF_${varname}_LIBRARY_DEBUG )
else ( LEFDEF_${varname}_LIBRARY_RELEASE )
if( LEFDEF_${varname}_LIBRARY_RELEASE )
list( APPEND LEFDEF_LIBRARIES "optimized" ${LEFDEF_${varname}_LIBRARY_RELEASE}
"debug" ${LEFDEF_${varname}_LIBRARY_DEBUG} )
set( LEFDEF_${varname}_LIBRARY_FOUND 1 )
mark_as_advanced( LEFDEF_${varname}_LIBRARY_RELEASE
LEFDEF_${varname}_LIBRARY_DEBUG )
else()
set ( LEFDEF_FOUND "NO" )
endif ( LEFDEF_${varname}_LIBRARY_RELEASE )
endmacro ( _find_lefdef_lib )
endif()
endmacro()
set ( LEFDEF_INCLUDE_DIR_DESCRIPTION "directory containing the LEF/DEF include files. E.g /opt/lefdef-5.6/include" )
set ( LEFDEF_LIBRARY_DIR_DESCRIPTION "directory containing the LEF/DEF library files. E.g /opt/lefdef-5.6/lib" )
set ( LEFDEF_DIR_MESSAGE "Set the LEFDEF_INCLUDE_DIR cmake cache entry to the ${LEFDEF_INCLUDE_DIR_DESCRIPTION}" )
set( LEFDEF_INCLUDE_DIR_DESCRIPTION "directory containing the LEF/DEF include files. E.g /opt/lefdef-5.6/include" )
set( LEFDEF_LIBRARY_DIR_DESCRIPTION "directory containing the LEF/DEF library files. E.g /opt/lefdef-5.6/lib" )
set( LEFDEF_DIR_MESSAGE "Set the LEFDEF_INCLUDE_DIR cmake cache entry to the ${LEFDEF_INCLUDE_DIR_DESCRIPTION}" )
# Don't even bother under Win32
if ( UNIX )
set ( LEFDEF_FOUND "YES" )
set ( LEFDEF_SEARCH_PATH $ENV{LEFDEF_TOP}
set ( LEFDEF_SEARCH_PATH "$ENV{LEFDEF_TOP}"
"/usr"
"/opt/lefdef-5.6"
"/opt/lefdef-5.7"
"/opt/lefdef")
"/opt/lefdef"
"$ENV{HOME}/oa/lefdef/5.7-s038"
)
message( STATUS "LEFDEF_SEARCH_PATH: ${LEFDEF_SEARCH_PATH}" )
set ( LEFDEF_LIBRARIES "" )
set ( LEFDEF_LIBRARY_SEARCH_PATH "" )
@ -83,11 +86,13 @@ if ( UNIX )
PATHS ${LEFDEF_SEARCH_PATH}
PATH_SUFFIXES "include" "include/lefdef"
DOC "The ${LEFDEF_INCLUDE_DIR_DESCRIPTION}" )
message( STATUS "LEFDEF_INCLUDE_DIR: ${LEFDEF_INCLUDE_DIR}" )
find_path ( LEFDEF_LIBRARY_DIR NAMES "libdef.a" "libdef_Debug.a"
PATHS ${LEFDEF_LIBRARY_SEARCH_PATH}
PATHS ${LEFDEF_SEARCH_PATH}
PATH_SUFFIXES "lib${LIB_SUFFIX}"
DOC "The ${LEFDEF_LIBRARY_DIR_DESCRIPTION}" )
message( STATUS "LEFDEF_LIBRARY_DIR: ${LEFDEF_LIBRARY_DIR}" )
if ( LEFDEF_INCLUDE_DIR AND LEFDEF_LIBRARY_DIR )
_find_lefdef_lib ( "CDEF" "cdef" )
@ -103,6 +108,7 @@ if ( UNIX )
endif ( LEFDEF_INCLUDE_DIR AND LEFDEF_LIBRARY_DIR )
if ( LEFDEF_FOUND )
message ( STATUS "Found LEF/DEF" )
add_definitions ( -DHAVE_LEFDEF )
if ( NOT LEFDEF_FIND_QUIETLY )
message ( STATUS "Found LEF/DEF" )

View File

@ -391,7 +391,7 @@ namespace {
Box abutmentBox ( cell->getAbutmentBox() );
const vector<RoutingLayerGauge*>& rg
= AllianceFramework::get()->getRoutingGauge("sxlib")->getLayerGauges();
= AllianceFramework::get()->getRoutingGauge()->getLayerGauges();
int status = 0;
@ -652,7 +652,7 @@ namespace {
{
FILE* defStream = NULL;
try {
string designName = getString(cell->getName()) + "export";
string designName = getString(cell->getName()) + "_export";
string path = "./" + designName + ".def";
cmess1 << " o Export DEF: <" << path << ">" << endl;

View File

@ -152,7 +152,7 @@ namespace {
{
if ( _framework == NULL ) {
_framework = AllianceFramework::get ();
CellGauge* cg = _framework->getCellGauge("sxlib");
CellGauge* cg = _framework->getCellGauge();
_sliceHeight = cg->getSliceHeight ();
_pitchWidth = cg->getPitch ();
@ -500,7 +500,7 @@ namespace {
LefDriver* driver = (LefDriver*)udata;
Technology* technology = DataBase::getDB()->getTechnology();
const vector<RoutingLayerGauge*>& rg
= driver->getFramework()->getRoutingGauge("sxlib")->getLayerGauges();
= driver->getFramework()->getRoutingGauge()->getLayerGauges();
int status = 0;
for ( size_t ilayer=0 ; ilayer<rg.size() ; ++ilayer ) {
@ -613,7 +613,7 @@ namespace {
LefDriver* driver = (LefDriver*)udata;
Technology* technology = DataBase::getDB()->getTechnology();
const vector<RoutingLayerGauge*>& rg
= driver->getFramework()->getRoutingGauge("sxlib")->getLayerGauges();
= driver->getFramework()->getRoutingGauge()->getLayerGauges();
int status = 0;
for ( size_t ilayer=1 ; ilayer<rg.size() ; ++ilayer ) {
@ -722,7 +722,7 @@ namespace CRL {
set<Cell*> cells;
if ( cell != NULL ) {
libraryName = getString(cell->getName()) + "export";
libraryName = getString(cell->getName()) + "_export";
forEach ( Instance*, iinstance, cell->getInstances() ) {
cells.insert ( (*iinstance)->getMasterCell() );