diff --git a/DRAMSys/DRAMSys.pro b/DRAMSys/DRAMSys.pro
index 0530961c..0852d9e4 100644
--- a/DRAMSys/DRAMSys.pro
+++ b/DRAMSys/DRAMSys.pro
@@ -1,8 +1,7 @@
TEMPLATE = subdirs
thermalsim = $$(THERMALSIM)
-isEmpty(thermalsim)
-{
+isEmpty(thermalsim) {
thermalsim = false
}
@@ -19,14 +18,13 @@ SUBDIRS += analyzer/traceAnalyzer.pro
# Check if gem5 is installed:
gem5 = $$(GEM5)
-isEmpty(gem5)
-{
- DEFINES += DRAMSYS_GEM5
-}
-
-contains(DEFINES,DRAMSYS_GEM5)
-{
+isEmpty(gem5) {
+ message(GEM5 environment variable not found)
+ message(Gem5 Simulation Disabled)
+} else {
message(Gem5 Simulation Feature Enabled)
+ message(Gem5 home is $${gem5})
+ DEFINES += DRAMSYS_GEM5
SUBDIRS += gem5/gem5.pro
}
diff --git a/DRAMSys/gem5/gem5.pro b/DRAMSys/gem5/gem5.pro
index cb3dcc2d..fe171ebd 100644
--- a/DRAMSys/gem5/gem5.pro
+++ b/DRAMSys/gem5/gem5.pro
@@ -48,7 +48,7 @@ INCLUDEPATH += ../simulator/src/common/third_party/DRAMPower/src/libdrampower
INCLUDEPATH += $${gem5_root}/build/$${gem5_arch}/
INCLUDEPATH += $${gem5_root}/util/tlm/examples/slave_port
INCLUDEPATH += $${gem5_root}/util/tlm/examples/common
-INCLUDEPATH += $${gem5_root}/util/tlm/
+INCLUDEPATH += $${gem5_root}/util/tlm/src/
INCLUDEPATH += $${gem5_root}/util/systemc
LIBS += -L$${systemc_home}/lib-$${systemc_target_arch} -lsystemc
@@ -63,13 +63,13 @@ SOURCES += $${gem5_root}/util/systemc/sc_module.cc
SOURCES += $${gem5_root}/util/systemc/stats.cc
SOURCES += $${gem5_root}/util/tlm/examples/common/cli_parser.cc
SOURCES += $${gem5_root}/util/tlm/examples/common/report_handler.cc
-SOURCES += $${gem5_root}/util/tlm/master_transactor.cc
-SOURCES += $${gem5_root}/util/tlm/sc_master_port.cc
-SOURCES += $${gem5_root}/util/tlm/sc_slave_port.cc
-SOURCES += $${gem5_root}/util/tlm/slave_transactor.cc
-SOURCES += $${gem5_root}/util/tlm/sc_ext.cc
-SOURCES += $${gem5_root}/util/tlm/sc_mm.cc
-SOURCES += $${gem5_root}/util/tlm/sim_control.cc
+SOURCES += $${gem5_root}/util/tlm/src/master_transactor.cc
+SOURCES += $${gem5_root}/util/tlm/src/sc_master_port.cc
+SOURCES += $${gem5_root}/util/tlm/src/sc_slave_port.cc
+SOURCES += $${gem5_root}/util/tlm/src/slave_transactor.cc
+SOURCES += $${gem5_root}/util/tlm/src/sc_ext.cc
+SOURCES += $${gem5_root}/util/tlm/src/sc_mm.cc
+SOURCES += $${gem5_root}/util/tlm/src/sim_control.cc
SOURCES += main.cpp
diff --git a/DRAMSys/simulator/library.pro b/DRAMSys/simulator/library.pro
index 0a930c9a..5e9f63a4 100644
--- a/DRAMSys/simulator/library.pro
+++ b/DRAMSys/simulator/library.pro
@@ -28,6 +28,17 @@ $$eval(dramsys_pct) {
DEFINES += DRAMSYS_PCT
}
+# Check if gem5 should be used
+gem5 = $$(GEM5)
+isEmpty(gem5) {
+ message(GEM5 environment variable not found)
+ message(Gem5 Simulation Disabled)
+} else {
+ message(Gem5 Simulation Feature Enabled)
+ message(Gem5 home is $${gem5})
+ DEFINES += DRAMSYS_GEM5
+}
+
message(SystemC home is $${systemc_home})
systemc_target_arch = $$(SYSTEMC_TARGET_ARCH)
diff --git a/DRAMSys/simulator/resources/configs/simulator/ddr3-single-device.xml b/DRAMSys/simulator/resources/configs/simulator/ddr3-single-device.xml
index 059d3ee1..35fd3dec 100644
--- a/DRAMSys/simulator/resources/configs/simulator/ddr3-single-device.xml
+++ b/DRAMSys/simulator/resources/configs/simulator/ddr3-single-device.xml
@@ -11,5 +11,4 @@
-
diff --git a/DRAMSys/simulator/resources/configs/simulator/ddr3.xml b/DRAMSys/simulator/resources/configs/simulator/ddr3.xml
index 431f052d..9e322605 100644
--- a/DRAMSys/simulator/resources/configs/simulator/ddr3.xml
+++ b/DRAMSys/simulator/resources/configs/simulator/ddr3.xml
@@ -11,11 +11,9 @@
-
diff --git a/DRAMSys/simulator/src/controller/core/ControllerCore.cpp b/DRAMSys/simulator/src/controller/core/ControllerCore.cpp
index d8650e70..45b3bd47 100644
--- a/DRAMSys/simulator/src/controller/core/ControllerCore.cpp
+++ b/DRAMSys/simulator/src/controller/core/ControllerCore.cpp
@@ -160,11 +160,16 @@ void ControllerCore::scheduleRequest(Command command, tlm::tlm_generic_payload &
sc_time start = clkAlign(sc_time_stamp());
state->cleanUp(start);
ScheduledCommand scheduledCommand = schedule(command, start, payload);
- if(!((command == Command::Precharge || command == Command::Activate)
- && refreshManager->hasCollision(scheduledCommand)))
- {
+ if (config.ControllerCoreDisableRefresh == true) {
state->change(scheduledCommand);
controller.send(scheduledCommand, payload);
+ } else {
+ if(!((command == Command::Precharge || command == Command::Activate)
+ && refreshManager->hasCollision(scheduledCommand)))
+ {
+ state->change(scheduledCommand);
+ controller.send(scheduledCommand, payload);
+ }
}
}
diff --git a/DRAMSys/simulator/src/controller/core/configuration/Configuration.cpp b/DRAMSys/simulator/src/controller/core/configuration/Configuration.cpp
index 90061259..ded14c17 100644
--- a/DRAMSys/simulator/src/controller/core/configuration/Configuration.cpp
+++ b/DRAMSys/simulator/src/controller/core/configuration/Configuration.cpp
@@ -190,11 +190,13 @@ void Configuration::setParameter(std::string name, std::string value)
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 == "gem5")
- gem5 = string2bool(value);
else if(name == "AddressOffset")
{
+#ifdef DRAMSYS_GEM5
AddressOffset = string2ull(value);
+#else
+ AddressOffset = 0;
+#endif
cout << "Address Offset: " << AddressOffset << endl;
}
else if(name == "CheckTLM2Protocol")
diff --git a/DRAMSys/simulator/src/controller/core/configuration/Configuration.h b/DRAMSys/simulator/src/controller/core/configuration/Configuration.h
index e7e9b3e8..8695b133 100644
--- a/DRAMSys/simulator/src/controller/core/configuration/Configuration.h
+++ b/DRAMSys/simulator/src/controller/core/configuration/Configuration.h
@@ -81,7 +81,6 @@ struct Configuration
bool SimulationProgressBar = false;
unsigned int NumberOfDevicesOnDIMM = 1;
bool CheckTLM2Protocol = false;
- bool gem5 = false;
unsigned long long int AddressOffset = 0;
// MemSpec (from DRAM-Power XML)
diff --git a/DRAMSys/simulator/src/simulation/Dram.h b/DRAMSys/simulator/src/simulation/Dram.h
index 3710a8ae..fa3d9dec 100644
--- a/DRAMSys/simulator/src/simulation/Dram.h
+++ b/DRAMSys/simulator/src/simulation/Dram.h
@@ -390,11 +390,8 @@ struct Dram : sc_module
}
else if (phase == BEGIN_WR)
{
-#ifndef DRAMSYS_PCT
- if(Configuration::getInstance().gem5 == false)
- {
- assert(payload.get_data_length() == bytesPerBurst);
- }
+#if !defined (DRAMSYS_PCT) && !defined (DRAMSYS_GEM5)
+ assert(payload.get_data_length() == bytesPerBurst);
#endif
if(powerAnalysis == true){DRAMPower->doCommand(MemCommand::WR, bank, cycle);}
@@ -418,11 +415,8 @@ struct Dram : sc_module
}
else if (phase == BEGIN_RD)
{
-#ifndef DRAMSYS_PCT
- if(Configuration::getInstance().gem5 == false)
- {
- assert(payload.get_data_length() == bytesPerBurst);
- }
+#if !defined (DRAMSYS_PCT) && !defined (DRAMSYS_GEM5)
+ assert(payload.get_data_length() == bytesPerBurst);
#endif
numberOfTransactionsServed++;