diff --git a/.gitmodules b/.gitmodules index aeba9f68dba..e12b83e126e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -11,6 +11,9 @@ path = src/replace url = https://github.com/The-OpenROAD-Project/RePlAce.git branch = openroad +[submodule "src/ioPlacer"] + path = src/ioPlacer + url = https://github.com/The-OpenROAD-Project/ioPlacer.git [submodule "src/opendp"] path = src/opendp url = https://github.com/The-OpenROAD-Project/OpenDP.git diff --git a/include/openroad/OpenRoad.hh b/include/openroad/OpenRoad.hh index 66599cab1a6..3d36711dc71 100644 --- a/include/openroad/OpenRoad.hh +++ b/include/openroad/OpenRoad.hh @@ -28,6 +28,10 @@ class dbNetwork; class Resizer; } +namespace ioPlacer { +class IOPlacementKernel; +} + namespace FastRoute { class FastRouteKernel; } @@ -82,6 +86,7 @@ private: dbVerilogNetwork *verilog_network_; sta::dbSta *sta_; sta::Resizer *resizer_; + ioPlacer::IOPlacementKernel *ioPlacer_; opendp::opendp_external *opendp_; FastRoute::FastRouteKernel *fastRoute_; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e3252943d9f..3c0e29a7180 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -21,6 +21,8 @@ set(OPENDB_WRAP ${CMAKE_CURRENT_BINARY_DIR}/OpenDB_wrap.cc) set(RESIZER_HOME ${PROJECT_SOURCE_DIR}/src/resizer) set(OPENDP_HOME ${PROJECT_SOURCE_DIR}/src/opendp) +set(IOPLACER_HOME ${PROJECT_SOURCE_DIR}/src/ioPlacer) + set(FASTROUTE_HOME ${PROJECT_SOURCE_DIR}/src/FastRoute4-lefdef) set(OPENROAD_WRAP ${CMAKE_CURRENT_BINARY_DIR}/OpenRoad_wrap.cc) @@ -70,6 +72,7 @@ add_custom_command(OUTPUT ${OPENROAD_WRAP} DEPENDS OpenRoad.i InitFloorplan.i ) + ################################################################ # # Library dependencies @@ -160,6 +163,7 @@ add_subdirectory(resizer) add_subdirectory(flute3) add_subdirectory(replace) add_subdirectory(opendp) +add_subdirectory(ioPlacer) add_subdirectory(FastRoute4-lefdef) ################################################################ @@ -182,6 +186,7 @@ target_link_libraries(openroad replace opendp resizer + ioPlacer flute dbSta OpenSTA diff --git a/src/OpenRoad.cc b/src/OpenRoad.cc index 4bcc78353b5..1a9a633a433 100644 --- a/src/OpenRoad.cc +++ b/src/OpenRoad.cc @@ -28,6 +28,9 @@ #include "openroad/InitOpenRoad.hh" #include "InitFlute.hh" + +#include "ioPlacer/src/MakeIoplacer.h" + #include "resizer/MakeResizer.hh" #include "opendp/MakeOpendp.h" #include "replace/src/MakeReplace.h" @@ -43,6 +46,7 @@ extern "C" { extern int Openroad_Init(Tcl_Interp *interp); extern int Opendbtcl_Init(Tcl_Interp *interp); extern int Replace_Init(Tcl_Interp *interp); +extern int Ioplacer_Init(Tcl_Interp *interp); extern int Fastroute_Init(Tcl_Interp *interp); } @@ -96,6 +100,7 @@ OpenRoad::init(Tcl_Interp *tcl_interp, db_ = dbDatabase::create(); sta_ = makeDbSta(); verilog_network_ = makeDbVerilogNetwork(); + ioPlacer_ = (ioPlacer::IOPlacementKernel*) makeIoplacer(); resizer_ = makeResizer(); opendp_ = makeOpendp(); fastRoute_ = (FastRoute::FastRouteKernel*) makeFastRoute(); @@ -109,6 +114,7 @@ OpenRoad::init(Tcl_Interp *tcl_interp, initDbSta(this); initResizer(this); initDbVerilogNetwork(this); + initIoplacer(this); initFlute(prog_arg); initReplace(this); initOpendp(this); diff --git a/src/ioPlacer b/src/ioPlacer new file mode 160000 index 00000000000..0a3a2886b0e --- /dev/null +++ b/src/ioPlacer @@ -0,0 +1 @@ +Subproject commit 0a3a2886b0ec6876ec45a3f899c09ff647141e9a