Make dataLength parameter required for initiators
This commit is contained in:
@@ -79,12 +79,13 @@ struct TracePlayer
|
||||
|
||||
uint64_t clkMhz{};
|
||||
std::string name;
|
||||
unsigned dataLength;
|
||||
std::optional<unsigned int> maxPendingReadRequests;
|
||||
std::optional<unsigned int> maxPendingWriteRequests;
|
||||
};
|
||||
|
||||
NLOHMANN_JSONIFY_ALL_THINGS(
|
||||
TracePlayer, clkMhz, name, maxPendingReadRequests, maxPendingWriteRequests)
|
||||
TracePlayer, clkMhz, name, dataLength, maxPendingReadRequests, maxPendingWriteRequests)
|
||||
|
||||
struct TrafficGeneratorActiveState
|
||||
{
|
||||
@@ -136,7 +137,7 @@ struct TrafficGenerator
|
||||
|
||||
std::optional<uint64_t> seed;
|
||||
std::optional<uint64_t> maxTransactions;
|
||||
std::optional<unsigned> dataLength;
|
||||
unsigned dataLength;
|
||||
std::optional<unsigned> dataAlignment;
|
||||
|
||||
uint64_t numRequests{};
|
||||
@@ -174,7 +175,7 @@ struct TrafficGeneratorStateMachine
|
||||
|
||||
std::optional<uint64_t> seed;
|
||||
std::optional<uint64_t> maxTransactions;
|
||||
std::optional<unsigned> dataLength;
|
||||
unsigned dataLength;
|
||||
std::optional<unsigned> dataAlignment;
|
||||
std::vector<std::variant<TrafficGeneratorActiveState, TrafficGeneratorIdleState>> states;
|
||||
std::vector<TrafficGeneratorStateTransition> transitions;
|
||||
@@ -200,7 +201,8 @@ struct RowHammer
|
||||
std::string name;
|
||||
std::optional<unsigned int> maxPendingReadRequests;
|
||||
std::optional<unsigned int> maxPendingWriteRequests;
|
||||
|
||||
|
||||
unsigned dataLength;
|
||||
uint64_t numRequests{};
|
||||
uint64_t rowIncrement{};
|
||||
};
|
||||
@@ -210,6 +212,7 @@ NLOHMANN_JSONIFY_ALL_THINGS(RowHammer,
|
||||
name,
|
||||
maxPendingReadRequests,
|
||||
maxPendingWriteRequests,
|
||||
dataLength,
|
||||
numRequests,
|
||||
rowIncrement)
|
||||
|
||||
|
||||
@@ -85,7 +85,6 @@ Simulator::instantiateInitiator(const DRAMSys::Config::Initiator& initiator)
|
||||
{
|
||||
uint64_t memorySize = dramSys->getMemSpec().getSimMemSizeInBytes();
|
||||
sc_core::sc_time interfaceClk = dramSys->getMemSpec().tCK;
|
||||
unsigned int defaultDataLength = dramSys->getMemSpec().defaultBytesPerBurst;
|
||||
|
||||
return std::visit(
|
||||
[=](auto&& config) -> std::unique_ptr<RequestIssuer>
|
||||
@@ -94,8 +93,7 @@ Simulator::instantiateInitiator(const DRAMSys::Config::Initiator& initiator)
|
||||
if constexpr (std::is_same_v<T, DRAMSys::Config::TrafficGenerator> ||
|
||||
std::is_same_v<T, DRAMSys::Config::TrafficGeneratorStateMachine>)
|
||||
{
|
||||
auto generator =
|
||||
std::make_unique<TrafficGenerator>(config, memorySize, defaultDataLength);
|
||||
auto generator = std::make_unique<TrafficGenerator>(config, memorySize);
|
||||
|
||||
return std::make_unique<RequestIssuer>(config.name.c_str(),
|
||||
std::move(generator),
|
||||
@@ -124,11 +122,8 @@ Simulator::instantiateInitiator(const DRAMSys::Config::Initiator& initiator)
|
||||
SC_REPORT_FATAL("Simulator", report.c_str());
|
||||
}
|
||||
|
||||
auto player = std::make_unique<StlPlayer>(tracePath.c_str(),
|
||||
config.clkMhz,
|
||||
defaultDataLength,
|
||||
*traceType,
|
||||
storageEnabled);
|
||||
auto player = std::make_unique<StlPlayer>(
|
||||
config, tracePath.c_str(), *traceType, storageEnabled);
|
||||
|
||||
return std::make_unique<RequestIssuer>(config.name.c_str(),
|
||||
std::move(player),
|
||||
@@ -141,7 +136,7 @@ Simulator::instantiateInitiator(const DRAMSys::Config::Initiator& initiator)
|
||||
}
|
||||
else if constexpr (std::is_same_v<T, DRAMSys::Config::RowHammer>)
|
||||
{
|
||||
auto hammer = std::make_unique<RowHammer>(config, defaultDataLength);
|
||||
auto hammer = std::make_unique<RowHammer>(config);
|
||||
|
||||
return std::make_unique<RequestIssuer>(config.name.c_str(),
|
||||
std::move(hammer),
|
||||
|
||||
@@ -39,12 +39,11 @@
|
||||
#include "SequentialState.h"
|
||||
|
||||
TrafficGenerator::TrafficGenerator(DRAMSys::Config::TrafficGeneratorStateMachine const& config,
|
||||
uint64_t memorySize,
|
||||
unsigned int defaultDataLength) :
|
||||
uint64_t memorySize) :
|
||||
stateTransistions(config.transitions),
|
||||
generatorPeriod(sc_core::sc_time(1.0 / static_cast<double>(config.clkMhz), sc_core::SC_US))
|
||||
{
|
||||
unsigned int dataLength = config.dataLength.value_or(defaultDataLength);
|
||||
unsigned int dataLength = config.dataLength;
|
||||
unsigned int dataAlignment = config.dataAlignment.value_or(dataLength);
|
||||
|
||||
for (auto const& state : config.states)
|
||||
@@ -62,13 +61,13 @@ TrafficGenerator::TrafficGenerator(DRAMSys::Config::TrafficGeneratorStateMachine
|
||||
DRAMSys::Config::AddressDistribution::Random)
|
||||
{
|
||||
auto producer = std::make_unique<RandomState>(activeState.numRequests,
|
||||
config.seed.value_or(0),
|
||||
activeState.rwRatio,
|
||||
activeState.minAddress,
|
||||
activeState.maxAddress,
|
||||
memorySize,
|
||||
dataLength,
|
||||
dataAlignment);
|
||||
config.seed.value_or(0),
|
||||
activeState.rwRatio,
|
||||
activeState.minAddress,
|
||||
activeState.maxAddress,
|
||||
memorySize,
|
||||
dataLength,
|
||||
dataAlignment);
|
||||
|
||||
producers.emplace(activeState.id, std::move(producer));
|
||||
}
|
||||
@@ -76,13 +75,13 @@ TrafficGenerator::TrafficGenerator(DRAMSys::Config::TrafficGeneratorStateMachine
|
||||
{
|
||||
auto producer =
|
||||
std::make_unique<SequentialState>(activeState.numRequests,
|
||||
config.seed.value_or(0),
|
||||
activeState.rwRatio,
|
||||
activeState.addressIncrement,
|
||||
activeState.minAddress,
|
||||
activeState.maxAddress,
|
||||
memorySize,
|
||||
dataLength);
|
||||
config.seed.value_or(0),
|
||||
activeState.rwRatio,
|
||||
activeState.addressIncrement,
|
||||
activeState.minAddress,
|
||||
activeState.maxAddress,
|
||||
memorySize,
|
||||
dataLength);
|
||||
|
||||
producers.emplace(activeState.id, std::move(producer));
|
||||
}
|
||||
@@ -98,35 +97,34 @@ TrafficGenerator::TrafficGenerator(DRAMSys::Config::TrafficGeneratorStateMachine
|
||||
}
|
||||
|
||||
TrafficGenerator::TrafficGenerator(DRAMSys::Config::TrafficGenerator const& config,
|
||||
uint64_t memorySize,
|
||||
unsigned int defaultDataLength) :
|
||||
uint64_t memorySize) :
|
||||
generatorPeriod(sc_core::sc_time(1.0 / static_cast<double>(config.clkMhz), sc_core::SC_US))
|
||||
{
|
||||
unsigned int dataLength = config.dataLength.value_or(defaultDataLength);
|
||||
unsigned int dataLength = config.dataLength;
|
||||
unsigned int dataAlignment = config.dataAlignment.value_or(dataLength);
|
||||
|
||||
if (config.addressDistribution == DRAMSys::Config::AddressDistribution::Random)
|
||||
{
|
||||
auto producer = std::make_unique<RandomState>(config.numRequests,
|
||||
config.seed.value_or(0),
|
||||
config.rwRatio,
|
||||
config.minAddress,
|
||||
config.maxAddress,
|
||||
memorySize,
|
||||
dataLength,
|
||||
dataAlignment);
|
||||
config.seed.value_or(0),
|
||||
config.rwRatio,
|
||||
config.minAddress,
|
||||
config.maxAddress,
|
||||
memorySize,
|
||||
dataLength,
|
||||
dataAlignment);
|
||||
producers.emplace(0, std::move(producer));
|
||||
}
|
||||
else
|
||||
{
|
||||
auto producer = std::make_unique<SequentialState>(config.numRequests,
|
||||
config.seed.value_or(0),
|
||||
config.rwRatio,
|
||||
config.addressIncrement,
|
||||
config.minAddress,
|
||||
config.maxAddress,
|
||||
memorySize,
|
||||
dataLength);
|
||||
config.seed.value_or(0),
|
||||
config.rwRatio,
|
||||
config.addressIncrement,
|
||||
config.minAddress,
|
||||
config.maxAddress,
|
||||
memorySize,
|
||||
dataLength);
|
||||
producers.emplace(0, std::move(producer));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,13 +47,10 @@ class RequestProducer;
|
||||
class TrafficGenerator : public RequestProducer
|
||||
{
|
||||
public:
|
||||
TrafficGenerator(DRAMSys::Config::TrafficGenerator const& config,
|
||||
uint64_t memorySize,
|
||||
unsigned int defaultDataLength);
|
||||
TrafficGenerator(DRAMSys::Config::TrafficGenerator const& config, uint64_t memorySize);
|
||||
|
||||
TrafficGenerator(DRAMSys::Config::TrafficGeneratorStateMachine const& config,
|
||||
uint64_t memorySize,
|
||||
unsigned int defaultDataLength);
|
||||
uint64_t memorySize);
|
||||
|
||||
uint64_t totalRequests() override;
|
||||
Request nextRequest() override;
|
||||
|
||||
@@ -35,11 +35,11 @@
|
||||
|
||||
#include "RowHammer.h"
|
||||
|
||||
RowHammer::RowHammer(DRAMSys::Config::RowHammer const& config, unsigned int dataLength) :
|
||||
RowHammer::RowHammer(DRAMSys::Config::RowHammer const& config) :
|
||||
generatorPeriod(sc_core::sc_time(1.0 / static_cast<double>(config.clkMhz), sc_core::SC_US)),
|
||||
numberOfRequests(config.numRequests),
|
||||
rowIncrement(config.rowIncrement),
|
||||
dataLength(dataLength)
|
||||
dataLength(config.dataLength)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
class RowHammer : public RequestProducer
|
||||
{
|
||||
public:
|
||||
RowHammer(DRAMSys::Config::RowHammer const& config, unsigned int dataLength);
|
||||
RowHammer(DRAMSys::Config::RowHammer const& config);
|
||||
|
||||
Request nextRequest() override;
|
||||
sc_core::sc_time nextTrigger() override { return generatorPeriod; }
|
||||
|
||||
@@ -44,15 +44,14 @@
|
||||
|
||||
static constexpr std::size_t LINE_BUFFER_SIZE = 10000;
|
||||
|
||||
StlPlayer::StlPlayer(std::filesystem::path const& trace,
|
||||
unsigned int clkMhz,
|
||||
unsigned int defaultDataLength,
|
||||
StlPlayer::StlPlayer(DRAMSys::Config::TracePlayer const& config,
|
||||
std::filesystem::path const& trace,
|
||||
TraceType traceType,
|
||||
bool storageEnabled) :
|
||||
traceType(traceType),
|
||||
storageEnabled(storageEnabled),
|
||||
playerPeriod(sc_core::sc_time(1.0 / static_cast<double>(clkMhz), sc_core::SC_US)),
|
||||
defaultDataLength(defaultDataLength),
|
||||
playerPeriod(sc_core::sc_time(1.0 / static_cast<double>(config.clkMhz), sc_core::SC_US)),
|
||||
defaultDataLength(config.dataLength),
|
||||
traceFile(trace)
|
||||
{
|
||||
if (!traceFile.is_open())
|
||||
|
||||
@@ -42,6 +42,8 @@
|
||||
|
||||
#include "simulator/request/RequestProducer.h"
|
||||
|
||||
#include <DRAMSys/config/TraceSetup.h>
|
||||
|
||||
#include <systemc>
|
||||
#include <tlm>
|
||||
|
||||
@@ -61,9 +63,8 @@ public:
|
||||
Relative,
|
||||
};
|
||||
|
||||
StlPlayer(std::filesystem::path const& trace,
|
||||
unsigned int clkMhz,
|
||||
unsigned int defaultDataLength,
|
||||
StlPlayer(DRAMSys::Config::TracePlayer const& config,
|
||||
std::filesystem::path const& trace,
|
||||
TraceType traceType,
|
||||
bool storageEnabled);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user