Skip to content

Commit 58f094f

Browse files
add python api for saving design layout to json
1 parent 526335a commit 58f094f

10 files changed

Lines changed: 43 additions & 40 deletions

File tree

cmake/rust.cmake

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,38 @@
1+
macro(SETUP_RUST_PROJECT)
2+
if(NOT DEFINED RUST_BUILD_ROOT)
3+
set(RUST_BUILD_ROOT ${CMAKE_CURRENT_BINARY_DIR}/${RUST_PROJECT_NAME}-rust)
4+
endif()
5+
6+
set(RUST_EP_PREFIX_DIR ${RUST_BUILD_ROOT}/ep)
7+
set(RUST_EP_BINARY_DIR ${RUST_BUILD_ROOT}/build)
8+
set(RUST_TARGET_DIR ${RUST_EP_BINARY_DIR}/target)
9+
10+
if(CMAKE_BUILD_TYPE MATCHES Debug)
11+
set(RUST_LIB_PATH ${RUST_TARGET_DIR}/debug/lib${RUST_PROJECT_NAME}.${RUST_LIB_TYPE})
12+
set(RUST_BUILD_CMD_OPTION "")
13+
else()
14+
set(RUST_LIB_PATH ${RUST_TARGET_DIR}/release/lib${RUST_PROJECT_NAME}.${RUST_LIB_TYPE})
15+
set(RUST_BUILD_CMD_OPTION "--release")
16+
endif()
17+
endmacro()
18+
119
macro(ADD_EXTERNAL_PROJ proj_name)
220

321
include(ExternalProject)
422

23+
if(NOT DEFINED RUST_EP_PREFIX_DIR OR NOT DEFINED RUST_EP_BINARY_DIR OR NOT DEFINED RUST_TARGET_DIR)
24+
SETUP_RUST_PROJECT()
25+
endif()
26+
527
ExternalProject_Add(
628
${RUST_PROJECT_NAME}
7-
PREFIX ${RUST_PROJECT_DIR}
29+
PREFIX ${RUST_EP_PREFIX_DIR}
830
SOURCE_DIR ${RUST_PROJECT_DIR}
9-
BINARY_DIR ${RUST_PROJECT_DIR}
31+
BINARY_DIR ${RUST_EP_BINARY_DIR}
1032
CONFIGURE_COMMAND ""
11-
BUILD_COMMAND cargo build ${RUST_BUILD_CMD_OPTION}
33+
BUILD_COMMAND ${CMAKE_COMMAND} -E env
34+
CARGO_TARGET_DIR=${RUST_TARGET_DIR}
35+
cargo build --manifest-path ${RUST_PROJECT_DIR}/Cargo.toml ${RUST_BUILD_CMD_OPTION}
1236
INSTALL_COMMAND ""
1337
BUILD_ALWAYS 1
1438
BUILD_BYPRODUCTS ${RUST_LIB_PATH}
@@ -18,4 +42,4 @@ add_dependencies(${proj_name} ${RUST_PROJECT_NAME})
1842

1943
endmacro()
2044

21-
include_directories(${HOME_DATABASE}/manager/parser/rust-common)
45+
include_directories(${HOME_DATABASE}/manager/parser/rust-common)

src/database/manager/parser/json/GJWriter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#include <unordered_map>
1919
#include <vector>
2020
#include <string.h>
21-
// #include "/home/shuyuz/iEDA/src/platform/data_manager/idm.h"
21+
2222
#include <fstream>
2323
#define sref_expension 0
2424
namespace idb {

src/database/manager/parser/liberty/CMakeLists.txt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,7 @@ set(RUST_PROJECT_NAME liberty_parser)
1212
set(RUST_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib-rust/liberty-parser)
1313
set(RUST_LIB_TYPE a)
1414

15-
if(CMAKE_BUILD_TYPE MATCHES Debug)
16-
set(RUST_LIB_PATH ${RUST_PROJECT_DIR}/target/debug/lib${RUST_PROJECT_NAME}.${RUST_LIB_TYPE})
17-
set(RUST_BUILD_CMD_OPTION "")
18-
else()
19-
set(RUST_LIB_PATH ${RUST_PROJECT_DIR}/target/release/lib${RUST_PROJECT_NAME}.${RUST_LIB_TYPE})
20-
set(RUST_BUILD_CMD_OPTION "--release")
21-
endif()
15+
SETUP_RUST_PROJECT()
2216
if(IEDA_BUILD_AS_THIRDPARTY)
2317
install(FILES ${RUST_LIB_PATH} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
2418
endif()

src/database/manager/parser/spef/CMakeLists.txt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,7 @@ set(RUST_PROJECT_NAME spef_parser)
1212
set(RUST_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/spef-parser)
1313
set(RUST_LIB_TYPE a)
1414

15-
if(CMAKE_BUILD_TYPE MATCHES Debug)
16-
set(RUST_LIB_PATH ${RUST_PROJECT_DIR}/target/debug/lib${RUST_PROJECT_NAME}.${RUST_LIB_TYPE})
17-
set(RUST_BUILD_CMD_OPTION "")
18-
else()
19-
set(RUST_LIB_PATH ${RUST_PROJECT_DIR}/target/release/lib${RUST_PROJECT_NAME}.${RUST_LIB_TYPE})
20-
set(RUST_BUILD_CMD_OPTION "--release")
21-
endif()
15+
SETUP_RUST_PROJECT()
2216
if(IEDA_BUILD_AS_THIRDPARTY)
2317
install(FILES ${RUST_LIB_PATH} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
2418
endif()

src/database/manager/parser/vcd/CMakeLists.txt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,7 @@ set(RUST_PROJECT_NAME vcd_parser)
1111
set(RUST_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vcd_parser)
1212
set(RUST_LIB_TYPE a)
1313

14-
if(CMAKE_BUILD_TYPE MATCHES Debug)
15-
set(RUST_LIB_PATH ${RUST_PROJECT_DIR}/target/debug/lib${RUST_PROJECT_NAME}.${RUST_LIB_TYPE})
16-
set(RUST_BUILD_CMD_OPTION "")
17-
else()
18-
set(RUST_LIB_PATH ${RUST_PROJECT_DIR}/target/release/lib${RUST_PROJECT_NAME}.${RUST_LIB_TYPE})
19-
set(RUST_BUILD_CMD_OPTION "--release")
20-
endif()
14+
SETUP_RUST_PROJECT()
2115

2216
message(STATUS "vcd parser rust lib path ${RUST_LIB_PATH}")
2317

src/database/manager/parser/verilog/CMakeLists.txt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,7 @@ set(RUST_PROJECT_NAME verilog_parser)
3232
set(RUST_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/verilog-rust/verilog-parser)
3333
set(RUST_LIB_TYPE a)
3434

35-
if(CMAKE_BUILD_TYPE MATCHES Debug)
36-
set(RUST_LIB_PATH ${RUST_PROJECT_DIR}/target/debug/lib${RUST_PROJECT_NAME}.${RUST_LIB_TYPE})
37-
set(RUST_BUILD_CMD_OPTION "")
38-
else()
39-
set(RUST_LIB_PATH ${RUST_PROJECT_DIR}/target/release/lib${RUST_PROJECT_NAME}.${RUST_LIB_TYPE})
40-
set(RUST_BUILD_CMD_OPTION "--release")
41-
endif()
35+
SETUP_RUST_PROJECT()
4236

4337
if(IEDA_BUILD_AS_THIRDPARTY)
4438
install(FILES ${RUST_LIB_PATH} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)

src/interface/python/py_idb/py_db.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,11 @@ bool saveGDSII(const std::string& gds_name)
7171
return dmInst->saveGDSII(gds_name);
7272
}
7373

74+
bool saveJson(const std::string& path)
75+
{
76+
std::string options = "";
77+
78+
return dmInst->saveJSON(path, options);
79+
}
80+
7481
} // namespace python_interface

src/interface/python/py_idb/py_db.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,6 @@ bool saveDef(const std::string& def_name);
3131
bool saveMacroTCL(const std::string& tcl_name);
3232
bool saveNetList(const std::string& netlist_path, std::set<std::string> exclude_cell_names = {}, bool is_add_space_for_escape_name = false);
3333
bool saveGDSII(const std::string& gds_name);
34+
bool saveJson(const std::string& path);
3435

3536
} // namespace python_interface

src/interface/python/py_idb/py_register_idb.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ void register_idb(py::module& m)
4141
m.def("netlist_save", saveNetList, py::arg("netlist_path"), py::arg("exclude_cell_names") = std::set<std::string>{},
4242
py::arg("is_add_space_for_escape_name") = false);
4343
m.def("gds_save", saveGDSII, py::arg("gds_name"));
44+
m.def("json_save", saveJson, py::arg("path"));
4445
}
4546

4647
void register_idb_op(pybind11::module& m)

src/operation/iIR/source/iir-rust/CMakeLists.txt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,7 @@ set(RUST_PROJECT_NAME iir)
1414
set(RUST_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/iir)
1515
set(RUST_LIB_TYPE a)
1616

17-
if(CMAKE_BUILD_TYPE MATCHES Debug)
18-
set(RUST_LIB_PATH ${RUST_PROJECT_DIR}/target/debug/lib${RUST_PROJECT_NAME}.${RUST_LIB_TYPE})
19-
set(RUST_BUILD_CMD_OPTION "")
20-
else()
21-
set(RUST_LIB_PATH ${RUST_PROJECT_DIR}/target/release/lib${RUST_PROJECT_NAME}.${RUST_LIB_TYPE})
22-
set(RUST_BUILD_CMD_OPTION "--release")
23-
endif()
17+
SETUP_RUST_PROJECT()
2418

2519
message(STATUS "iIR rust lib path ${RUST_LIB_PATH}")
2620

0 commit comments

Comments
 (0)