From a376d34cfea2b2b5655c20459e78ea13e15f1cd3 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Wed, 23 Nov 2016 11:29:28 +0100 Subject: [PATCH] Accurate Qwt detection (Qt4 vs. Qt5). DbU forced to 64 bits. * Change: In bootstrap/FindBootstrap.cmake, new setup_qwt() macro to link with the Qwt library build with Qt 5 *or* Qt 4 and not the first found. * Change: In Hurricane/DbU, uses instead of to always be sure that we use 64 bits integers for coordinates. * Change: In Katana/KatanaEngine::_gutKatana() checks that the RoutingPlanes have been allocateds before trying to delete them. --- bootstrap/cmake_modules/FindBootstrap.cmake | 36 +++++++++++++++++++ crlcore/etc/180/scn6m_deep_09/technology.conf | 6 ++++ crlcore/etc/scmos_deep_018/kite.conf | 9 +++++ hurricane/src/hurricane/hurricane/DbU.h | 3 +- katana/src/KatanaEngine.cpp | 2 +- 5 files changed, 54 insertions(+), 2 deletions(-) diff --git a/bootstrap/cmake_modules/FindBootstrap.cmake b/bootstrap/cmake_modules/FindBootstrap.cmake index b76b67fc..3db6083c 100644 --- a/bootstrap/cmake_modules/FindBootstrap.cmake +++ b/bootstrap/cmake_modules/FindBootstrap.cmake @@ -267,6 +267,42 @@ endmacro() +# +# Find Qwt, correlated to the Qt version. +# + macro(setup_qwt) + if(WITH_QT5) + find_path(QWT_INCLUDE_DIR NAMES qwt.h + PATHS /usr/include/qt5 + /usr/include + PATH_SUFFIXES qwt ) + find_library(QWT_LIBRARY NAMES qwt-qt5 + PATHS /usr/lib${LIB_SUFFIX} ) + else() + find_path(QWT_INCLUDE_DIR NAMES qwt.h + PATHS /usr/include + /usr/include/qt4 + PATH_SUFFIXES qwt ) + find_library(QWT_LIBRARY NAMES qwt + PATHS /usr/lib${LIB_SUFFIX} ) + endif() + + if( QWT_INCLUDE_DIR AND QWT_LIBRARY) + set(QWT_FOUND TRUE) + endif() + + if(QWT_FOUND) + if(NOT QWT_FIND_QUIETLY) + message(STATUS "-- Found Qwt: ${QWT_LIBRARY}") + endif() + else() + if(QWT_FIND_REQUIRED) + message(FATAL_ERROR "-- Could not find Qwt") + endif() + endif() + endmacro() + + # # Guess the value of SYS_CONF_DIR according to INSTALLDIR. # if INSTALLDIR is either /usr or /opt, we uses the system-wide /etc, diff --git a/crlcore/etc/180/scn6m_deep_09/technology.conf b/crlcore/etc/180/scn6m_deep_09/technology.conf index 7e178ed2..d1f00346 100644 --- a/crlcore/etc/180/scn6m_deep_09/technology.conf +++ b/crlcore/etc/180/scn6m_deep_09/technology.conf @@ -2,6 +2,12 @@ from Hurricane import DbU +# MOSIS SCN6M_DEEP is a portable technology where lengths are expresseds +# in symbolic unit (lambda). We only know that the lambda is equal to half +# the value of the technology, that is 180nm gives 90nm. We have no information +# about the foundry grid. +# +# We set the foundry grid to .005um and set the gridsPerLambda to 18. technoConfig = { 'name' : 'scn6m_deep' , 'gridValue' : 0.005 diff --git a/crlcore/etc/scmos_deep_018/kite.conf b/crlcore/etc/scmos_deep_018/kite.conf index 30300c3c..8c5f2b61 100644 --- a/crlcore/etc/scmos_deep_018/kite.conf +++ b/crlcore/etc/scmos_deep_018/kite.conf @@ -20,6 +20,15 @@ parametersTable = \ , ("kite.localRipupLimit" ,TypeInt ,9 , { 'min':1 } ) , ("kite.globalRipupLimit" ,TypeInt ,5 , { 'min':1 } ) , ("kite.longGlobalRipupLimit" ,TypeInt ,5 , { 'min':1 } ) + # Anabatic parameters are temporarily hosted here. + , ("anabatic.edgeLength" ,TypeInt ,24 ) + , ("anabatic.edgeWidth" ,TypeInt ,4 ) + , ("anabatic.edgeCostH" ,TypeDouble ,9.0 ) + , ("anabatic.edgeCostK" ,TypeDouble ,-10.0 ) + , ("anabatic.gcell.displayMode" ,TypeEnumerate ,1 + , { 'values':( ("Boundary" , 1) + , ("Density" , 2) ) } + ) ) diff --git a/hurricane/src/hurricane/hurricane/DbU.h b/hurricane/src/hurricane/hurricane/DbU.h index a209f341..c8ecabf9 100644 --- a/hurricane/src/hurricane/hurricane/DbU.h +++ b/hurricane/src/hurricane/hurricane/DbU.h @@ -33,6 +33,7 @@ #define HURRICANE_DBU_H +#include #include #include "hurricane/Commons.h" @@ -63,7 +64,7 @@ namespace Hurricane { , Nearest = 4 }; public: - typedef long Unit; + typedef std::int64_t Unit; public: static void checkGridBound ( double value ); diff --git a/katana/src/KatanaEngine.cpp b/katana/src/KatanaEngine.cpp index b8b5239f..90513cd3 100644 --- a/katana/src/KatanaEngine.cpp +++ b/katana/src/KatanaEngine.cpp @@ -561,7 +561,7 @@ namespace Katana { if (getState() < EngineState::EngineGutted) { openSession(); - size_t maxDepth = getConfiguration()->getRoutingGauge()->getDepth(); + size_t maxDepth = std::min( getConfiguration()->getRoutingGauge()->getDepth(), _routingPlanes.size() ); for ( size_t depth=0 ; depth < maxDepth ; depth++ ) { _routingPlanes[depth]->destroy(); }