From c1f4655d19945cf515f7e15d875d79c82de76156 Mon Sep 17 00:00:00 2001 From: Derek Christ Date: Wed, 26 Mar 2025 09:55:57 +0100 Subject: [PATCH] Fix delays in traffic generators --- src/simulator/simulator/generator/TrafficGenerator.cpp | 2 +- src/simulator/simulator/request/RequestIssuer.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/simulator/simulator/generator/TrafficGenerator.cpp b/src/simulator/simulator/generator/TrafficGenerator.cpp index d4928a23..71599190 100644 --- a/src/simulator/simulator/generator/TrafficGenerator.cpp +++ b/src/simulator/simulator/generator/TrafficGenerator.cpp @@ -190,7 +190,7 @@ Request TrafficGenerator::nextRequest() requestsInState++; Request request = producers[currentState]->nextRequest(); - request.delay += generatorPeriod * static_cast(clksToIdle); + request.delay += generatorPeriod + generatorPeriod * static_cast(clksToIdle); return request; } diff --git a/src/simulator/simulator/request/RequestIssuer.cpp b/src/simulator/simulator/request/RequestIssuer.cpp index d1d46f45..ca13580e 100644 --- a/src/simulator/simulator/request/RequestIssuer.cpp +++ b/src/simulator/simulator/request/RequestIssuer.cpp @@ -85,6 +85,13 @@ void RequestIssuer::sendNextRequest() sc_core::sc_time sendingTime = sc_core::sc_time_stamp() + delay; + bool needsOffset = (sendingTime % interfaceClk) != sc_core::SC_ZERO_TIME; + if (needsOffset) + { + sendingTime += interfaceClk; + sendingTime -= sendingTime % interfaceClk; + } + delay = sendingTime - sc_core::sc_time_stamp(); iSocket->nb_transport_fw(payload, phase, delay);