Liberty::internalPowers() return ref

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2022-06-12 13:44:49 -07:00
parent 58a34f1221
commit 937efddf5e
3 changed files with 9 additions and 15 deletions

View File

@ -417,8 +417,8 @@ public:
TimingArcSet *findTimingArcSet(unsigned arc_set_index) const; TimingArcSet *findTimingArcSet(unsigned arc_set_index) const;
bool hasTimingArcs(LibertyPort *port) const; bool hasTimingArcs(LibertyPort *port) const;
InternalPowerSeq *internalPowers(); const InternalPowerSeq &internalPowers() const { return internal_powers_; }
InternalPowerSeq *internalPowers(const LibertyPort *port); const InternalPowerSeq &internalPowers(const LibertyPort *port);
LeakagePowerSeq *leakagePowers() { return &leakage_powers_; } LeakagePowerSeq *leakagePowers() { return &leakage_powers_; }
void leakagePower(// Return values. void leakagePower(// Return values.
float &leakage, float &leakage,

View File

@ -1181,16 +1181,10 @@ LibertyCell::addInternalPower(InternalPower *power)
port_internal_powers_[power->port()].push_back(power); port_internal_powers_[power->port()].push_back(power);
} }
InternalPowerSeq * const InternalPowerSeq &
LibertyCell::internalPowers()
{
return &internal_powers_;
}
InternalPowerSeq *
LibertyCell::internalPowers(const LibertyPort *port) LibertyCell::internalPowers(const LibertyPort *port)
{ {
return &port_internal_powers_[port]; return port_internal_powers_[port];
} }
void void

View File

@ -637,8 +637,8 @@ Power::findInputInternalPower(const Pin *pin,
LibertyCell *corner_cell = cell->cornerCell(lib_ap_index); LibertyCell *corner_cell = cell->cornerCell(lib_ap_index);
const LibertyPort *corner_port = port->cornerPort(lib_ap_index); const LibertyPort *corner_port = port->cornerPort(lib_ap_index);
if (corner_cell && corner_port) { if (corner_cell && corner_port) {
InternalPowerSeq *internal_pwrs = corner_cell->internalPowers(corner_port); const InternalPowerSeq &internal_pwrs = corner_cell->internalPowers(corner_port);
if (!internal_pwrs->empty()) { if (!internal_pwrs.empty()) {
debugPrint(debug_, "power", 2, "internal input %s/%s (%s)", debugPrint(debug_, "power", 2, "internal input %s/%s (%s)",
network_->pathName(inst), network_->pathName(inst),
port->name(), port->name(),
@ -650,7 +650,7 @@ Power::findInputInternalPower(const Pin *pin,
units_->capacitanceUnit()->asString(load_cap)); units_->capacitanceUnit()->asString(load_cap));
debugPrint(debug_, "power", 2, " when act/ns duty energy power"); debugPrint(debug_, "power", 2, " when act/ns duty energy power");
float internal = 0.0; float internal = 0.0;
for (InternalPower *pwr : *internal_pwrs) { for (InternalPower *pwr : internal_pwrs) {
const char *related_pg_pin = pwr->relatedPgPin(); const char *related_pg_pin = pwr->relatedPgPin();
float energy = 0.0; float energy = 0.0;
int rf_count = 0; int rf_count = 0;
@ -784,7 +784,7 @@ Power::findOutputInternalPower(const Pin *to_pin,
FuncExpr *func = to_port->function(); FuncExpr *func = to_port->function();
map<const char*, float, StringLessIf> pg_duty_sum; map<const char*, float, StringLessIf> pg_duty_sum;
for (InternalPower *pwr : *corner_cell->internalPowers(to_corner_port)) { for (InternalPower *pwr : corner_cell->internalPowers(to_corner_port)) {
float duty = findInputDuty(to_pin, inst, func, pwr); float duty = findInputDuty(to_pin, inst, func, pwr);
const char *related_pg_pin = pwr->relatedPgPin(); const char *related_pg_pin = pwr->relatedPgPin();
// Note related_pg_pin may be null. // Note related_pg_pin may be null.
@ -792,7 +792,7 @@ Power::findOutputInternalPower(const Pin *to_pin,
} }
float internal = 0.0; float internal = 0.0;
for (InternalPower *pwr : *corner_cell->internalPowers(to_corner_port)) { for (InternalPower *pwr : corner_cell->internalPowers(to_corner_port)) {
FuncExpr *when = pwr->when(); FuncExpr *when = pwr->when();
const char *related_pg_pin = pwr->relatedPgPin(); const char *related_pg_pin = pwr->relatedPgPin();
float duty = findInputDuty(to_pin, inst, func, pwr); float duty = findInputDuty(to_pin, inst, func, pwr);