Go to the documentation of this file.
44 #ifndef __SIM_CLOCK_DOMAIN_HH__
45 #define __SIM_CLOCK_DOMAIN_HH__
50 #include "params/ClockDomain.hh"
51 #include "params/DerivedClockDomain.hh"
52 #include "params/SrcClockDomain.hh"
140 {
children.push_back(clock_domain); }
PerfLevel numPerfLevels() const
Get the number of available performance levels for this clock domain.
Tick clkPeriodAtPerfLevel(PerfLevel perf_level) const
Helper class for objects that need to be clocked.
const std::vector< Tick > freqOpPoints
List of possible frequency operational points, should be in descending order An empty list correspond...
PerfLevel perfLevel() const
double voltage() const
Get the current voltage this clock domain operates at.
uint64_t Tick
Tick count type.
The source clock domains provides the notion of a clock domain that is connected to a tunable clock s...
The derived clock domains provides the notion of a clock domain that is connected to a parent clock d...
void updateClockPeriod()
Called by the parent clock domain to propagate changes.
bool validPerfLevel(PerfLevel perf_level) const
Checks whether the performance level requested exists in the current domain configuration.
static const DomainID emptyDomainID
VoltageDomain * _voltageDomain
Voltage domain this clock domain belongs to.
void unserialize(CheckpointIn &cp) override
Unserialize an object.
ClockDomain::ClockDomainStats stats
The ClockDomain provides clock to group of clocked objects bundled under the same clock domain.
Tick clkPeriodAtPerfLevel() const
uint32_t domainID() const
PerfLevel _perfLevel
Current performance level the domain is set to.
std::vector< Clocked * > members
Pointers to members of this clock domain, so that when the clock period changes, we can update each m...
const uint32_t _domainID
Software recognizable id number for the domain, should be unique for each domain.
ClockDomainStats(ClockDomain &cd)
A VoltageDomain is used to group clock domains that operate under the same voltage.
ClockDomain & parent
Reference to the parent clock domain this clock domain derives its clock period from.
Stats::Value clock
Stat to report clock period of clock domain.
DerivedClockDomain(const Params *p)
VoltageDomain * voltageDomain() const
Get the voltage domain.
void addDerivedDomain(DerivedClockDomain *clock_domain)
Add a derived domain.
SrcClockDomainParams Params
SrcClockDomain(const Params *p)
void serialize(CheckpointOut &cp) const override
Serialize an object.
std::vector< DerivedClockDomain * > children
Pointers to potential derived clock domains so we can propagate changes.
ClockDomain(const Params *p, VoltageDomain *voltage_domain)
const uint64_t clockDivider
Local clock divider of the domain.
std::ostream CheckpointOut
void signalPerfLevelUpdate()
Inform other components about the changed performance level.
DerivedClockDomainParams Params
void registerWithClockDomain(Clocked *c)
Register a Clocked object with this ClockDomain.
Tick clockPeriod() const
Get the clock period.
Tick _clockPeriod
Pre-computed clock period in ticks.
void startup() override
startup() is the final initialization call before simulation.
Abstract superclass for simulation objects.
Generated on Wed Sep 30 2020 14:02:14 for gem5 by doxygen 1.8.17