Sta::removeNetLoadCaps()

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2023-02-22 14:50:49 -07:00
parent cc2ef1783f
commit 5fbe059b61
4 changed files with 25 additions and 10 deletions

View File

@ -583,6 +583,8 @@ public:
float cap); float cap);
static void movePortExtCaps(Sdc *from, static void movePortExtCaps(Sdc *from,
Sdc *to); Sdc *to);
// Remove all "set_load net" annotations.
void removeNetLoadCaps();
void setNetWireCap(const Net *net, void setNetWireCap(const Net *net,
bool subtract_pin_cap, bool subtract_pin_cap,
const Corner *corner, const Corner *corner,

View File

@ -179,6 +179,8 @@ public:
const Corner *corner, const Corner *corner,
const MinMaxAll *min_max, const MinMaxAll *min_max,
float cap); float cap);
// Remove all "set_load net" annotations.
void removeNetLoadCaps() const;
// Set port external fanout (used by wireload models). // Set port external fanout (used by wireload models).
void setPortExtFanout(const Port *port, void setPortExtFanout(const Port *port,
int fanout, int fanout,

View File

@ -299,12 +299,7 @@ Sdc::deleteConstraints()
clearGroupPathMap(); clearGroupPathMap();
deleteDeratingFactors(); deleteDeratingFactors();
for (int corner_index = 0; corner_index < corners_->count(); corner_index++) { removeNetLoadCaps();
port_ext_cap_maps_[corner_index].deleteContentsClear();
net_wire_cap_maps_[corner_index].clear();
}
port_ext_cap_maps_.clear();
net_wire_cap_maps_.clear();
clk_sense_map_.clear(); clk_sense_map_.clear();
@ -312,6 +307,18 @@ Sdc::deleteConstraints()
instance_pvt_maps_[mm_index].deleteContentsClear(); 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 void
Sdc::removeLibertyAnnotations() Sdc::removeLibertyAnnotations()
{ {
@ -365,10 +372,7 @@ void
Sdc::makeCornersAfter(Corners *corners) Sdc::makeCornersAfter(Corners *corners)
{ {
corners_ = corners; corners_ = corners;
port_ext_cap_maps_.clear(); removeNetLoadCaps();
net_wire_cap_maps_.clear();
drvr_pin_wire_cap_maps_.clear();
port_ext_cap_maps_.resize(corners_->count(), PortExtCapMap(PortIdLess(network_))); port_ext_cap_maps_.resize(corners_->count(), PortExtCapMap(PortIdLess(network_)));
net_wire_cap_maps_.resize(corners_->count(), NetWireCapMap(NetIdLess(network_))); net_wire_cap_maps_.resize(corners_->count(), NetWireCapMap(NetIdLess(network_)));
drvr_pin_wire_cap_maps_.resize(corners_->count(), PinWireCapMap(PinIdLess(network_))); drvr_pin_wire_cap_maps_.resize(corners_->count(), PinWireCapMap(PinIdLess(network_)));

View File

@ -3703,6 +3703,13 @@ Sta::setPortExtWireCap(const Port *port,
delaysInvalidFromFanin(port); delaysInvalidFromFanin(port);
} }
void
Sta::removeNetLoadCaps() const
{
sdc_->removeNetLoadCaps();
graph_delay_calc_->delaysInvalid();
}
void void
Sta::setPortExtFanout(const Port *port, Sta::setPortExtFanout(const Port *port,
int fanout, int fanout,