diff --git a/DRAMSys/library/src/controller/Controller.cpp b/DRAMSys/library/src/controller/Controller.cpp index f0af873c..240c0d5f 100644 --- a/DRAMSys/library/src/controller/Controller.cpp +++ b/DRAMSys/library/src/controller/Controller.cpp @@ -284,18 +284,21 @@ void Controller::controllerMethod() if (commandPair.second != nullptr) // can happen with FIFO strict { Rank rank = DramExtension::getRank(commandPair.second); + BankGroup bankgroup = DramExtension::getBankGroup(commandPair.second); + Bank bank = DramExtension::getBank(commandPair.second); + if (isRankCommand(commandPair.first)) { for (auto it : bankMachinesOnRank[rank.ID()]) it->updateState(commandPair.first); } else - { - Bank bank = DramExtension::getBank(commandPair.second); bankMachines[bank.ID()]->updateState(commandPair.first); - } + refreshManagers[rank.ID()]->updateState(commandPair.first, commandPair.second); powerDownManagers[rank.ID()]->updateState(commandPair.first); + checker->insert(commandPair.first, rank, bankgroup, bank); + sendToDram(commandPair.first, commandPair.second); } else @@ -422,9 +425,6 @@ void Controller::sendToFrontend(tlm_generic_payload *payload, tlm_phase phase) void Controller::sendToDram(Command command, tlm_generic_payload *payload) { - DramExtension extension = DramExtension::getExtension(payload); - checker->insert(command, extension.getRank(), extension.getBankGroup(), extension.getBank()); - sc_time delay = SC_ZERO_TIME; tlm_phase phase = phaseOfCommand[command];