gem5
|
The random generator is similar to the linear one, but does not generate sequential addresses. More...
#include <generators.hh>
Public Member Functions | |
RandomGen (const std::string &_name, MasterID master_id, Tick _duration, Addr start_addr, Addr end_addr, Addr _blocksize, Tick min_period, Tick max_period, uint8_t read_percent, Addr data_limit) | |
Create a random address sequence generator. More... | |
void | enter () |
Enter this generator state. More... | |
PacketPtr | getNextPacket () |
Get the next generated packet. More... | |
Tick | nextPacketTick (bool elastic, Tick delay) const |
Determine the tick when the next packet is available. More... | |
Public Member Functions inherited from BaseGen | |
BaseGen (const std::string &_name, 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 | exit () |
Exit this generator state. More... | |
Protected Attributes | |
const Addr | startAddr |
Start of address range. More... | |
const Addr | endAddr |
End of address range. More... | |
const Addr | blocksize |
Block size. More... | |
const Tick | minPeriod |
Request generation period. More... | |
const Tick | maxPeriod |
const uint8_t | readPercent |
Percent of generated transactions that should be reads. More... | |
const Addr | dataLimit |
Maximum amount of data to manipulate. More... | |
Addr | dataManipulated |
Counter to determine the amount of data manipulated. More... | |
Protected Attributes inherited from BaseGen | |
const std::string | _name |
Name to use for status and debug printing. More... | |
const MasterID | masterID |
The MasterID used for generating requests. More... | |
Additional Inherited Members | |
Public Attributes inherited from BaseGen | |
const Tick | duration |
Time to spend in this state. More... | |
Protected Member Functions inherited from BaseGen | |
PacketPtr | getPacket (Addr addr, unsigned size, const MemCmd &cmd, Request::FlagsType flags=0) |
Generate a new request and associated packet. More... | |
The random generator is similar to the linear one, but does not generate sequential addresses.
Instead it randomly picks an address in the range, aligned to the block size.
Definition at line 241 of file generators.hh.
|
inline |
Create a random address sequence generator.
Set min_period == max_period for a fixed inter-transaction time.
_name | Name to use for status and debug |
master_id | MasterID set on each request |
_duration | duration of this state before transitioning |
start_addr | Start address |
end_addr | End address |
_blocksize | Size used for transactions injected |
min_period | Lower limit of random inter-transaction time |
max_period | Upper limit of random inter-transaction time |
read_percent | Percent of transactions that are reads |
data_limit | Upper limit on how much data to read/write |
Definition at line 262 of file generators.hh.
|
virtual |
Enter this generator state.
Implements BaseGen.
Definition at line 149 of file generators.cc.
References dataManipulated.
|
virtual |
Get the next generated packet.
Implements BaseGen.
Reimplemented in DramRotGen, and DramGen.
Definition at line 156 of file generators.cc.
References addr, blocksize, dataManipulated, DPRINTF, endAddr, BaseGen::getPacket(), Random::random(), random_mt, readPercent, MemCmd::ReadReq, startAddr, and MemCmd::WriteReq.
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.
elastic | should the injection respond to flow control or not |
delay | time the previous packet spent waiting |
Implements BaseGen.
Definition at line 384 of file generators.cc.
References curTick(), dataLimit, dataManipulated, DPRINTF, maxPeriod, MaxTick, minPeriod, Random::random(), and random_mt.
|
protected |
Block size.
Definition at line 288 of file generators.hh.
Referenced by DramGen::genStartAddr(), getNextPacket(), DramGen::getNextPacket(), and DramRotGen::getNextPacket().
|
protected |
Maximum amount of data to manipulate.
Definition at line 300 of file generators.hh.
Referenced by nextPacketTick().
|
protected |
Counter to determine the amount of data manipulated.
Used to determine if we should continue generating requests.
Definition at line 307 of file generators.hh.
Referenced by enter(), getNextPacket(), DramGen::getNextPacket(), DramRotGen::getNextPacket(), and nextPacketTick().
|
protected |
End of address range.
Definition at line 285 of file generators.hh.
Referenced by DramGen::genStartAddr(), and getNextPacket().
|
protected |
Definition at line 292 of file generators.hh.
Referenced by nextPacketTick().
|
protected |
Request generation period.
Definition at line 291 of file generators.hh.
Referenced by nextPacketTick().
|
protected |
Percent of generated transactions that should be reads.
Definition at line 297 of file generators.hh.
Referenced by DramRotGen::DramRotGen(), getNextPacket(), DramGen::getNextPacket(), and DramRotGen::getNextPacket().
|
protected |
Start of address range.
Definition at line 282 of file generators.hh.
Referenced by DramGen::genStartAddr(), and getNextPacket().