Go to the documentation of this file.
59 #ifndef __SYSTEMC_TLM_BRIDGE_GEM5_TO_TLM_HH__
60 #define __SYSTEMC_TLM_BRIDGE_GEM5_TO_TLM_HH__
65 #include "params/Gem5ToTlmBridgeBase.hh"
84 template <
unsigned int BITWIDTH>
96 return bridge.getAddrRanges();
101 return bridge.recvAtomic(pkt);
106 return bridge.recvAtomicBackdoor(pkt, backdoor);
111 return bridge.recvFunctional(pkt);
116 return bridge.recvTimingReq(pkt);
121 return bridge.tryTiming(pkt);
126 return bridge.recvTimingSnoopResp(pkt);
191 typedef Gem5ToTlmBridgeBaseParams
Params;
205 #endif // __SYSTEMC_TLM_BRIDGE_GEM5_TO_TLM_HH__
Gem5ToTlmBridge(Params *p, const sc_core::sc_module_name &mn)
A ResponsePort is a specialization of a port.
bool needToSendRequestRetry
Did another gem5 request arrive while currently blocked? This variable is needed when a retry should ...
void before_end_of_elaboration() override
Tick recvAtomic(PacketPtr packet)
tlm::tlm_generic_payload * packet2payload(PacketPtr packet)
Convert a gem5 packet to a TLM payload by copying all the relevant information to new tlm payload.
uint64_t Tick
Tick count type.
bool recvTimingSnoopResp(PacketPtr packet)
tlm::tlm_generic_payload * blockingResponse
A response which has been asked to retry by gem5 and so is blocking the response channel.
Gem5ToTlmBridge< BITWIDTH > & bridge
::Port & gem5_getPort(const std::string &if_name, int idx=-1) override
tlm_utils::simple_initiator_socket< Gem5ToTlmBridge< BITWIDTH >, BITWIDTH > socket
The AddrRangeMap uses an STL map to implement an interval tree for address decoding.
void recvRespRetry() override
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called...
Gem5ToTlmBridgeBaseParams Params
Tick recvAtomicBackdoor(PacketPtr pkt, MemBackdoorPtr &backdoor) override
Default implementations.
tlm::tlm_sync_enum nb_transport_bw(tlm::tlm_generic_payload &trans, tlm::tlm_phase &phase, sc_core::sc_time &t)
AddrRangeMap< MemBackdoorPtr > backdoorMap
tlm_utils::simple_initiator_socket< Gem5ToTlmBridge< BITWIDTH >, BITWIDTH > & getSocket()
Tick recvAtomicBackdoor(PacketPtr pkt, MemBackdoorPtr &backdoor)
void recvFunctional(PacketPtr pkt) override
Receive a functional request packet from the peer.
sc_gem5::TlmInitiatorWrapper< BITWIDTH > wrapper
bool recvTimingReq(PacketPtr pkt) override
Receive a timing request from the peer.
BridgeResponsePort bridgeResponsePort
AddrRangeList getAddrRanges() const override
Get a list of the non-overlapping address ranges the owner is responsible for.
tlm::tlm_generic_payload * blockingRequest
A transaction after BEGIN_REQ has been sent but before END_REQ, which is blocking the request channel...
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void recvFunctional(PacketPtr packet)
void recvFunctionalSnoop(PacketPtr packet)
bool recvTimingReq(PacketPtr packet)
MemBackdoorPtr getBackdoor(tlm::tlm_generic_payload &trans)
void invalidate_direct_mem_ptr(sc_dt::uint64 start_range, sc_dt::uint64 end_range)
bool tryTiming(PacketPtr pkt) override
Availability request from the peer.
AddrRangeList getAddrRanges() const
Tick recvAtomic(PacketPtr pkt) override
Receive an atomic request packet from the peer.
bool tryTiming(PacketPtr packet)
bool recvTimingSnoopResp(PacketPtr pkt) override
Receive a timing snoop response from the peer.
void pec(tlm::tlm_generic_payload &trans, const tlm::tlm_phase &phase)
BridgeResponsePort(const std::string &name_, Gem5ToTlmBridge< BITWIDTH > &bridge_)
Generated on Wed Sep 30 2020 14:02:18 for gem5 by doxygen 1.8.17