Improve hammer player.
This commit is contained in:
@@ -22,7 +22,8 @@
|
||||
"clkMhz": 4000,
|
||||
"type": "hammer",
|
||||
"name": "ham0",
|
||||
"numRequests": 4000
|
||||
"numRequests": 4000,
|
||||
"rowIncrement": 2097152
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user