58#ifndef __SYSTEMC_TLM_BRIDGE_TLM_TO_GEM5_HH__
59#define __SYSTEMC_TLM_BRIDGE_TLM_TO_GEM5_HH__
62#include <unordered_set>
66#include "params/TlmToGem5BridgeBase.hh"
92template <
unsigned int BITWIDTH>
104 return bridge.recvTimingResp(pkt);
169 typedef gem5::TlmToGem5BridgeBaseParams
Params;
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Ports are used to interface objects to each other.
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
RequestPort(const std::string &name, SimObject *_owner, PortID id=InvalidPortID)
Request port.
BridgeRequestPort(const std::string &name_, TlmToGem5Bridge< BITWIDTH > &bridge_)
bool recvTimingResp(gem5::PacketPtr pkt) override
Receive a timing response from the peer.
TlmToGem5Bridge< BITWIDTH > & bridge
void recvRangeChange() override
Called to receive an address range change from the peer response port.
void recvReqRetry() override
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
std::unordered_set< gem5::MemBackdoorPtr > requestedBackdoors
void destroyPacket(gem5::PacketPtr pkt)
void handleEndResp(tlm::tlm_generic_payload &trans)
bool get_direct_mem_ptr(tlm::tlm_generic_payload &trans, tlm::tlm_dmi &dmi_data)
void sendBeginResp(tlm::tlm_generic_payload &trans, sc_core::sc_time &delay)
void invalidateDmi(const gem5::MemBackdoor &backdoor)
void b_transport(tlm::tlm_generic_payload &trans, sc_core::sc_time &t)
tlm::tlm_generic_payload * pendingRequest
tlm::tlm_sync_enum nb_transport_fw(tlm::tlm_generic_payload &trans, tlm::tlm_phase &phase, sc_core::sc_time &t)
void cacheBackdoor(gem5::MemBackdoorPtr backdoor)
sc_gem5::TlmTargetWrapper< BITWIDTH > wrapper
unsigned int transport_dbg(tlm::tlm_generic_payload &trans)
void sendEndReq(tlm::tlm_generic_payload &trans)
void handleBeginReq(tlm::tlm_generic_payload &trans)
gem5::PacketPtr pendingPacket
gem5::Port & gem5_getPort(const std::string &if_name, int idx=-1) override
const gem5::RequestorID _id
tlm_utils::peq_with_cb_and_phase< TlmToGem5Bridge< BITWIDTH > > peq
void peq_cb(tlm::tlm_generic_payload &trans, const tlm::tlm_phase &phase)
TlmToGem5Bridge(const Params &p, const sc_core::sc_module_name &mn)
void before_end_of_elaboration() override
bool recvTimingResp(gem5::PacketPtr pkt)
tlm_utils::simple_target_socket< TlmToGem5Bridge< BITWIDTH >, BITWIDTH > & getSocket()
gem5::TlmToGem5BridgeBaseParams Params
tlm_utils::simple_target_socket< TlmToGem5Bridge< BITWIDTH >, BITWIDTH > socket
An event queue that can contain any number of pending notifications.
void addPayloadToPacketConversionStep(PayloadToPacketConversionStep step)
Notify the Tlm2Gem5 bridge that we need an extra step to properly convert a tlm payload to gem5 packe...
std::function< void(gem5::PacketPtr pkt, tlm::tlm_generic_payload &trans)> PayloadToPacketConversionStep
std::pair< PacketPtr, bool > payload2packet(RequestorID _id, tlm::tlm_generic_payload &trans)
Convert a TLM payload to gem5 packet by copying all the relevant information to new packet.