diff --git a/DRAMSys/library/src/controller/BankMachine.cpp b/DRAMSys/library/src/controller/BankMachine.cpp index d4bb25a2..993ff42d 100644 --- a/DRAMSys/library/src/controller/BankMachine.cpp +++ b/DRAMSys/library/src/controller/BankMachine.cpp @@ -43,7 +43,7 @@ void BankMachine::startBankMachine() if (currentState == BmState::Precharged) { sc_time delay = checker->delayToSatisfyConstraints(Command::ACT, bank); - controller->triggerEventAfterDelay(delay, "startBankMachine 1"); + controller->triggerEventAfterDelay(delay); nextCommand = Command::ACT; timeToSchedule = sc_time_stamp() + delay; } @@ -55,14 +55,14 @@ void BankMachine::startBankMachine() if (currentPayload->get_command() == TLM_READ_COMMAND) { sc_time delay = checker->delayToSatisfyConstraints(Command::RD, bank); - controller->triggerEventAfterDelay(delay, "startBankMachine 2"); + controller->triggerEventAfterDelay(delay); nextCommand = Command::RD; timeToSchedule = sc_time_stamp() + delay; } else if (currentPayload->get_command() == TLM_WRITE_COMMAND) { sc_time delay = checker->delayToSatisfyConstraints(Command::WR, bank); - controller->triggerEventAfterDelay(delay, "startBankMachine 3"); + controller->triggerEventAfterDelay(delay); nextCommand = Command::WR; timeToSchedule = sc_time_stamp() + delay; } @@ -72,7 +72,7 @@ void BankMachine::startBankMachine() else // row miss { sc_time delay = checker->delayToSatisfyConstraints(Command::PRE, bank); - controller->triggerEventAfterDelay(delay, "startBankMachine 4"); + controller->triggerEventAfterDelay(delay); nextCommand = Command::PRE; timeToSchedule = sc_time_stamp() + delay; currentRow = extension.getRow(); diff --git a/DRAMSys/library/src/controller/ControllerNew.cpp b/DRAMSys/library/src/controller/ControllerNew.cpp index 567f47d4..5eee0316 100644 --- a/DRAMSys/library/src/controller/ControllerNew.cpp +++ b/DRAMSys/library/src/controller/ControllerNew.cpp @@ -60,17 +60,11 @@ tlm_sync_enum ControllerNew::nb_transport_fw(tlm_generic_payload &trans, printDebugMessage("[fw] " + phaseNameToString(phase) + " notification in " + notificationDelay.to_string()); - triggerEventQueueAfterDelay(notificationDelay, "nb_transport_fw"); + triggerEventQueueAfterDelay(notificationDelay); return TLM_ACCEPTED; } -unsigned int ControllerNew::transport_dbg(tlm_generic_payload &) -{ - SC_REPORT_FATAL("ControllerNew", "Debug Transport not supported"); - return 0; -} - tlm_sync_enum ControllerNew::nb_transport_bw(tlm_generic_payload &trans, tlm_phase &phase, sc_time &delay) { @@ -79,10 +73,16 @@ tlm_sync_enum ControllerNew::nb_transport_bw(tlm_generic_payload &trans, delay.to_string()); Bank bank = DramExtension::getExtension(trans).getBank(); bankMachines[bank]->setCommandFinishedTime(sc_time_stamp() + delay); - triggerEventQueueAfterDelay(delay, "nb_transport_bw"); + triggerEventQueueAfterDelay(delay); return TLM_ACCEPTED; } +unsigned int ControllerNew::transport_dbg(tlm_generic_payload &) +{ + SC_REPORT_FATAL("ControllerNew", "Debug Transport not supported"); + return 0; +} + void ControllerNew::printDebugMessage(string message) { debugManager->printDebugMessage(name(), message); @@ -107,7 +107,7 @@ void ControllerNew::recordPhase(tlm_generic_payload &trans, tlm_phase phase, sc_ tlmRecorder->recordPhase(trans, phase, recTime); } -void ControllerNew::triggerEventAfterDelay(sc_time delay, string sender) +void ControllerNew::triggerEventAfterDelay(sc_time delay) { if (delay != SC_ZERO_TIME) { @@ -115,7 +115,7 @@ void ControllerNew::triggerEventAfterDelay(sc_time delay, string sender) } } -void ControllerNew::triggerEventQueueAfterDelay(sc_time delay, string sender) +void ControllerNew::triggerEventQueueAfterDelay(sc_time delay) { if (delay != SC_ZERO_TIME) { @@ -125,6 +125,7 @@ void ControllerNew::triggerEventQueueAfterDelay(sc_time delay, string sender) void ControllerNew::controllerMethod() { + static sc_time lastTimeCalled = SC_ZERO_TIME; if (lastTimeCalled != sc_time_stamp()) { lastTimeCalled = sc_time_stamp(); @@ -175,6 +176,18 @@ void ControllerNew::acquirePayload() } } +void ControllerNew::getNextBmStates() +{ + for (auto it : bankMachines) + { + tlm_generic_payload *result = it.second->getNextStateAndResult(); + if (result != nullptr) + { + responseQueue.push(result); + } + } +} + void ControllerNew::sendToFrontend() { if (payloadToRelease == nullptr) @@ -190,19 +203,6 @@ void ControllerNew::sendToFrontend() } } -void ControllerNew::getNextBmStates() -{ - for (auto it : bankMachines) - { - tlm_generic_payload *result = it.second->getNextStateAndResult(); - if (result != nullptr) - { - responseQueue.push(result); - } - } - -} - void ControllerNew::startBankMachines() { for (auto it : bankMachines) diff --git a/DRAMSys/library/src/controller/ControllerNew.h b/DRAMSys/library/src/controller/ControllerNew.h index 0e54fd61..ea059eb5 100644 --- a/DRAMSys/library/src/controller/ControllerNew.h +++ b/DRAMSys/library/src/controller/ControllerNew.h @@ -33,8 +33,8 @@ public: tlm_utils::simple_target_socket tSocket; tlm_utils::simple_initiator_socket iSocket; - void triggerEventAfterDelay(sc_time, string); - void triggerEventQueueAfterDelay(sc_time, string); + void triggerEventAfterDelay(sc_time); + void triggerEventQueueAfterDelay(sc_time); ControllerState *state; std::map bankMachines; @@ -47,18 +47,13 @@ public: private: tlm_sync_enum nb_transport_fw(tlm_generic_payload &trans, tlm_phase &phase, sc_time &delay); - unsigned int transport_dbg(tlm_generic_payload &); tlm_sync_enum nb_transport_bw(tlm_generic_payload &trans, tlm_phase &phase, sc_time &delay); + unsigned int transport_dbg(tlm_generic_payload &); + void printDebugMessage(string message); void recordPhase(tlm_generic_payload &trans, tlm_phase phase, sc_time delay); - void releasePayload(); - void acquirePayload(); - void getNextBmStates(); - void sendToFrontend(); - void startBankMachines(); - unsigned numberOfPayloads = 0; tlm_generic_payload *payloadToAcquire = nullptr; sc_time timeToAcquire = SC_ZERO_TIME; @@ -72,7 +67,12 @@ private: void controllerMethod(); sc_event triggerEvent; sc_event_queue triggerEventQueue; - sc_time lastTimeCalled = SC_ZERO_TIME; + + void releasePayload(); + void acquirePayload(); + void getNextBmStates(); + void sendToFrontend(); + void startBankMachines(); }; #endif // CONTROLLERNEW_H