From 08acc67c058191b33b7a0a679523fe59bd7d8dc3 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 28 Jan 2026 11:56:40 -0700 Subject: [PATCH 1/2] Sta::networkChanged() comment Signed-off-by: James Cherry --- include/sta/Sta.hh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/sta/Sta.hh b/include/sta/Sta.hh index cdf67203..4404eedf 100644 --- a/include/sta/Sta.hh +++ b/include/sta/Sta.hh @@ -1153,7 +1153,9 @@ public: virtual void disconnectPin(Pin *pin); virtual void makePortPin(const char *port_name, PortDirection *dir); - // Notify STA of network change. + // Notify STA that the network has changed without using the network + // editing API. For example, reading a netlist without using the + // builtin network readers. void networkChanged(); void deleteLeafInstanceBefore(const Instance *inst); void deleteInstancePinsBefore(const Instance *inst); From 25ea7a3795f44fac4202edb501e27e8c590b5ee9 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 28 Jan 2026 12:06:40 -0700 Subject: [PATCH 2/2] network edits invalidate power resolves #371 Signed-off-by: James Cherry --- power/Power.cc | 10 +--------- power/Power.hh | 3 +-- search/Sta.cc | 13 +++++++++---- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/power/Power.cc b/power/Power.cc index 3265fe96..c5297b33 100644 --- a/power/Power.cc +++ b/power/Power.cc @@ -1595,15 +1595,7 @@ Power::clockMinPeriod() } void -Power::deleteInstanceBefore(const Instance *) -{ - activities_valid_ = false; - instance_powers_.clear(); - corner_ = nullptr; -} - -void -Power::deletePinBefore(const Pin *) +Power::powerInvalid() { activities_valid_ = false; instance_powers_.clear(); diff --git a/power/Power.hh b/power/Power.hh index abed2f40..82ad01f2 100644 --- a/power/Power.hh +++ b/power/Power.hh @@ -108,8 +108,7 @@ public: float clockMinPeriod(); InstanceSeq highestPowerInstances(size_t count, const Corner *corner); - void deleteInstanceBefore(const Instance *inst); - void deletePinBefore(const Pin *pin); + void powerInvalid(); protected: PwrActivity &activity(const Pin *pin); diff --git a/search/Sta.cc b/search/Sta.cc index eb389646..7b9a3123 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -4245,6 +4245,7 @@ Sta::makeInstanceAfter(const Instance *inst) } } graph_->makeInstanceEdges(inst); + power_->powerInvalid(); } } } @@ -4311,6 +4312,8 @@ Sta::replaceEquivCellAfter(const Instance *inst) parasitics_->loadPinCapacitanceChanged(pin); } delete pin_iter; + clk_skews_->clear(); + power_->powerInvalid(); } } @@ -4381,7 +4384,6 @@ Sta::replaceCellBefore(const Instance *inst, } } delete pin_iter; - clk_skews_->clear(); } } @@ -4447,6 +4449,7 @@ Sta::connectPinAfter(const Pin *pin) sdc_->connectPinAfter(pin); sim_->connectPinAfter(pin); clk_skews_->clear(); + power_->powerInvalid(); } void @@ -4538,6 +4541,7 @@ Sta::disconnectPinBefore(const Pin *pin) } } clk_skews_->clear(); + power_->powerInvalid(); } } @@ -4582,6 +4586,8 @@ Sta::deleteNetBefore(const Net *net) delete pin_iter; } sdc_->deleteNetBefore(net); + clk_skews_->clear(); + power_->powerInvalid(); } void @@ -4609,7 +4615,8 @@ Sta::deleteLeafInstanceBefore(const Instance *inst) { sim_->deleteInstanceBefore(inst); sdc_->deleteInstanceBefore(inst); - power_->deleteInstanceBefore(inst); + clk_skews_->clear(); + power_->powerInvalid(); } void @@ -4687,8 +4694,6 @@ Sta::deletePinBefore(const Pin *pin) sdc_->deletePinBefore(pin); sim_->deletePinBefore(pin); clk_network_->deletePinBefore(pin); - power_->deletePinBefore(pin); - clk_skews_->clear(); } void