44 #include "debug/VoltageDomain.hh" 45 #include "params/VoltageDomain.hh" 49 :
SimObject(p), voltageOpPoints(p->voltage), _perfLevel(0), stats(*this)
52 "voltage domain %s\n",
name());
56 std::greater<Voltages::value_type>()),
"DVFS: Voltage operation "\
57 "points not in descending order for voltage domain %s\n",
65 "DVFS: Requested voltage ID %d is outside the known "\
66 "range for domain %s.\n", perf_level,
name());
91 "(id: %d) should not be registered with voltage domain "\
100 if (perf < perf_max) {
122 warn(
"DVFS: Perf level for voltage domain %s adapted to "\
123 "requested perf levels from source clock domains.\n",
name());
128 VoltageDomainParams::create()
Derived & method(T *obj, V(T::*method)() const)
Extended functor that calls the specified method of the provided object.
VoltageDomain * voltageDomain() const
Get the voltage domain.
VoltageDomainStats(VoltageDomain &vd)
void unserialize(CheckpointIn &cp) override
Unserialize an object.
Declaration of Statistics objects.
#define chatty_assert(cond,...)
The chatty assert macro will function like a normal assert, but will allow the specification of addit...
PerfLevel perfLevel() const
Get the voltage point of the domain.
#define UNSERIALIZE_SCALAR(scalar)
bool sanitiseVoltages()
Recomputes the highest (fastest, i.e., numerically lowest) requested performance level of all associa...
#define fatal_if(cond,...)
Conditional fatal macro that checks the supplied condition and only causes a fatal error if the condi...
double voltage() const
Get the current voltage.
void perfLevel(PerfLevel perf_level)
Sets the current performance level of the domain.
A VoltageDomain is used to group clock domains that operate under the same voltage.
Stats::Value voltage
Stat for reporting voltage of the domain.
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...
uint32_t domainID() const
#define ADD_STAT(n,...)
Convenience macro to add a stat to a statistics group.
virtual const std::string name() const
SrcClockChildren srcClockChildren
std::ostream CheckpointOut
void startup() override
Startup has all SrcClockDomains registered with this voltage domain, so try to make sure that all per...
uint32_t numVoltages() const
void serialize(CheckpointOut &cp) const override
Serialize an object.
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.