gem5  v19.0.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
BaseGen Class Referenceabstract

Base class for all generators, with the shared functionality and virtual functions for entering, executing and leaving the generator. More...

#include <base_gen.hh>

Inheritance diagram for BaseGen:
ExitGen IdleGen StochasticGen TraceGen LinearGen RandomGen DramGen DramRotGen

Public Member Functions

 BaseGen (SimObject &obj, MasterID master_id, Tick _duration)
 Create a base generator. More...
 
virtual ~BaseGen ()
 
std::string name () const
 Get the name, useful for DPRINTFs. More...
 
virtual void enter ()=0
 Enter this generator state. More...
 
virtual PacketPtr getNextPacket ()=0
 Get the next generated packet. More...
 
virtual void exit ()
 Exit this generator state. More...
 
virtual Tick nextPacketTick (bool elastic, Tick delay) const =0
 Determine the tick when the next packet is available. More...
 

Public Attributes

const Tick duration
 Time to spend in this state. More...
 

Protected Member Functions

PacketPtr getPacket (Addr addr, unsigned size, const MemCmd &cmd, Request::FlagsType flags=0)
 Generate a new request and associated packet. More...
 

Protected Attributes

const std::string _name
 Name to use for status and debug printing. More...
 
const MasterID masterID
 The MasterID used for generating requests. More...
 

Detailed Description

Base class for all generators, with the shared functionality and virtual functions for entering, executing and leaving the generator.

Definition at line 62 of file base_gen.hh.

Constructor & Destructor Documentation

◆ BaseGen()

BaseGen::BaseGen ( SimObject obj,
MasterID  master_id,
Tick  _duration 
)

Create a base generator.

Parameters
objsimobject owning the generator
master_idMasterID set on each request
_durationduration of this state before transitioning

Definition at line 54 of file base_gen.cc.

◆ ~BaseGen()

virtual BaseGen::~BaseGen ( )
inlinevirtual

Definition at line 98 of file base_gen.hh.

Member Function Documentation

◆ enter()

virtual void BaseGen::enter ( )
pure virtual

Enter this generator state.

Implemented in TraceGen, LinearGen, RandomGen, IdleGen, and ExitGen.

Referenced by name().

◆ exit()

virtual void BaseGen::exit ( )
inlinevirtual

Exit this generator state.

By default do nothing.

Reimplemented in TraceGen.

Definition at line 122 of file base_gen.hh.

References nextPacketTick().

◆ getNextPacket()

virtual PacketPtr BaseGen::getNextPacket ( )
pure virtual

Get the next generated packet.

Returns
A packet to be sent at the current tick

Implemented in TraceGen, DramRotGen, DramGen, LinearGen, RandomGen, IdleGen, and ExitGen.

Referenced by name().

◆ getPacket()

PacketPtr BaseGen::getPacket ( Addr  addr,
unsigned  size,
const MemCmd cmd,
Request::FlagsType  flags = 0 
)
protected

Generate a new request and associated packet.

Parameters
addrPhysical address to use
sizeSize of the request
cmdMemory command to send
flagsOptional request flags

Definition at line 61 of file base_gen.cc.

References addr, Packet::dataDynamic(), MemCmd::isWrite(), and masterID.

Referenced by RandomGen::getNextPacket(), DramGen::getNextPacket(), LinearGen::getNextPacket(), DramRotGen::getNextPacket(), and TraceGen::getNextPacket().

◆ name()

std::string BaseGen::name ( ) const
inline

Get the name, useful for DPRINTFs.

Returns
the given name

Definition at line 105 of file base_gen.hh.

References _name, enter(), and getNextPacket().

Referenced by ExitGen::enter(), TraceGen::exit(), and StochasticGen::StochasticGen().

◆ nextPacketTick()

virtual Tick BaseGen::nextPacketTick ( bool  elastic,
Tick  delay 
) const
pure virtual

Determine the tick when the next packet is available.

MaxTick means that there will not be any further packets in the current activation cycle of the generator.

Parameters
elasticshould the injection respond to flow control or not
delaytime the previous packet spent waiting
Returns
next tick when a packet is available

Implemented in TraceGen, LinearGen, RandomGen, IdleGen, and ExitGen.

Referenced by exit().

Member Data Documentation

◆ _name

const std::string BaseGen::_name
protected

Name to use for status and debug printing.

Definition at line 68 of file base_gen.hh.

Referenced by DramRotGen::DramRotGen(), and name().

◆ duration

const Tick BaseGen::duration

Time to spend in this state.

Definition at line 87 of file base_gen.hh.

◆ masterID

const MasterID BaseGen::masterID
protected

The MasterID used for generating requests.

Definition at line 71 of file base_gen.hh.

Referenced by getPacket().


The documentation for this class was generated from the following files:

Generated on Fri Feb 28 2020 16:27:08 for gem5 by doxygen 1.8.13