gem5-dev@gem5.org

The gem5 Developer List

View all threads

[S] Change in gem5/gem5[develop]: systemc: associate tlm payload and gem5 packet in b_transport case

YW
Yu-hsin Wang (Gerrit)
Thu, Sep 22, 2022 5:56 AM

Yu-hsin Wang has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/63772?usp=email )

Change subject: systemc: associate tlm payload and gem5 packet in
b_transport case
......................................................................

systemc: associate tlm payload and gem5 packet in b_transport case

TlmToGem5Bridge only associates the tlm payload and gem5 packet in
nb_transport case. We should also do the samething in b_transport case.
Otherwise, the downstream Gem5ToTlmBridge cannot get the correct
payload.

Change-Id: I85b213402d58d68641615a6cea04961f4a15f1ba

M src/systemc/tlm_bridge/tlm_to_gem5.cc
1 file changed, 41 insertions(+), 0 deletions(-)

diff --git a/src/systemc/tlm_bridge/tlm_to_gem5.cc
b/src/systemc/tlm_bridge/tlm_to_gem5.cc
index 0c622f6..2547c99 100644
--- a/src/systemc/tlm_bridge/tlm_to_gem5.cc
+++ b/src/systemc/tlm_bridge/tlm_to_gem5.cc
@@ -338,6 +338,9 @@
pkt = payload2packet(_id, trans);
}

  • auto tlmSenderState = new Gem5SystemC::TlmSenderState(trans);
  • pkt->pushSenderState(tlmSenderState);
  • MemBackdoorPtr backdoor = nullptr;
    Tick ticks = bmp.sendAtomicBackdoor(pkt, backdoor);
    if (backdoor)
    

@@ -354,6 +357,12 @@
// update time
t += delay;

  • // clean up
  • tlmSenderState =
  •    dynamic_cast<Gem5SystemC::TlmSenderState*>(pkt->popSenderState());
    
  • sc_assert(tlmSenderState != nullptr);
  • delete tlmSenderState;
  • if (extension == nullptr)
        destroyPacket(pkt);
    

@@ -378,8 +387,17 @@
pkt = payload2packet(_id, trans);
}

  • auto tlmSenderState = new Gem5SystemC::TlmSenderState(trans);

  • pkt->pushSenderState(tlmSenderState);

  • bmp.sendFunctional(pkt);
    
  • // clean up

  • tlmSenderState =

  •    dynamic_cast<Gem5SystemC::TlmSenderState*>(pkt->popSenderState());
    
  • sc_assert(tlmSenderState != nullptr);

  • delete tlmSenderState;

  • if (extension == nullptr)
        destroyPacket(pkt);
    

@@ -406,6 +424,9 @@
pkt->req->setFlags(Request::NO_ACCESS);
}

  • auto tlmSenderState = new Gem5SystemC::TlmSenderState(trans);
  • pkt->pushSenderState(tlmSenderState);
  • MemBackdoorPtr backdoor = nullptr;
    bmp.sendAtomicBackdoor(pkt, backdoor);
    if (backdoor) {
    

@@ -430,6 +451,12 @@
);
}

  • // clean up
  • tlmSenderState =
  •    dynamic_cast<Gem5SystemC::TlmSenderState*>(pkt->popSenderState());
    
  • sc_assert(tlmSenderState != nullptr);
  • delete tlmSenderState;
  • if (extension == nullptr)
        destroyPacket(pkt);
    

--
To view, visit
https://gem5-review.googlesource.com/c/public/gem5/+/63772?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I85b213402d58d68641615a6cea04961f4a15f1ba
Gerrit-Change-Number: 63772
Gerrit-PatchSet: 1
Gerrit-Owner: Yu-hsin Wang yuhsingw@google.com
Gerrit-MessageType: newchange

Yu-hsin Wang has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/63772?usp=email ) Change subject: systemc: associate tlm payload and gem5 packet in b_transport case ...................................................................... systemc: associate tlm payload and gem5 packet in b_transport case TlmToGem5Bridge only associates the tlm payload and gem5 packet in nb_transport case. We should also do the samething in b_transport case. Otherwise, the downstream Gem5ToTlmBridge cannot get the correct payload. Change-Id: I85b213402d58d68641615a6cea04961f4a15f1ba --- M src/systemc/tlm_bridge/tlm_to_gem5.cc 1 file changed, 41 insertions(+), 0 deletions(-) diff --git a/src/systemc/tlm_bridge/tlm_to_gem5.cc b/src/systemc/tlm_bridge/tlm_to_gem5.cc index 0c622f6..2547c99 100644 --- a/src/systemc/tlm_bridge/tlm_to_gem5.cc +++ b/src/systemc/tlm_bridge/tlm_to_gem5.cc @@ -338,6 +338,9 @@ pkt = payload2packet(_id, trans); } + auto tlmSenderState = new Gem5SystemC::TlmSenderState(trans); + pkt->pushSenderState(tlmSenderState); + MemBackdoorPtr backdoor = nullptr; Tick ticks = bmp.sendAtomicBackdoor(pkt, backdoor); if (backdoor) @@ -354,6 +357,12 @@ // update time t += delay; + // clean up + tlmSenderState = + dynamic_cast<Gem5SystemC::TlmSenderState*>(pkt->popSenderState()); + sc_assert(tlmSenderState != nullptr); + delete tlmSenderState; + if (extension == nullptr) destroyPacket(pkt); @@ -378,8 +387,17 @@ pkt = payload2packet(_id, trans); } + auto tlmSenderState = new Gem5SystemC::TlmSenderState(trans); + pkt->pushSenderState(tlmSenderState); + bmp.sendFunctional(pkt); + // clean up + tlmSenderState = + dynamic_cast<Gem5SystemC::TlmSenderState*>(pkt->popSenderState()); + sc_assert(tlmSenderState != nullptr); + delete tlmSenderState; + if (extension == nullptr) destroyPacket(pkt); @@ -406,6 +424,9 @@ pkt->req->setFlags(Request::NO_ACCESS); } + auto tlmSenderState = new Gem5SystemC::TlmSenderState(trans); + pkt->pushSenderState(tlmSenderState); + MemBackdoorPtr backdoor = nullptr; bmp.sendAtomicBackdoor(pkt, backdoor); if (backdoor) { @@ -430,6 +451,12 @@ ); } + // clean up + tlmSenderState = + dynamic_cast<Gem5SystemC::TlmSenderState*>(pkt->popSenderState()); + sc_assert(tlmSenderState != nullptr); + delete tlmSenderState; + if (extension == nullptr) destroyPacket(pkt); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/63772?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I85b213402d58d68641615a6cea04961f4a15f1ba Gerrit-Change-Number: 63772 Gerrit-PatchSet: 1 Gerrit-Owner: Yu-hsin Wang <yuhsingw@google.com> Gerrit-MessageType: newchange