diff --git a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.json b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.json index 6c4c2562..f45dfbf3 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.json +++ b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.json @@ -7,10 +7,11 @@ "CmdMux": "Oldest", "RespQueue": "Fifo", "RefreshPolicy": "AllBank", - "RefreshMaxPostponed": 8, - "RefreshMaxPulledin": 8, + "RefreshMaxPostponed": 0, + "RefreshMaxPulledin": 0, "PowerDownPolicy": "NoPowerDown", "Arbiter": "Simple", - "MaxActiveTransactions": 128 + "MaxActiveTransactions": 128, + "RFM": "Enabled" } } \ No newline at end of file diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-3200A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-3200A.json index 6dd68d19..f57a2c60 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-3200A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-3200A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-3600A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-3600A.json index 4299f1ad..7efd2eae 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-3600A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-3600A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-4000A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-4000A.json index ed335f6f..254fe3da 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-4000A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-4000A.json @@ -16,7 +16,7 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, + "RFM" :0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-4400A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-4400A.json index dab704ca..6ebb91f1 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-4400A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-4400A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-4800A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-4800A.json index 80c0617a..d5bd033f 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-4800A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-4800A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-5200A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-5200A.json index f028cd15..9ffb5d66 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-5200A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-5200A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-5600A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-5600A.json index f1c6ce72..d6b3b70a 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-5600A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-5600A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-6000A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-6000A.json index ca72d3f7..0344d9d4 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-6000A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-6000A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-6400A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-6400A.json index 1dc9b40d..d1674a65 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-6400A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x4x1Gbx8_DDR5-6400A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-3200A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-3200A.json index 5ba75b73..c20e3f5b 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-3200A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-3200A.json @@ -16,10 +16,9 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, - "RAAIMT" : 0, - "RAAMMT" : 0, - "RAADEC" : 0 + "RAAIMT" : 32, + "RAAMMT" : 1, + "RAADEC" : 16 }, "memoryId": "JEDEC_2x8x2Gbx4_DDR5-3200A", "memoryType": "DDR5", diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-3600A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-3600A.json index d8f7f338..46e6033f 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-3600A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-3600A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-4000A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-4000A.json index 294380e2..f3db91fa 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-4000A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-4000A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-4400A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-4400A.json index 8d06fd56..7c29c982 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-4400A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-4400A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-4800A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-4800A.json index 3543431b..1a2365aa 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-4800A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-4800A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-5200A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-5200A.json index d3a91bca..95ac6c78 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-5200A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-5200A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-5600A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-5600A.json index 192895cf..8dae1e1d 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-5600A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-5600A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-6000A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-6000A.json index 7c21bd72..63da3277 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-6000A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-6000A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-6400A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-6400A.json index a3fdf5dc..d629723c 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-6400A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x2Gbx4_DDR5-6400A.json @@ -16,7 +16,6 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, "RAAMMT" : 0, "RAADEC" : 0 diff --git a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x8x2Gbx4_DDR5-3200A.json b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x8x2Gbx4_DDR5-3200A.json index 41b54c23..6942b05c 100644 --- a/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x8x2Gbx4_DDR5-3200A.json +++ b/DRAMSys/library/resources/configs/memspecs/JEDEC_2x8x8x2Gbx4_DDR5-3200A.json @@ -16,9 +16,8 @@ "nbrOfChannels": 2, "cmdMode": 1, "refMode": 1, - "RFM" : 0, "RAAIMT" : 0, - "RAAMMT" : 0, + "RAAMMT" : 1, "RAADEC" : 0 }, "memoryId": "JEDEC_2x8x8x8Gbx4_DDR5-3200A_4bit", diff --git a/DRAMSys/library/src/configuration/Configuration.cpp b/DRAMSys/library/src/configuration/Configuration.cpp index ae55a952..f9d88cfd 100644 --- a/DRAMSys/library/src/configuration/Configuration.cpp +++ b/DRAMSys/library/src/configuration/Configuration.cpp @@ -181,8 +181,7 @@ void Configuration::setParameter(const std::string &name, const nlohmann::json & } else if (name == "RFM") { - if(value == "Enabled") - { + if(value == "Enabled") { RFM = true; } } diff --git a/DRAMSys/library/src/configuration/memspec/MemSpec.cpp b/DRAMSys/library/src/configuration/memspec/MemSpec.cpp index c1db4626..fc4de80b 100644 --- a/DRAMSys/library/src/configuration/memspec/MemSpec.cpp +++ b/DRAMSys/library/src/configuration/memspec/MemSpec.cpp @@ -110,6 +110,12 @@ uint64_t MemSpec::getRAAIMT() const return 0; } +uint64_t MemSpec::getRAAMMT() const +{ + SC_REPORT_FATAL("MemSpec", "Refresh Management not supported"); + return 0; +} + bool MemSpec::hasRasAndCasBus() const { return false; diff --git a/DRAMSys/library/src/configuration/memspec/MemSpec.h b/DRAMSys/library/src/configuration/memspec/MemSpec.h index a5daae71..a5d0893a 100644 --- a/DRAMSys/library/src/configuration/memspec/MemSpec.h +++ b/DRAMSys/library/src/configuration/memspec/MemSpec.h @@ -82,6 +82,7 @@ public: virtual uint64_t getRAADEC() const; virtual uint64_t getRAAIMT() const; + virtual uint64_t getRAAMMT() const; virtual bool hasRasAndCasBus() const; diff --git a/DRAMSys/library/src/configuration/memspec/MemSpecDDR5.cpp b/DRAMSys/library/src/configuration/memspec/MemSpecDDR5.cpp index ed162d9e..cef7fb3b 100644 --- a/DRAMSys/library/src/configuration/memspec/MemSpecDDR5.cpp +++ b/DRAMSys/library/src/configuration/memspec/MemSpecDDR5.cpp @@ -201,6 +201,11 @@ uint64_t MemSpecDDR5::getRAAIMT() const return RAAIMT; } +uint64_t MemSpecDDR5::getRAAMMT() const +{ + return RAAMMT; +} + // Returns the execution time for commands that have a fixed execution time sc_time MemSpecDDR5::getExecutionTime(Command command, const tlm_generic_payload &payload) const { diff --git a/DRAMSys/library/src/configuration/memspec/MemSpecDDR5.h b/DRAMSys/library/src/configuration/memspec/MemSpecDDR5.h index b4f67a75..00420f00 100644 --- a/DRAMSys/library/src/configuration/memspec/MemSpecDDR5.h +++ b/DRAMSys/library/src/configuration/memspec/MemSpecDDR5.h @@ -118,6 +118,7 @@ public: uint64_t getRAADEC() const override; uint64_t getRAAIMT() const override; + uint64_t getRAAMMT() const override; sc_core::sc_time getExecutionTime(Command command, const tlm::tlm_generic_payload &payload) const override; TimeInterval getIntervalOnDataStrobe(Command command, const tlm::tlm_generic_payload &payload) const override; diff --git a/DRAMSys/library/src/controller/BankMachine.cpp b/DRAMSys/library/src/controller/BankMachine.cpp index 059683a9..74d17ab6 100644 --- a/DRAMSys/library/src/controller/BankMachine.cpp +++ b/DRAMSys/library/src/controller/BankMachine.cpp @@ -79,10 +79,6 @@ void BankMachine::updateState(Command command) sleeping = false; blocked = false; - if(command == Command::RFMAB) { - blocked = false; - } - if(Configuration::getInstance().RFM == true) { if (RFMCounter > Configuration::getInstance().memSpec->getRAADEC()) { RFMCounter -= Configuration::getInstance().memSpec->getRAADEC(); diff --git a/DRAMSys/library/src/controller/refresh/RefreshManagerAllBank.cpp b/DRAMSys/library/src/controller/refresh/RefreshManagerAllBank.cpp index f411e916..54026072 100644 --- a/DRAMSys/library/src/controller/refresh/RefreshManagerAllBank.cpp +++ b/DRAMSys/library/src/controller/refresh/RefreshManagerAllBank.cpp @@ -66,11 +66,14 @@ sc_time RefreshManagerAllBank::start() nextCommand = Command::NOP; bool RFMRequired = false; - for(auto bm : bankMachinesOnRank) { - if(bm->getRFMCounter() >= Configuration::getInstance().memSpec->getRAAIMT()) - { - RFMRequired = true; - break; + + if(Configuration::getInstance().RFM == true) { + for(auto bm : bankMachinesOnRank) { + uint64_t threshold = Configuration::getInstance().memSpec->getRAAIMT() * Configuration::getInstance().memSpec->getRAAMMT(); + if(bm->getRFMCounter() >= threshold) { + RFMRequired = true; + break; + } } }