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:
parent
9ac199f11b
commit
2906d90b04
|
@ -44,11 +44,11 @@ macro ( _find_lefdef_lib varname libname )
|
||||||
|
|
||||||
if( 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 )
|
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 )
|
endif()
|
||||||
|
|
||||||
if( 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 )
|
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 )
|
endif()
|
||||||
|
|
||||||
if( LEFDEF_${varname}_LIBRARY_RELEASE )
|
if( LEFDEF_${varname}_LIBRARY_RELEASE )
|
||||||
list( APPEND LEFDEF_LIBRARIES "optimized" ${LEFDEF_${varname}_LIBRARY_RELEASE}
|
list( APPEND LEFDEF_LIBRARIES "optimized" ${LEFDEF_${varname}_LIBRARY_RELEASE}
|
||||||
|
@ -56,10 +56,10 @@ macro ( _find_lefdef_lib varname libname )
|
||||||
set( LEFDEF_${varname}_LIBRARY_FOUND 1 )
|
set( LEFDEF_${varname}_LIBRARY_FOUND 1 )
|
||||||
mark_as_advanced( LEFDEF_${varname}_LIBRARY_RELEASE
|
mark_as_advanced( LEFDEF_${varname}_LIBRARY_RELEASE
|
||||||
LEFDEF_${varname}_LIBRARY_DEBUG )
|
LEFDEF_${varname}_LIBRARY_DEBUG )
|
||||||
else ( LEFDEF_${varname}_LIBRARY_RELEASE )
|
else()
|
||||||
set ( LEFDEF_FOUND "NO" )
|
set ( LEFDEF_FOUND "NO" )
|
||||||
endif ( LEFDEF_${varname}_LIBRARY_RELEASE )
|
endif()
|
||||||
endmacro ( _find_lefdef_lib )
|
endmacro()
|
||||||
|
|
||||||
|
|
||||||
set( LEFDEF_INCLUDE_DIR_DESCRIPTION "directory containing the LEF/DEF include files. E.g /opt/lefdef-5.6/include" )
|
set( LEFDEF_INCLUDE_DIR_DESCRIPTION "directory containing the LEF/DEF include files. E.g /opt/lefdef-5.6/include" )
|
||||||
|
@ -70,11 +70,14 @@ set ( LEFDEF_DIR_MESSAGE "Set the LEFDEF_INCLUDE_DIR cmake cache ent
|
||||||
# Don't even bother under Win32
|
# Don't even bother under Win32
|
||||||
if ( UNIX )
|
if ( UNIX )
|
||||||
set ( LEFDEF_FOUND "YES" )
|
set ( LEFDEF_FOUND "YES" )
|
||||||
set ( LEFDEF_SEARCH_PATH $ENV{LEFDEF_TOP}
|
set ( LEFDEF_SEARCH_PATH "$ENV{LEFDEF_TOP}"
|
||||||
"/usr"
|
"/usr"
|
||||||
"/opt/lefdef-5.6"
|
"/opt/lefdef-5.6"
|
||||||
"/opt/lefdef-5.7"
|
"/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_LIBRARIES "" )
|
||||||
set ( LEFDEF_LIBRARY_SEARCH_PATH "" )
|
set ( LEFDEF_LIBRARY_SEARCH_PATH "" )
|
||||||
|
@ -83,11 +86,13 @@ if ( UNIX )
|
||||||
PATHS ${LEFDEF_SEARCH_PATH}
|
PATHS ${LEFDEF_SEARCH_PATH}
|
||||||
PATH_SUFFIXES "include" "include/lefdef"
|
PATH_SUFFIXES "include" "include/lefdef"
|
||||||
DOC "The ${LEFDEF_INCLUDE_DIR_DESCRIPTION}" )
|
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"
|
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}"
|
PATH_SUFFIXES "lib${LIB_SUFFIX}"
|
||||||
DOC "The ${LEFDEF_LIBRARY_DIR_DESCRIPTION}" )
|
DOC "The ${LEFDEF_LIBRARY_DIR_DESCRIPTION}" )
|
||||||
|
message( STATUS "LEFDEF_LIBRARY_DIR: ${LEFDEF_LIBRARY_DIR}" )
|
||||||
|
|
||||||
if ( LEFDEF_INCLUDE_DIR AND LEFDEF_LIBRARY_DIR )
|
if ( LEFDEF_INCLUDE_DIR AND LEFDEF_LIBRARY_DIR )
|
||||||
_find_lefdef_lib ( "CDEF" "cdef" )
|
_find_lefdef_lib ( "CDEF" "cdef" )
|
||||||
|
@ -103,6 +108,7 @@ if ( UNIX )
|
||||||
endif ( LEFDEF_INCLUDE_DIR AND LEFDEF_LIBRARY_DIR )
|
endif ( LEFDEF_INCLUDE_DIR AND LEFDEF_LIBRARY_DIR )
|
||||||
|
|
||||||
if ( LEFDEF_FOUND )
|
if ( LEFDEF_FOUND )
|
||||||
|
message ( STATUS "Found LEF/DEF" )
|
||||||
add_definitions ( -DHAVE_LEFDEF )
|
add_definitions ( -DHAVE_LEFDEF )
|
||||||
if ( NOT LEFDEF_FIND_QUIETLY )
|
if ( NOT LEFDEF_FIND_QUIETLY )
|
||||||
message ( STATUS "Found LEF/DEF" )
|
message ( STATUS "Found LEF/DEF" )
|
||||||
|
|
|
@ -391,7 +391,7 @@ namespace {
|
||||||
Box abutmentBox ( cell->getAbutmentBox() );
|
Box abutmentBox ( cell->getAbutmentBox() );
|
||||||
|
|
||||||
const vector<RoutingLayerGauge*>& rg
|
const vector<RoutingLayerGauge*>& rg
|
||||||
= AllianceFramework::get()->getRoutingGauge("sxlib")->getLayerGauges();
|
= AllianceFramework::get()->getRoutingGauge()->getLayerGauges();
|
||||||
|
|
||||||
int status = 0;
|
int status = 0;
|
||||||
|
|
||||||
|
@ -652,7 +652,7 @@ namespace {
|
||||||
{
|
{
|
||||||
FILE* defStream = NULL;
|
FILE* defStream = NULL;
|
||||||
try {
|
try {
|
||||||
string designName = getString(cell->getName()) + "export";
|
string designName = getString(cell->getName()) + "_export";
|
||||||
string path = "./" + designName + ".def";
|
string path = "./" + designName + ".def";
|
||||||
|
|
||||||
cmess1 << " o Export DEF: <" << path << ">" << endl;
|
cmess1 << " o Export DEF: <" << path << ">" << endl;
|
||||||
|
|
|
@ -152,7 +152,7 @@ namespace {
|
||||||
{
|
{
|
||||||
if ( _framework == NULL ) {
|
if ( _framework == NULL ) {
|
||||||
_framework = AllianceFramework::get ();
|
_framework = AllianceFramework::get ();
|
||||||
CellGauge* cg = _framework->getCellGauge("sxlib");
|
CellGauge* cg = _framework->getCellGauge();
|
||||||
|
|
||||||
_sliceHeight = cg->getSliceHeight ();
|
_sliceHeight = cg->getSliceHeight ();
|
||||||
_pitchWidth = cg->getPitch ();
|
_pitchWidth = cg->getPitch ();
|
||||||
|
@ -500,7 +500,7 @@ namespace {
|
||||||
LefDriver* driver = (LefDriver*)udata;
|
LefDriver* driver = (LefDriver*)udata;
|
||||||
Technology* technology = DataBase::getDB()->getTechnology();
|
Technology* technology = DataBase::getDB()->getTechnology();
|
||||||
const vector<RoutingLayerGauge*>& rg
|
const vector<RoutingLayerGauge*>& rg
|
||||||
= driver->getFramework()->getRoutingGauge("sxlib")->getLayerGauges();
|
= driver->getFramework()->getRoutingGauge()->getLayerGauges();
|
||||||
|
|
||||||
int status = 0;
|
int status = 0;
|
||||||
for ( size_t ilayer=0 ; ilayer<rg.size() ; ++ilayer ) {
|
for ( size_t ilayer=0 ; ilayer<rg.size() ; ++ilayer ) {
|
||||||
|
@ -613,7 +613,7 @@ namespace {
|
||||||
LefDriver* driver = (LefDriver*)udata;
|
LefDriver* driver = (LefDriver*)udata;
|
||||||
Technology* technology = DataBase::getDB()->getTechnology();
|
Technology* technology = DataBase::getDB()->getTechnology();
|
||||||
const vector<RoutingLayerGauge*>& rg
|
const vector<RoutingLayerGauge*>& rg
|
||||||
= driver->getFramework()->getRoutingGauge("sxlib")->getLayerGauges();
|
= driver->getFramework()->getRoutingGauge()->getLayerGauges();
|
||||||
|
|
||||||
int status = 0;
|
int status = 0;
|
||||||
for ( size_t ilayer=1 ; ilayer<rg.size() ; ++ilayer ) {
|
for ( size_t ilayer=1 ; ilayer<rg.size() ; ++ilayer ) {
|
||||||
|
@ -722,7 +722,7 @@ namespace CRL {
|
||||||
set<Cell*> cells;
|
set<Cell*> cells;
|
||||||
|
|
||||||
if ( cell != NULL ) {
|
if ( cell != NULL ) {
|
||||||
libraryName = getString(cell->getName()) + "export";
|
libraryName = getString(cell->getName()) + "_export";
|
||||||
|
|
||||||
forEach ( Instance*, iinstance, cell->getInstances() ) {
|
forEach ( Instance*, iinstance, cell->getInstances() ) {
|
||||||
cells.insert ( (*iinstance)->getMasterCell() );
|
cells.insert ( (*iinstance)->getMasterCell() );
|
||||||
|
|
Loading…
Reference in New Issue