18 #ifndef __SIMPLE_INITIATOR_SOCKET_H__
19 #define __SIMPLE_INITIATOR_SOCKET_H__
26 template <
typename MODULE,
27 unsigned int BUSWIDTH = 32,
43 m_process(this->name())
50 m_process(this->name())
60 m_process.set_transport_ptr(mod, cb);
66 m_process.set_invalidate_direct_mem_ptr(mod, cb);
79 process(
const std::string& name) :
83 m_invalidate_direct_mem_ptr(0)
87 void set_transport_ptr(MODULE* mod, TransportPtr p)
89 if (m_transport_ptr) {
91 s << m_name <<
": non-blocking callback allready registered";
94 assert(!m_mod || m_mod == mod);
100 void set_invalidate_direct_mem_ptr(MODULE* mod, InvalidateDirectMemPtr p)
102 if (m_invalidate_direct_mem_ptr) {
104 s << m_name <<
": invalidate DMI callback allready registered";
107 assert(!m_mod || m_mod == mod);
109 m_invalidate_direct_mem_ptr = p;
115 if (m_transport_ptr) {
118 return (m_mod->*m_transport_ptr)(trans, phase, t);
122 s << m_name <<
": no transport callback registered";
131 if (m_invalidate_direct_mem_ptr) {
134 (m_mod->*m_invalidate_direct_mem_ptr)(start_range, end_range);
139 const std::string m_name;
141 TransportPtr m_transport_ptr;
142 InvalidateDirectMemPtr m_invalidate_direct_mem_ptr;
151 template <
typename MODULE,
152 unsigned int BUSWIDTH = 32,
168 m_process(this->name())
175 m_process(this->name())
187 m_process.set_transport_ptr(mod, cb);
188 m_process.set_transport_user_id(
id);
195 m_process.set_invalidate_direct_mem_ptr(mod, cb);
196 m_process.set_invalidate_dmi_user_id(
id);
207 typedef void (MODULE::*InvalidateDirectMemPtr)(int,
211 process(
const std::string& name) :
215 m_invalidate_direct_mem_ptr(0),
216 m_transport_user_id(0),
217 m_invalidate_direct_mem_user_id(0)
221 void set_transport_user_id(
int id) { m_transport_user_id = id; }
222 void set_invalidate_dmi_user_id(
int id) { m_invalidate_direct_mem_user_id = id; }
224 void set_transport_ptr(MODULE* mod, TransportPtr p)
226 if (m_transport_ptr) {
228 s << m_name <<
": non-blocking callback allready registered";
231 assert(!m_mod || m_mod == mod);
237 void set_invalidate_direct_mem_ptr(MODULE* mod, InvalidateDirectMemPtr p)
239 if (m_invalidate_direct_mem_ptr) {
241 s << m_name <<
": invalidate DMI callback allready registered";
244 assert(!m_mod || m_mod == mod);
246 m_invalidate_direct_mem_ptr = p;
252 if (m_transport_ptr) {
255 return (m_mod->*m_transport_ptr)(m_transport_user_id, trans, phase, t);
259 s << m_name <<
": no transport callback registered";
268 if (m_invalidate_direct_mem_ptr) {
271 (m_mod->*m_invalidate_direct_mem_ptr)(m_invalidate_direct_mem_user_id, start_range, end_range);
276 const std::string m_name;
278 TransportPtr m_transport_ptr;
279 InvalidateDirectMemPtr m_invalidate_direct_mem_ptr;
280 int m_transport_user_id;
281 int m_invalidate_direct_mem_user_id;
tlm::tlm_initiator_socket< BUSWIDTH, TYPES > base_type
simple_initiator_socket_tagged()
#define SC_REPORT_WARNING(msg_type, msg)
void register_nb_transport_bw(MODULE *mod, sync_enum_type(MODULE::*cb)(int, transaction_type &, phase_type &, sc_core::sc_time &), int id)
simple_initiator_socket_tagged(const char *n)
tlm::tlm_initiator_socket< BUSWIDTH, TYPES > base_type
const char * sc_gen_unique_name(const char *, bool preserve_first)
TYPES::tlm_phase_type phase_type
TYPES::tlm_payload_type transaction_type
tlm::tlm_bw_transport_if< TYPES > bw_interface_type
void register_invalidate_direct_mem_ptr(MODULE *mod, void(MODULE::*cb)(int, sc_dt::uint64, sc_dt::uint64), int id)
simple_initiator_socket(const char *n)
tlm::tlm_sync_enum sync_enum_type
tlm::tlm_fw_transport_if< TYPES > fw_interface_type
#define SC_REPORT_ERROR(msg_type, msg)
TYPES::tlm_payload_type transaction_type
SC_VIRTUAL_ void bind(IF &interface_)
void register_nb_transport_bw(MODULE *mod, sync_enum_type(MODULE::*cb)(transaction_type &, phase_type &, sc_core::sc_time &))
tlm::tlm_sync_enum sync_enum_type
void register_invalidate_direct_mem_ptr(MODULE *mod, void(MODULE::*cb)(sc_dt::uint64, sc_dt::uint64))
TYPES::tlm_phase_type phase_type
tlm::tlm_fw_transport_if< TYPES > fw_interface_type
simple_initiator_socket()
tlm::tlm_bw_transport_if< TYPES > bw_interface_type