power activity thru regs caps at 1/clk_period
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
305d0dee5c
commit
fdba9eb279
|
|
@ -38,7 +38,9 @@ public:
|
||||||
float duty,
|
float duty,
|
||||||
PwrActivityOrigin origin);
|
PwrActivityOrigin origin);
|
||||||
float activity() const { return activity_; }
|
float activity() const { return activity_; }
|
||||||
|
void setActivity(float activity);
|
||||||
float duty() const { return duty_; }
|
float duty() const { return duty_; }
|
||||||
|
void setDuty(float duty);
|
||||||
PwrActivityOrigin origin() { return origin_; }
|
PwrActivityOrigin origin() { return origin_; }
|
||||||
const char *originName() const;
|
const char *originName() const;
|
||||||
void set(float activity,
|
void set(float activity,
|
||||||
|
|
|
||||||
|
|
@ -572,10 +572,13 @@ Power::seedRegOutputActivities(const Instance *reg,
|
||||||
const Pin *out_pin = network_->findPin(reg, output);
|
const Pin *out_pin = network_->findPin(reg, output);
|
||||||
if (!hasUserActivity(out_pin)) {
|
if (!hasUserActivity(out_pin)) {
|
||||||
PwrActivity activity = evalActivity(seq->data(), reg);
|
PwrActivity activity = evalActivity(seq->data(), reg);
|
||||||
|
// Register output activity cannnot exceed one transition per clock cycle,
|
||||||
|
// but latch output can.
|
||||||
|
if (seq->isRegister()
|
||||||
|
&& activity.activity() > 1.0)
|
||||||
|
activity.setActivity(1.0);
|
||||||
if (invert)
|
if (invert)
|
||||||
activity.set(activity.activity(),
|
activity.setDuty(1.0 - activity.duty());
|
||||||
1.0 - activity.duty(),
|
|
||||||
activity.origin());
|
|
||||||
setSeqActivity(reg, output, activity);
|
setSeqActivity(reg, output, activity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1190,6 +1193,18 @@ PwrActivity::PwrActivity() :
|
||||||
check();
|
check();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
PwrActivity::setActivity(float activity)
|
||||||
|
{
|
||||||
|
activity_ = activity;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
PwrActivity::setDuty(float duty)
|
||||||
|
{
|
||||||
|
duty_ = duty;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PwrActivity::set(float activity,
|
PwrActivity::set(float activity,
|
||||||
float duty,
|
float duty,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue