diff --git a/DRAMSys/library/src/controller/cmdmux/CmdMuxStrict.h b/DRAMSys/library/src/controller/cmdmux/CmdMuxStrict.h index b8eebd94..2cd2a372 100644 --- a/DRAMSys/library/src/controller/cmdmux/CmdMuxStrict.h +++ b/DRAMSys/library/src/controller/cmdmux/CmdMuxStrict.h @@ -45,7 +45,7 @@ public: CommandTuple::Type selectCommand(ReadyCommands &); private: - uint64_t nextPayloadID = 0; + uint64_t nextPayloadID = 1; const MemSpec *memSpec; }; diff --git a/DRAMSys/library/src/controller/respqueue/RespQueueReorder.cpp b/DRAMSys/library/src/controller/respqueue/RespQueueReorder.cpp index 77118c2f..c41c7d45 100644 --- a/DRAMSys/library/src/controller/respqueue/RespQueueReorder.cpp +++ b/DRAMSys/library/src/controller/respqueue/RespQueueReorder.cpp @@ -46,12 +46,12 @@ tlm_generic_payload *RespQueueReorder::nextPayload() { if (!buffer.empty()) { - if (buffer.begin()->first == currentPayloadID) + if (buffer.begin()->first == nextPayloadID) { std::pair element = buffer.begin()->second; if (element.second <= sc_time_stamp()) { - buffer.erase(currentPayloadID++); + buffer.erase(nextPayloadID++); return element.first; } } @@ -63,7 +63,7 @@ sc_time RespQueueReorder::getTriggerTime() const { if (!buffer.empty()) { - if (buffer.begin()->first == currentPayloadID) + if (buffer.begin()->first == nextPayloadID) { sc_time triggerTime = buffer.begin()->second.second; if (triggerTime > sc_time_stamp()) diff --git a/DRAMSys/library/src/controller/respqueue/RespQueueReorder.h b/DRAMSys/library/src/controller/respqueue/RespQueueReorder.h index 7993f080..89d8c81a 100644 --- a/DRAMSys/library/src/controller/respqueue/RespQueueReorder.h +++ b/DRAMSys/library/src/controller/respqueue/RespQueueReorder.h @@ -48,8 +48,7 @@ public: virtual sc_time getTriggerTime() const override; private: - uint64_t currentPayloadID = 0; - // Muss die Zeit aller Payloads gespeichert werden? + uint64_t nextPayloadID = 1; std::map> buffer; }; diff --git a/DRAMSys/library/src/simulation/Arbiter.cpp b/DRAMSys/library/src/simulation/Arbiter.cpp index 382e3960..0fdb6e5f 100644 --- a/DRAMSys/library/src/simulation/Arbiter.cpp +++ b/DRAMSys/library/src/simulation/Arbiter.cpp @@ -76,13 +76,13 @@ void Arbiter::end_of_elaboration() { // initiator side threadIsBusy = std::vector(tSocket.size(), false); - nextThreadPayloadIDToAppend = std::vector(tSocket.size(), 0); + nextThreadPayloadIDToAppend = std::vector(tSocket.size(), 1); // channel side channelIsBusy = std::vector(iSocket.size(), false); pendingRequests = std::vector>(iSocket.size(), std::queue()); - nextChannelPayloadIDToAppend = std::vector(iSocket.size(), 0); + nextChannelPayloadIDToAppend = std::vector(iSocket.size(), 1); } void ArbiterSimple::end_of_elaboration() @@ -117,7 +117,7 @@ void ArbiterReorder::end_of_elaboration() outstandingEndReq = std::vector(tSocket.size(), nullptr); pendingResponses = std::vector> (tSocket.size(), std::set()); - nextThreadPayloadIDToReturn = std::vector(tSocket.size(), 0); + nextThreadPayloadIDToReturn = std::vector(tSocket.size(), 1); lastEndReq = std::vector(iSocket.size(), sc_max_time()); lastEndResp = std::vector(tSocket.size(), sc_max_time());