diff --git a/bootstrap/build.conf b/bootstrap/build.conf index f0b94d6c..ebfc43e2 100644 --- a/bootstrap/build.conf +++ b/bootstrap/build.conf @@ -14,11 +14,11 @@ projects = [ , { 'name' : "coriolis" , 'tools' : [ "bootstrap" , "lefdef" - , "flute" , "coloquinte" , "vlsisapd" , "hurricane" , "crlcore" + , "flute" , "etesian" , "anabatic" , "katana" diff --git a/flute/CMakeLists.txt b/flute/CMakeLists.txt index 5710a536..538aa3f0 100644 --- a/flute/CMakeLists.txt +++ b/flute/CMakeLists.txt @@ -16,5 +16,11 @@ check_distribution() setup_sysconfdir( "${CMAKE_INSTALL_PREFIX}" ) + find_package(PythonLibs 2 REQUIRED) + find_package(PythonSitePackages REQUIRED) + find_package(VLSISAPD REQUIRED) + find_package(HURRICANE REQUIRED) + find_package(CORIOLIS REQUIRED) + add_subdirectory( src ) add_subdirectory( cmake_modules ) diff --git a/flute/src/3.1/CMakeLists.txt b/flute/src/3.1/CMakeLists.txt index 7629d145..8609ce4f 100644 --- a/flute/src/3.1/CMakeLists.txt +++ b/flute/src/3.1/CMakeLists.txt @@ -1,31 +1,50 @@ # -*- mode: CMAKE explicit-buffer-name: "CMakeLists.txt" -*- - include_directories ( ${FLUTE_SOURCE_DIR}/src/3.1 - ) + include_directories( ${FLUTE_SOURCE_DIR}/src/3.1 + ${CORIOLIS_LIBRARIES} + ${HURRICANE_INCLUDE_DIR} + ${CONFIGURATION_INCLUDE_DIR} + ${PYTHON_INCLUDE_PATH} + ) - set ( includes flute.h - dl.h - mst2.h - err.h - heap.h - dist.h - global.h - neighbors.h - ) - set ( cpps flute.cpp - flute_mst.cpp - dist.cpp - dl.cpp - err.cpp - mst2.cpp - heap.cpp - neighbors.cpp - ) + set( includes flute.h + dl.h + mst2.h + err.h + heap.h + dist.h + global.h + neighbors.h + ) + set( cpps flute.cpp + flute_mst.cpp + dist.cpp + dl.cpp + err.cpp + mst2.cpp + heap.cpp + neighbors.cpp + ) + add_library( flute ${cpps} ) + set_target_properties( flute PROPERTIES VERSION 3.1 SOVERSION 3 ) + set( pyCpps PyFlute.cpp ) + set( depLibs flute + ${CORIOLIS_LIBRARIES} + ${HURRICANE_PYTHON_LIBRARIES} + ${UTILITIES_LIBRARY} + ${PYTHON_LIBRARIES} + -lutil + ) - add_library ( flute ${cpps} ) - set_target_properties ( flute PROPERTIES VERSION 3.1 SOVERSION 3 ) + add_python_module( "${pyCpps}" + None + "pyflute;1.0;1" + Flute + "${depLibs}" + include/coriolis2/flute + ) - install ( TARGETS flute DESTINATION lib${LIB_SUFFIX} ) - install ( FILES ${includes} DESTINATION include/flute/3.1 ) - install ( FILES POST9.dat - POWV9.dat DESTINATION share/flute/3.1 ) + install( TARGETS flute DESTINATION lib${LIB_SUFFIX} ) + install( FILES ${includes} DESTINATION include/flute/3.1 ) + install( FILES POST9.dat + POWV9.dat DESTINATION share/flute/3.1 ) diff --git a/flute/src/3.1/flute.h b/flute/src/3.1/flute.h index a2b59706..65f3ab66 100755 --- a/flute/src/3.1/flute.h +++ b/flute/src/3.1/flute.h @@ -19,7 +19,7 @@ namespace Flute { #define REMOVE_DUPLICATE_PIN 0 // Remove dup. pin for flute_wl() & flute() #ifndef DTYPE // Data type for distance -#define DTYPE int +#define DTYPE int64_t #endif diff --git a/katana/src/GlobalRoute.cpp b/katana/src/GlobalRoute.cpp index 6533bc72..808e3c5d 100644 --- a/katana/src/GlobalRoute.cpp +++ b/katana/src/GlobalRoute.cpp @@ -446,9 +446,9 @@ namespace Katana { updateEstimateDensityOfPath( this, targets[0], targets[1], weight ); return; default: - { int accuracy = 3; - int* xs = new int [targets.size()]; - int* ys = new int [targets.size()]; + { int accuracy = 3; + int64_t* xs = new int64_t [targets.size()]; + int64_t* ys = new int64_t [targets.size()]; for ( size_t itarget=0 ; itargetgetCenter(); diff --git a/knik/src/Graph.cpp b/knik/src/Graph.cpp index 91335776..96353d76 100644 --- a/knik/src/Graph.cpp +++ b/knik/src/Graph.cpp @@ -1528,11 +1528,11 @@ void Graph::Monotonic() Tree* Graph::createFluteTree() // **************************** { - int accuracy = 3; // accuracy for flute (by default 3) - int d = _vertexes_to_route.size(); // degre du net, ie nombre de routingPads - int *x = new int [d]; // x coordinates of the vertexes - int *y = new int [d]; // y coordinates of the vertexes - Tree* flutetree = new Tree; // the flute Steiner Tree + int accuracy = 3; // accuracy for flute (by default 3) + int d = _vertexes_to_route.size(); // degre du net, ie nombre de routingPads + int64_t *x = new int64_t [d]; // x coordinates of the vertexes + int64_t *y = new int64_t [d]; // y coordinates of the vertexes + Tree* flutetree = new Tree; // the flute Steiner Tree //cout << "Net : " << _working_net << endl; // scans _working_net to find x,y coordinates and fill x, y and d