From 36645618b73bc8705f4c6fa7146e211a1a73e6c3 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Thu, 28 Mar 2024 11:03:14 -0700 Subject: [PATCH] vcd timescale prefix orfs issue1806 Signed-off-by: James Cherry --- power/ReadVcdActivities.cc | 5 ++--- power/VcdReader.cc | 6 ++++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/power/ReadVcdActivities.cc b/power/ReadVcdActivities.cc index 59a4c91a..396dab63 100644 --- a/power/ReadVcdActivities.cc +++ b/power/ReadVcdActivities.cc @@ -231,8 +231,7 @@ ReadVcdActivities::findVarActivity(const VcdValues &var_values, if (prev_value == '1') high_time += time_max - prev_time; duty = static_cast(high_time) / time_max; - activity = transition_count - / (time_max * vcd_.timeUnitScale() / clk_period_); + activity = transition_count / (time_max * vcd_.timeScale() / clk_period_); } void @@ -240,7 +239,7 @@ ReadVcdActivities::checkClkPeriod(const Pin *pin, double transition_count) { VcdTime time_max = vcd_.timeMax(); - double sim_period = time_max * vcd_.timeUnitScale() / (transition_count / 2.0); + double sim_period = time_max * vcd_.timeScale() / (transition_count / 2.0); ClockSet *clks = sdc_->findLeafPinClocks(pin); if (clks) { diff --git a/power/VcdReader.cc b/power/VcdReader.cc index b917f3e1..92fc981c 100644 --- a/power/VcdReader.cc +++ b/power/VcdReader.cc @@ -135,12 +135,14 @@ VcdReader::parseTimescale() vector tokens = readStmtTokens(); if (tokens.size() == 1) { size_t last; - vcd_->setTimeScale(std::stod(tokens[0], &last)); + double time_scale = std::stod(tokens[0], &last); setTimeUnit(tokens[0].substr(last)); + vcd_->setTimeScale(time_scale * vcd_->timeUnitScale()); } else if (tokens.size() == 2) { - vcd_->setTimeScale(std::stod(tokens[0])); setTimeUnit(tokens[1]); + double time_scale = std::stod(tokens[0]); + vcd_->setTimeScale(time_scale * vcd_->timeUnitScale()); } else report_->fileError(801, filename_, stmt_line_, "timescale syntax error.");