From 5fbe059b616fbff4a9e2713f556b7490b97588ea Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 22 Feb 2023 14:50:49 -0700 Subject: [PATCH] Sta::removeNetLoadCaps() Signed-off-by: James Cherry --- include/sta/Sdc.hh | 2 ++ include/sta/Sta.hh | 2 ++ sdc/Sdc.cc | 24 ++++++++++++++---------- search/Sta.cc | 7 +++++++ 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/include/sta/Sdc.hh b/include/sta/Sdc.hh index 9ea504a0..9ef70ee4 100644 --- a/include/sta/Sdc.hh +++ b/include/sta/Sdc.hh @@ -583,6 +583,8 @@ public: float cap); static void movePortExtCaps(Sdc *from, Sdc *to); + // Remove all "set_load net" annotations. + void removeNetLoadCaps(); void setNetWireCap(const Net *net, bool subtract_pin_cap, const Corner *corner, diff --git a/include/sta/Sta.hh b/include/sta/Sta.hh index 2017d900..9ae4a6f2 100644 --- a/include/sta/Sta.hh +++ b/include/sta/Sta.hh @@ -179,6 +179,8 @@ public: const Corner *corner, const MinMaxAll *min_max, float cap); + // Remove all "set_load net" annotations. + void removeNetLoadCaps() const; // Set port external fanout (used by wireload models). void setPortExtFanout(const Port *port, int fanout, diff --git a/sdc/Sdc.cc b/sdc/Sdc.cc index ca197ae7..73bc3811 100644 --- a/sdc/Sdc.cc +++ b/sdc/Sdc.cc @@ -299,12 +299,7 @@ Sdc::deleteConstraints() clearGroupPathMap(); deleteDeratingFactors(); - for (int corner_index = 0; corner_index < corners_->count(); corner_index++) { - port_ext_cap_maps_[corner_index].deleteContentsClear(); - net_wire_cap_maps_[corner_index].clear(); - } - port_ext_cap_maps_.clear(); - net_wire_cap_maps_.clear(); + removeNetLoadCaps(); clk_sense_map_.clear(); @@ -312,6 +307,18 @@ Sdc::deleteConstraints() instance_pvt_maps_[mm_index].deleteContentsClear(); } +void +Sdc::removeNetLoadCaps() +{ + if (!net_wire_cap_maps_.empty()) { + for (int corner_index = 0; corner_index < corners_->count(); corner_index++) { + net_wire_cap_maps_[corner_index].clear(); + drvr_pin_wire_cap_maps_[corner_index].clear(); + port_ext_cap_maps_[corner_index].deleteContentsClear(); + } + } +} + void Sdc::removeLibertyAnnotations() { @@ -365,10 +372,7 @@ void Sdc::makeCornersAfter(Corners *corners) { corners_ = corners; - port_ext_cap_maps_.clear(); - net_wire_cap_maps_.clear(); - drvr_pin_wire_cap_maps_.clear(); - + removeNetLoadCaps(); port_ext_cap_maps_.resize(corners_->count(), PortExtCapMap(PortIdLess(network_))); net_wire_cap_maps_.resize(corners_->count(), NetWireCapMap(NetIdLess(network_))); drvr_pin_wire_cap_maps_.resize(corners_->count(), PinWireCapMap(PinIdLess(network_))); diff --git a/search/Sta.cc b/search/Sta.cc index 5862f794..2969ea67 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -3703,6 +3703,13 @@ Sta::setPortExtWireCap(const Port *port, delaysInvalidFromFanin(port); } +void +Sta::removeNetLoadCaps() const +{ + sdc_->removeNetLoadCaps(); + graph_delay_calc_->delaysInvalid(); +} + void Sta::setPortExtFanout(const Port *port, int fanout,