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