From 22eca68f6ad13f259e4753acee9d9bfc9b877609 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89der=20F=2E=20Zulian?= Date: Wed, 5 Apr 2017 08:39:58 +0200 Subject: [PATCH 1/2] Avoid some assertions when using gem5 Using preprocessor directives instead of a configuration. It seems to be ok for now. --- DRAMSys/simulator/library.pro | 11 +++++++++++ .../configs/simulator/ddr3-single-device.xml | 1 - .../simulator/resources/configs/simulator/ddr3.xml | 2 -- .../core/configuration/Configuration.cpp | 2 -- .../controller/core/configuration/Configuration.h | 1 - DRAMSys/simulator/src/simulation/Dram.h | 14 ++++---------- 6 files changed, 15 insertions(+), 16 deletions(-) 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..3138494c 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/configuration/Configuration.cpp b/DRAMSys/simulator/src/controller/core/configuration/Configuration.cpp index 90061259..64391837 100644 --- a/DRAMSys/simulator/src/controller/core/configuration/Configuration.cpp +++ b/DRAMSys/simulator/src/controller/core/configuration/Configuration.cpp @@ -190,8 +190,6 @@ 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") { AddressOffset = string2ull(value); 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++; From eb526e7e83e36f47361b66b35f66ebf10ee28963 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89der=20F=2E=20Zulian?= Date: Wed, 5 Apr 2017 16:46:52 +0200 Subject: [PATCH 2/2] AddressOffset is only used when we use gem5. If gem5 is not used the configuration field AddressOffset is set to zero despite the value in the xml file. --- DRAMSys/simulator/resources/configs/simulator/ddr3.xml | 2 +- .../src/controller/core/configuration/Configuration.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/DRAMSys/simulator/resources/configs/simulator/ddr3.xml b/DRAMSys/simulator/resources/configs/simulator/ddr3.xml index 3138494c..9e322605 100644 --- a/DRAMSys/simulator/resources/configs/simulator/ddr3.xml +++ b/DRAMSys/simulator/resources/configs/simulator/ddr3.xml @@ -14,6 +14,6 @@ diff --git a/DRAMSys/simulator/src/controller/core/configuration/Configuration.cpp b/DRAMSys/simulator/src/controller/core/configuration/Configuration.cpp index 64391837..ded14c17 100644 --- a/DRAMSys/simulator/src/controller/core/configuration/Configuration.cpp +++ b/DRAMSys/simulator/src/controller/core/configuration/Configuration.cpp @@ -192,7 +192,11 @@ void Configuration::setParameter(std::string name, std::string value) NumberOfDevicesOnDIMM = string2int(value); else if(name == "AddressOffset") { +#ifdef DRAMSYS_GEM5 AddressOffset = string2ull(value); +#else + AddressOffset = 0; +#endif cout << "Address Offset: " << AddressOffset << endl; } else if(name == "CheckTLM2Protocol")