Improve hammer player.

This commit is contained in:
Lukas Steiner
2021-09-09 10:38:39 +02:00
parent cedf7766cb
commit 6db7a2a21e
5 changed files with 30 additions and 24 deletions

View File

@@ -22,7 +22,8 @@
"clkMhz": 4000,
"type": "hammer",
"name": "ham0",
"numRequests": 4000
"numRequests": 4000,
"rowIncrement": 2097152
}
]
}

View File

@@ -82,12 +82,12 @@ private:
struct Transaction
{
Transaction() = default;
Transaction(uint64_t id) : id(id) {}
explicit Transaction(uint64_t id) : id(id) {}
uint64_t id;
uint64_t address;
unsigned int burstLength;
char cmd;
uint64_t id = 0;
uint64_t address = 0;
unsigned int burstLength = 0;
char cmd = 'X';
DramExtension dramExtension;
sc_core::sc_time timeOfGeneration;
TimeInterval timeOnDataStrobe;

View File

@@ -146,7 +146,7 @@ TraceSetup::TraceSetup(const std::string &uri,
if (value["seed"].is_number_unsigned())
seed = value["seed"];
TrafficGenerator *generator;
TrafficInitiator* generator;
if (addressDistribution == "sequential")
{
@@ -175,10 +175,14 @@ TraceSetup::TraceSetup(const std::string &uri,
{
if (!value["numRequests"].is_number_unsigned())
SC_REPORT_FATAL("TraceSetup", "Number of requests is not a number.");
uint64_t numRequests = value["numRequests"];
auto generator = new TrafficGeneratorHammer(name.c_str(), playerClk, numRequests, this);
if (!value["rowIncrement"].is_number_unsigned())
SC_REPORT_FATAL("TraceSetup", "Row increment is not a number.");
uint64_t rowIncrement = value["rowIncrement"];
TrafficInitiator* generator = new TrafficGeneratorHammer(name.c_str(), playerClk, numRequests,
rowIncrement, this);
players.push_back(generator);
}
}

View File

@@ -150,21 +150,20 @@ uint64_t TrafficGeneratorSequential::getNextAddress()
TrafficGeneratorHammer::TrafficGeneratorHammer(const sc_core::sc_module_name &name,
const sc_core::sc_time &generatorClk,
uint64_t numRequests,
TraceSetup *setup) :
TrafficGenerator(name, generatorClk, numRequests, 0, 0, 1, 1, setup)
const sc_core::sc_time &generatorClk,
uint64_t numRequests,
uint64_t rowIncrement,
TraceSetup *setup) :
TrafficGenerator(name, generatorClk, numRequests, 1, 1, 1, 1, setup), rowIncrement(rowIncrement)
{
}
uint64_t TrafficGeneratorHammer::getNextAddress()
{
uint64_t address = currentAddress;
if(currentAddress == 0) {
currentAddress += 2097152;
} else {
currentAddress = 0;
}
return address;
if (currentAddress == 0x0)
currentAddress = rowIncrement;
else
currentAddress = 0x0;
return currentAddress;
}

View File

@@ -112,13 +112,15 @@ class TrafficGeneratorHammer final : public TrafficGenerator
{
public:
TrafficGeneratorHammer(const sc_core::sc_module_name &name,
const sc_core::sc_time &generatorClk,
uint64_t numRequests,
TraceSetup *setup);
const sc_core::sc_time &generatorClk,
uint64_t numRequests,
uint64_t rowIncrement,
TraceSetup *setup);
private:
uint64_t getNextAddress() override;
uint64_t rowIncrement;
uint64_t currentAddress = 0x0;
};