From f7b3df49c1f5a45b9edc0d320d8ed09afc1ef21c Mon Sep 17 00:00:00 2001 From: Stephan Diestelhorst Date: Thu, 6 Apr 2017 14:53:41 +0100 Subject: 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 --- src/sim/power/mathexpr_powermodel.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src') 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; -- cgit v1.2.3