read_power_activities bus transition count

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2023-10-22 16:51:18 -07:00
parent a60fcbac15
commit 50bd00034b
3 changed files with 14 additions and 6 deletions

View File

@ -180,6 +180,7 @@ ReadVcdActivities::setVarActivity(const char *pin_name,
{
const Pin *pin = sdc_network_->findPin(pin_name);
if (pin) {
debugPrint(debug_, "read_vcd_activities", 3, "%s values", pin_name);
double transition_count, activity, duty;
findVarActivity(var_values, value_bit,
transition_count, activity, duty);
@ -205,16 +206,13 @@ ReadVcdActivities::findVarActivity(const VcdValues &var_values,
double &duty)
{
transition_count = 0.0;
char prev_value = var_values[0].value();
char prev_value = var_values[0].value(value_bit);
VcdTime prev_time = var_values[0].time();
VcdTime high_time = 0;
for (const VcdValue &var_value : var_values) {
VcdTime time = var_value.time();
char value = var_value.value();
if (value == '\0') {
uint64_t bus_value = var_value.busValue();
value = ((bus_value >> value_bit) & 0x1) ? '1' : '0';
}
char value = var_value.value(value_bit);
debugPrint(debug_, "read_vcd_activities", 3, " %llu %c", time, value);
if (prev_value == '1')
high_time += time - prev_time;
if (value != prev_value)

View File

@ -201,4 +201,13 @@ VcdValue::VcdValue(VcdTime time,
{
}
char
VcdValue::value(int value_bit) const
{
if (value_ == '\0')
return ((bus_value_ >> value_bit) & 0x1) ? '1' : '0';
else
return value_;
}
}

View File

@ -146,6 +146,7 @@ public:
VcdTime time() const { return time_; }
char value() const { return value_; }
uint64_t busValue() const { return bus_value_; }
char value(int value_bit) const;
private:
VcdTime time_;