diff --git a/include/sta/Sdc.hh b/include/sta/Sdc.hh index 03dd6513..82e4aac7 100644 --- a/include/sta/Sdc.hh +++ b/include/sta/Sdc.hh @@ -187,6 +187,7 @@ public: bool isConstrained(const Net *net) const; // Build data structures for search. void searchPreamble(); + void deleteNetBefore(Net *net); // SWIG sdc interface. AnalysisType analysisType() { return analysis_type_; } diff --git a/sdc/Sdc.cc b/sdc/Sdc.cc index 2473f480..5d10c387 100644 --- a/sdc/Sdc.cc +++ b/sdc/Sdc.cc @@ -403,6 +403,18 @@ Sdc::initInstancePvtMaps() instance_pvt_maps_[mm_index] = nullptr; } +void +Sdc::deleteNetBefore(Net *net) +{ + if (net_wire_cap_map_) { + for (int corner_index = 0; corner_index < corners_->count(); corner_index++) { + net_wire_cap_map_[corner_index].erase(net); + for (Pin *pin : *network_->drivers(net)) + drvr_pin_wire_cap_map_[corner_index].erase(pin); + } + } +} + //////////////////////////////////////////////////////////////// bool diff --git a/search/Sta.cc b/search/Sta.cc index b3c83c87..1b7e3e14 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -4170,6 +4170,7 @@ Sta::deleteNetBefore(Net *net) } delete pin_iter; } + sdc_->deleteNetBefore(net); } void