diff --git a/DRAMSys/library/CMakeLists.txt b/DRAMSys/library/CMakeLists.txt index 3b8eace5..adcb857b 100644 --- a/DRAMSys/library/CMakeLists.txt +++ b/DRAMSys/library/CMakeLists.txt @@ -42,8 +42,12 @@ project(DRAMSysLibrary) set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ Version") set(DCMAKE_SH="CMAKE_SH-NOTFOUND") +option(DRAMSYS_WITH_DRAMPOWER "Build with DRAMPower support enabled." ON) + # Add DRAMPower: +if (DRAMSYS_WITH_DRAMPOWER) add_subdirectory(src/common/third_party/DRAMPower) +endif() # Add Configuration add_subdirectory(src/common/configuration) @@ -240,7 +244,7 @@ endif() # Build: target_include_directories(DRAMSysLibrary - PUBLIC src/common/third_party/DRAMPower/src/ + PRIVATE src/common/third_party/DRAMPower/src/ PUBLIC $ENV{SYSTEMC_HOME}/include/ ) @@ -252,6 +256,13 @@ endif() target_link_libraries(DRAMSysLibrary PUBLIC ${SYSTEMC_LIBRARY} - PRIVATE DRAMPower PUBLIC DRAMSysConfiguration ) + +if (DRAMSYS_WITH_DRAMPOWER) +target_compile_definitions(DRAMSysLibrary PRIVATE DRAMPOWER) + +target_link_libraries(DRAMSysLibrary + PRIVATE DRAMPower +) +endif() diff --git a/DRAMSys/library/src/common/TlmRecorder.cpp b/DRAMSys/library/src/common/TlmRecorder.cpp index 2bbd1fac..f35b227b 100644 --- a/DRAMSys/library/src/common/TlmRecorder.cpp +++ b/DRAMSys/library/src/common/TlmRecorder.cpp @@ -39,12 +39,13 @@ * Derek Christ */ -#include - #include "TlmRecorder.h" -#include "DebugManager.h" -#include "../controller/Command.h" #include "../configuration/Configuration.h" +#include "../controller/Command.h" +#include "DebugManager.h" + +#include +#include using namespace sc_core; using namespace tlm; @@ -238,7 +239,20 @@ void TlmRecorder::terminateRemainingTransactions() removeTransactionFromSystem(*transaction->first); } else - recordPhase(*(transaction->first), END_RESP, sc_time_stamp()); + { + std::string beginPhase = transaction->second.recordedPhases.back().name; + + if (beginPhase == "RESP") + recordPhase(*(transaction->first), END_RESP, sc_time_stamp()); + else + { + // Do not terminate transaction as it is not ready to be completed. + currentTransactionsInSystem.erase(transaction); + + // Decrement totalNumTransactions as this transaction will not be recorded in the database. + totalNumTransactions--; + } + } } } diff --git a/DRAMSys/library/src/common/TlmRecorder.h b/DRAMSys/library/src/common/TlmRecorder.h index 532c31d6..5f063909 100644 --- a/DRAMSys/library/src/common/TlmRecorder.h +++ b/DRAMSys/library/src/common/TlmRecorder.h @@ -42,16 +42,18 @@ #define TLMRECORDER_H #include +#include +#include +#include #include #include -#include -#include -#include -#include "sqlite3.h" +#include "../configuration/Configuration.h" #include "dramExtensions.h" #include "utils.h" -#include "../configuration/Configuration.h" + +class sqlite3; +class sqlite3_stmt; class TlmRecorder { diff --git a/DRAMSys/library/src/common/configuration/CMakeLists.txt b/DRAMSys/library/src/common/configuration/CMakeLists.txt index 4b8f7fa6..ce990f0f 100644 --- a/DRAMSys/library/src/common/configuration/CMakeLists.txt +++ b/DRAMSys/library/src/common/configuration/CMakeLists.txt @@ -42,7 +42,7 @@ if (DRAMSYS_CONFIGURATION_TESTS) endif() add_library(DRAMSysConfiguration STATIC - Configuration.cpp + DRAMSysConfiguration.cpp AddressMapping.cpp McConfig.cpp SimConfig.cpp diff --git a/DRAMSys/library/src/common/configuration/Configuration.cpp b/DRAMSys/library/src/common/configuration/DRAMSysConfiguration.cpp similarity index 99% rename from DRAMSys/library/src/common/configuration/Configuration.cpp rename to DRAMSys/library/src/common/configuration/DRAMSysConfiguration.cpp index ed331aaf..1403fd46 100644 --- a/DRAMSys/library/src/common/configuration/Configuration.cpp +++ b/DRAMSys/library/src/common/configuration/DRAMSysConfiguration.cpp @@ -33,7 +33,7 @@ * Derek Christ */ -#include "Configuration.h" +#include "DRAMSysConfiguration.h" #include #include diff --git a/DRAMSys/library/src/common/configuration/Configuration.h b/DRAMSys/library/src/common/configuration/DRAMSysConfiguration.h similarity index 94% rename from DRAMSys/library/src/common/configuration/Configuration.h rename to DRAMSys/library/src/common/configuration/DRAMSysConfiguration.h index 657f11be..6d6bd799 100644 --- a/DRAMSys/library/src/common/configuration/Configuration.h +++ b/DRAMSys/library/src/common/configuration/DRAMSysConfiguration.h @@ -33,8 +33,8 @@ * Derek Christ */ -#ifndef DRAMSYSCONFIGURATION_CONFIGURATION_H -#define DRAMSYSCONFIGURATION_CONFIGURATION_H +#ifndef DRAMSYSCONFIGURATION_DRAMSYSCONFIGURATION_H +#define DRAMSYSCONFIGURATION_DRAMSYSCONFIGURATION_H #include "AddressMapping.h" #include "McConfig.h" @@ -85,4 +85,4 @@ Configuration from_path(const std::string &path, const std::string &resourceDire } // namespace DRAMSysConfiguration -#endif // DRAMSYSCONFIGURATION_CONFIGURATION_H +#endif // DRAMSYSCONFIGURATION_DRAMSYSCONFIGURATION_H diff --git a/DRAMSys/library/src/common/configuration/McConfig.cpp b/DRAMSys/library/src/common/configuration/McConfig.cpp index b87be4ea..e2f684fb 100644 --- a/DRAMSys/library/src/common/configuration/McConfig.cpp +++ b/DRAMSys/library/src/common/configuration/McConfig.cpp @@ -34,7 +34,7 @@ */ #include "McConfig.h" -#include + namespace DRAMSysConfiguration { diff --git a/DRAMSys/library/src/common/configuration/tests/converter.cpp b/DRAMSys/library/src/common/configuration/tests/converter.cpp index 08516eb5..647e3f5c 100644 --- a/DRAMSys/library/src/common/configuration/tests/converter.cpp +++ b/DRAMSys/library/src/common/configuration/tests/converter.cpp @@ -36,7 +36,7 @@ #include #include #include -#include +#include int main(int argc, char **argv) { diff --git a/DRAMSys/library/src/common/configuration/tests/simpletest.cpp b/DRAMSys/library/src/common/configuration/tests/simpletest.cpp index c0a9ac95..8bac3858 100644 --- a/DRAMSys/library/src/common/configuration/tests/simpletest.cpp +++ b/DRAMSys/library/src/common/configuration/tests/simpletest.cpp @@ -33,7 +33,7 @@ * Derek Christ */ -#include +#include #include #include diff --git a/DRAMSys/library/src/common/configuration/util.cpp b/DRAMSys/library/src/common/configuration/util.cpp index 26ce32e1..1b444917 100644 --- a/DRAMSys/library/src/common/configuration/util.cpp +++ b/DRAMSys/library/src/common/configuration/util.cpp @@ -34,7 +34,7 @@ */ #include "util.h" -#include "Configuration.h" +#include "DRAMSysConfiguration.h" #include #include diff --git a/DRAMSys/library/src/configuration/Configuration.h b/DRAMSys/library/src/configuration/Configuration.h index dacee9a9..fbad1cd5 100644 --- a/DRAMSys/library/src/configuration/Configuration.h +++ b/DRAMSys/library/src/configuration/Configuration.h @@ -43,7 +43,7 @@ #define CONFIGURATION_H #include -#include +#include #include #include "memspec/MemSpec.h" #include "TemperatureSimConfig.h" diff --git a/DRAMSys/library/src/configuration/TemperatureSimConfig.h b/DRAMSys/library/src/configuration/TemperatureSimConfig.h index 9f0e67bf..ac090b02 100644 --- a/DRAMSys/library/src/configuration/TemperatureSimConfig.h +++ b/DRAMSys/library/src/configuration/TemperatureSimConfig.h @@ -41,7 +41,7 @@ #include #include -#include +#include #include #include #include "../common/DebugManager.h" diff --git a/DRAMSys/library/src/configuration/memspec/MemSpec.h b/DRAMSys/library/src/configuration/memspec/MemSpec.h index 8aa64853..560c5a0e 100644 --- a/DRAMSys/library/src/configuration/memspec/MemSpec.h +++ b/DRAMSys/library/src/configuration/memspec/MemSpec.h @@ -41,7 +41,7 @@ #include #include -#include +#include #include #include #include "../../common/utils.h" diff --git a/DRAMSys/library/src/configuration/memspec/MemSpecDDR3.h b/DRAMSys/library/src/configuration/memspec/MemSpecDDR3.h index beb5629f..fc9818a6 100644 --- a/DRAMSys/library/src/configuration/memspec/MemSpecDDR3.h +++ b/DRAMSys/library/src/configuration/memspec/MemSpecDDR3.h @@ -40,7 +40,7 @@ #include "MemSpec.h" #include -#include +#include class MemSpecDDR3 final : public MemSpec { diff --git a/DRAMSys/library/src/controller/Command.cpp b/DRAMSys/library/src/controller/Command.cpp index 42d1121b..56e39037 100644 --- a/DRAMSys/library/src/controller/Command.cpp +++ b/DRAMSys/library/src/controller/Command.cpp @@ -40,7 +40,10 @@ #include "Command.h" using namespace tlm; + +#ifdef DRAMPOWER using namespace DRAMPower; +#endif Command::Command(Command::Type type) : type(type) {} @@ -145,6 +148,7 @@ tlm_phase Command::toPhase() const return phaseOfCommand[type]; } +#ifdef DRAMPOWER MemCommand::cmds phaseToDRAMPowerCommand(tlm_phase phase) { // TODO: add correct phases when DRAMPower supports DDR5 same bank refresh @@ -177,6 +181,7 @@ MemCommand::cmds phaseToDRAMPowerCommand(tlm_phase phase) }; return phaseOfCommand[phase - BEGIN_NOP]; } +#endif bool phaseNeedsEnd(tlm_phase phase) { diff --git a/DRAMSys/library/src/controller/Command.h b/DRAMSys/library/src/controller/Command.h index c84f82ff..3e2a09a7 100644 --- a/DRAMSys/library/src/controller/Command.h +++ b/DRAMSys/library/src/controller/Command.h @@ -43,7 +43,10 @@ #include #include + +#ifdef DRAMPOWER #include "../common/third_party/DRAMPower/src/MemCommand.h" +#endif // DO NOT CHANGE THE ORDER! @@ -150,7 +153,10 @@ public: } }; +#ifdef DRAMPOWER DRAMPower::MemCommand::cmds phaseToDRAMPowerCommand(tlm::tlm_phase); +#endif + bool phaseNeedsEnd(tlm::tlm_phase); tlm::tlm_phase getEndPhase(tlm::tlm_phase); diff --git a/DRAMSys/library/src/controller/Controller.cpp b/DRAMSys/library/src/controller/Controller.cpp index 45d9ac69..8d435dab 100644 --- a/DRAMSys/library/src/controller/Controller.cpp +++ b/DRAMSys/library/src/controller/Controller.cpp @@ -533,5 +533,5 @@ void Controller::sendToDram(Command command, tlm_generic_payload& payload, sc_ti bool Controller::isFullCycle(const sc_core::sc_time& time) const { sc_time aligedAtHalfCycle = std::floor((time * 2 / memSpec.tCK + 0.5)) / 2 * memSpec.tCK; - return aligedAtHalfCycle % memSpec.tCK == SC_ZERO_TIME; + return sc_time::from_value(aligedAtHalfCycle.value() % memSpec.tCK.value()) == SC_ZERO_TIME; } diff --git a/DRAMSys/library/src/controller/checker/CheckerHBM3.cpp b/DRAMSys/library/src/controller/checker/CheckerHBM3.cpp index ce95d7b1..2e756ec3 100644 --- a/DRAMSys/library/src/controller/checker/CheckerHBM3.cpp +++ b/DRAMSys/library/src/controller/checker/CheckerHBM3.cpp @@ -802,5 +802,5 @@ void CheckerHBM3::insert(Command command, const tlm_generic_payload &payload) bool CheckerHBM3::isFullCycle(const sc_core::sc_time& time) const { sc_time aligedAtHalfCycle = std::floor((time * 2 / memSpec->tCK + 0.5)) / 2 * memSpec->tCK; - return aligedAtHalfCycle % memSpec->tCK == SC_ZERO_TIME; + return sc_time::from_value(aligedAtHalfCycle.value() % memSpec->tCK.value()) == SC_ZERO_TIME; } diff --git a/DRAMSys/library/src/error/errormodel.cpp b/DRAMSys/library/src/error/errormodel.cpp index ccbfde86..1a271a5b 100644 --- a/DRAMSys/library/src/error/errormodel.cpp +++ b/DRAMSys/library/src/error/errormodel.cpp @@ -39,6 +39,10 @@ #include "../simulation/AddressDecoder.h" #include "../common/dramExtensions.h" +#ifdef DRAMPOWER +#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" +#endif + #include #include #include @@ -501,6 +505,7 @@ double errorModel::getTemperature() if (this->myChannel != -1) { +#ifdef DRAMPOWER if (thermalSim && powerAnalysis) { // TODO @@ -512,6 +517,9 @@ double errorModel::getTemperature() } else { temperature = temperatureController.getTemperature(this->myChannel, 0); } +#else + temperature = temperatureController.getTemperature(this->myChannel, 0); +#endif } return temperature; diff --git a/DRAMSys/library/src/error/errormodel.h b/DRAMSys/library/src/error/errormodel.h index 4970bb1e..312bbdd6 100644 --- a/DRAMSys/library/src/error/errormodel.h +++ b/DRAMSys/library/src/error/errormodel.h @@ -41,9 +41,10 @@ #include #include "../configuration/Configuration.h" #include "../simulation/AddressDecoder.h" -#include "../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../simulation/TemperatureController.h" +class libDRAMPower; + class errorModel : public sc_core::sc_module { public: diff --git a/DRAMSys/library/src/simulation/AddressDecoder.h b/DRAMSys/library/src/simulation/AddressDecoder.h index 8989190d..d6d66606 100644 --- a/DRAMSys/library/src/simulation/AddressDecoder.h +++ b/DRAMSys/library/src/simulation/AddressDecoder.h @@ -41,7 +41,7 @@ #include #include -#include +#include #include "../configuration/Configuration.h" struct DecodedAddress diff --git a/DRAMSys/library/src/simulation/Arbiter.cpp b/DRAMSys/library/src/simulation/Arbiter.cpp index 2a1620f4..b95707af 100644 --- a/DRAMSys/library/src/simulation/Arbiter.cpp +++ b/DRAMSys/library/src/simulation/Arbiter.cpp @@ -41,7 +41,7 @@ #include "AddressDecoder.h" #include "../configuration/Configuration.h" -#include +#include using namespace sc_core; using namespace tlm; @@ -130,7 +130,7 @@ void ArbiterReorder::end_of_elaboration() tlm_sync_enum Arbiter::nb_transport_fw(int id, tlm_generic_payload &payload, tlm_phase &phase, sc_time &fwDelay) { - sc_time clockOffset = (sc_time_stamp() + fwDelay) % tCK; + sc_time clockOffset = sc_time::from_value((sc_time_stamp() + fwDelay).value() % tCK.value()); sc_time notDelay = (clockOffset == SC_ZERO_TIME) ? fwDelay : (fwDelay + tCK - clockOffset); if (phase == BEGIN_REQ) diff --git a/DRAMSys/library/src/simulation/DRAMSys.h b/DRAMSys/library/src/simulation/DRAMSys.h index d0c8ec74..b4392449 100644 --- a/DRAMSys/library/src/simulation/DRAMSys.h +++ b/DRAMSys/library/src/simulation/DRAMSys.h @@ -49,7 +49,7 @@ #include "../controller/ControllerIF.h" #include "TemperatureController.h" -#include +#include #include #include #include diff --git a/DRAMSys/library/src/simulation/DRAMSysRecordable.h b/DRAMSys/library/src/simulation/DRAMSysRecordable.h index 9340a8d3..a01f9d99 100644 --- a/DRAMSys/library/src/simulation/DRAMSysRecordable.h +++ b/DRAMSys/library/src/simulation/DRAMSysRecordable.h @@ -40,7 +40,7 @@ #include "DRAMSys.h" #include "../common/TlmRecorder.h" -#include +#include class DRAMSysRecordable : public DRAMSys { diff --git a/DRAMSys/library/src/simulation/dram/Dram.cpp b/DRAMSys/library/src/simulation/dram/Dram.cpp index e75096d8..a2b80d72 100644 --- a/DRAMSys/library/src/simulation/dram/Dram.cpp +++ b/DRAMSys/library/src/simulation/dram/Dram.cpp @@ -55,12 +55,19 @@ #include "../../common/DebugManager.h" #include "../../common/dramExtensions.h" #include "../../common/utils.h" -#include "../../common/third_party/DRAMPower/src/MemCommand.h" #include "../../controller/Command.h" +#ifdef DRAMPOWER +#include "../../common/third_party/DRAMPower/src/MemCommand.h" +#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" +#endif + using namespace sc_core; using namespace tlm; + +#ifdef DRAMPOWER using namespace DRAMPower; +#endif Dram::Dram(const sc_module_name& name, const Configuration& config) : sc_module(name), memSpec(*config.memSpec), tSocket("socket"), storeMode(config.storeMode), @@ -99,6 +106,7 @@ Dram::~Dram() void Dram::reportPower() { +#ifdef DRAMPOWER DRAMPower->calcEnergy(); // Print the final total energy and the average power for @@ -115,6 +123,7 @@ void Dram::reportPower() << DRAMPower->getPower().average_power * memSpec.devicesPerRank << std::string(" mW") << std::endl; +#endif } tlm_sync_enum Dram::nb_transport_fw(tlm_generic_payload &payload, @@ -126,7 +135,10 @@ tlm_sync_enum Dram::nb_transport_fw(tlm_generic_payload &payload, { int bank = static_cast(DramExtension::getExtension(payload).getBank().ID()); int64_t cycle = std::lround((sc_time_stamp() + delay) / memSpec.tCK); + +#ifdef DRAMPOWER DRAMPower->doCommand(phaseToDRAMPowerCommand(phase), bank, cycle); +#endif } if (storeMode == Configuration::StoreMode::Store) diff --git a/DRAMSys/library/src/simulation/dram/Dram.h b/DRAMSys/library/src/simulation/dram/Dram.h index c5f06991..7b0f66df 100644 --- a/DRAMSys/library/src/simulation/dram/Dram.h +++ b/DRAMSys/library/src/simulation/dram/Dram.h @@ -47,7 +47,8 @@ #include #include "../../configuration/Configuration.h" #include "../../configuration/memspec/MemSpec.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" + +class libDRAMPower; class Dram : public sc_core::sc_module { @@ -63,7 +64,9 @@ protected: unsigned char *memory; const bool useMalloc; +#ifdef DRAMPOWER std::unique_ptr DRAMPower; +#endif virtual tlm::tlm_sync_enum nb_transport_fw(tlm::tlm_generic_payload &payload, tlm::tlm_phase &phase, sc_core::sc_time &delay); diff --git a/DRAMSys/library/src/simulation/dram/DramDDR3.cpp b/DRAMSys/library/src/simulation/dram/DramDDR3.cpp index 3fda1b73..5ae93b05 100644 --- a/DRAMSys/library/src/simulation/dram/DramDDR3.cpp +++ b/DRAMSys/library/src/simulation/dram/DramDDR3.cpp @@ -37,11 +37,14 @@ #include #include "../../configuration/Configuration.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../../configuration/memspec/MemSpecDDR3.h" -using namespace sc_core; +#ifdef DRAMPOWER +#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" using namespace DRAMPower; +#endif + +using namespace sc_core; DramDDR3::DramDDR3(const sc_module_name& name, const Configuration& config, TemperatureController& temperatureController) @@ -56,6 +59,7 @@ DramDDR3::DramDDR3(const sc_module_name& name, const Configuration& config, if (memSpecDDR3 == nullptr) SC_REPORT_FATAL("DramDDR3", "Wrong MemSpec chosen"); +#ifdef DRAMPOWER MemArchitectureSpec memArchSpec; memArchSpec.burstLength = memSpecDDR3->defaultBurstLength; memArchSpec.dataRate = memSpecDDR3->dataRate; @@ -143,5 +147,6 @@ DramDDR3::DramDDR3(const sc_module_name& name, const Configuration& config, powerSpec.memArchSpec = memArchSpec; DRAMPower = std::make_unique(powerSpec, false); +#endif } } diff --git a/DRAMSys/library/src/simulation/dram/DramDDR4.cpp b/DRAMSys/library/src/simulation/dram/DramDDR4.cpp index aaf918d8..c358d0fe 100644 --- a/DRAMSys/library/src/simulation/dram/DramDDR4.cpp +++ b/DRAMSys/library/src/simulation/dram/DramDDR4.cpp @@ -37,11 +37,14 @@ #include #include "../../configuration/Configuration.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../../configuration/memspec/MemSpecDDR4.h" -using namespace sc_core; +#ifdef DRAMPOWER +#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" using namespace DRAMPower; +#endif + +using namespace sc_core; DramDDR4::DramDDR4(const sc_module_name& name, const Configuration& config, TemperatureController& temperatureController) @@ -56,6 +59,7 @@ DramDDR4::DramDDR4(const sc_module_name& name, const Configuration& config, if (memSpecDDR4 == nullptr) SC_REPORT_FATAL("DramDDR4", "Wrong MemSpec chosen"); +#ifdef DRAMPOWER MemArchitectureSpec memArchSpec; memArchSpec.burstLength = memSpecDDR4->defaultBurstLength; memArchSpec.dataRate = memSpecDDR4->dataRate; @@ -143,5 +147,6 @@ DramDDR4::DramDDR4(const sc_module_name& name, const Configuration& config, powerSpec.memArchSpec = memArchSpec; DRAMPower = std::make_unique(powerSpec, false); +#endif } } diff --git a/DRAMSys/library/src/simulation/dram/DramDDR5.cpp b/DRAMSys/library/src/simulation/dram/DramDDR5.cpp index 53102167..135ff852 100644 --- a/DRAMSys/library/src/simulation/dram/DramDDR5.cpp +++ b/DRAMSys/library/src/simulation/dram/DramDDR5.cpp @@ -35,11 +35,9 @@ #include "DramDDR5.h" #include "../../configuration/Configuration.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../../configuration/memspec/MemSpecDDR5.h" using namespace sc_core; -using namespace DRAMPower; DramDDR5::DramDDR5(const sc_module_name& name, const Configuration& config, TemperatureController& temperatureController) diff --git a/DRAMSys/library/src/simulation/dram/DramGDDR5.cpp b/DRAMSys/library/src/simulation/dram/DramGDDR5.cpp index c56a86a5..2f6301c4 100644 --- a/DRAMSys/library/src/simulation/dram/DramGDDR5.cpp +++ b/DRAMSys/library/src/simulation/dram/DramGDDR5.cpp @@ -35,7 +35,6 @@ #include "DramGDDR5.h" #include "../../configuration/Configuration.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../../configuration/memspec/MemSpecGDDR5.h" using namespace sc_core; diff --git a/DRAMSys/library/src/simulation/dram/DramGDDR5X.cpp b/DRAMSys/library/src/simulation/dram/DramGDDR5X.cpp index 69496d6e..377d515c 100644 --- a/DRAMSys/library/src/simulation/dram/DramGDDR5X.cpp +++ b/DRAMSys/library/src/simulation/dram/DramGDDR5X.cpp @@ -35,7 +35,6 @@ #include "DramGDDR5X.h" #include "../../configuration/Configuration.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../../configuration/memspec/MemSpecGDDR5X.h" using namespace sc_core; diff --git a/DRAMSys/library/src/simulation/dram/DramGDDR6.cpp b/DRAMSys/library/src/simulation/dram/DramGDDR6.cpp index 33f08a31..57b0df97 100644 --- a/DRAMSys/library/src/simulation/dram/DramGDDR6.cpp +++ b/DRAMSys/library/src/simulation/dram/DramGDDR6.cpp @@ -35,7 +35,6 @@ #include "DramGDDR6.h" #include "../../configuration/Configuration.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../../configuration/memspec/MemSpecGDDR6.h" using namespace sc_core; diff --git a/DRAMSys/library/src/simulation/dram/DramHBM2.cpp b/DRAMSys/library/src/simulation/dram/DramHBM2.cpp index 5391fcb0..40f54d53 100644 --- a/DRAMSys/library/src/simulation/dram/DramHBM2.cpp +++ b/DRAMSys/library/src/simulation/dram/DramHBM2.cpp @@ -35,7 +35,6 @@ #include "DramHBM2.h" #include "../../configuration/Configuration.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../../configuration/memspec/MemSpecHBM2.h" using namespace sc_core; diff --git a/DRAMSys/library/src/simulation/dram/DramHBM3.cpp b/DRAMSys/library/src/simulation/dram/DramHBM3.cpp index 10ed3cf1..0fee7304 100644 --- a/DRAMSys/library/src/simulation/dram/DramHBM3.cpp +++ b/DRAMSys/library/src/simulation/dram/DramHBM3.cpp @@ -35,7 +35,6 @@ #include "DramHBM3.h" #include "../../configuration/Configuration.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../../configuration/memspec/MemSpecHBM3.h" using namespace sc_core; diff --git a/DRAMSys/library/src/simulation/dram/DramLPDDR4.cpp b/DRAMSys/library/src/simulation/dram/DramLPDDR4.cpp index 1b1d51cf..e55cfdb0 100644 --- a/DRAMSys/library/src/simulation/dram/DramLPDDR4.cpp +++ b/DRAMSys/library/src/simulation/dram/DramLPDDR4.cpp @@ -35,7 +35,6 @@ #include "DramLPDDR4.h" #include "../../configuration/Configuration.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../../configuration/memspec/MemSpecLPDDR4.h" using namespace sc_core; diff --git a/DRAMSys/library/src/simulation/dram/DramLPDDR5.cpp b/DRAMSys/library/src/simulation/dram/DramLPDDR5.cpp index 4aff5ce5..58e19439 100644 --- a/DRAMSys/library/src/simulation/dram/DramLPDDR5.cpp +++ b/DRAMSys/library/src/simulation/dram/DramLPDDR5.cpp @@ -37,7 +37,6 @@ #include "Dram.h" #include "../../configuration/Configuration.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../../configuration/memspec/MemSpecLPDDR5.h" using namespace sc_core; diff --git a/DRAMSys/library/src/simulation/dram/DramRecordable.cpp b/DRAMSys/library/src/simulation/dram/DramRecordable.cpp index 5902f745..e48c247b 100644 --- a/DRAMSys/library/src/simulation/dram/DramRecordable.cpp +++ b/DRAMSys/library/src/simulation/dram/DramRecordable.cpp @@ -68,19 +68,23 @@ DramRecordable::DramRecordable(const sc_module_name& name, const Confi : BaseDram(name, config, temperatureController), tlmRecorder(tlmRecorder), powerWindowSize(config.memSpec->tCK * config.windowSize) { +#ifdef DRAMPOWER // Create a thread that is triggered every $powerWindowSize // to generate a Power over Time plot in the Trace analyzer: if (config.powerAnalysis && config.enableWindowing) SC_THREAD(powerWindow); +#endif } template void DramRecordable::reportPower() { BaseDram::reportPower(); +#ifdef DRAMPOWER tlmRecorder.recordPower(sc_time_stamp().to_seconds(), this->DRAMPower->getPower().window_average_power * this->memSpec.devicesPerRank); +#endif } template @@ -123,7 +127,7 @@ void DramRecordable::recordPhase(tlm_generic_payload &trans, const tlm } - +#ifdef DRAMPOWER // This Thread is only triggered when Power Simulation is enabled. // It estimates the current average power which will be stored in the trace database for visualization purposes. template @@ -158,6 +162,7 @@ void DramRecordable::powerWindow() } } +#endif template class DramRecordable; template class DramRecordable; diff --git a/DRAMSys/library/src/simulation/dram/DramRecordable.h b/DRAMSys/library/src/simulation/dram/DramRecordable.h index 2dbc46d6..4e9698a8 100644 --- a/DRAMSys/library/src/simulation/dram/DramRecordable.h +++ b/DRAMSys/library/src/simulation/dram/DramRecordable.h @@ -40,9 +40,12 @@ #include #include "../../common/TlmRecorder.h" #include "../../configuration/Configuration.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../TemperatureController.h" +#ifdef DRAMPOWER +#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" +#endif + template class DramRecordable final : public BaseDram { @@ -71,9 +74,11 @@ private: return std::fabs(a - b) < epsilon; } +#ifdef DRAMPOWER // This Thread is only triggered when Power Simulation is enabled. // It estimates the current average power which will be stored in the trace database for visualization purposes. void powerWindow(); +#endif }; #endif // DRAMRECORDABLE_H diff --git a/DRAMSys/library/src/simulation/dram/DramSTTMRAM.cpp b/DRAMSys/library/src/simulation/dram/DramSTTMRAM.cpp index c6e279e6..c42de13e 100644 --- a/DRAMSys/library/src/simulation/dram/DramSTTMRAM.cpp +++ b/DRAMSys/library/src/simulation/dram/DramSTTMRAM.cpp @@ -35,11 +35,9 @@ #include "DramSTTMRAM.h" #include "../../configuration/Configuration.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../../configuration/memspec/MemSpecSTTMRAM.h" using namespace sc_core; -using namespace DRAMPower; DramSTTMRAM::DramSTTMRAM(const sc_module_name& name, const Configuration& config, TemperatureController& temperatureController) diff --git a/DRAMSys/library/src/simulation/dram/DramWideIO.cpp b/DRAMSys/library/src/simulation/dram/DramWideIO.cpp index eb3b6f4e..4fa8ecdb 100644 --- a/DRAMSys/library/src/simulation/dram/DramWideIO.cpp +++ b/DRAMSys/library/src/simulation/dram/DramWideIO.cpp @@ -39,12 +39,16 @@ #include "DramWideIO.h" #include "../../configuration/Configuration.h" #include "../../error/errormodel.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../../configuration/memspec/MemSpecWideIO.h" +#ifdef DRAMPOWER +#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" +using namespace DRAMPower; +#endif + using namespace sc_core; using namespace tlm; -using namespace DRAMPower; + DramWideIO::DramWideIO(const sc_module_name& name, const Configuration& config, TemperatureController& temperatureController) @@ -52,6 +56,7 @@ DramWideIO::DramWideIO(const sc_module_name& name, const Configuration& config, { if (powerAnalysis) { +#ifdef DRAMPOWER const auto* memSpecWideIO = dynamic_cast(config.memSpec.get()); if (memSpecWideIO == nullptr) SC_REPORT_FATAL("DramWideIO", "Wrong MemSpec chosen"); @@ -144,6 +149,7 @@ DramWideIO::DramWideIO(const sc_module_name& name, const Configuration& config, DRAMPower = std::make_unique(powerSpec, false); + // For each bank in a channel a error Model is created: if (storeMode == Configuration::StoreMode::ErrorModel) { @@ -154,6 +160,7 @@ DramWideIO::DramWideIO(const sc_module_name& name, const Configuration& config, temperatureController, DRAMPower.get())); } } +#endif } else { @@ -174,12 +181,14 @@ tlm_sync_enum DramWideIO::nb_transport_fw(tlm_generic_payload &payload, { assert(phase >= 5 && phase <= 19); +#ifdef DRAMPOWER if (powerAnalysis) { int bank = static_cast(DramExtension::getExtension(payload).getBank().ID()); int64_t cycle = std::lround((sc_time_stamp() + delay) / memSpec.tCK); DRAMPower->doCommand(phaseToDRAMPowerCommand(phase), bank, cycle); } +#endif if (storeMode == Configuration::StoreMode::Store) { diff --git a/DRAMSys/library/src/simulation/dram/DramWideIO2.cpp b/DRAMSys/library/src/simulation/dram/DramWideIO2.cpp index aafedaca..80a02955 100644 --- a/DRAMSys/library/src/simulation/dram/DramWideIO2.cpp +++ b/DRAMSys/library/src/simulation/dram/DramWideIO2.cpp @@ -35,7 +35,6 @@ #include "DramWideIO2.h" #include "../../configuration/Configuration.h" -#include "../../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h" #include "../../configuration/memspec/MemSpecWideIO2.h" using namespace sc_core; diff --git a/DRAMSys/simulator/TraceSetup.h b/DRAMSys/simulator/TraceSetup.h index 2aacffbf..d443c440 100644 --- a/DRAMSys/simulator/TraceSetup.h +++ b/DRAMSys/simulator/TraceSetup.h @@ -37,7 +37,7 @@ #ifndef TRACESETUP_H #define TRACESETUP_H -#include +#include #include #include #include diff --git a/DRAMSys/simulator/main.cpp b/DRAMSys/simulator/main.cpp index 5d8e5772..b60156ee 100644 --- a/DRAMSys/simulator/main.cpp +++ b/DRAMSys/simulator/main.cpp @@ -44,7 +44,7 @@ #include #include #include -#include +#include #include #include diff --git a/DRAMSys/traceAnalyzer/simulationdialog.h b/DRAMSys/traceAnalyzer/simulationdialog.h index 311714d3..168ceb55 100644 --- a/DRAMSys/traceAnalyzer/simulationdialog.h +++ b/DRAMSys/traceAnalyzer/simulationdialog.h @@ -38,7 +38,7 @@ #include "ui_simulationdialog.h" -#include +#include #include #include #include