Fix bug regarding addressIncrement
This commit is contained in:
@@ -49,36 +49,37 @@ void to_json(json &j, const TraceSetup &c)
|
||||
|
||||
for (const auto &initiator : c.initiators)
|
||||
{
|
||||
json inititator_j;
|
||||
json initiator_j;
|
||||
|
||||
inititator_j["name"] = initiator->name;
|
||||
inititator_j["clkMhz"] = initiator->clkMhz;
|
||||
inititator_j["maxPendingReadRequests"] = initiator->maxPendingReadRequests;
|
||||
inititator_j["maxPendingWriteRequests"] = initiator->maxPendingWriteRequests;
|
||||
initiator_j["name"] = initiator->name;
|
||||
initiator_j["clkMhz"] = initiator->clkMhz;
|
||||
initiator_j["maxPendingReadRequests"] = initiator->maxPendingReadRequests;
|
||||
initiator_j["maxPendingWriteRequests"] = initiator->maxPendingWriteRequests;
|
||||
|
||||
if (const auto generator = dynamic_cast<TraceGenerator *>(initiator.get()))
|
||||
{
|
||||
inititator_j["type"] = "generator";
|
||||
inititator_j["numRequests"] = generator->numRequests;
|
||||
inititator_j["rwRatio"] = generator->rwRatio;
|
||||
inititator_j["addressDistribution"] = generator->addressDistribution;
|
||||
inititator_j["seed"] = generator->seed;
|
||||
inititator_j["minAddress"] = generator->minAddress;
|
||||
inititator_j["maxAddress"] = generator->maxAddress;
|
||||
initiator_j["type"] = "generator";
|
||||
initiator_j["numRequests"] = generator->numRequests;
|
||||
initiator_j["rwRatio"] = generator->rwRatio;
|
||||
initiator_j["addressDistribution"] = generator->addressDistribution;
|
||||
initiator_j["addressIncrement"] = generator->addressIncrement;
|
||||
initiator_j["seed"] = generator->seed;
|
||||
initiator_j["minAddress"] = generator->minAddress;
|
||||
initiator_j["maxAddress"] = generator->maxAddress;
|
||||
}
|
||||
else if (const auto hammer = dynamic_cast<TraceHammer *>(initiator.get()))
|
||||
{
|
||||
inititator_j["type"] = "hammer";
|
||||
inititator_j["numRequests"] = hammer->numRequests;
|
||||
inititator_j["rowIncrement"] = hammer->rowIncrement;
|
||||
initiator_j["type"] = "hammer";
|
||||
initiator_j["numRequests"] = hammer->numRequests;
|
||||
initiator_j["rowIncrement"] = hammer->rowIncrement;
|
||||
}
|
||||
else if (const auto player = dynamic_cast<TracePlayer *>(initiator.get()))
|
||||
{
|
||||
inititator_j["type"] = "player";
|
||||
initiator_j["type"] = "player";
|
||||
}
|
||||
|
||||
remove_null_values(inititator_j);
|
||||
j.insert(j.end(), inititator_j);
|
||||
remove_null_values(initiator_j);
|
||||
j.insert(j.end(), initiator_j);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,6 +103,9 @@ void from_json(const json &j, TraceSetup &c)
|
||||
initiator_j.at("rwRatio").get_to(generator->rwRatio);
|
||||
initiator_j.at("addressDistribution").get_to(generator->addressDistribution);
|
||||
|
||||
if (initiator_j.contains("addressIncrement"))
|
||||
initiator_j.at("addressIncrement").get_to(generator->addressIncrement);
|
||||
|
||||
if (initiator_j.contains("seed"))
|
||||
initiator_j.at("seed").get_to(generator->seed);
|
||||
|
||||
|
||||
@@ -117,13 +117,19 @@ TraceSetup::TraceSetup(const DRAMSysConfiguration::TraceSetup &traceSetup,
|
||||
return 0;
|
||||
}();
|
||||
|
||||
if (minAddress > Configuration::getInstance().memSpec->getSimMemSizeInBytes() - 1)
|
||||
SC_REPORT_FATAL("TraceSetup", "minAddress is out of range.");
|
||||
|
||||
uint64_t maxAddress = [=]() -> uint64_t {
|
||||
if (generator->maxAddress.isValid())
|
||||
return generator->maxAddress.getValue();
|
||||
else
|
||||
return 0;
|
||||
return Configuration::getInstance().memSpec->getSimMemSizeInBytes() - 1;
|
||||
}();
|
||||
|
||||
if (maxAddress > Configuration::getInstance().memSpec->getSimMemSizeInBytes() - 1)
|
||||
SC_REPORT_FATAL("TraceSetup", "minAddress is out of range.");
|
||||
|
||||
if (maxAddress < minAddress)
|
||||
SC_REPORT_FATAL("TraceSetup", "maxAddress is smaller than minAddress.");
|
||||
|
||||
|
||||
@@ -210,6 +210,9 @@ void SimulationDialog::saveConfiguration(QFile &file)
|
||||
return;
|
||||
}
|
||||
|
||||
// Clear the file
|
||||
file.resize(0);
|
||||
|
||||
QTextStream out(&file);
|
||||
|
||||
loadConfigurationFromTextFields();
|
||||
|
||||
Reference in New Issue
Block a user