From: Stephan Diestelhorst Date: Thu, 6 Apr 2017 13:53:41 +0000 (+0100) Subject: power: Allow global stats in power equations X-Git-Tag: v19.0.0.0~2847 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f7b3df49c1f5a45b9edc0d320d8ed09afc1ef21c;p=gem5.git power: Allow global stats in power equations Allow global stats such as sim_seconds in power equations to make it possible to convert from event stats to rate stats. Change-Id: I429abe0ffadc0dbd162eb39e0897143be472ef65 Signed-off-by: Andreas Sandberg Reviewed-on: https://gem5-review.googlesource.com/2720 Reviewed-by: Jason Lowe-Power --- diff --git a/src/sim/power/mathexpr_powermodel.cc b/src/sim/power/mathexpr_powermodel.cc index a77e14a08..ab4872007 100644 --- a/src/sim/power/mathexpr_powermodel.cc +++ b/src/sim/power/mathexpr_powermodel.cc @@ -39,6 +39,8 @@ #include "sim/power/mathexpr_powermodel.hh" +#include + #include "base/statistics.hh" #include "params/MathExprPowerModel.hh" #include "sim/mathexpr.hh" @@ -62,9 +64,15 @@ MathExprPowerModel::startup() { // Create a map with stats and pointers for quick access // Has to be done here, since we need access to the statsList - for (auto & i: Stats::statsList()) - if (i->name.find(basename) == 0) + for (auto & i: Stats::statsList()) { + if (i->name.find(basename) == 0) { + // Add stats for this sim object and its child objects stats_map[i->name.substr(basename.size())] = i; + } else if (i->name.find(".") == std::string::npos) { + // Add global stats (sim_seconds, for example) + stats_map[i->name] = i; + } + } tryEval(st_expr); const bool st_failed = failed;