Merge branch 'feat/traffic_gen_length' into 'develop'
Add data length parameter to traffic generators. See merge request ems/astdm/modeling.dram/dram.sys!350
This commit is contained in:
@@ -263,6 +263,9 @@ void from_json(const json &j, TraceSetup &c)
|
||||
if (initiator_j.contains("maxTransactions"))
|
||||
initiator_j.at("maxTransactions").get_to(generator.maxTransactions);
|
||||
|
||||
if (initiator_j.contains("dataLength"))
|
||||
initiator_j.at("dataLength").get_to(generator.dataLength);
|
||||
|
||||
if (initiator_j.contains("idleUntil"))
|
||||
initiator_j.at("idleUntil").get_to(generator.idleUntil);
|
||||
|
||||
|
||||
@@ -117,6 +117,7 @@ struct TraceGenerator : public TrafficInitiator
|
||||
{
|
||||
std::optional<uint64_t> seed;
|
||||
std::optional<uint64_t> maxTransactions;
|
||||
std::optional<unsigned> dataLength;
|
||||
std::map<unsigned int, std::variant<TraceGeneratorIdleState, TraceGeneratorTrafficState>> states;
|
||||
std::multimap<unsigned int, TraceGeneratorStateTransition> transitions;
|
||||
std::optional<std::string> idleUntil;
|
||||
|
||||
@@ -51,7 +51,8 @@ StlPlayer::StlPlayer(const sc_module_name &name,
|
||||
bool addLengthConverter,
|
||||
TraceSetup *setup,
|
||||
bool relative) :
|
||||
TrafficInitiator(name, setup, maxPendingReadRequests, maxPendingWriteRequests, addLengthConverter),
|
||||
TrafficInitiator(name, setup, maxPendingReadRequests, maxPendingWriteRequests,
|
||||
Configuration::getInstance().memSpec->defaultBytesPerBurst, addLengthConverter),
|
||||
file(pathToTrace), relative(relative), playerClk(playerClk)
|
||||
{
|
||||
currentBuffer = &lineContents[0];
|
||||
|
||||
@@ -45,8 +45,9 @@ using namespace sc_core;
|
||||
using namespace tlm;
|
||||
|
||||
TrafficGeneratorIf::TrafficGeneratorIf(const sc_core::sc_module_name &name, TraceSetup *setup,
|
||||
unsigned int maxPendingReadRequests, unsigned int maxPendingWriteRequests, bool addLengthConverter)
|
||||
: TrafficInitiator(name, setup, maxPendingReadRequests, maxPendingWriteRequests, addLengthConverter)
|
||||
unsigned int maxPendingReadRequests, unsigned int maxPendingWriteRequests,
|
||||
unsigned int dataLength, bool addLengthConverter)
|
||||
: TrafficInitiator(name, setup, maxPendingReadRequests, maxPendingWriteRequests, dataLength, addLengthConverter)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -96,6 +97,7 @@ TrafficGenerator::TrafficGenerator(const sc_module_name &name, const DRAMSysConf
|
||||
TraceSetup *setup)
|
||||
: TrafficGeneratorIf(name, setup, conf.maxPendingReadRequests.value_or(defaultMaxPendingReadRequests),
|
||||
conf.maxPendingWriteRequests.value_or(defaultMaxPendingWriteRequests),
|
||||
conf.dataLength.value_or(Configuration::getInstance().memSpec->defaultBytesPerBurst),
|
||||
conf.addLengthConverter.value_or(false)),
|
||||
generatorClk(TrafficInitiator::evaluateGeneratorClk(conf)), conf(conf),
|
||||
maxTransactions(conf.maxTransactions.value_or(std::numeric_limits<uint64_t>::max())),
|
||||
@@ -375,8 +377,8 @@ uint64_t TrafficGenerator::evaluateMaxAddress(const DRAMSysConfiguration::TraceG
|
||||
|
||||
TrafficGeneratorHammer::TrafficGeneratorHammer(const sc_core::sc_module_name &name,
|
||||
const DRAMSysConfiguration::TraceHammer &conf, TraceSetup *setup)
|
||||
: TrafficGeneratorIf(name, setup, 1, 1, false), generatorClk(evaluateGeneratorClk(conf)), rowIncrement(conf.rowIncrement),
|
||||
numRequests(conf.numRequests)
|
||||
: TrafficGeneratorIf(name, setup, 1, 1, Configuration::getInstance().memSpec->defaultBytesPerBurst, false),
|
||||
generatorClk(evaluateGeneratorClk(conf)), rowIncrement(conf.rowIncrement), numRequests(conf.numRequests)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -49,8 +49,9 @@
|
||||
class TrafficGeneratorIf : public TrafficInitiator
|
||||
{
|
||||
public:
|
||||
TrafficGeneratorIf(const sc_core::sc_module_name &name, TraceSetup *setup, unsigned int maxPendingReadRequests,
|
||||
unsigned int maxPendingWriteRequests, bool addLengthConverter);
|
||||
TrafficGeneratorIf(const sc_core::sc_module_name &name, TraceSetup *setup,
|
||||
unsigned int maxPendingReadRequests, unsigned int maxPendingWriteRequests,
|
||||
unsigned int dataLength, bool addLengthConverter);
|
||||
|
||||
private:
|
||||
void sendNextPayload() override;
|
||||
|
||||
@@ -44,14 +44,15 @@ using namespace sc_core;
|
||||
using namespace tlm;
|
||||
|
||||
TrafficInitiator::TrafficInitiator(const sc_module_name &name, TraceSetup *setup,
|
||||
unsigned int maxPendingReadRequests, unsigned int maxPendingWriteRequests, bool addLengthConverter) :
|
||||
unsigned int maxPendingReadRequests, unsigned int maxPendingWriteRequests,
|
||||
unsigned int defaultDataLength, bool addLengthConverter) :
|
||||
sc_module(name),
|
||||
addLengthConverter(addLengthConverter),
|
||||
payloadEventQueue(this, &TrafficInitiator::peqCallback),
|
||||
setup(setup),
|
||||
maxPendingReadRequests(maxPendingReadRequests),
|
||||
maxPendingWriteRequests(maxPendingWriteRequests),
|
||||
defaultDataLength(Configuration::getInstance().memSpec->defaultBytesPerBurst),
|
||||
defaultDataLength(defaultDataLength),
|
||||
storageEnabled(Configuration::getInstance().storeMode != Configuration::StoreMode::NoStorage)
|
||||
{
|
||||
SC_THREAD(sendNextPayload);
|
||||
|
||||
@@ -57,7 +57,8 @@ class TrafficInitiator : public sc_core::sc_module
|
||||
public:
|
||||
tlm_utils::simple_initiator_socket<TrafficInitiator> iSocket;
|
||||
TrafficInitiator(const sc_core::sc_module_name &name, TraceSetup *setup,
|
||||
unsigned int maxPendingReadRequests, unsigned int maxPendingWriteRequests, bool addLengthConverter);
|
||||
unsigned int maxPendingReadRequests, unsigned int maxPendingWriteRequests,
|
||||
unsigned int defaultDataLength, bool addLengthConverter);
|
||||
SC_HAS_PROCESS(TrafficInitiator);
|
||||
virtual void sendNextPayload() = 0;
|
||||
const bool addLengthConverter = false;
|
||||
|
||||
Reference in New Issue
Block a user