47 #include "debug/VoltageDomain.hh"
48 #include "params/VoltageDomain.hh"
52 :
SimObject(p), voltageOpPoints(p->voltage), _perfLevel(0)
55 "voltage domain %s\n",
name());
59 std::greater<Voltages::value_type>()),
"DVFS: Voltage operation "\
60 "points not in descending order for voltage domain %s\n",
68 "DVFS: Requested voltage ID %d is outside the known "\
69 "range for domain %s.\n", perf_level,
name());
94 "(id: %d) should not be registered with voltage domain "\
103 if (perf < perf_max) {
125 warn(
"DVFS: Perf level for voltage domain %s adapted to "\
126 "requested perf levels from source clock domains.\n",
name());
138 .
desc(
"Voltage in Volts")
143 VoltageDomainParams::create()
#define chatty_assert(cond,...)
The chatty assert macro will function like a normal assert, but will allow the specification of addit...
uint32_t domainID() const
Derived & method(T *obj, V(T::*method)() const)
Extended functor that calls the specified method of the provided object.
PerfLevel perfLevel() const
Get the voltage point of the domain.
const Params * params() const
void unserialize(CheckpointIn &cp) override
Unserialize an object.
virtual void regStats()
Register statistics for this object.
VoltageDomain * voltageDomain() const
Get the voltage domain.
Declaration of Statistics objects.
#define UNSERIALIZE_SCALAR(scalar)
bool sanitiseVoltages()
Recomputes the highest (fastest, i.e., numerically lowest) requested performance level of all associa...
uint32_t numVoltages() const
double voltage() const
Get the current voltage.
void perfLevel(PerfLevel perf_level)
Sets the current performance level of the domain.
void regStats() override
Register statistics for this object.
A VoltageDomain is used to group clock domains that operate under the same voltage.
VoltageDomain(const Params *p)
#define SERIALIZE_SCALAR(scalar)
The source clock domains provides the notion of a clock domain that is connected to a tunable clock s...
Derived & name(const std::string &name)
Set the name and marks this stat to print at the end of simulation.
SrcClockChildren srcClockChildren
virtual const std::string name() const
std::ostream CheckpointOut
Stats::Value currentVoltage
Stat for reporting voltage of the domain.
void startup() override
Startup has all SrcClockDomains registered with this voltage domain, so try to make sure that all per...
Derived & desc(const std::string &_desc)
Set the description and marks this stat to print at the end of simulation.
void serialize(CheckpointOut &cp) const override
Serialize an object.
fatal_if(p->js_features.size() > 16,"Too many job slot feature registers specified (%i)\n", p->js_features.size())
SrcClockDomain::PerfLevel PerfLevel
const Voltages voltageOpPoints
List of possible minimum voltage at each of the frequency operational points, should be in descending...
Abstract superclass for simulation objects.