diff --git a/dram/.settings/language.settings.xml b/dram/.settings/language.settings.xml index 278289a3..127cd8ac 100644 --- a/dram/.settings/language.settings.xml +++ b/dram/.settings/language.settings.xml @@ -4,7 +4,7 @@ - + diff --git a/dram/resources/configs/memconfigs/memconfig.xml b/dram/resources/configs/memconfigs/memconfig.xml index 0446a0fb..b708be0d 100644 --- a/dram/resources/configs/memconfigs/memconfig.xml +++ b/dram/resources/configs/memconfigs/memconfig.xml @@ -3,5 +3,10 @@ + + + + + diff --git a/dram/src/core/configuration/Configuration.cpp b/dram/src/core/configuration/Configuration.cpp index ade50517..48e766c5 100644 --- a/dram/src/core/configuration/Configuration.cpp +++ b/dram/src/core/configuration/Configuration.cpp @@ -12,8 +12,8 @@ using namespace std; namespace core{ -string Configuration::memspecUri = "/home/robert/git/dram/dram/resources/configs/memspecs/MatzesWideIO.xml"; -string Configuration::memconfigUri = "/home/robert/git/dram/dram/resources/configs/memconfigs/memconfig.xml"; +string Configuration::memspecUri = ""; +string Configuration::memconfigUri = ""; Configuration::Configuration() { diff --git a/dram/src/core/configuration/Configuration.h b/dram/src/core/configuration/Configuration.h index 793bd14b..5985520e 100644 --- a/dram/src/core/configuration/Configuration.h +++ b/dram/src/core/configuration/Configuration.h @@ -40,6 +40,10 @@ struct Configuration bool BankwiseLogic; bool OpenPagePolicy; bool AdaptiveOpenPagePolicy; + bool RefreshAwareScheduling; + unsigned int MaxNrOfTransactions; + string Scheduler; + unsigned int Capsize; private: Configuration(); diff --git a/dram/src/core/configuration/MemSpecLoader.cpp b/dram/src/core/configuration/MemSpecLoader.cpp index 91fef841..f43fe809 100644 --- a/dram/src/core/configuration/MemSpecLoader.cpp +++ b/dram/src/core/configuration/MemSpecLoader.cpp @@ -49,6 +49,10 @@ void MemSpecLoader::loadConfig(Configuration& config, XMLElement* memspec) config.BankwiseLogic = queryBoolParameter(configuration, "bankwiseLogic"); config.OpenPagePolicy = queryBoolParameter(configuration, "openPagePolicy"); config.AdaptiveOpenPagePolicy = queryBoolParameter(configuration, "adaptiveOpenPagePolicy"); + config.RefreshAwareScheduling = queryBoolParameter(configuration, "refreshAwareScheduling"); + config.MaxNrOfTransactions = queryUIntParameter(configuration, "maxNrOfTransactionsInDram"); + config.Scheduler = queryStringParameter(configuration, "scheduler"); + config.Capsize = queryUIntParameter(configuration, "capsize"); } void MemSpecLoader::loadDDR4(Configuration& config, XMLElement* memspec) diff --git a/dram/src/core/configuration/TimingConfiguration.h b/dram/src/core/configuration/TimingConfiguration.h index b0048f5f..9ec92340 100644 --- a/dram/src/core/configuration/TimingConfiguration.h +++ b/dram/src/core/configuration/TimingConfiguration.h @@ -40,7 +40,7 @@ struct TimingConfiguration sc_time tWL; //write latency sc_time tWR; //write recovery (write to precharge) sc_time tWTR; //write to read (different bank group) - //sc_time tWTR; //.. (same bank group) + //sc_time tWTR_L; //.. (same bank group) sc_time tCKESR; //min time in sref sc_time tCKE; //min time in pdna or pdnp sc_time tXP; //min delay to row access command after pdnpx pdnax diff --git a/dram/src/core/scheduling/checker/ActivateChecker.cpp b/dram/src/core/scheduling/checker/ActivateChecker.cpp index 9b287bdd..85645851 100644 --- a/dram/src/core/scheduling/checker/ActivateChecker.cpp +++ b/dram/src/core/scheduling/checker/ActivateChecker.cpp @@ -83,6 +83,11 @@ bool ActivateChecker::satsfies_activateToActivate_differentBank(ScheduledCommand bool ActivateChecker::satisfies_nActivateWindow(ScheduledCommand& command) const { + /* + * there may be activates scheduled in the future, so emplace + * command in a copied set (not necessarily the last in time), + * and check if the n-act constraint holds for the whole set. + */ if (state.lastActivates.size() >= config.nActivate) { set lastActivates = state.lastActivates; diff --git a/dram/src/simulation/main.cpp b/dram/src/simulation/main.cpp index 2801180c..c2ff4eda 100644 --- a/dram/src/simulation/main.cpp +++ b/dram/src/simulation/main.cpp @@ -8,6 +8,7 @@ #include #include #include "SimulationManager.h" +#include "../core/configuration/Configuration.h" using namespace std; using namespace simulation; @@ -28,6 +29,10 @@ int sc_main(int argc, char **argv) { sc_set_time_resolution(1, SC_PS); + + Configuration::memspecUri = "/home/jonny/git/dram/dram/resources/configs/memspecs/MatzesWideIO.xml"; + Configuration::memconfigUri = "/home/jonny/git/dram/dram/resources/configs/memconfigs/memconfig.xml"; + string resources = pathOfFile(argv[0]) + string("/../resources/"); string stl1 = "chstone-sha_32.stl"; unsigned int burstlength1 = 4;