diff --git a/DRAMSys/library/CMakeLists.txt b/DRAMSys/library/CMakeLists.txt
index 1725607b..1593d159 100644
--- a/DRAMSys/library/CMakeLists.txt
+++ b/DRAMSys/library/CMakeLists.txt
@@ -119,7 +119,7 @@ add_library(DRAMSysLibrary
src/controller/refresh/RefreshManagerIF.h
src/controller/refresh/RefreshManagerDummy.cpp
- src/controller/refresh/RefreshManager.cpp
+ src/controller/refresh/RefreshManagerRankwise.cpp
src/controller/refresh/RefreshManagerBankwise.cpp
src/controller/respqueue/RespQueueIF.h
diff --git a/DRAMSys/library/resources/configs/mcconfigs/fifo.xml b/DRAMSys/library/resources/configs/mcconfigs/fifo.xml
index 24dc2490..629ad725 100644
--- a/DRAMSys/library/resources/configs/mcconfigs/fifo.xml
+++ b/DRAMSys/library/resources/configs/mcconfigs/fifo.xml
@@ -1,49 +1,20 @@
-
+
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.xml b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.xml
index a91a9092..dada4e70 100644
--- a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.xml
+++ b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.xml
@@ -1,49 +1,20 @@
-
+
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_grp.xml b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_grp.xml
index 00a190a7..06104618 100644
--- a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_grp.xml
+++ b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_grp.xml
@@ -1,49 +1,20 @@
-
+
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/DRAMSys/library/src/common/TlmRecorder.cpp b/DRAMSys/library/src/common/TlmRecorder.cpp
index d917d47c..f02231a2 100644
--- a/DRAMSys/library/src/common/TlmRecorder.cpp
+++ b/DRAMSys/library/src/common/TlmRecorder.cpp
@@ -337,18 +337,18 @@ void TlmRecorder::insertGeneralInfo()
memspec.length(), NULL);
sqlite3_bind_text(insertGeneralInfoStatement, 9, traces.c_str(),
traces.length(), NULL);
- if (!Configuration::getInstance().EnableWindowing)
+ if (!Configuration::getInstance().enableWindowing)
sqlite3_bind_int64(insertGeneralInfoStatement, 10, 0);
else
sqlite3_bind_int64(insertGeneralInfoStatement, 10,
(Configuration::getInstance().memSpec->clk *
- Configuration::getInstance().WindowSize).value());
- if (Configuration::getInstance().ControllerCoreRefEnablePostpone
- || Configuration::getInstance().ControllerCoreRefEnablePullIn) {
+ Configuration::getInstance().windowSize).value());
+ if ((Configuration::getInstance().refreshMaxPostponed > 0)
+ || (Configuration::getInstance().refreshMaxPulledin > 0)) {
sqlite3_bind_int(insertGeneralInfoStatement, 11, 1);
sqlite3_bind_int(insertGeneralInfoStatement, 12,
- std::max(Configuration::getInstance().ControllerCoreRefMaxPulledIn,
- Configuration::getInstance().ControllerCoreRefMaxPostponed));
+ std::max(Configuration::getInstance().refreshMaxPostponed,
+ Configuration::getInstance().refreshMaxPulledin));
} else {
sqlite3_bind_int(insertGeneralInfoStatement, 11, 0);
sqlite3_bind_int(insertGeneralInfoStatement, 12, 0);
diff --git a/DRAMSys/library/src/configuration/Configuration.cpp b/DRAMSys/library/src/configuration/Configuration.cpp
index 0c2fb4f2..e8357d6e 100644
--- a/DRAMSys/library/src/configuration/Configuration.cpp
+++ b/DRAMSys/library/src/configuration/Configuration.cpp
@@ -47,28 +47,6 @@ using namespace std;
string Configuration::memspecUri = "";
string Configuration::mcconfigUri = "";
-bool string2bool(string s)
-{
- if (s.compare("0") == 0) {
- return false;
- } else if (s.compare("1") == 0) {
- return true;
- } else {
- SC_REPORT_FATAL("Configuration", ("Could not convert to bool: " + s).c_str());
- return false;
- }
-}
-
-int string2int(string s)
-{
- return std::stoi(s);
-}
-
-unsigned long long string2ull(string s)
-{
- return std::stoull(s);
-}
-
StorageMode string2StoreMode(string s)
{
if (s == "NoStorage")
@@ -83,34 +61,6 @@ StorageMode string2StoreMode(string s)
}
}
-EPowerDownMode string2PDNMode(string s)
-{
- if (s == "NoPowerDown")
- return EPowerDownMode::NoPowerDown;
- else if (s == "Staggered")
- return EPowerDownMode::Staggered;
- else if (s == "TimeoutPDN")
- return EPowerDownMode::TimeoutPDN;
- else if (s == "TimeoutSREF")
- return EPowerDownMode::TimeoutSREF;
- else {
- SC_REPORT_FATAL("Configuration", ("Unknown PowerDownMode: " + s).c_str());
- throw;
- }
-}
-
-ECCControllerMode string2ECCControllerMode(string s)
-{
- if (s == "Disabled")
- return ECCControllerMode::Disabled;
- else if (s == "Hamming")
- return ECCControllerMode::Hamming;
- else {
- SC_REPORT_FATAL("Configuration", ("Unknown ECCControllerMode: " + s).c_str());
- throw;
- }
-}
-
enum sc_time_unit string2TimeUnit(string s)
{
if (s == "s")
@@ -134,150 +84,81 @@ enum sc_time_unit string2TimeUnit(string s)
void Configuration::setParameter(std::string name, std::string value)
{
- if (name == "BankwiseLogic")
- BankwiseLogic = string2bool(value);
- else if (name == "PagePolicy")
+ // MCConfig
+ if (name == "PagePolicy")
pagePolicy = value;
- else if (name == "MaxNrOfTransactions")
- MaxNrOfTransactions = string2int(value);
else if (name == "Scheduler")
scheduler = value;
+ else if (name == "RequestBufferSize")
+ requestBufferSize = std::stoul(value);
else if (name == "CmdMux")
cmdMux = value;
else if (name == "RespQueue")
respQueue = value;
- else if (name == "SJFProbability")
- {
- if (string2int(value) > 100 || string2int(value) < 0)
- SC_REPORT_FATAL("Configuration",
- ("Invalid value for parameter " + name +
- ". This parameter must be between 0 and 100.").c_str());
- else
- SJFProbability = string2int(value);
- }
- else if (name == "RequestBufferSize")
- RequestBufferSize = string2int(value);
- else if (name == "Capsize")
- Capsize = string2int(value);
+ else if (name == "RefreshPolicy")
+ refreshPolicy = value;
+ else if (name == "RefreshMode")
+ refreshMode = std::stoul(value);
+ else if (name == "RefreshMaxPostponed")
+ refreshMaxPostponed = std::stoul(value);
+ else if (name == "RefreshMaxPulledin")
+ refreshMaxPulledin = std::stoul(value);
+ else if (name == "PowerDownPolicy")
+ powerDownPolicy = value;
else if (name == "PowerDownTimeout")
- powerDownTimeoutInClk = string2int(value);
- else if (name == "PowerDownMode")
- PowerDownMode = string2PDNMode(value);
- else if (name == "ReadWriteGrouping")
- ReadWriteGrouping = string2bool(value);
- else if (name == "ReorderBuffer")
- ReorderBuffer = string2bool(value);
-
+ powerDownTimeout = std::stoul(value);
//SimConfig------------------------------------------------
else if (name == "SimulationName")
- SimulationName = value;
+ simulationName = value;
else if (name == "DatabaseRecording")
- DatabaseRecording = string2bool(value);
+ databaseRecording = std::stoul(value);
else if (name == "PowerAnalysis")
- PowerAnalysis = string2bool(value);
+ powerAnalysis = std::stoul(value);
else if (name == "EnableWindowing")
- EnableWindowing = string2bool(value);
+ enableWindowing = std::stoul(value);
else if (name == "WindowSize")
{
- if (string2int(value) < 1)
+ windowSize = std::stoul(value);
+ if (windowSize == 0)
SC_REPORT_FATAL("Configuration",
("Invalid value for parameter " + name +
". This parameter must be at least one.").c_str());
- else
- WindowSize = string2int(value);
}
else if (name == "Debug")
- Debug = string2bool(value);
+ debug = std::stoul(value);
else if (name == "NumberOfMemChannels")
- NumberOfMemChannels = string2int(value);
- else if (name == "ControllerCoreRefDisable")
- ControllerCoreRefDisable = string2bool(value);
- else if (name == "ControllerCoreRGR")
- RowGranularRef = string2bool(value);
- else if (name == "ControllerCoreRGRRowInc")
- RowInc = string2int(value);
- else if (name == "ControllerCoreRefMode")
- {
- RefMode = string2int(value);
- if (RefMode != 1 && RefMode != 2 && RefMode != 4)
- SC_REPORT_FATAL("Configuration", (name + " invalid value.").c_str());
- }
- else if (name == "ControllerCoreRefNumARCmdsIntREFI")
- NumAR = string2int(value);
- else if (name == "ControllerCoreRGRB0")
- RGRB0 = string2bool(value);
- else if (name == "ControllerCoreRGRB1")
- RGRB1 = string2bool(value);
- else if (name == "ControllerCoreRGRB2")
- RGRB2 = string2bool(value);
- else if (name == "ControllerCoreRGRB3")
- RGRB3 = string2bool(value);
- else if (name == "ControllerCoreRGRB4")
- RGRB4 = string2bool(value);
- else if (name == "ControllerCoreRGRB5")
- RGRB5 = string2bool(value);
- else if (name == "ControllerCoreRGRB6")
- RGRB6 = string2bool(value);
- else if (name == "ControllerCoreRGRB7")
- RGRB7 = string2bool(value);
- else if (name == "ControllerCoreRGRB8")
- RGRB8 = string2bool(value);
- else if (name == "ControllerCoreRGRB9")
- RGRB9 = string2bool(value);
- else if (name == "ControllerCoreRGRB10")
- RGRB10 = string2bool(value);
- else if (name == "ControllerCoreRGRB11")
- RGRB11 = string2bool(value);
- else if (name == "ControllerCoreRGRB12")
- RGRB12 = string2bool(value);
- else if (name == "ControllerCoreRGRB13")
- RGRB13 = string2bool(value);
- else if (name == "ControllerCoreRGRB14")
- RGRB14 = string2bool(value);
- else if (name == "ControllerCoreRGRB15")
- RGRB15 = string2bool(value);
- else if (name == "ControllerCoreRefForceMaxPostponeBurst")
- ControllerCoreRefForceMaxPostponeBurst = string2bool(value);
- else if (name == "ControllerCoreRefEnablePostpone")
- ControllerCoreRefEnablePostpone = string2bool(value);
- else if (name == "ControllerCoreRefEnablePullIn")
- ControllerCoreRefEnablePullIn = string2bool(value);
- else if (name == "ControllerCoreRefMaxPostponed")
- ControllerCoreRefMaxPostponed = string2int(value);
- else if (name == "ControllerCoreRefMaxPulledIn")
- ControllerCoreRefMaxPulledIn = string2int(value);
+ numberOfMemChannels = std::stoul(value);
else if (name == "ThermalSimulation")
- ThermalSimulation = string2bool(value);
+ thermalSimulation = std::stoul(value);
else if (name == "SimulationProgressBar")
- SimulationProgressBar = string2bool(value);
+ simulationProgressBar = std::stoul(value);
else if (name == "NumberOfDevicesOnDIMM")
{
- if (string2int(value) < 1)
+ numberOfDevicesOnDIMM = std::stoul(value);
+ if (numberOfDevicesOnDIMM == 0)
SC_REPORT_FATAL("Configuration",
("Invalid value for parameter " + name +
". This parameter must be at least one.").c_str());
- else
- NumberOfDevicesOnDIMM = string2int(value);
}
else if (name == "AddressOffset")
{
#ifdef DRAMSYS_GEM5
- AddressOffset = string2ull(value);
+ addressOffset = std::stoull(value);
#else
- AddressOffset = 0;
+ addressOffset = 0;
#endif
}
else if (name == "UseMalloc")
- UseMalloc = string2bool(value);
+ useMalloc = std::stoul(value);
else if (name == "CheckTLM2Protocol")
- CheckTLM2Protocol = string2bool(value);
+ checkTLM2Protocol = std::stoul(value);
else if (name == "ECCControllerMode")
- ECCMode = string2ECCControllerMode(value);
+ ECCMode = value;
// Specification for ErrorChipSeed, ErrorCSVFile path and StoreMode
else if (name == "ErrorChipSeed")
- ErrorChipSeed = string2int(value);
+ errorChipSeed = std::stoul(value);
else if (name == "ErrorCSVFile")
- ErrorCSVFile = value;
+ errorCSVFile = value;
else if (name == "StoreMode")
StoreMode = string2StoreMode(value);
// Temperature Simulation related
@@ -289,7 +170,7 @@ void Configuration::setParameter(std::string name, std::string value)
temperatureSim.TemperatureScale = value;
}
else if (name == "StaticTemperatureDefaultValue")
- temperatureSim.StaticTemperatureDefaultValue = string2int(value);
+ temperatureSim.StaticTemperatureDefaultValue = std::stoi(value);
else if (name == "ThermalSimPeriod")
temperatureSim.ThermalSimPeriod = std::stod(value.c_str());
else if (name == "ThermalSimUnit")
@@ -302,15 +183,15 @@ void Configuration::setParameter(std::string name, std::string value)
else if (name == "IceServerIp")
temperatureSim.IceServerIp = value;
else if (name == "IceServerPort")
- temperatureSim.IceServerPort = string2int(value);
+ temperatureSim.IceServerPort = std::stoul(value);
else if (name == "SimPeriodAdjustFactor")
temperatureSim.SimPeriodAdjustFactor = std::stoi(value.c_str());
else if (name == "NPowStableCyclesToIncreasePeriod")
temperatureSim.NPowStableCyclesToIncreasePeriod = std::stoi(value.c_str());
else if (name == "GenerateTemperatureMap")
- temperatureSim.GenerateTemperatureMap = string2bool(value);
+ temperatureSim.GenerateTemperatureMap = std::stoul(value);
else if (name == "GeneratePowerMap")
- temperatureSim.GeneratePowerMap = string2bool(value);
+ temperatureSim.GeneratePowerMap = std::stoul(value);
else
SC_REPORT_FATAL("Configuration",
("Parameter " + name + " not defined in Configuration").c_str());
@@ -351,7 +232,7 @@ std::uint64_t Configuration::getSimMemSizeInBytes()
// 3. Calculate size of one DRAM chip in bytes
std::uint64_t chipSize = chipBitSize / 8;
// 4. Total memory size in Bytes of one DIMM (with only support of 1 rank on a DIMM)
- std::uint64_t memorySize = chipSize * NumberOfDevicesOnDIMM;
+ std::uint64_t memorySize = chipSize * numberOfDevicesOnDIMM;
std::cout << headline << std::endl;
std::cout << "Per Channel Configuration:" << std::endl << std::endl;
@@ -365,7 +246,7 @@ std::uint64_t Configuration::getSimMemSizeInBytes()
std::cout << " Chip data bus width: " << bitWidth << std::endl;
std::cout << " Chip size in bits: " << chipBitSize << std::endl;
std::cout << " Chip Size in bytes: " << chipSize << std::endl;
- std::cout << " Devices/Chips on DIMM: " << NumberOfDevicesOnDIMM << std::endl;
+ std::cout << " Devices/Chips on DIMM: " << numberOfDevicesOnDIMM << std::endl;
std::cout << std::endl;
assert(memorySize > 0);
@@ -378,7 +259,7 @@ std::uint64_t Configuration::getSimMemSizeInBytes()
// The bus width is given in bits, e.g., 64-bit data bus, 128-bit data bus, etc.
unsigned int Configuration::getDataBusWidth()
{
- unsigned int dataBusWidth = memSpec->bitWidth * NumberOfDevicesOnDIMM;
+ unsigned int dataBusWidth = memSpec->bitWidth * numberOfDevicesOnDIMM;
assert(dataBusWidth > 0);
return dataBusWidth;
}
@@ -390,7 +271,7 @@ unsigned int Configuration::getBytesPerBurst()
unsigned int bytesPerBurst = (memSpec->BurstLength * getDataBusWidth()) / 8;
assert(bytesPerBurst > 0);
- if (NumberOfDevicesOnDIMM > 1) {
+ if (numberOfDevicesOnDIMM > 1) {
// The least significant bits of the physical address are the byte
// offset of the N-byte-wide memory module (DIMM) (a single data word
// or burst element has N bytes. N = 2^(# bits for byte offset)).
@@ -402,36 +283,20 @@ unsigned int Configuration::getBytesPerBurst()
return bytesPerBurst;
}
-bool Configuration::getRGRBank(unsigned int w)
-{
- bool flg = w == 0 ? RGRB0 : w == 1 ? RGRB1 : w == 2 ? RGRB2 : w == 3 ? RGRB3 : w
- == 4 ? RGRB4 : w == 5 ? RGRB5 : w == 6 ? RGRB6 : w == 7 ? RGRB7 : w == 8 ? RGRB8
- : w == 9 ? RGRB9 : w == 10 ? RGRB10 : w == 11 ? RGRB11 : w == 12 ? RGRB12 : w ==
- 13 ? RGRB13 : w == 14 ? RGRB14 : w == 15 ? RGRB15 : true;
- return flg;
-}
-unsigned int Configuration::getNumAR(void)
-{
- return NumAR;
-}
-unsigned int Configuration::getRowInc(void)
-{
- return RowInc;
-}
-
-unsigned int Configuration::getRefMode(void)
-{
- return RefMode;
-}
-
// Changes the number of bytes depeding on the ECC Controller. This function is needed for modules which get data directly or indirectly from the ECC Controller
unsigned int Configuration::adjustNumBytesAfterECC(unsigned nBytes)
{
// Manipulate the number of bytes only if there is an ECC Controller selected
- if (ECCMode == ECCControllerMode::Disabled)
+ if (ECCMode == "Disabled")
return nBytes;
- else {
+ else if (ECCMode == "Hamming")
+ {
assert(pECC != nullptr);
return pECC->AllocationSize(nBytes);
}
+ else
+ {
+ SC_REPORT_FATAL("Configuration", ("ECC mode " + ECCMode + " unsupported").c_str());
+ return 0;
+ }
}
diff --git a/DRAMSys/library/src/configuration/Configuration.h b/DRAMSys/library/src/configuration/Configuration.h
index af4c8a28..6004f43c 100644
--- a/DRAMSys/library/src/configuration/Configuration.h
+++ b/DRAMSys/library/src/configuration/Configuration.h
@@ -50,10 +50,6 @@
enum class StorageMode {NoStorage, Store, ErrorModel};
-enum class EPowerDownMode {NoPowerDown, Staggered, TimeoutPDN, TimeoutSREF};
-
-enum class ECCControllerMode {Disabled, Hamming};
-
struct Configuration
{
static std::string memspecUri;
@@ -63,68 +59,34 @@ struct Configuration
DEF_SINGLETON(Configuration);
// MCConfig:
- bool BankwiseLogic = false;
- unsigned int MaxNrOfTransactions = 8;
- std::string pagePolicy;
- std::string scheduler, cmdMux, respQueue;
- unsigned int SJFProbability;
- unsigned int RequestBufferSize;
- unsigned int Capsize = 5;
- sc_time getPowerDownTimeout()
- {
- return powerDownTimeoutInClk * memSpec->clk;
- }
- EPowerDownMode PowerDownMode = EPowerDownMode::Staggered;
- bool ReadWriteGrouping = false;
- bool ReorderBuffer = false;
-
+ std::string pagePolicy = "Open";
+ std::string scheduler = "Fifo";
+ std::string cmdMux = "Oldest";
+ std::string respQueue = "Fifo";
+ unsigned int requestBufferSize = 8;
+ std::string refreshPolicy = "Rankwise";
+ unsigned int refreshMode = 1;
+ unsigned int refreshMaxPostponed = 0;
+ unsigned int refreshMaxPulledin = 0;
+ std::string powerDownPolicy = "NoPowerDown";
+ unsigned int powerDownTimeout = 3;
// SimConfig
- std::string SimulationName = "default";
- bool DatabaseRecording = true;
- bool PowerAnalysis = false;
- bool EnableWindowing = false;
- unsigned int WindowSize = 1000;
- bool Debug = false;
- unsigned int NumberOfMemChannels = 1;
- bool ControllerCoreRefDisable = false;
- bool RowGranularRef = false;
- bool RGRB0 = true;
- bool RGRB1 = true;
- bool RGRB2 = true;
- bool RGRB3 = true;
- bool RGRB4 = true;
- bool RGRB5 = true;
- bool RGRB6 = true;
- bool RGRB7 = true;
- bool RGRB8 = true;
- bool RGRB9 = true;
- bool RGRB10 = true;
- bool RGRB11 = true;
- bool RGRB12 = true;
- bool RGRB13 = true;
- bool RGRB14 = true;
- bool RGRB15 = true;
- unsigned int NumAR = 8192;
- unsigned int RefMode = 1;
- unsigned int RowInc = 1;
- bool getRGRBank(unsigned int);
- unsigned int getNumAR(void);
- unsigned int getRowInc(void);
- unsigned int getRefMode(void);
- bool ControllerCoreRefForceMaxPostponeBurst = false;
- bool ControllerCoreRefEnablePostpone = false;
- bool ControllerCoreRefEnablePullIn = false;
- unsigned int ControllerCoreRefMaxPostponed = 8;
- unsigned int ControllerCoreRefMaxPulledIn = 8;
- bool ThermalSimulation = false;
- bool SimulationProgressBar = false;
- unsigned int NumberOfDevicesOnDIMM = 1;
- bool CheckTLM2Protocol = false;
- ECCControllerMode ECCMode = ECCControllerMode::Disabled;
+ std::string simulationName = "default";
+ bool databaseRecording = false;
+ bool powerAnalysis = false;
+ bool enableWindowing = false;
+ unsigned int windowSize = 1000;
+ bool debug = false;
+ unsigned int numberOfMemChannels = 1;
+ bool thermalSimulation = false;
+ bool simulationProgressBar = false;
+ unsigned int numberOfDevicesOnDIMM = 8;
+ bool checkTLM2Protocol = false;
+ std::string ECCMode = "Disabled";
ECCBaseClass *pECC = nullptr;
bool gem5 = false;
- bool UseMalloc = false;
- unsigned long long int AddressOffset = 0;
+ bool useMalloc = false;
+ unsigned long long int addressOffset = 0;
// MemSpec (from DRAM-Power XML)
MemSpec *memSpec;
@@ -133,8 +95,8 @@ struct Configuration
void setParameters(std::map parameterMap);
//Configs for Seed, csv file and StorageMode
- unsigned int ErrorChipSeed;
- std::string ErrorCSVFile = "not defined.";
+ unsigned int errorChipSeed;
+ std::string errorCSVFile = "not defined.";
StorageMode StoreMode;
// Temperature Simulation related
@@ -146,10 +108,6 @@ struct Configuration
unsigned int adjustNumBytesAfterECC(unsigned bytes);
void setPathToResources(std::string path);
std::string getPathToResources();
-
-private:
- Configuration() {}
- unsigned int powerDownTimeoutInClk = 3;
};
#endif // CONFIGURATION_H
diff --git a/DRAMSys/library/src/configuration/ConfigurationLoader.cpp b/DRAMSys/library/src/configuration/ConfigurationLoader.cpp
index 29a46b3e..d0bf8cfa 100644
--- a/DRAMSys/library/src/configuration/ConfigurationLoader.cpp
+++ b/DRAMSys/library/src/configuration/ConfigurationLoader.cpp
@@ -318,18 +318,18 @@ void ConfigurationLoader::loadDDR4(Configuration &config, XMLElement *xmlSpec)
memSpec->tCCD_S = clk * queryUIntParameter(timings, "CCD_S");
memSpec->tCCD_L = clk * queryUIntParameter(timings, "CCD_L");
memSpec->tFAW = clk * queryUIntParameter(timings, "FAW");
- unsigned refMode = Configuration::getInstance().getRefMode();
- if (refMode == 1)
+ unsigned refreshMode = Configuration::getInstance().refreshMode;
+ if (refreshMode == 1)
{
memSpec->tREFI = clk * queryUIntParameter(timings, "REFI");
memSpec->tRFC = clk * queryUIntParameter(timings, "RFC");
}
- else if (refMode == 2)
+ else if (refreshMode == 2)
{
memSpec->tREFI = clk * (queryUIntParameter(timings, "REFI") / 2);
memSpec->tRFC = clk * queryUIntParameter(timings, "RFC2");
}
- else if (refMode == 4)
+ else if (refreshMode == 4)
{
memSpec->tREFI = clk * (queryUIntParameter(timings, "REFI") / 2);
memSpec->tRFC = clk * queryUIntParameter(timings, "RFC4");
diff --git a/DRAMSys/library/src/controller/Controller.cpp b/DRAMSys/library/src/controller/Controller.cpp
index 9585157b..80d5d3df 100644
--- a/DRAMSys/library/src/controller/Controller.cpp
+++ b/DRAMSys/library/src/controller/Controller.cpp
@@ -53,7 +53,7 @@
#include "cmdmux/CmdMuxOldest.h"
#include "respqueue/RespQueueFifo.h"
#include "respqueue/RespQueueReorder.h"
-#include "refresh/RefreshManager.h"
+#include "refresh/RefreshManagerRankwise.h"
#include "refresh/RefreshManagerDummy.h"
#include "refresh/RefreshManagerBankwise.h"
#include "powerdown/PowerDownManagerStaggered.h"
@@ -103,9 +103,9 @@ Controller::Controller(sc_module_name name) :
SC_REPORT_FATAL("Controller", "Selected scheduler not supported!");
if (config.cmdMux == "Oldest")
- commandMux = new CmdMuxOldest();
+ cmdMux = new CmdMuxOldest();
else if (config.cmdMux == "Strict")
- commandMux = new CmdMuxStrict();
+ cmdMux = new CmdMuxStrict();
else
SC_REPORT_FATAL("Controller", "Selected cmdmux not supported!");
@@ -147,7 +147,7 @@ Controller::Controller(sc_module_name name) :
}
// instantiate power-down managers (one per rank)
- if (config.PowerDownMode == EPowerDownMode::NoPowerDown)
+ if (config.powerDownPolicy == "NoPowerDown")
{
for (unsigned rankID = 0; rankID < memSpec->NumberOfRanks; rankID++)
{
@@ -155,7 +155,7 @@ Controller::Controller(sc_module_name name) :
powerDownManagers.push_back(manager);
}
}
- else if (config.PowerDownMode == EPowerDownMode::Staggered)
+ else if (config.powerDownPolicy == "Staggered")
{
for (unsigned rankID = 0; rankID < memSpec->NumberOfRanks; rankID++)
{
@@ -169,12 +169,22 @@ Controller::Controller(sc_module_name name) :
SC_REPORT_FATAL("Controller", "Selected power-down mode not supported!");
// instantiate refresh managers (one per rank)
- if (config.ControllerCoreRefDisable)
+ if (config.refreshPolicy == "NoRefresh")
{
for (unsigned rankID = 0; rankID < memSpec->NumberOfRanks; rankID++)
refreshManagers.push_back(new RefreshManagerDummy());
}
- else if (config.BankwiseLogic)
+ else if (config.refreshPolicy == "Rankwise")
+ {
+ for (unsigned rankID = 0; rankID < memSpec->NumberOfRanks; rankID++)
+ {
+ RefreshManagerIF *manager = new RefreshManagerRankwise
+ (bankMachinesOnRank[rankID], powerDownManagers[rankID], Rank(rankID), checker);
+ refreshManagers.push_back(manager);
+ controllerEvent.notify(manager->start());
+ }
+ }
+ else if (config.refreshPolicy == "Bankwise")
{
for (unsigned rankID = 0; rankID < memSpec->NumberOfRanks; rankID++)
{
@@ -186,15 +196,7 @@ Controller::Controller(sc_module_name name) :
}
}
else
- {
- for (unsigned rankID = 0; rankID < memSpec->NumberOfRanks; rankID++)
- {
- RefreshManagerIF *manager = new RefreshManager
- (bankMachinesOnRank[rankID], powerDownManagers[rankID], Rank(rankID), checker);
- refreshManagers.push_back(manager);
- controllerEvent.notify(manager->start());
- }
- }
+ SC_REPORT_FATAL("Controller", "Selected refresh mode not supported!");
startBandwidthIdleCollector();
}
@@ -210,7 +212,7 @@ Controller::~Controller()
delete it;
for (auto it : bankMachines)
delete it;
- delete commandMux;
+ delete cmdMux;
delete scheduler;
delete checker;
}
@@ -289,7 +291,7 @@ void Controller::controllerMethod()
bool readyCmdBlocked = false;
if (!readyCommands.empty())
{
- commandPair = commandMux->selectCommand(readyCommands);
+ commandPair = cmdMux->selectCommand(readyCommands);
if (commandPair.second != nullptr) // can happen with FIFO strict
{
Rank rank = DramExtension::getRank(commandPair.second);
diff --git a/DRAMSys/library/src/controller/Controller.h b/DRAMSys/library/src/controller/Controller.h
index 391a22cb..f9ab37f9 100644
--- a/DRAMSys/library/src/controller/Controller.h
+++ b/DRAMSys/library/src/controller/Controller.h
@@ -87,7 +87,7 @@ private:
std::vector bankMachines;
std::vector> bankMachinesOnRank;
- CmdMuxIF *commandMux;
+ CmdMuxIF *cmdMux;
SchedulerIF *scheduler;
CheckerIF *checker;
RespQueueIF *respQueue;
diff --git a/DRAMSys/library/src/controller/GenericController.h b/DRAMSys/library/src/controller/GenericController.h
index 896d6fcd..113b3dbc 100644
--- a/DRAMSys/library/src/controller/GenericController.h
+++ b/DRAMSys/library/src/controller/GenericController.h
@@ -37,7 +37,7 @@ public:
// BusWidth e.g. 8 or 64
* Configuration::getInstance().memSpec->bitWidth
// Number of devices on a DIMM e.g. 8
- * Configuration::getInstance().NumberOfDevicesOnDIMM ) / ( 1024 );
+ * Configuration::getInstance().numberOfDevicesOnDIMM ) / ( 1024 );
std::cout << name() << std::string(" Total Time: ")
<< sc_time_stamp().to_string()
diff --git a/DRAMSys/library/src/controller/refresh/RefreshManagerBankwise.cpp b/DRAMSys/library/src/controller/refresh/RefreshManagerBankwise.cpp
index 9d9f64aa..899d93e3 100644
--- a/DRAMSys/library/src/controller/refresh/RefreshManagerBankwise.cpp
+++ b/DRAMSys/library/src/controller/refresh/RefreshManagerBankwise.cpp
@@ -53,10 +53,8 @@ RefreshManagerBankwise::RefreshManagerBankwise(std::vector &bankM
}
remainingBankMachines = allBankMachines;
- if (config.ControllerCoreRefEnablePostpone)
- maxPostponed = config.ControllerCoreRefMaxPostponed * memSpec->BanksPerRank;
- if (config.ControllerCoreRefEnablePullIn)
- maxPulledin = -(config.ControllerCoreRefMaxPulledIn * memSpec->BanksPerRank);
+ maxPostponed = config.refreshMaxPostponed * memSpec->BanksPerRank;
+ maxPulledin = -(config.refreshMaxPulledin * memSpec->BanksPerRank);
}
std::pair RefreshManagerBankwise::getNextCommand()
diff --git a/DRAMSys/library/src/controller/refresh/RefreshManager.cpp b/DRAMSys/library/src/controller/refresh/RefreshManagerRankwise.cpp
similarity index 90%
rename from DRAMSys/library/src/controller/refresh/RefreshManager.cpp
rename to DRAMSys/library/src/controller/refresh/RefreshManagerRankwise.cpp
index 3f2f9801..68a20b61 100644
--- a/DRAMSys/library/src/controller/refresh/RefreshManager.cpp
+++ b/DRAMSys/library/src/controller/refresh/RefreshManagerRankwise.cpp
@@ -32,12 +32,12 @@
* Author: Lukas Steiner
*/
-#include "RefreshManager.h"
+#include "RefreshManagerRankwise.h"
#include "../../common/dramExtensions.h"
#include "../../configuration/Configuration.h"
#include "../../common/utils.h"
-RefreshManager::RefreshManager(std::vector &bankMachines,
+RefreshManagerRankwise::RefreshManagerRankwise(std::vector &bankMachines,
PowerDownManagerIF *powerDownManager, Rank rank, CheckerIF *checker)
: bankMachines(bankMachines), powerDownManager(powerDownManager), rank(rank), checker(checker)
{
@@ -46,23 +46,21 @@ RefreshManager::RefreshManager(std::vector &bankMachines,
timeForNextTrigger = memSpec->getRefreshIntervalAB();
setUpDummy(refreshPayload, rank);
- if (config.ControllerCoreRefEnablePostpone)
- maxPostponed = config.ControllerCoreRefMaxPostponed;
- if (config.ControllerCoreRefEnablePullIn)
- maxPulledin = -config.ControllerCoreRefMaxPulledIn;
+ maxPostponed = config.refreshMaxPostponed;
+ maxPulledin = -config.refreshMaxPulledin;
}
-void RefreshManager::notifyActive()
+void RefreshManagerRankwise::notifyActive()
{
controllerIdle = false;
}
-void RefreshManager::notifyIdle()
+void RefreshManagerRankwise::notifyIdle()
{
controllerIdle = true;
}
-std::pair RefreshManager::getNextCommand()
+std::pair RefreshManagerRankwise::getNextCommand()
{
if (sc_time_stamp() == timeToSchedule)
return std::pair(nextCommand, &refreshPayload);
@@ -70,7 +68,7 @@ std::pair RefreshManager::getNextCommand()
return std::pair(Command::NOP, nullptr);
}
-sc_time RefreshManager::start()
+sc_time RefreshManagerRankwise::start()
{
timeToSchedule = sc_max_time();
@@ -131,7 +129,7 @@ sc_time RefreshManager::start()
return timeForNextTrigger;
}
-void RefreshManager::updateState(Command command, tlm_generic_payload *)
+void RefreshManagerRankwise::updateState(Command command, tlm_generic_payload *)
{
if (command == Command::ACT)
activatedBanks++;
diff --git a/DRAMSys/library/src/controller/refresh/RefreshManager.h b/DRAMSys/library/src/controller/refresh/RefreshManagerRankwise.h
similarity index 91%
rename from DRAMSys/library/src/controller/refresh/RefreshManager.h
rename to DRAMSys/library/src/controller/refresh/RefreshManagerRankwise.h
index e6a2942a..c6e6786d 100644
--- a/DRAMSys/library/src/controller/refresh/RefreshManager.h
+++ b/DRAMSys/library/src/controller/refresh/RefreshManagerRankwise.h
@@ -32,8 +32,8 @@
* Author: Lukas Steiner
*/
-#ifndef REFRESHMANAGER_H
-#define REFRESHMANAGER_H
+#ifndef REFRESHMANAGERRANKWISE_H
+#define REFRESHMANAGERRANKWISE_H
#include "RefreshManagerIF.h"
#include "../../configuration/memspec/MemSpec.h"
@@ -43,10 +43,10 @@
using namespace tlm;
-class RefreshManager final : public RefreshManagerIF
+class RefreshManagerRankwise final : public RefreshManagerIF
{
public:
- RefreshManager(std::vector &, PowerDownManagerIF *, Rank, CheckerIF *);
+ RefreshManagerRankwise(std::vector &, PowerDownManagerIF *, Rank, CheckerIF *);
virtual std::pair getNextCommand() override;
virtual sc_time start() override;
@@ -77,4 +77,4 @@ private:
bool sleeping = false;
};
-#endif // REFRESHMANAGER_H
+#endif // REFRESHMANAGERRANKWISE_H
diff --git a/DRAMSys/library/src/controller/scheduler/SchedulerFifo.cpp b/DRAMSys/library/src/controller/scheduler/SchedulerFifo.cpp
index dba1ffb2..47b67b86 100644
--- a/DRAMSys/library/src/controller/scheduler/SchedulerFifo.cpp
+++ b/DRAMSys/library/src/controller/scheduler/SchedulerFifo.cpp
@@ -38,12 +38,12 @@ SchedulerFifo::SchedulerFifo()
{
buffer = std::vector>
(Configuration::getInstance().memSpec->NumberOfBanks);
- maxNumberOfRequests = Configuration::getInstance().MaxNrOfTransactions;
+ requestBufferSize = Configuration::getInstance().requestBufferSize;
}
bool SchedulerFifo::hasBufferSpace(tlm_generic_payload *payload)
{
- if (buffer[DramExtension::getBank(payload).ID()].size() < maxNumberOfRequests)
+ if (buffer[DramExtension::getBank(payload).ID()].size() < requestBufferSize)
return true;
else
return false;
diff --git a/DRAMSys/library/src/controller/scheduler/SchedulerFifo.h b/DRAMSys/library/src/controller/scheduler/SchedulerFifo.h
index 42761560..3acee039 100644
--- a/DRAMSys/library/src/controller/scheduler/SchedulerFifo.h
+++ b/DRAMSys/library/src/controller/scheduler/SchedulerFifo.h
@@ -56,7 +56,7 @@ public:
virtual bool hasFurtherRequest(Bank) override;
private:
std::vector> buffer;
- unsigned maxNumberOfRequests;
+ unsigned requestBufferSize;
};
#endif // SCHEDULERFIFO_H
diff --git a/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.cpp b/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.cpp
index 3003f967..667430d7 100644
--- a/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.cpp
+++ b/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.cpp
@@ -40,12 +40,12 @@ SchedulerFrFcfs::SchedulerFrFcfs()
{
buffer = std::vector>
(Configuration::getInstance().memSpec->NumberOfBanks);
- maxNumberOfRequests = Configuration::getInstance().MaxNrOfTransactions;
+ requestBufferSize = Configuration::getInstance().requestBufferSize;
}
bool SchedulerFrFcfs::hasBufferSpace(tlm_generic_payload *payload)
{
- if (buffer[DramExtension::getBank(payload).ID()].size() < maxNumberOfRequests)
+ if (buffer[DramExtension::getBank(payload).ID()].size() < requestBufferSize)
return true;
else
return false;
diff --git a/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.h b/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.h
index 8e123e0d..c0250513 100644
--- a/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.h
+++ b/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfs.h
@@ -56,7 +56,7 @@ public:
virtual bool hasFurtherRequest(Bank) override;
private:
std::vector> buffer;
- unsigned maxNumberOfRequests;
+ unsigned requestBufferSize;
};
#endif // SCHEDULERFRFCFS_H
diff --git a/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfsGrp.cpp b/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfsGrp.cpp
index 67f7f77e..109fd78d 100644
--- a/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfsGrp.cpp
+++ b/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfsGrp.cpp
@@ -38,12 +38,12 @@ SchedulerFrFcfsGrp::SchedulerFrFcfsGrp()
{
buffer = std::vector>
(Configuration::getInstance().memSpec->NumberOfBanks);
- maxNumberOfRequests = Configuration::getInstance().MaxNrOfTransactions;
+ requestBufferSize = Configuration::getInstance().requestBufferSize;
}
bool SchedulerFrFcfsGrp::hasBufferSpace(tlm_generic_payload *payload)
{
- if (buffer[DramExtension::getBank(payload).ID()].size() < maxNumberOfRequests)
+ if (buffer[DramExtension::getBank(payload).ID()].size() < requestBufferSize)
return true;
else
return false;
diff --git a/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfsGrp.h b/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfsGrp.h
index 50537fc6..0b7418df 100644
--- a/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfsGrp.h
+++ b/DRAMSys/library/src/controller/scheduler/SchedulerFrFcfsGrp.h
@@ -57,7 +57,7 @@ public:
virtual bool hasFurtherRequest(Bank) override;
private:
std::vector> buffer;
- unsigned maxNumberOfRequests;
+ unsigned requestBufferSize;
tlm_command lastCommand = TLM_READ_COMMAND;
};
diff --git a/DRAMSys/library/src/error/errormodel.cpp b/DRAMSys/library/src/error/errormodel.cpp
index b23b8dff..6a14a16f 100644
--- a/DRAMSys/library/src/error/errormodel.cpp
+++ b/DRAMSys/library/src/error/errormodel.cpp
@@ -43,8 +43,8 @@
void errorModel::init()
{
- powerAnalysis = Configuration::getInstance().PowerAnalysis;
- thermalSim = Configuration::getInstance().ThermalSimulation;
+ powerAnalysis = Configuration::getInstance().powerAnalysis;
+ thermalSim = Configuration::getInstance().thermalSimulation;
// Get Configuration parameters:
burstLenght = Configuration::getInstance().memSpec->BurstLength;
numberOfColumns = Configuration::getInstance().memSpec->NumberOfColumns;
@@ -514,7 +514,7 @@ double errorModel::getTemperature()
void errorModel::parseInputData()
{
- std::string fileName = Configuration::getInstance().ErrorCSVFile;
+ std::string fileName = Configuration::getInstance().errorCSVFile;
std::ifstream inputFile(fileName);
if (inputFile.is_open()) {
diff --git a/DRAMSys/library/src/simulation/Arbiter.cpp b/DRAMSys/library/src/simulation/Arbiter.cpp
index f275e057..18b62a4a 100644
--- a/DRAMSys/library/src/simulation/Arbiter.cpp
+++ b/DRAMSys/library/src/simulation/Arbiter.cpp
@@ -48,7 +48,7 @@ Arbiter::Arbiter(sc_module_name name) :
// Anytime an transaction comes from a memory unity to the arbiter the "bw" callback is called.
iSocket.register_nb_transport_bw(this, &Arbiter::nb_transport_bw);
- for (size_t i = 0; i < Configuration::getInstance().NumberOfMemChannels; ++i)
+ for (size_t i = 0; i < Configuration::getInstance().numberOfMemChannels; ++i)
{
channelIsFree.push_back(true);
pendingRequests.push_back(queue());
@@ -74,7 +74,7 @@ tlm_sync_enum Arbiter::nb_transport_fw(int id, tlm_generic_payload &payload,
{
// adjust address offset:
payload.set_address(payload.get_address() -
- Configuration::getInstance().AddressOffset);
+ Configuration::getInstance().addressOffset);
// In the begin request phase the socket ID is appended to the payload.
// It will extracted from the payload and used later.
@@ -112,7 +112,7 @@ unsigned int Arbiter::transport_dbg(int /*id*/, tlm::tlm_generic_payload &trans)
{
// adjust address offset:
trans.set_address(trans.get_address() -
- Configuration::getInstance().AddressOffset);
+ Configuration::getInstance().addressOffset);
DecodedAddress decodedAddress = AddressDecoder::getInstance().decodeAddress(
trans.get_address());
@@ -127,7 +127,7 @@ void Arbiter::peqCallback(tlm_generic_payload &payload, const tlm_phase &phase)
// Check the valid range of initiatorSocket ID and channel Id
// TODO: initiatorSocket ID not checked
- assert(channelId < Configuration::getInstance().NumberOfMemChannels);
+ assert(channelId < Configuration::getInstance().numberOfMemChannels);
// Phases initiated by the intiator side from arbiter's point of view (devices performing memory requests to the arbiter)
if (phase == BEGIN_REQ)
diff --git a/DRAMSys/library/src/simulation/DRAMSys.cpp b/DRAMSys/library/src/simulation/DRAMSys.cpp
index f705a6fc..5224d926 100644
--- a/DRAMSys/library/src/simulation/DRAMSys.cpp
+++ b/DRAMSys/library/src/simulation/DRAMSys.cpp
@@ -134,12 +134,12 @@ DRAMSys::DRAMSys(sc_module_name name,
AddressDecoder::getInstance().print();
// Setup the debug manager:
- setupDebugManager(Configuration::getInstance().SimulationName);
+ setupDebugManager(Configuration::getInstance().simulationName);
// If a simulation file is passed as argument to DRAMSys the simulation ID
// is prepended to the simulation name if found.
std::string simName;
- simName = Configuration::getInstance().SimulationName;
+ simName = Configuration::getInstance().simulationName;
tinyxml2::XMLDocument simulationdoc;
loadXML(simulationToRun, simulationdoc);
tinyxml2::XMLElement *simulation =
@@ -151,7 +151,7 @@ DRAMSys::DRAMSys(sc_module_name name,
if (r != NULL) {
std::string sid;
sid = r;
- simName = sid + '_' + Configuration::getInstance().SimulationName;
+ simName = sid + '_' + Configuration::getInstance().simulationName;
}
}
}
@@ -196,7 +196,7 @@ void DRAMSys::setupTlmRecorders(const string &traceName,
{
// Create TLM Recorders, one per channel.
for (size_t i = 0;
- i < Configuration::getInstance().NumberOfMemChannels;
+ i < Configuration::getInstance().numberOfMemChannels;
i++) {
std::string sqlScriptURI = pathToResources
+ string("scripts/createTraceDB.sql");
@@ -213,7 +213,7 @@ void DRAMSys::setupTlmRecorders(const string &traceName,
tlmRecorder->recordMCconfig(Configuration::getInstance().mcconfigUri);
tlmRecorder->recordMemspec(Configuration::getInstance().memspecUri);
- std::string traceNames = Configuration::getInstance().SimulationName;
+ std::string traceNames = Configuration::getInstance().simulationName;
tlmRecorder->recordTracenames(traceNames);
tlmRecorders.push_back(tlmRecorder);
@@ -229,19 +229,17 @@ void DRAMSys::instantiateModules(const string &traceName,
// Create and properly initialize TLM recorders.
// They need to be ready before creating some modules.
- bool recordingEnabled = Configuration::getInstance().DatabaseRecording;
+ bool recordingEnabled = Configuration::getInstance().databaseRecording;
if (recordingEnabled)
setupTlmRecorders(traceName, pathToResources);
// Create new ECC Controller
- switch (Configuration::getInstance().ECCMode) {
- case ECCControllerMode::Hamming:
+ if (Configuration::getInstance().ECCMode == "Hamming")
ecc = new ECCHamming("ECCHamming");
- break;
- default:
+ else if (Configuration::getInstance().ECCMode == "Disabled")
ecc = nullptr;
- break;
- }
+ else
+ SC_REPORT_FATAL("DRAMSys", "Unsupported ECC mode");
// Save ECC Controller into the configuration struct to adjust it dynamically
Configuration::getInstance().pECC = ecc;
@@ -251,7 +249,7 @@ void DRAMSys::instantiateModules(const string &traceName,
// Create DRAM
std::string memoryType = Configuration::getInstance().memSpec->MemoryType;
- for (size_t i = 0; i < Configuration::getInstance().NumberOfMemChannels; i++)
+ for (size_t i = 0; i < Configuration::getInstance().numberOfMemChannels; i++)
{
std::string str = "controller" + std::to_string(i);
@@ -329,12 +327,11 @@ void DRAMSys::instantiateModules(const string &traceName,
dram = new DramGDDR6(str.c_str());
}
else
- {
SC_REPORT_FATAL("DRAMSys", "Unsupported DRAM type");
- }
+
drams.push_back(dram);
- if (Configuration::getInstance().CheckTLM2Protocol) {
+ if (Configuration::getInstance().checkTLM2Protocol) {
str = "TLMCheckerController" + std::to_string(i);
tlm_utils::tlm2_base_protocol_checker<> *controllerTlmChecker =
new tlm_utils::tlm2_base_protocol_checker<>(str.c_str());
@@ -346,17 +343,20 @@ void DRAMSys::instantiateModules(const string &traceName,
void DRAMSys::bindSockets()
{
// If ECC Controller enabled, put it between Trace and arbiter
- if (Configuration::getInstance().ECCMode != ECCControllerMode::Disabled) {
+ if (Configuration::getInstance().ECCMode == "Hamming")
+ {
assert(ecc != nullptr);
tSocket.bind(ecc->t_socket);
ecc->i_socket.bind(arbiter->tSocket);
- } else {
- tSocket.bind(arbiter->tSocket);
}
+ else if (Configuration::getInstance().ECCMode == "Disabled")
+ tSocket.bind(arbiter->tSocket);
+ else
+ SC_REPORT_FATAL("DRAMSys", "Unsupported ECC mode");
- if (Configuration::getInstance().CheckTLM2Protocol) {
+ if (Configuration::getInstance().checkTLM2Protocol) {
for (size_t i = 0;
- i < Configuration::getInstance().NumberOfMemChannels;
+ i < Configuration::getInstance().numberOfMemChannels;
i++) {
arbiter->iSocket.bind(controllersTlmCheckers[i]->target_socket);
controllersTlmCheckers[i]->initiator_socket.bind(
@@ -365,7 +365,7 @@ void DRAMSys::bindSockets()
}
} else {
for (size_t i = 0;
- i < Configuration::getInstance().NumberOfMemChannels;
+ i < Configuration::getInstance().numberOfMemChannels;
i++) {
arbiter->iSocket.bind(controllers[i]->tSocket);
controllers[i]->iSocket.bind(drams[i]->tSocket);
diff --git a/DRAMSys/library/src/simulation/TemperatureController.h b/DRAMSys/library/src/simulation/TemperatureController.h
index aeb02e00..a0ecc5b3 100644
--- a/DRAMSys/library/src/simulation/TemperatureController.h
+++ b/DRAMSys/library/src/simulation/TemperatureController.h
@@ -61,7 +61,7 @@ public:
SC_CTOR(TemperatureController) {
temperatureScale = Configuration::getInstance().temperatureSim.TemperatureScale;
- dynamicTempSimEnabled = Configuration::getInstance().ThermalSimulation;
+ dynamicTempSimEnabled = Configuration::getInstance().thermalSimulation;
staticTemperature =
Configuration::getInstance().temperatureSim.StaticTemperatureDefaultValue;
diff --git a/DRAMSys/library/src/simulation/TracePlayer.cpp b/DRAMSys/library/src/simulation/TracePlayer.cpp
index f9aa8fb6..1b660c22 100644
--- a/DRAMSys/library/src/simulation/TracePlayer.cpp
+++ b/DRAMSys/library/src/simulation/TracePlayer.cpp
@@ -85,7 +85,7 @@ void TracePlayer::peqCallback(tlm_generic_payload &payload,
} else if (phase == BEGIN_RESP) {
payload.release();
sendToTarget(payload, END_RESP, SC_ZERO_TIME);
- if (Configuration::getInstance().SimulationProgressBar)
+ if (Configuration::getInstance().simulationProgressBar)
listener->transactionFinished();
transactionsReceived++;
diff --git a/DRAMSys/library/src/simulation/TraceSetup.cpp b/DRAMSys/library/src/simulation/TraceSetup.cpp
index 79a241d6..53922968 100644
--- a/DRAMSys/library/src/simulation/TraceSetup.cpp
+++ b/DRAMSys/library/src/simulation/TraceSetup.cpp
@@ -97,7 +97,7 @@ traceSetup::traceSetup(std::string uri,
}
devices->push_back(player);
- if (Configuration::getInstance().SimulationProgressBar) {
+ if (Configuration::getInstance().simulationProgressBar) {
totalTransactions += player->getNumberOfLines(stlFile);
}
}
diff --git a/DRAMSys/library/src/simulation/dram/Dram.cpp b/DRAMSys/library/src/simulation/dram/Dram.cpp
index b23e9c58..5f2577df 100644
--- a/DRAMSys/library/src/simulation/dram/Dram.cpp
+++ b/DRAMSys/library/src/simulation/dram/Dram.cpp
@@ -73,7 +73,7 @@ Dram::Dram(sc_module_name name) : sc_module(name), tSocket("socket")
uint64_t memorySize = Configuration::getInstance().getSimMemSizeInBytes();
if (StoreMode == StorageMode::Store)
{
- if (Configuration::getInstance().UseMalloc)
+ if (Configuration::getInstance().useMalloc)
{
memory = (unsigned char *)malloc(memorySize);
if (!memory)
@@ -97,13 +97,13 @@ Dram::Dram(sc_module_name name) : sc_module(name), tSocket("socket")
Dram::~Dram()
{
- if (Configuration::getInstance().PowerAnalysis)
+ if (Configuration::getInstance().powerAnalysis)
{
libDRAMPower *DRAMPower = dynamic_cast(this->DRAMPower);
if (DRAMPower == nullptr)
SC_REPORT_FATAL("Dram", "Power Analysis active but libDRAMPowerIF instantiated");
- if (!Configuration::getInstance().DatabaseRecording)
+ if (!Configuration::getInstance().databaseRecording)
DRAMPower->calcEnergy();
// Print the final total energy and the average power for
@@ -111,19 +111,19 @@ Dram::~Dram()
std::cout << name() << std::string(" Total Energy: ")
<< std::fixed << std::setprecision( 2 )
<< DRAMPower->getEnergy().total_energy
- * Configuration::getInstance().NumberOfDevicesOnDIMM
+ * Configuration::getInstance().numberOfDevicesOnDIMM
<< std::string(" pJ")
<< std::endl;
std::cout << name() << std::string(" Average Power: ")
<< std::fixed << std::setprecision( 2 )
<< DRAMPower->getPower().average_power
- * Configuration::getInstance().NumberOfDevicesOnDIMM
+ * Configuration::getInstance().numberOfDevicesOnDIMM
<< std::string(" mW") << std::endl;
}
delete DRAMPower;
- if (Configuration::getInstance().UseMalloc)
+ if (Configuration::getInstance().useMalloc)
free(memory);
}
diff --git a/DRAMSys/library/src/simulation/dram/DramDDR3.cpp b/DRAMSys/library/src/simulation/dram/DramDDR3.cpp
index bcdb03eb..199f2ce5 100644
--- a/DRAMSys/library/src/simulation/dram/DramDDR3.cpp
+++ b/DRAMSys/library/src/simulation/dram/DramDDR3.cpp
@@ -50,7 +50,7 @@ DramDDR3::DramDDR3(sc_module_name name) : Dram(name)
if (memSpec == nullptr)
SC_REPORT_FATAL("DramDDR3", "Wrong MemSpec chosen");
- if (Configuration::getInstance().PowerAnalysis)
+ if (Configuration::getInstance().powerAnalysis)
{
sc_time clk = memSpec->clk;
diff --git a/DRAMSys/library/src/simulation/dram/DramDDR4.cpp b/DRAMSys/library/src/simulation/dram/DramDDR4.cpp
index 7fb03743..db8378d0 100644
--- a/DRAMSys/library/src/simulation/dram/DramDDR4.cpp
+++ b/DRAMSys/library/src/simulation/dram/DramDDR4.cpp
@@ -50,7 +50,7 @@ DramDDR4::DramDDR4(sc_module_name name) : Dram(name)
if (memSpec == nullptr)
SC_REPORT_FATAL("DramDDR4", "Wrong MemSpec chosen");
- if (Configuration::getInstance().PowerAnalysis)
+ if (Configuration::getInstance().powerAnalysis)
{
sc_time clk = memSpec->clk;
diff --git a/DRAMSys/library/src/simulation/dram/DramGDDR5.cpp b/DRAMSys/library/src/simulation/dram/DramGDDR5.cpp
index 3e580346..af72caa0 100644
--- a/DRAMSys/library/src/simulation/dram/DramGDDR5.cpp
+++ b/DRAMSys/library/src/simulation/dram/DramGDDR5.cpp
@@ -50,7 +50,7 @@ DramGDDR5::DramGDDR5(sc_module_name name) : Dram(name)
if (memSpec == nullptr)
SC_REPORT_FATAL("DramGDDR5", "Wrong MemSpec chosen");
- if (Configuration::getInstance().PowerAnalysis)
+ if (Configuration::getInstance().powerAnalysis)
SC_REPORT_FATAL("DramGDDR5", "DRAMPower not supported for GDDR5");
else
DRAMPower = new libDRAMPowerDummy();
diff --git a/DRAMSys/library/src/simulation/dram/DramGDDR5X.cpp b/DRAMSys/library/src/simulation/dram/DramGDDR5X.cpp
index a3f492e7..3f935863 100644
--- a/DRAMSys/library/src/simulation/dram/DramGDDR5X.cpp
+++ b/DRAMSys/library/src/simulation/dram/DramGDDR5X.cpp
@@ -50,7 +50,7 @@ DramGDDR5X::DramGDDR5X(sc_module_name name) : Dram(name)
if (memSpec == nullptr)
SC_REPORT_FATAL("DramGDDR5X", "Wrong MemSpec chosen");
- if (Configuration::getInstance().PowerAnalysis)
+ if (Configuration::getInstance().powerAnalysis)
SC_REPORT_FATAL("DramGDDR5X", "DRAMPower not supported for GDDR5X");
else
DRAMPower = new libDRAMPowerDummy();
diff --git a/DRAMSys/library/src/simulation/dram/DramGDDR6.cpp b/DRAMSys/library/src/simulation/dram/DramGDDR6.cpp
index 8260db52..de6254c1 100644
--- a/DRAMSys/library/src/simulation/dram/DramGDDR6.cpp
+++ b/DRAMSys/library/src/simulation/dram/DramGDDR6.cpp
@@ -50,7 +50,7 @@ DramGDDR6::DramGDDR6(sc_module_name name) : Dram(name)
if (memSpec == nullptr)
SC_REPORT_FATAL("DramGDDR6", "Wrong MemSpec chosen");
- if (Configuration::getInstance().PowerAnalysis)
+ if (Configuration::getInstance().powerAnalysis)
SC_REPORT_FATAL("DramGDDR6", "DRAMPower not supported for GDDR6");
else
DRAMPower = new libDRAMPowerDummy();
diff --git a/DRAMSys/library/src/simulation/dram/DramHBM2.cpp b/DRAMSys/library/src/simulation/dram/DramHBM2.cpp
index 3ee73ea0..2d1b907b 100644
--- a/DRAMSys/library/src/simulation/dram/DramHBM2.cpp
+++ b/DRAMSys/library/src/simulation/dram/DramHBM2.cpp
@@ -50,7 +50,7 @@ DramHBM2::DramHBM2(sc_module_name name) : Dram(name)
if (memSpec == nullptr)
SC_REPORT_FATAL("DramHBM2", "Wrong MemSpec chosen");
- if (Configuration::getInstance().PowerAnalysis)
+ if (Configuration::getInstance().powerAnalysis)
SC_REPORT_FATAL("DramHBM2", "DRAMPower not supported for HBM2");
else
DRAMPower = new libDRAMPowerDummy();
diff --git a/DRAMSys/library/src/simulation/dram/DramLPDDR4.cpp b/DRAMSys/library/src/simulation/dram/DramLPDDR4.cpp
index 38df1da5..43f85278 100644
--- a/DRAMSys/library/src/simulation/dram/DramLPDDR4.cpp
+++ b/DRAMSys/library/src/simulation/dram/DramLPDDR4.cpp
@@ -50,7 +50,7 @@ DramLPDDR4::DramLPDDR4(sc_module_name name) : Dram(name)
if (memSpec == nullptr)
SC_REPORT_FATAL("DramLPDDR4", "Wrong MemSpec chosen");
- if (Configuration::getInstance().PowerAnalysis)
+ if (Configuration::getInstance().powerAnalysis)
SC_REPORT_FATAL("DramLPDDR4", "DRAMPower not supported for LPDDR4");
else
DRAMPower = new libDRAMPowerDummy();
diff --git a/DRAMSys/library/src/simulation/dram/DramRecordable.cpp b/DRAMSys/library/src/simulation/dram/DramRecordable.cpp
index 97c03e38..e08c764b 100644
--- a/DRAMSys/library/src/simulation/dram/DramRecordable.cpp
+++ b/DRAMSys/library/src/simulation/dram/DramRecordable.cpp
@@ -57,7 +57,7 @@ DramRecordable::DramRecordable(sc_module_name name, TlmRecorder *tlmRe
{
// Create a thread that is triggered every $powerWindowSize
// to generate a Power over Time plot in the Trace analyzer:
- if (Configuration::getInstance().PowerAnalysis)
+ if (Configuration::getInstance().powerAnalysis)
{
DRAMPower = dynamic_cast(Dram::DRAMPower);
if (DRAMPower == nullptr)
@@ -69,12 +69,12 @@ DramRecordable::DramRecordable(sc_module_name name, TlmRecorder *tlmRe
template
DramRecordable::~DramRecordable()
{
- if (Configuration::getInstance().PowerAnalysis)
+ if (Configuration::getInstance().powerAnalysis)
{
DRAMPower->calcEnergy();
tlmRecorder->recordPower(sc_time_stamp().to_seconds(),
DRAMPower->getPower().window_average_power
- * Configuration::getInstance().NumberOfDevicesOnDIMM);
+ * Configuration::getInstance().numberOfDevicesOnDIMM);
}
tlmRecorder->closeConnection();
}
@@ -133,15 +133,15 @@ void DramRecordable::powerWindow()
// Store the time (in seconds) and the current average power (in mW) into the database
tlmRecorder->recordPower(sc_time_stamp().to_seconds(),
DRAMPower->getPower().window_average_power
- * Configuration::getInstance().NumberOfDevicesOnDIMM);
+ * Configuration::getInstance().numberOfDevicesOnDIMM);
// Here considering that DRAMPower provides the energy in pJ and the power in mW
PRINTDEBUGMESSAGE(this->name(), string("\tWindow Energy: \t") + to_string(
DRAMPower->getEnergy().window_energy *
- Configuration::getInstance().NumberOfDevicesOnDIMM) + string("\t[pJ]"));
+ Configuration::getInstance().numberOfDevicesOnDIMM) + string("\t[pJ]"));
PRINTDEBUGMESSAGE(this->name(), string("\tWindow Average Power: \t") + to_string(
DRAMPower->getPower().window_average_power *
- Configuration::getInstance().NumberOfDevicesOnDIMM) + string("\t[mW]"));
+ Configuration::getInstance().numberOfDevicesOnDIMM) + string("\t[mW]"));
} while (true);
}
diff --git a/DRAMSys/library/src/simulation/dram/DramRecordable.h b/DRAMSys/library/src/simulation/dram/DramRecordable.h
index c11f9a81..bb83826b 100644
--- a/DRAMSys/library/src/simulation/dram/DramRecordable.h
+++ b/DRAMSys/library/src/simulation/dram/DramRecordable.h
@@ -59,7 +59,7 @@ private:
libDRAMPower *DRAMPower;
sc_time powerWindowSize = Configuration::getInstance().memSpec->clk *
- Configuration::getInstance().WindowSize;
+ Configuration::getInstance().windowSize;
// When working with floats, we have to decide ourselves what is an
// acceptable definition for "equal". Here the number is compared with a
diff --git a/DRAMSys/library/src/simulation/dram/DramWideIO.cpp b/DRAMSys/library/src/simulation/dram/DramWideIO.cpp
index 1ee85597..dda63013 100644
--- a/DRAMSys/library/src/simulation/dram/DramWideIO.cpp
+++ b/DRAMSys/library/src/simulation/dram/DramWideIO.cpp
@@ -52,7 +52,7 @@ DramWideIO::DramWideIO(sc_module_name name) : Dram(name)
if (memSpec == nullptr)
SC_REPORT_FATAL("DramWideIO", "Wrong MemSpec chosen");
- if (Configuration::getInstance().PowerAnalysis)
+ if (Configuration::getInstance().powerAnalysis)
{
sc_time clk = memSpec->clk;
diff --git a/DRAMSys/library/src/simulation/dram/DramWideIO2.cpp b/DRAMSys/library/src/simulation/dram/DramWideIO2.cpp
index dde791fa..3e76d8d1 100644
--- a/DRAMSys/library/src/simulation/dram/DramWideIO2.cpp
+++ b/DRAMSys/library/src/simulation/dram/DramWideIO2.cpp
@@ -50,7 +50,7 @@ DramWideIO2::DramWideIO2(sc_module_name name) : Dram(name)
if (memSpec == nullptr)
SC_REPORT_FATAL("DramWideIO2", "Wrong MemSpec chosen");
- if (Configuration::getInstance().PowerAnalysis)
+ if (Configuration::getInstance().powerAnalysis)
SC_REPORT_FATAL("DramWideIO2", "DRAMPower not supported for WideIO2");
else
DRAMPower = new libDRAMPowerDummy();
diff --git a/DRAMSys/simulator/main.cpp b/DRAMSys/simulator/main.cpp
index 0cd387ac..3598536b 100644
--- a/DRAMSys/simulator/main.cpp
+++ b/DRAMSys/simulator/main.cpp
@@ -94,7 +94,7 @@ int sc_main(int argc, char **argv)
// Bind STL Players with DRAMSys:
for (size_t i = 0; i < players.size(); i++) {
- if(Configuration::getInstance().CheckTLM2Protocol)
+ if(Configuration::getInstance().checkTLM2Protocol)
{
string str = "TLMCheckerPlayer" + std::to_string(i);
tlm_utils::tlm2_base_protocol_checker<> *playerTlmChecker =