liberty memory management
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
33e480a6c1
commit
7cb71fe766
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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_; }
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue