diff --git a/DRAMSys/library/src/controller/Controller.cpp b/DRAMSys/library/src/controller/Controller.cpp index 1b086ce6..dc0f9840 100644 --- a/DRAMSys/library/src/controller/Controller.cpp +++ b/DRAMSys/library/src/controller/Controller.cpp @@ -310,13 +310,21 @@ void Controller::controllerMethod() for (auto it : bankMachines) { sc_time delay = it->start(); - if (delay != SC_ZERO_TIME || !readyCmdBlocked) // must be checked to avoid livelock + if (delay != (sc_max_time() - sc_time_stamp()) && (delay != SC_ZERO_TIME || !readyCmdBlocked)) // must be checked to avoid livelock controllerEvent.notify(delay); } for (auto it : refreshManagers) - controllerEvent.notify(it->start()); + { + sc_time delay = it->start(); + if (delay != (sc_max_time() - sc_time_stamp())) + controllerEvent.notify(delay); + } for (auto it : powerDownManagers) - controllerEvent.notify(it->start()); + { + sc_time delay = it->start(); + if (delay != (sc_max_time() - sc_time_stamp())) + controllerEvent.notify(delay); + } } tlm_sync_enum Controller::nb_transport_fw(tlm_generic_payload &trans,