From 7cb71fe766835cf5aeff79375e53fb29cdd7b08e Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 4 Feb 2026 18:33:32 -0700 Subject: [PATCH] liberty memory management Signed-off-by: James Cherry --- liberty/LeakagePower.cc | 22 --------------- liberty/LibertyReader.cc | 30 -------------------- liberty/LibertyReaderPvt.hh | 17 ----------- power/Power.cc | 56 +++++++++++++++---------------------- 4 files changed, 23 insertions(+), 102 deletions(-) diff --git a/liberty/LeakagePower.cc b/liberty/LeakagePower.cc index 07e8b7ce..a5751c15 100644 --- a/liberty/LeakagePower.cc +++ b/liberty/LeakagePower.cc @@ -56,25 +56,3 @@ LeakagePower::~LeakagePower() } } // namespace ->>>>>>> - -namespace sta { - -LeakagePower::LeakagePower(LibertyCell *cell, - LibertyPort *related_pg_port, - FuncExpr *when, - float power) : - cell_(cell), - related_pg_port_(related_pg_port), - when_(when), - power_(power) -{ -} - -LeakagePower::~LeakagePower() -{ - if (when_) - when_->deleteSubexprs(); -} - -} // namespace diff --git a/liberty/LibertyReader.cc b/liberty/LibertyReader.cc index f2676531..c75240b0 100644 --- a/liberty/LibertyReader.cc +++ b/liberty/LibertyReader.cc @@ -2233,23 +2233,12 @@ void LibertyReader::makeLeakagePowers() { for (LeakagePowerGroup *power_group : leakage_powers_) { -<<<<<<< -======= LibertyPort *related_pg_pin = cell_->findLibertyPort(power_group->relatedPgPin().c_str()); cell_->makeLeakagePower(related_pg_pin, power_group->when(), power_group->power()); delete power_group; } leakage_powers_.clear(); ->>>>>>> - LibertyPort *related_pg_pin = - cell_->findLibertyPort(power_group->relatedPgPin().c_str()); - LeakagePower *leakage = new LeakagePower(cell_, related_pg_pin, power_group->when(), - power_group->power()); - cell_->addLeakagePower(leakage); - delete power_group; - } - leakage_powers_.clear(); } // Record a reference to a function that will be parsed at the end of @@ -6092,8 +6081,6 @@ LeakagePowerGroup::LeakagePowerGroup(int line) : void LeakagePowerGroup::setRelatedPgPin(std::string pin_name) -<<<<<<< -======= { related_pg_pin_ = std::move(pin_name); } @@ -6104,23 +6091,6 @@ LeakagePowerGroup::setWhen(FuncExpr *when) when_ = when; } -void -LeakagePowerGroup::setPower(float power) ->>>>>>> -{ -<<<<<<< - related_pg_pin_ = std::move(pin_name); -======= - power_ = power; ->>>>>>> -} - -void -LeakagePowerGroup::setWhen(FuncExpr *when) -{ - when_ = when; -} - void LeakagePowerGroup::setPower(float power) { diff --git a/liberty/LibertyReaderPvt.hh b/liberty/LibertyReaderPvt.hh index 9016fc0a..81109a68 100644 --- a/liberty/LibertyReaderPvt.hh +++ b/liberty/LibertyReaderPvt.hh @@ -912,23 +912,6 @@ class LeakagePowerGroup { public: LeakagePowerGroup(int line); -<<<<<<< -======= - const std::string &relatedPgPin() const { return related_pg_pin_; } - void setRelatedPgPin(std::string pin_name); - FuncExpr *when() const { return when_; } - void setWhen(FuncExpr *when); - float power() const { return power_; } - void setPower(float power); - -protected: - std::string related_pg_pin_; - FuncExpr *when_; - float power_; - int line_; -}; - ->>>>>>> const std::string &relatedPgPin() const { return related_pg_pin_; } void setRelatedPgPin(std::string pin_name); FuncExpr *when() const { return when_; } diff --git a/power/Power.cc b/power/Power.cc index 9c638c72..61df780c 100644 --- a/power/Power.cc +++ b/power/Power.cc @@ -1493,45 +1493,35 @@ Power::findLeakagePower(const Instance *inst, float uncond_leakage = 0.0; bool found_uncond = false; float cond_duty_sum = 0.0; -<<<<<<< - for (LeakagePower *leak : *scene_cell->leakagePowers()) { - LibertyPort *pg_port = leak->relatedPgPort(); + for (const LeakagePower &leak : scene_cell->leakagePowers()) { + LibertyPort *pg_port = leak.relatedPgPort(); if (pg_port == nullptr || pg_port->pwrGndType() == PwrGndType::primary_power) { - FuncExpr *when = leak->when(); -======= - for (const LeakagePower &leak : scene_cell->leakagePowers()) { - FuncExpr *when = leak.when(); ->>>>>>> - if (when) { - PwrActivity cond_activity = evalActivity(when, inst); - float cond_duty = cond_activity.duty(); + FuncExpr *when = leak.when(); + if (when) { + PwrActivity cond_activity = evalActivity(when, inst); + float cond_duty = cond_activity.duty(); debugPrint(debug_, "power", 2, "leakage %s %s %s %.3e * %.2f", - cell->name(), - leak->relatedPgPort()->name(), - when->to_string().c_str(), - leak.power(), - cond_duty); - cond_leakage += leak.power() * cond_duty; - if (leak.power() > 0.0) - cond_duty_sum += cond_duty; - found_cond = true; - } - else { + cell->name(), + leak.relatedPgPort()->name(), + when->to_string().c_str(), + leak.power(), + cond_duty); + cond_leakage += leak.power() * cond_duty; + if (leak.power() > 0.0) + cond_duty_sum += cond_duty; + found_cond = true; + } + else { debugPrint(debug_, "power", 2, "leakage %s %s -- %.3e", - cell->name(), -<<<<<<< - leak->relatedPgPort()->name(), - leak->power()); - uncond_leakage += leak->power(); -======= - leak.power()); - uncond_leakage += leak.power(); ->>>>>>> - found_uncond = true; + cell->name(), + leak.relatedPgPort()->name(), + leak.power()); + uncond_leakage += leak.power(); + found_uncond = true; + } } } - } float leakage = 0.0; float cell_leakage; bool cell_leakage_exists;