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