diff --git a/dram/dramSys/dramSys.pro b/dram/dramSys/dramSys.pro index fc4cba8e..5bb67401 100644 --- a/dram/dramSys/dramSys.pro +++ b/dram/dramSys/dramSys.pro @@ -72,7 +72,7 @@ SOURCES += \ ../src/controller/scheduler/Scheduler.cpp \ ../src/controller/scheduler/readwritegrouper.cpp \ ../src/controller/core/configuration/ConfigurationLoader.cpp \ - ../src/controller/core/powerdown/NoPowerDown.cpp + ../src/controller/core/powerdown/NoPowerDown.cpp \ ../src/error/nest_map.cpp \ ../src/error/flip_memory.cpp @@ -131,8 +131,8 @@ HEADERS += \ ../src/simulation/StlPlayer.h \ ../src/simulation/TracePlayerListener.h \ ../src/simulation/TraceGenerator.h \ - ../src/controller/core/powerdown/NoPowerDown.h - ../src/controller/core/configuration/ConfigurationLoader.h + ../src/controller/core/powerdown/NoPowerDown.h \ + ../src/controller/core/configuration/ConfigurationLoader.h \ ../src/error/nest_map.h \ ../src/error/flip_memory.h diff --git a/dram/src/error/flip_memory.cpp b/dram/src/error/flip_memory.cpp index 3662c524..31c8ef2b 100644 --- a/dram/src/error/flip_memory.cpp +++ b/dram/src/error/flip_memory.cpp @@ -41,16 +41,20 @@ flip_memory::flip_memory() // path of csv file errormap = new nest_map(Configuration::getInstance().csvfile); - //xade = new xmlAddressDecoder("config.xml"); // Constants for address calculations ROWS_PER_BANK = Configuration::getInstance().memSpec.NumberOfRows; //8192 COLS_PER_ROW = Configuration::getInstance().memSpec.NumberOfColumns; //changed later to variable 128 - BYTES_PER_COL = 16; //changed later to variable, wie genau, mit config file oder im programm selbst + BYTES_PER_COL = 16; //TODO changed later to variable, wie genau, mit config file oder im programm selbst BITS_PER_ROW = COLS_PER_ROW * BYTES_PER_COL * 8; // Fill array with random addresses initWeakCells(); + + for(unsigned int i = 0; i < ROWS_PER_BANK; i++) + { + refr[i] = SC_ZERO_TIME; + } } flip_memory::~flip_memory() @@ -61,7 +65,6 @@ flip_memory::~flip_memory() DecodedAddress flip_memory::getUnifiedNode(unsigned int addr) { DecodedAddress n = xmlAddressDecoder::getInstance().decodeAddress(addr); - //xade->getNode(addr, n); n.channel = 0; n.bank = 0; return n; @@ -236,6 +239,7 @@ void flip_memory::load(tlm::tlm_generic_payload &trans) void flip_memory::refresh(unsigned int row) { // How many Bits have flipped? + cout << "TEST=" << refr[row] << endl; sc_time deltaT = sc_time_stamp() - refr[row]; diff --git a/dram/src/simulation/Dram.h b/dram/src/simulation/Dram.h index 82b46ab1..0f414022 100644 --- a/dram/src/simulation/Dram.h +++ b/dram/src/simulation/Dram.h @@ -62,6 +62,12 @@ struct Dram: sc_module IFPOW( MemorySpecification memSpec(MemSpecParser::getMemSpecFromXML(Configuration::getInstance().memspecUri)) ); IFPOW( DRAMPower = new libDRAMPower( memSpec, 0 ) ); + cout << "StorageMode = " << StorageMode << endl; + + if(StorageMode == 2) + { + fmemory = new flip_memory[Configuration::getInstance().memSpec.NumberOfBanks]; + } } ~Dram() @@ -70,16 +76,16 @@ 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 ); - for(int b = 0; b < 8; b++) - cout << "BIT_ERRORS Bank: " <