Remove ECC component.

This commit is contained in:
Lukas Steiner
2022-02-11 14:24:17 +01:00
parent 0cfcd1bb48
commit f6cc09e82d
7 changed files with 6 additions and 82 deletions

View File

@@ -38,8 +38,6 @@
* Luiza Correa
*/
#include <cassert>
#include "Configuration.h"
#include "memspec/MemSpecDDR3.h"
#include "memspec/MemSpecDDR4.h"
@@ -227,15 +225,6 @@ void Configuration::setParameter(const std::string &name, const nlohmann::json &
useMalloc = value;
else if (name == "CheckTLM2Protocol")
checkTLM2Protocol = value;
else if (name == "ECCControllerMode")
{
if (value == "Disabled")
eccMode = ECCMode::Disabled;
else if (value == "Hamming")
eccMode = ECCMode::Hamming;
else
SC_REPORT_FATAL("Configuration", "Unsupported ECC mode!");
}
// Specification for ErrorChipSeed, ErrorCSVFile path and StoreMode
else if (name == "ErrorChipSeed")
errorChipSeed = value;
@@ -294,19 +283,6 @@ void Configuration::setPathToResources(const std::string &path)
temperatureSim.setPathToResources(path);
}
// 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) const
{
// Manipulate the number of bytes only if there is an ECC Controller selected
if (eccMode == ECCMode::Disabled)
return nBytes;
else // if (eccMode == ECCMode::Hamming)
{
assert(pECC != nullptr);
return pECC->AllocationSize(nBytes);
}
}
void Configuration::loadSimConfig(Configuration &config, const std::string &simconfigUri)
{
json doc = parseJSON(simconfigUri);

View File

@@ -45,7 +45,6 @@
#include <systemc>
#include "memspec/MemSpec.h"
#include "../error/eccbaseclass.h"
#include "TemperatureSimConfig.h"
class Configuration
@@ -97,8 +96,6 @@ public:
bool thermalSimulation = false;
bool simulationProgressBar = false;
bool checkTLM2Protocol = false;
enum class ECCMode {Disabled, Hamming} eccMode = ECCMode::Disabled;
ECCBaseClass *pECC = nullptr;
bool useMalloc = false;
unsigned long long int addressOffset = 0;
@@ -115,7 +112,6 @@ public:
// Temperature Simulation related
TemperatureSimConfig temperatureSim;
unsigned int adjustNumBytesAfterECC(unsigned bytes) const;
void setPathToResources(const std::string &path);
static void loadMCConfig(Configuration &config, const std::string &_mcconfigUri);

View File

@@ -58,8 +58,7 @@ void errorModel::init()
bytesPerColumn = std::log2(Configuration::getInstance().memSpec->dataBusWidth);
// Adjust number of bytes per column dynamically to the selected ecc controller
bytesPerColumn = Configuration::getInstance().adjustNumBytesAfterECC(
bytesPerColumn);
//TODO: bytesPerColumn = Configuration::getInstance().adjustNumBytesAfterECC(bytesPerColumn);
numberOfRows = Configuration::getInstance().memSpec->numberOfRows;
numberOfBitErrorEvents = 0;

View File

@@ -74,9 +74,6 @@ DRAMSys::DRAMSys(const sc_core::sc_module_name &name,
bool initAndBind)
: sc_module(name), tSocket("DRAMSys_tSocket")
{
// Initialize ecc pointer
ecc = nullptr;
logo();
// Read Configuration Setup:
@@ -121,8 +118,6 @@ DRAMSys::DRAMSys(const sc_core::sc_module_name &name,
DRAMSys::~DRAMSys()
{
delete ecc;
delete arbiter;
for (auto dram : drams)
@@ -182,15 +177,6 @@ void DRAMSys::instantiateModules(const std::string &pathToResources,
TemperatureController::getInstance();
Configuration &config = Configuration::getInstance();
// Create new ECC Controller
if (config.eccMode == Configuration::ECCMode::Hamming)
ecc = new ECCHamming("ECCHamming");
else if (config.eccMode == Configuration::ECCMode::Disabled)
ecc = nullptr;
// Save ECC Controller into the configuration struct to adjust it dynamically
config.pECC = ecc;
// Create arbiter
if (config.arbiter == Configuration::Arbiter::Simple)
arbiter = new ArbiterSimple("arbiter", pathToResources + "configs/amconfigs/" + amconfig);
@@ -241,8 +227,7 @@ void DRAMSys::instantiateModules(const std::string &pathToResources,
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());
auto* controllerTlmChecker = new tlm_utils::tlm2_base_protocol_checker<>(str.c_str());
controllersTlmCheckers.push_back(controllerTlmChecker);
}
}
@@ -252,15 +237,7 @@ void DRAMSys::bindSockets()
{
Configuration &config = Configuration::getInstance();
// If ECC Controller enabled, put it between Trace and arbiter
if (config.eccMode == Configuration::ECCMode::Hamming)
{
assert(ecc != nullptr);
tSocket.bind(ecc->t_socket);
ecc->i_socket.bind(arbiter->tSocket);
}
else if (config.eccMode == Configuration::ECCMode::Disabled)
tSocket.bind(arbiter->tSocket);
tSocket.bind(arbiter->tSocket);
if (config.checkTLM2Protocol)
{

View File

@@ -77,9 +77,6 @@ protected:
std::vector<tlm_utils::tlm2_base_protocol_checker<>*>
controllersTlmCheckers;
// All transactions pass first through the ECC Controller
ECCBaseClass *ecc;
// TODO: Each DRAM has a reorder buffer (check this!)
ReorderBuffer *reorder;

View File

@@ -102,8 +102,7 @@ void DRAMSysRecordable::setupTlmRecorders(const std::string &traceName)
std::string recorderName = "tlmRecorder" + std::to_string(i);
TlmRecorder *tlmRecorder =
new TlmRecorder(recorderName, dbName);
auto* tlmRecorder = new TlmRecorder(recorderName, dbName);
tlmRecorder->recordMcConfig(Configuration::mcconfigUri);
tlmRecorder->recordMemspec(Configuration::memspecUri);
@@ -128,15 +127,6 @@ void DRAMSysRecordable::instantiateModules(const std::string &traceName,
// They need to be ready before creating some modules.
setupTlmRecorders(traceName);
// Create new ECC Controller
if (config.eccMode == Configuration::ECCMode::Hamming)
ecc = new ECCHamming("ECCHamming");
else if (config.eccMode == Configuration::ECCMode::Disabled)
ecc = nullptr;
// Save ECC Controller into the configuration struct to adjust it dynamically
config.pECC = ecc;
// Create arbiter
if (config.arbiter == Configuration::Arbiter::Simple)
arbiter = new ArbiterSimple("arbiter", pathToResources + "configs/amconfigs/" + amconfig);
@@ -187,8 +177,7 @@ void DRAMSysRecordable::instantiateModules(const std::string &traceName,
if (config.checkTLM2Protocol)
{
str = "TLMCheckerController" + std::to_string(i);
tlm_utils::tlm2_base_protocol_checker<> *controllerTlmChecker =
new tlm_utils::tlm2_base_protocol_checker<>(str.c_str());
auto* controllerTlmChecker = new tlm_utils::tlm2_base_protocol_checker<>(str.c_str());
controllersTlmCheckers.push_back(controllerTlmChecker);
}
}
@@ -198,15 +187,7 @@ void DRAMSysRecordable::bindSockets()
{
Configuration &config = Configuration::getInstance();
// If ECC Controller enabled, put it between Trace and arbiter
if (config.eccMode == Configuration::ECCMode::Hamming)
{
assert(ecc != nullptr);
tSocket.bind(ecc->t_socket);
ecc->i_socket.bind(arbiter->tSocket);
}
else if (config.eccMode == Configuration::ECCMode::Disabled)
tSocket.bind(arbiter->tSocket);
tSocket.bind(arbiter->tSocket);
if (config.checkTLM2Protocol)
{

View File

@@ -65,8 +65,6 @@ using namespace DRAMPower;
Dram::Dram(const sc_module_name &name) : sc_module(name), tSocket("socket")
{
Configuration &config = Configuration::getInstance();
// Adjust number of bytes per burst dynamically to the selected ecc controller
bytesPerBurst = config.adjustNumBytesAfterECC(bytesPerBurst);
storeMode = config.storeMode;