Some names slightly changed to better describe their purpose.
ChipSeed --> ErrorChipSeed csvfile --> ErrorCSVFile StorMo --> ErrorStoreMode StorMode --> ErrorStoreMode StorageMode --> ErrorStorageMode (Changes after code review)
This commit is contained in:
@@ -7,8 +7,7 @@
|
||||
<PowerDownMode value="TimeoutSREF" />
|
||||
<PowerDownTimeout value="100" />
|
||||
<!-- Error Modelling -->
|
||||
<Chipseed value="42" />
|
||||
<csvfile value="../src/error/error_new.csv" />
|
||||
|
||||
<StorMo value="NoStorage" /> <!--3 Modes: NoStorage, Store (store data without errormodel), ErrorModel (store data with errormodel)-->
|
||||
<ErrorChipSeed value="42" />
|
||||
<ErrorCSVFile value="../src/error/error_new.csv" />
|
||||
<ErrorStoreMode value="NoStorage" /> <!--3 Modes: NoStorage, Store (store data without errormodel), ErrorModel (store data with errormodel)-->
|
||||
</memconfig>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<PowerDownMode value="TimeoutPDN" />
|
||||
<PowerDownTimeout value="100" />
|
||||
<!-- Error Modelling -->
|
||||
<Chipseed value="42" />
|
||||
<csvfile value="../src/error/error_new.csv" />
|
||||
<StorMo value="NoStorage" /> <!--3 Modes: NoStorage, Store (store data without errormodel), ErrorModel (store data with errormodel)-->
|
||||
<ErrorChipSeed value="42" />
|
||||
<ErrorCSVFile value="../src/error/error_new.csv" />
|
||||
<ErrorStoreMode value="NoStorage" /> <!--3 Modes: NoStorage, Store (store data without errormodel), ErrorModel (store data with errormodel)-->
|
||||
</memconfig>
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
<PowerDownMode value="TimeoutPDN" />
|
||||
<PowerDownTimeout value="100" />
|
||||
<!-- Error Model: -->
|
||||
<Chipseed value="42" />
|
||||
<csvfile value="../src/error/error_new.csv" />
|
||||
<StorMo value="NoStorage" /> <!--3 Modes: NoStorage, Store (store data without errormodel), ErrorModel (store data with errormodel)-->
|
||||
<ErrorChipSeed value="42" />
|
||||
<ErrorCSVFile value="../src/error/error_new.csv" />
|
||||
<ErrorStoreMode value="NoStorage" /> <!--3 Modes: NoStorage, Store (store data without errormodel), ErrorModel (store data with errormodel)-->
|
||||
<!--
|
||||
<Buswidth value="128" />
|
||||
<ReadWriteGrouping value="false" />
|
||||
|
||||
@@ -92,13 +92,13 @@ void Configuration::setParameter(std::string name, std::string value)
|
||||
PowerAnalysis = string2bool(value);
|
||||
else if(name == "Debug")
|
||||
Debug = string2bool(value);
|
||||
//Specification for Chipseed, csvfile path and StorageMode
|
||||
else if(name == "Chipseed")
|
||||
Chipseed = string2int(value);
|
||||
else if(name == "csvfile")
|
||||
csvfile = value;
|
||||
else if(name == "StorMo")
|
||||
StorMode = StringToEnum(value);
|
||||
// Specification for ErrorChipSeed, ErrorCSVFile path and ErrorStoreMode
|
||||
else if(name == "ErrorChipSeed")
|
||||
ErrorChipSeed = string2int(value);
|
||||
else if(name == "ErrorCSVFile")
|
||||
ErrorCSVFile = value;
|
||||
else if(name == "ErrorStoreMode")
|
||||
ErrorStoreMode = StringToEnum(value);
|
||||
else
|
||||
{
|
||||
SC_REPORT_FATAL("Configuration", ("Parameter " + name + " not defined in Configuration").c_str());
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include "../../../common/Utils.h"
|
||||
|
||||
enum class EPowerDownMode{NoPowerDown, Staggered, TimeoutPDN, TimeoutSREF};
|
||||
DEFINE_ENUM_CLASS_WITH_STRING_CONVERSIONS(StorageMode, (NoStorage)(Store)(ErrorModel));
|
||||
DEFINE_ENUM_CLASS_WITH_STRING_CONVERSIONS(ErrorStorageMode, (NoStorage)(Store)(ErrorModel));
|
||||
|
||||
struct Configuration
|
||||
{
|
||||
@@ -52,10 +52,10 @@ struct Configuration
|
||||
void setParameter(std::string name, std::string value);
|
||||
void setParameters(std::map<std::string, std::string> parameterMap);
|
||||
|
||||
//Configs for Seed, csv file and StorageMode
|
||||
unsigned int Chipseed;
|
||||
std::string csvfile ="not defined.";
|
||||
StorageMode StorMode;
|
||||
//Configs for Seed, csv file and ErrorStorageMode
|
||||
unsigned int ErrorChipSeed;
|
||||
std::string ErrorCSVFile ="not defined.";
|
||||
ErrorStorageMode ErrorStoreMode;
|
||||
|
||||
private:
|
||||
Configuration();
|
||||
|
||||
@@ -30,7 +30,7 @@ flip_memory::flip_memory()
|
||||
// Initialize Random generator with current system time
|
||||
// Only do this once in a simulation
|
||||
//srand(time(NULL));
|
||||
srand(Configuration::getInstance().Chipseed); // Chipseed constant, so that errors allways at the same address
|
||||
srand(Configuration::getInstance().ErrorChipSeed); // ErrorChipSeed constant, so that errors allways at the same address
|
||||
|
||||
// Fixed values for development process
|
||||
TEMPERATURE = 90;
|
||||
@@ -39,7 +39,7 @@ flip_memory::flip_memory()
|
||||
BIT_ERR = 0;
|
||||
|
||||
// path of csv file
|
||||
errormap = new nest_map(Configuration::getInstance().csvfile);
|
||||
errormap = new nest_map(Configuration::getInstance().ErrorCSVFile);
|
||||
|
||||
// Constants for address calculations
|
||||
ROWS_PER_BANK = Configuration::getInstance().memSpec.NumberOfRows; //8192
|
||||
|
||||
@@ -50,7 +50,7 @@ struct Dram: sc_module
|
||||
tlm_utils::simple_target_socket<Dram, BUSWIDTH, tlm::tlm_base_protocol_types> tSocket;
|
||||
IFPOW(libDRAMPower *DRAMPower);
|
||||
|
||||
StorageMode StorMode = Configuration::getInstance().StorMode;
|
||||
ErrorStorageMode ErrorStoreMode = Configuration::getInstance().ErrorStoreMode;
|
||||
|
||||
flip_memory * fmemory;
|
||||
map< unsigned long int, unsigned char[BUSWIDTH/2] > memory;
|
||||
@@ -61,9 +61,9 @@ struct Dram: sc_module
|
||||
|
||||
IFPOW( MemorySpecification memSpec(MemSpecParser::getMemSpecFromXML(Configuration::getInstance().memspecUri)) );
|
||||
IFPOW( DRAMPower = new libDRAMPower( memSpec, 0 ) );
|
||||
cout << "StorageMode: " << EnumToString(StorMode) << endl;
|
||||
cout << "ErrorStorageMode: " << EnumToString(ErrorStoreMode) << endl;
|
||||
|
||||
if(StorMode == StorageMode::ErrorModel)
|
||||
if(ErrorStoreMode == ErrorStorageMode::ErrorModel)
|
||||
{
|
||||
fmemory = new flip_memory[Configuration::getInstance().memSpec.NumberOfBanks];
|
||||
}
|
||||
@@ -75,7 +75,7 @@ struct Dram: sc_module
|
||||
IFPOW( DRAMPower->calcEnergy() );
|
||||
IFPOW( cout << endl << endl << "Total Energy" << "\t" << DRAMPower->getEnergy().total_energy << endl);
|
||||
IFPOW( cout << "Average Power" << "\t" << DRAMPower->getPower().average_power << endl );
|
||||
if(StorMode == StorageMode::ErrorModel)
|
||||
if(ErrorStoreMode == ErrorStorageMode::ErrorModel)
|
||||
{
|
||||
for(int b = 0; b < 8; b++)
|
||||
{
|
||||
@@ -111,7 +111,7 @@ struct Dram: sc_module
|
||||
sendToController(payload, END_ACT, delay + getExecutionTime(Command::Activate, payload));
|
||||
unsigned int row = DramExtension::getExtension(payload).getRow().ID();
|
||||
|
||||
if (StorMode == StorageMode::ErrorModel)
|
||||
if (ErrorStoreMode == ErrorStorageMode::ErrorModel)
|
||||
{
|
||||
fmemory[bank].refresh(row);
|
||||
}
|
||||
@@ -121,11 +121,11 @@ struct Dram: sc_module
|
||||
IFPOW(DRAMPower->doCommand(MemCommand::WR, bank, cycle));
|
||||
|
||||
//save data:
|
||||
if (StorMode == StorageMode::NoStorage)
|
||||
if (ErrorStoreMode == ErrorStorageMode::NoStorage)
|
||||
{
|
||||
// Don't store data
|
||||
}
|
||||
else if (StorMode == StorageMode::Store) // Use Storage
|
||||
else if (ErrorStoreMode == ErrorStorageMode::Store) // Use Storage
|
||||
{
|
||||
memcpy(&memory[payload.get_address()], payload.get_data_ptr(), BUSWIDTH/8);
|
||||
}
|
||||
@@ -140,7 +140,7 @@ struct Dram: sc_module
|
||||
IFPOW(DRAMPower->doCommand(MemCommand::RD, bank, cycle));
|
||||
|
||||
// Load data:
|
||||
if (StorMode == StorageMode::Store) //use StorageMode
|
||||
if (ErrorStoreMode == ErrorStorageMode::Store) //use ErrorStorageMode
|
||||
{
|
||||
if(memory.count(payload.get_address()) == 1)
|
||||
{
|
||||
@@ -151,7 +151,7 @@ struct Dram: sc_module
|
||||
//SC_REPORT_WARNING ("DRAM", "Reading from an empty memory location.");
|
||||
}
|
||||
}
|
||||
else if(StorMode == StorageMode::ErrorModel)// use StorageMode with errormodel
|
||||
else if(ErrorStoreMode == ErrorStorageMode::ErrorModel)// use ErrorStorageMode with errormodel
|
||||
{
|
||||
fmemory[bank].load(payload);
|
||||
}
|
||||
@@ -163,11 +163,11 @@ struct Dram: sc_module
|
||||
IFPOW(DRAMPower->doCommand(MemCommand::WRA, bank, cycle));
|
||||
|
||||
//save data:
|
||||
if (StorMode == StorageMode::NoStorage)
|
||||
if (ErrorStoreMode == ErrorStorageMode::NoStorage)
|
||||
{
|
||||
// Don't store data
|
||||
}
|
||||
else if (StorMode == StorageMode::Store) // Use Storage
|
||||
else if (ErrorStoreMode == ErrorStorageMode::Store) // Use Storage
|
||||
{
|
||||
memcpy(&memory[payload.get_address()], payload.get_data_ptr(), BUSWIDTH/8);
|
||||
}
|
||||
@@ -182,7 +182,7 @@ struct Dram: sc_module
|
||||
IFPOW(DRAMPower->doCommand(MemCommand::RDA, bank, cycle));
|
||||
|
||||
// Load data:
|
||||
if (StorMode == StorageMode::Store) //use StorageMode
|
||||
if (ErrorStoreMode == ErrorStorageMode::Store) //use ErrorStorageMode
|
||||
{
|
||||
if(memory.count(payload.get_address()) == 1)
|
||||
{
|
||||
@@ -193,7 +193,7 @@ struct Dram: sc_module
|
||||
//SC_REPORT_WARNING ("DRAM", "Reading from an empty memory location.");
|
||||
}
|
||||
}
|
||||
else if(StorMode == StorageMode::ErrorModel)// use StorageMode with errormodel
|
||||
else if(ErrorStoreMode == ErrorStorageMode::ErrorModel)// use ErrorStorageMode with errormodel
|
||||
{
|
||||
fmemory[bank].load(payload);
|
||||
}
|
||||
@@ -206,7 +206,7 @@ struct Dram: sc_module
|
||||
sendToController(payload, END_REFA, delay + getExecutionTime(Command::AutoRefresh, payload));
|
||||
unsigned int row = DramExtension::getExtension(payload).getRow().ID();
|
||||
|
||||
if (StorMode == StorageMode::ErrorModel)
|
||||
if (ErrorStoreMode == ErrorStorageMode::ErrorModel)
|
||||
{
|
||||
fmemory[bank].refresh(row);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user