From 7e3f6ab874681033c1d4256488167e5ec8fc1e41 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 30 Oct 2024 17:21:18 -0300 Subject: [PATCH 01/12] rsz: add rcx object Signed-off-by: Eder Monteiro --- src/rsz/include/rsz/Resizer.hh | 13 ++++++++++--- src/rsz/src/CMakeLists.txt | 2 ++ src/rsz/src/MakeResizer.cc | 1 + src/rsz/src/Resizer.cc | 3 +++ src/rsz/test/cpp/CMakeLists.txt | 1 + src/rsz/test/cpp/TestBufferRemoval.cc | 4 +++- 6 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/rsz/include/rsz/Resizer.hh b/src/rsz/include/rsz/Resizer.hh index 1e15243e97f..3f6041eea33 100644 --- a/src/rsz/include/rsz/Resizer.hh +++ b/src/rsz/include/rsz/Resizer.hh @@ -51,6 +51,10 @@ class GlobalRouter; class IncrementalGRoute; } // namespace grt +namespace rcx { + class Ext; +} // namespace rcx + namespace stt { class SteinerTreeBuilder; } @@ -77,6 +81,8 @@ using stt::SteinerTreeBuilder; using grt::GlobalRouter; using grt::IncrementalGRoute; +using rcx::Ext; + using sta::ArcDelay; using sta::Cell; using sta::Corner; @@ -194,6 +200,7 @@ class Resizer : public dbStaState SteinerTreeBuilder* stt_builder, GlobalRouter* global_router, dpl::Opendp* opendp, + rcx::Ext* openrcx, std::unique_ptr steiner_renderer); void setLayerRC(dbTechLayer* layer, const Corner* corner, @@ -240,9 +247,9 @@ class Resizer : public dbStaState double wireClkCapacitance(const Corner* corner) const; double wireClkHCapacitance(const Corner* corner) const; double wireClkVCapacitance(const Corner* corner) const; - void estimateParasitics(ParasiticsSrc src); void estimateParasitics(ParasiticsSrc src, - std::map& spef_streams_); + std::map& spef_streams_, + const char* ext_model_path); void estimateWireParasitics(SpefWriter* spef_writer = nullptr); void estimateWireParasitic(const Net* net, SpefWriter* spef_writer = nullptr); void estimateWireParasitic(const Pin* drvr_pin, @@ -591,7 +598,6 @@ class Resizer : public dbStaState void incrementalParasiticsBegin(); void incrementalParasiticsEnd(); - void ensureParasitics(); void updateParasitics(bool save_guides = false); void ensureWireParasitic(const Pin* drvr_pin); void ensureWireParasitic(const Pin* drvr_pin, const Net* net); @@ -709,6 +715,7 @@ class Resizer : public dbStaState SteinerTreeBuilder* stt_builder_ = nullptr; GlobalRouter* global_router_ = nullptr; IncrementalGRoute* incr_groute_ = nullptr; + Ext* openrcx_ = nullptr; dbNetwork* db_network_ = nullptr; dbDatabase* db_ = nullptr; dbBlock* block_ = nullptr; diff --git a/src/rsz/src/CMakeLists.txt b/src/rsz/src/CMakeLists.txt index e4d41854c67..871376edd46 100644 --- a/src/rsz/src/CMakeLists.txt +++ b/src/rsz/src/CMakeLists.txt @@ -79,6 +79,7 @@ target_link_libraries(rsz_lib OpenSTA dbSta_lib grt_lib + rcx_lib utl_lib ) @@ -91,6 +92,7 @@ target_link_libraries(rsz dbSta grt gui + rcx utl ) diff --git a/src/rsz/src/MakeResizer.cc b/src/rsz/src/MakeResizer.cc index 59c33e0b78d..3e7de689257 100644 --- a/src/rsz/src/MakeResizer.cc +++ b/src/rsz/src/MakeResizer.cc @@ -74,6 +74,7 @@ void initResizer(OpenRoad* openroad) openroad->getSteinerTreeBuilder(), openroad->getGlobalRouter(), openroad->getOpendp(), + openroad->getOpenRCX(), std::move(steiner_renderer)); // Define swig TCL commands. Rsz_Init(interp); diff --git a/src/rsz/src/Resizer.cc b/src/rsz/src/Resizer.cc index 64f6bb70a61..a9cc8b339b9 100644 --- a/src/rsz/src/Resizer.cc +++ b/src/rsz/src/Resizer.cc @@ -47,6 +47,7 @@ #include "RepairSetup.hh" #include "boost/multi_array.hpp" #include "db_sta/dbNetwork.hh" +#include "rcx/ext.h" #include "sta/ArcDelayCalc.hh" #include "sta/Bfs.hh" #include "sta/Corner.hh" @@ -156,6 +157,7 @@ void Resizer::init(Logger* logger, SteinerTreeBuilder* stt_builder, GlobalRouter* global_router, dpl::Opendp* opendp, + rcx::Ext* openrcx, std::unique_ptr steiner_renderer) { opendp_ = opendp; @@ -166,6 +168,7 @@ void Resizer::init(Logger* logger, stt_builder_ = stt_builder; global_router_ = global_router; incr_groute_ = nullptr; + openrcx_ = openrcx; db_network_ = sta->getDbNetwork(); resized_multi_output_insts_ = InstanceSet(db_network_); inserted_buffer_set_ = InstanceSet(db_network_); diff --git a/src/rsz/test/cpp/CMakeLists.txt b/src/rsz/test/cpp/CMakeLists.txt index 93885de5a1b..7ca7df2112c 100644 --- a/src/rsz/test/cpp/CMakeLists.txt +++ b/src/rsz/test/cpp/CMakeLists.txt @@ -11,6 +11,7 @@ target_link_libraries(TestBufRem1 rsz_lib grt_lib dpl_lib + rcx_lib stt_lib ${TCL_LIBRARY} ) diff --git a/src/rsz/test/cpp/TestBufferRemoval.cc b/src/rsz/test/cpp/TestBufferRemoval.cc index cbe312eabd8..488e3697521 100644 --- a/src/rsz/test/cpp/TestBufferRemoval.cc +++ b/src/rsz/test/cpp/TestBufferRemoval.cc @@ -24,6 +24,7 @@ #include "grt/GlobalRouter.h" #include "gtest/gtest.h" #include "odb/lefin.h" +#include "rcx/ext.h" #include "rsz/MakeResizer.hh" #include "rsz/Resizer.hh" #include "sta/Corner.hh" @@ -215,7 +216,8 @@ TEST_F(BufRemTest, SlackImproves) stt::SteinerTreeBuilder* stt = new stt::SteinerTreeBuilder; grt::GlobalRouter* grt = new grt::GlobalRouter; dpl::Opendp* dp = new dpl::Opendp; - resizer_->init(&logger_, db_.get(), sta_.get(), stt, grt, dp, nullptr); + rcx::Ext* rcx = new rcx::Ext; + resizer_->init(&logger_, db_.get(), sta_.get(), stt, grt, dp, rcx, nullptr); float origArrival = sta_->vertexArrival(outVertex_, sta::RiseFall::rise(), pathAnalysisPt_); From a718481ccaade8b0880a34871a4c0a6f7d5fcfb8 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 30 Oct 2024 17:21:59 -0300 Subject: [PATCH 02/12] rsz: remove dead code Signed-off-by: Eder Monteiro --- src/rsz/src/EstimateWireParasitics.cc | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/rsz/src/EstimateWireParasitics.cc b/src/rsz/src/EstimateWireParasitics.cc index 872ac6cebdf..12298899470 100644 --- a/src/rsz/src/EstimateWireParasitics.cc +++ b/src/rsz/src/EstimateWireParasitics.cc @@ -265,19 +265,6 @@ double Resizer::wireClkVCapacitance(const Corner* corner) const //////////////////////////////////////////////////////////////// -void Resizer::ensureParasitics() -{ - estimateParasitics(global_router_->haveRoutes() - ? ParasiticsSrc::global_routing - : ParasiticsSrc::placement); -} - -void Resizer::estimateParasitics(ParasiticsSrc src) -{ - std::map spef_streams; - estimateParasitics(src, spef_streams); -} - void Resizer::estimateParasitics(ParasiticsSrc src, std::map& spef_streams) { From c44fc62fe117d0fbeebeb88c1b77e04b0d52ce45 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 30 Oct 2024 17:23:10 -0300 Subject: [PATCH 03/12] rsz: extract parasitics from drt inside rsz code Signed-off-by: Eder Monteiro --- src/rsz/src/EstimateWireParasitics.cc | 10 ++++++++-- src/rsz/src/Resizer.i | 28 +++++++++++++-------------- src/rsz/src/Resizer.tcl | 25 ++++++++++++++---------- 3 files changed, 37 insertions(+), 26 deletions(-) diff --git a/src/rsz/src/EstimateWireParasitics.cc b/src/rsz/src/EstimateWireParasitics.cc index 12298899470..1f66561976a 100644 --- a/src/rsz/src/EstimateWireParasitics.cc +++ b/src/rsz/src/EstimateWireParasitics.cc @@ -36,6 +36,7 @@ #include "SteinerTree.hh" #include "db_sta/dbNetwork.hh" #include "grt/GlobalRouter.h" +#include "rcx/ext.h" #include "rsz/Resizer.hh" #include "rsz/SpefWriter.hh" #include "sta/ArcDelayCalc.hh" @@ -266,13 +267,17 @@ double Resizer::wireClkVCapacitance(const Corner* corner) const //////////////////////////////////////////////////////////////// void Resizer::estimateParasitics(ParasiticsSrc src, - std::map& spef_streams) + std::map& spef_streams, + const char* ext_model_path) { std::unique_ptr spef_writer; if (!spef_streams.empty()) { spef_writer = std::make_unique(logger_, sta_, spef_streams); } + rcx::Ext::ExtractOptions ext_options; + ext_options.ext_model_file = ext_model_path; + switch (src) { case ParasiticsSrc::placement: estimateWireParasitics(spef_writer.get()); @@ -282,7 +287,8 @@ void Resizer::estimateParasitics(ParasiticsSrc src, parasitics_src_ = ParasiticsSrc::global_routing; break; case ParasiticsSrc::detailed_routing: - // TODO: call rcx to extract parasitics and load them to STA + openrcx_->extract(ext_options); + // TODO: load parasitics to STA parasitics_src_ = ParasiticsSrc::detailed_routing; break; case ParasiticsSrc::none: diff --git a/src/rsz/src/Resizer.i b/src/rsz/src/Resizer.i index b799f2236c4..8cb360e14ba 100644 --- a/src/rsz/src/Resizer.i +++ b/src/rsz/src/Resizer.i @@ -338,40 +338,40 @@ wire_clk_capacitance(const Corner *corner) } void -estimate_parasitics_cmd(ParasiticsSrc src, const char* path) +estimate_parasitics_cmd(ParasiticsSrc src, const char* spef_path, const char* ext_model_path) { ensureLinked(); Resizer* resizer = getResizer(); std::map spef_files; - if (path != nullptr && std::strlen(path) > 0) { - std::string file_path(path); - if (!file_path.empty()) { + if (spef_path != nullptr && std::strlen(spef_path) > 0) { + std::string spef_file_path(spef_path); + if (!spef_file_path.empty()) { for (Corner* corner : *resizer->getDbNetwork()->corners()) { - file_path = path; + spef_file_path = spef_path; std::string suffix("_"); suffix.append(corner->name()); - if (file_path.find(".spef") != std::string::npos - || file_path.find(".SPEF") != std::string::npos) { - file_path.insert(file_path.size() - 5, suffix); + if (spef_file_path.find(".spef") != std::string::npos + || spef_file_path.find(".SPEF") != std::string::npos) { + spef_file_path.insert(spef_file_path.size() - 5, suffix); } else { - file_path.append(suffix); + spef_file_path.append(suffix); } - std::ofstream* file = new std::ofstream(file_path); + std::ofstream* spef_file = new std::ofstream(spef_file_path); - if (file->is_open()) { - spef_files[corner] = std::move(file); + if (spef_file->is_open()) { + spef_files[corner] = std::move(spef_file); } else { Logger* logger = ord::getLogger(); logger->error(utl::RSZ, 7, - "Can't open file " + file_path); + "Can't open file " + spef_file_path); } } } } - resizer->estimateParasitics(src, spef_files); + resizer->estimateParasitics(src, spef_files, ext_model_path); for (auto [_, file] : spef_files) { file->flush(); diff --git a/src/rsz/src/Resizer.tcl b/src/rsz/src/Resizer.tcl index 30cfd134f06..034281b36c3 100644 --- a/src/rsz/src/Resizer.tcl +++ b/src/rsz/src/Resizer.tcl @@ -312,29 +312,37 @@ proc set_wire_rc { args } { } } -sta::define_cmd_args "estimate_parasitics" { -placement|-global_routing \ - [-spef_file filename]} +sta::define_cmd_args "estimate_parasitics" { -placement|-global_routing|-detailed_routing \ + [-spef_file filename] \ + [-ext_model_file filename]} proc estimate_parasitics { args } { sta::parse_key_args "estimate_parasitics" args \ - keys {-spef_file} flags {-placement -global_routing} + keys {-spef_file -ext_model_file} flags {-placement -global_routing -detailed_routing} - set filename "" + set spef_file "" if { [info exists keys(-spef_file)] } { - set filename $keys(-spef_file) + set spef_file $keys(-spef_file) + } + + set ext_model_file "" + if { [info exists keys(-ext_model_file)] } { + set ext_model_file $keys(-ext_model_file) } if { [info exists flags(-placement)] } { if { [rsz::check_corner_wire_cap] } { - rsz::estimate_parasitics_cmd "placement" $filename + rsz::estimate_parasitics_cmd "placement" $spef_file $ext_model_file } } elseif { [info exists flags(-global_routing)] } { if { [grt::have_routes] } { # should check for layer rc - rsz::estimate_parasitics_cmd "global_routing" $filename + rsz::estimate_parasitics_cmd "global_routing" $spef_file $ext_model_file } else { utl::error RSZ 5 "Run global_route before estimating parasitics for global routing." } + } elseif { [info exists flags(-detailed_routing)] } { + rsz::estimate_parasitics_cmd "detailed_routing" $spef_file $ext_model_file } else { utl::error RSZ 3 "missing -placement or -global_routing flag." } @@ -613,9 +621,6 @@ proc repair_timing { args } { } set match_cell_footprint [info exists flags(-match_cell_footprint)] - if { [design_is_routed] } { - rsz::set_parasitics_src "detailed_routing" - } sta::check_argc_eq0 "repair_timing" $args rsz::check_parasitics From 18e81f9ede1bda050b25693ea52cb9b26dafd44f Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 30 Oct 2024 17:31:22 -0300 Subject: [PATCH 04/12] rsz: clang-format Signed-off-by: Eder Monteiro --- src/rsz/include/rsz/Resizer.hh | 4 ++-- src/rsz/src/Resizer.cc | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/rsz/include/rsz/Resizer.hh b/src/rsz/include/rsz/Resizer.hh index 3f6041eea33..8d445a1d660 100644 --- a/src/rsz/include/rsz/Resizer.hh +++ b/src/rsz/include/rsz/Resizer.hh @@ -52,8 +52,8 @@ class IncrementalGRoute; } // namespace grt namespace rcx { - class Ext; -} // namespace rcx +class Ext; +} // namespace rcx namespace stt { class SteinerTreeBuilder; diff --git a/src/rsz/src/Resizer.cc b/src/rsz/src/Resizer.cc index a9cc8b339b9..615951e9d6d 100644 --- a/src/rsz/src/Resizer.cc +++ b/src/rsz/src/Resizer.cc @@ -1169,9 +1169,10 @@ LibertyCell* Resizer::findTargetCell(LibertyCell* cell, for (LibertyCell* target_cell : swappable_cells) { if (!dontUse(target_cell) && isLinkCell(target_cell)) { float target_load = (*target_load_map_)[target_cell]; - float delay = is_buf_inv ? bufferDelay( - target_cell, load_cap, tgt_slew_dcalc_ap_) - : 0.0; + float delay + = is_buf_inv + ? bufferDelay(target_cell, load_cap, tgt_slew_dcalc_ap_) + : 0.0; float dist = targetLoadDist(load_cap, target_load); debugPrint(logger_, RSZ, From 213d12be43df4bf09b38f644500452c43694577c Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 30 Oct 2024 17:38:18 -0300 Subject: [PATCH 05/12] rsz: update readme with new options Signed-off-by: Eder Monteiro --- src/rsz/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/rsz/README.md b/src/rsz/README.md index cd2c35276c9..9d5a30d3325 100644 --- a/src/rsz/README.md +++ b/src/rsz/README.md @@ -117,13 +117,15 @@ Standard Parasitic Exchange Format. estimate_parasitics -placement|-global_routing [-spef_file spef_file] + [-ext_model_file] ``` #### Options | Switch Name | Description | | ----- | ----- | -| `-placement` or `-global_routing` | Either of these flags must be set. Parasitics are estimated based after placement stage versus after global routing stage. | +| `-placement` or `-global_routing` or `-detailed_routing` | Either of these flags must be set. Parasitics are estimated based after placement stage versus after global routing stage, or extracted from the detailed routing. | +| `-ext_model_file` | Optional. File name to load the extraction model file for parasitics extraction from detailed routing. | | `-spef_file` | Optional. File name to write SPEF files. If more than one corner is available for the design, the files will be written as filename_corner.spef. | ### Set Don't Use From a1178f9322e74c5170d65a27bd40ace9076f11b7 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 30 Oct 2024 17:39:15 -0300 Subject: [PATCH 06/12] rsz: clang-format again Signed-off-by: Eder Monteiro --- src/rsz/src/Resizer.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/rsz/src/Resizer.cc b/src/rsz/src/Resizer.cc index 615951e9d6d..a9cc8b339b9 100644 --- a/src/rsz/src/Resizer.cc +++ b/src/rsz/src/Resizer.cc @@ -1169,10 +1169,9 @@ LibertyCell* Resizer::findTargetCell(LibertyCell* cell, for (LibertyCell* target_cell : swappable_cells) { if (!dontUse(target_cell) && isLinkCell(target_cell)) { float target_load = (*target_load_map_)[target_cell]; - float delay - = is_buf_inv - ? bufferDelay(target_cell, load_cap, tgt_slew_dcalc_ap_) - : 0.0; + float delay = is_buf_inv ? bufferDelay( + target_cell, load_cap, tgt_slew_dcalc_ap_) + : 0.0; float dist = targetLoadDist(load_cap, target_load); debugPrint(logger_, RSZ, From f4be74a2d8fff86f979eb7af975e9828f07eb744 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 30 Oct 2024 17:42:15 -0300 Subject: [PATCH 07/12] rsz: fix readme again Signed-off-by: Eder Monteiro --- src/rsz/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rsz/README.md b/src/rsz/README.md index 9d5a30d3325..14235c1e407 100644 --- a/src/rsz/README.md +++ b/src/rsz/README.md @@ -115,7 +115,7 @@ Standard Parasitic Exchange Format. ```tcl estimate_parasitics - -placement|-global_routing + -placement|-global_routing|-detailed_routing [-spef_file spef_file] [-ext_model_file] ``` From 32f6a406cfaa8b106f15c1b9ac9558ec48c0b54b Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 30 Oct 2024 18:18:07 -0300 Subject: [PATCH 08/12] rsz: check if design is routed when estimating parasitics from detailed routing Signed-off-by: Eder Monteiro --- src/rsz/src/Resizer.tcl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/rsz/src/Resizer.tcl b/src/rsz/src/Resizer.tcl index 034281b36c3..e1ffbe8aab7 100644 --- a/src/rsz/src/Resizer.tcl +++ b/src/rsz/src/Resizer.tcl @@ -342,6 +342,9 @@ proc estimate_parasitics { args } { utl::error RSZ 5 "Run global_route before estimating parasitics for global routing." } } elseif { [info exists flags(-detailed_routing)] } { + if { ![design_is_routed] } { + utl::error RSZ 87 "Design is not routed." + } rsz::estimate_parasitics_cmd "detailed_routing" $spef_file $ext_model_file } else { utl::error RSZ 3 "missing -placement or -global_routing flag." From 6ef0b68190b72d3acda1672d7d7a248077b57e8f Mon Sep 17 00:00:00 2001 From: Eder Monteiro <43450810+eder-matheus@users.noreply.github.com> Date: Wed, 30 Oct 2024 20:15:00 -0300 Subject: [PATCH 09/12] rsz: update readme Co-authored-by: Matt Liberty Signed-off-by: Eder Monteiro <43450810+eder-matheus@users.noreply.github.com> --- src/rsz/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rsz/README.md b/src/rsz/README.md index 14235c1e407..c6a316b2003 100644 --- a/src/rsz/README.md +++ b/src/rsz/README.md @@ -124,7 +124,7 @@ estimate_parasitics | Switch Name | Description | | ----- | ----- | -| `-placement` or `-global_routing` or `-detailed_routing` | Either of these flags must be set. Parasitics are estimated based after placement stage versus after global routing stage, or extracted from the detailed routing. | +| `-placement` or `-global_routing` or `-detailed_routing` | One of these flags must be set. Parasitics are estimated based on placement, global routing, or detailed routing. | | `-ext_model_file` | Optional. File name to load the extraction model file for parasitics extraction from detailed routing. | | `-spef_file` | Optional. File name to write SPEF files. If more than one corner is available for the design, the files will be written as filename_corner.spef. | From 79bc50aba7434b6ecae48927e32a60eacb53fbcd Mon Sep 17 00:00:00 2001 From: Eder Monteiro <43450810+eder-matheus@users.noreply.github.com> Date: Wed, 30 Oct 2024 20:16:25 -0300 Subject: [PATCH 10/12] rsz: more updates in readme Co-authored-by: Matt Liberty Signed-off-by: Eder Monteiro <43450810+eder-matheus@users.noreply.github.com> --- src/rsz/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rsz/README.md b/src/rsz/README.md index c6a316b2003..341e5474636 100644 --- a/src/rsz/README.md +++ b/src/rsz/README.md @@ -125,7 +125,7 @@ estimate_parasitics | Switch Name | Description | | ----- | ----- | | `-placement` or `-global_routing` or `-detailed_routing` | One of these flags must be set. Parasitics are estimated based on placement, global routing, or detailed routing. | -| `-ext_model_file` | Optional. File name to load the extraction model file for parasitics extraction from detailed routing. | +| `-ext_model_file model_file` | Optional. File name to load the extraction model file for parasitics extraction from detailed routing. | | `-spef_file` | Optional. File name to write SPEF files. If more than one corner is available for the design, the files will be written as filename_corner.spef. | ### Set Don't Use From 12ccf1dcd0549bd089efb7659658d17e9dae3eae Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 30 Oct 2024 20:21:10 -0300 Subject: [PATCH 11/12] rsz: small fixes Signed-off-by: Eder Monteiro --- src/rsz/README.md | 2 +- src/rsz/src/Resizer.tcl | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/rsz/README.md b/src/rsz/README.md index 341e5474636..9392b59828a 100644 --- a/src/rsz/README.md +++ b/src/rsz/README.md @@ -117,7 +117,7 @@ Standard Parasitic Exchange Format. estimate_parasitics -placement|-global_routing|-detailed_routing [-spef_file spef_file] - [-ext_model_file] + [-ext_model_file model_file] ``` #### Options diff --git a/src/rsz/src/Resizer.tcl b/src/rsz/src/Resizer.tcl index e1ffbe8aab7..58f978ca7a7 100644 --- a/src/rsz/src/Resizer.tcl +++ b/src/rsz/src/Resizer.tcl @@ -313,8 +313,8 @@ proc set_wire_rc { args } { } sta::define_cmd_args "estimate_parasitics" { -placement|-global_routing|-detailed_routing \ - [-spef_file filename] \ - [-ext_model_file filename]} + [-spef_file spef_file] \ + [-ext_model_file model_file]} proc estimate_parasitics { args } { sta::parse_key_args "estimate_parasitics" args \ From fb196c1213feb9ff6934c835bc7e8dd7a72cdfd9 Mon Sep 17 00:00:00 2001 From: Eder Monteiro Date: Wed, 6 Nov 2024 14:14:00 +0000 Subject: [PATCH 12/12] cts: fix link error in cts_unittest Signed-off-by: Eder Monteiro --- src/cts/src/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cts/src/CMakeLists.txt b/src/cts/src/CMakeLists.txt index cf626b11c65..649e6be59bc 100644 --- a/src/cts/src/CMakeLists.txt +++ b/src/cts/src/CMakeLists.txt @@ -85,6 +85,7 @@ target_link_libraries(cts_lib odb dbSta_lib OpenSTA + rcx_lib stt_lib utl_lib )