From 87d5be069641fc42578aa9efd5fbc3f638861c08 Mon Sep 17 00:00:00 2001 From: Matthias Jung Date: Mon, 30 Aug 2021 10:45:31 +0200 Subject: [PATCH] Small bug fixes --- DRAMSys/library/src/controller/BankMachine.cpp | 5 +++++ DRAMSys/library/src/controller/Command.cpp | 2 +- .../src/controller/refresh/RefreshManagerAllBank.cpp | 10 +++++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/DRAMSys/library/src/controller/BankMachine.cpp b/DRAMSys/library/src/controller/BankMachine.cpp index f21a82d4..059683a9 100644 --- a/DRAMSys/library/src/controller/BankMachine.cpp +++ b/DRAMSys/library/src/controller/BankMachine.cpp @@ -78,6 +78,11 @@ void BankMachine::updateState(Command command) case Command::REFA: case Command::REFB: case Command::REFSB: case Command::RFMAB: 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/Command.cpp b/DRAMSys/library/src/controller/Command.cpp index 7fbfd891..8ba7167c 100644 --- a/DRAMSys/library/src/controller/Command.cpp +++ b/DRAMSys/library/src/controller/Command.cpp @@ -89,7 +89,7 @@ std::string Command::toString() const "RFMSB", // 10 "PREA", // 11 "REFA", // 12 - "RFMA", // 13 + "RFMAB", // 13 "PDEA", // 14 "PDEP", // 15 "SREFEN", // 16 diff --git a/DRAMSys/library/src/controller/refresh/RefreshManagerAllBank.cpp b/DRAMSys/library/src/controller/refresh/RefreshManagerAllBank.cpp index 952e932e..f411e916 100644 --- a/DRAMSys/library/src/controller/refresh/RefreshManagerAllBank.cpp +++ b/DRAMSys/library/src/controller/refresh/RefreshManagerAllBank.cpp @@ -30,6 +30,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Author: Lukas Steiner + * Matthias Jung */ #include "RefreshManagerAllBank.h" @@ -148,7 +149,14 @@ sc_time RefreshManagerAllBank::start() } else if (RFMRequired) { - nextCommand = Command::RFMAB; + if (activatedBanks > 0) + nextCommand = Command::PREA; + else + nextCommand = Command::RFMAB; + + for (auto it : bankMachinesOnRank) + it->block(); + timeToSchedule = checker->timeToSatisfyConstraints(nextCommand, &refreshPayload); return timeToSchedule; }