power enqueue regs in fanout of from user activities

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2022-09-18 19:51:10 -07:00
parent ced5df610c
commit 8445cef834
1 changed files with 11 additions and 6 deletions

View File

@ -337,6 +337,8 @@ PropActivityVisitor::visit(Vertex *vertex)
vertex->name(network_),
activity.activity(),
activity.duty());
if (!power_->hasActivity(pin))
input_without_activity = true;
power_->setActivity(pin, activity);
}
else {
@ -567,12 +569,15 @@ Power::seedRegOutputActivities(const Instance *reg,
LibertyPort *output,
bool invert)
{
PwrActivity activity = evalActivity(seq->data(), reg);
if (invert)
activity.set(activity.activity(),
1.0 - activity.duty(),
activity.origin());
setSeqActivity(reg, output, activity);
const Pin *out_pin = network_->findPin(reg, output);
if (!hasUserActivity(out_pin)) {
PwrActivity activity = evalActivity(seq->data(), reg);
if (invert)
activity.set(activity.activity(),
1.0 - activity.duty(),
activity.origin());
setSeqActivity(reg, output, activity);
}
}
////////////////////////////////////////////////////////////////