From a50bbc788b1d21aaae036b51b190039d54afa072 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 6 May 2020 14:12:55 -0700 Subject: [PATCH] Sta::networkChanged --- include/sta/Sta.hh | 2 ++ search/Sta.cc | 22 ++++++++++++++++++++++ tcl/NetworkEdit.i | 7 +++++++ 3 files changed, 31 insertions(+) diff --git a/include/sta/Sta.hh b/include/sta/Sta.hh index 35248c20..4f7d4e18 100644 --- a/include/sta/Sta.hh +++ b/include/sta/Sta.hh @@ -1116,6 +1116,8 @@ public: Net *net); // disconnect_net virtual void disconnectPin(Pin *pin); + // Notify STA of network change. + void networkChanged(); // Network edit before/after methods. void makeInstanceAfter(Instance *inst); diff --git a/search/Sta.cc b/search/Sta.cc index da1384da..f0851495 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -534,6 +534,28 @@ Sta::clear() updateComponentsState(); } +void +Sta::networkChanged() +{ + // Remove sdc graph annotations. + sdc_->annotateGraph(false); + // Everything else from clear(). + search_->clear(); + levelize_->clear(); + if (parasitics_) + parasitics_->clear(); + graph_delay_calc_->clear(); + sim_->clear(); + if (check_min_pulse_widths_) + check_min_pulse_widths_->clear(); + if (check_min_periods_) + check_min_periods_->clear(); + delete graph_; + graph_ = nullptr; + current_instance_ = nullptr; + updateComponentsState(); +} + void Sta::setTclInterp(Tcl_Interp *interp) { diff --git a/tcl/NetworkEdit.i b/tcl/NetworkEdit.i index 388b95c4..f85ea674 100644 --- a/tcl/NetworkEdit.i +++ b/tcl/NetworkEdit.i @@ -93,4 +93,11 @@ disconnect_pin_cmd(Pin *pin) Sta::sta()->disconnectPin(pin); } +// Notify STA of network change. +void +network_changed() +{ + Sta::sta()->networkChanged(); +} + %} // inline