19#ifndef __SYSTEMC_EXT_TLM_UTILS_MULTI_PASSTHROUGH_TARGET_SOCKET_H__
20#define __SYSTEMC_EXT_TLM_UTILS_MULTI_PASSTHROUGH_TARGET_SOCKET_H__
40template <
typename MODULE,
unsigned int BUSWIDTH=32,
81 for (
unsigned int i = 0; i <
m_binders.size(); i++)
125 m_nb_f.set_function(mod, cb);
135 if (
m_b_f.is_valid()) {
141 m_b_f.set_function(mod, cb);
205 " not allowed for multi-sockets.");
239 std::map<unsigned int, tlm::tlm_bw_transport_if<TYPES> *> &
243 bool locally_unbound =
250 for (
unsigned int i = 0; i < binders.size(); i++) {
254 if (multi_binds.find(i) != multi_binds.end()) {
263 binders[i]->get_other_side());
282 "Bind attempt ignored.");
322 std::map<unsigned int, tlm::tlm_bw_transport_if<TYPES> *> &
367template <
typename MODULE,
unsigned int BUSWIDTH=32,
371 MODULE, BUSWIDTH, TYPES, N, sc_core::SC_ZERO_OR_MORE_BOUND>
const sc_interface * get_interface() const override
virtual void bind(tlm_fw_transport_if< tlm::tlm_base_protocol_types > &i)
virtual tlm_fw_transport_if< tlm::tlm_base_protocol_types > & get_base_interface()=0
virtual sc_core::sc_export< tlm_fw_transport_if< tlm::tlm_base_protocol_types > > & get_base_export()=0
get_dmi_ptr_functor< TYPES > dmi_func_type
debug_transport_functor< TYPES > debug_func_type
nb_transport_functor< TYPES > nb_func_type
b_transport_functor< TYPES > b_func_type
void display_warning(const char *msg) const
void display_error(const char *msg) const
multi_passthrough_target_socket< MODULE, BUSWIDTH, TYPES, N, sc_core::SC_ZERO_OR_MORE_BOUND > socket_b
multi_passthrough_target_socket_optional(const char *name)
multi_passthrough_target_socket_optional()
callback_binder_fw< TYPES >::dmi_func_type m_dmi_f
callback_binder_fw< TYPES >::debug_func_type m_dbg_f
std::vector< callback_binder_fw< TYPES > * > m_binders
tlm::tlm_sync_enum sync_enum_type
void end_of_elaboration()
virtual const sc_core::sc_export< tlm::tlm_fw_transport_if< TYPES > > & get_base_export() const
void operator()(base_type &s)
void set_hierarch_bind(base_type *h)
std::vector< tlm::tlm_bw_transport_if< TYPES > * > m_sockets
~multi_passthrough_target_socket()
virtual const tlm::tlm_fw_transport_if< TYPES > & get_base_interface() const
std::vector< callback_binder_fw< TYPES > * > & get_binders()
TYPES::tlm_phase_type phase_type
multi_passthrough_target_socket(const char *name=default_name())
unsigned int(MODULE::* dbg_cb)(int, transaction_type &txn)
void register_get_direct_mem_ptr(MODULE *mod, dmi_cb cb)
multi_target_base< BUSWIDTH, TYPES, N, POL > base_type
bool m_export_callback_created
tlm::tlm_fw_transport_if< TYPES > * get_last_binder(tlm::tlm_bw_transport_if< TYPES > *other)
void register_transport_dbg(MODULE *mod, dbg_cb cb)
static const char * default_name()
base_type * m_hierarch_bind
base_type::base_initiator_socket_type base_initiator_socket_type
void check_export_binding()
virtual void bind(base_type &s)
void(MODULE::* b_cb)(int, transaction_type &, sc_core::sc_time &)
std::map< unsigned int, tlm::tlm_bw_transport_if< TYPES > * > & get_multi_binds()
sync_enum_type(MODULE::* nb_cb)(int, transaction_type &, phase_type &, sc_core::sc_time &)
base_type * get_hierarch_bind()
virtual sc_core::sc_export< tlm::tlm_fw_transport_if< TYPES > > & get_base_export()
bool(MODULE::* dmi_cb)(int, transaction_type &txn, tlm::tlm_dmi &dmi)
void register_b_transport(MODULE *mod, b_cb cb)
callback_binder_fw< TYPES >::b_func_type m_b_f
callback_binder_fw< TYPES >::nb_func_type m_nb_f
tlm::tlm_bw_transport_if< TYPES > * operator[](int i)
void register_nb_transport_fw(MODULE *mod, nb_cb cb)
virtual tlm::tlm_fw_transport_if< TYPES > & get_base_interface()
std::map< unsigned int, tlm::tlm_bw_transport_if< TYPES > * > m_multi_binds
TYPES::tlm_payload_type transaction_type
virtual std::map< unsigned int, tlm::tlm_bw_transport_if< TYPES > * > & get_multi_binds()=0
virtual std::vector< callback_binder_fw< TYPES > * > & get_binders()=0
virtual multi_target_base * get_hierarch_bind()=0
const char * sc_gen_unique_name(const char *seed)
const std::string & name()