19 #ifndef __SYSTEMC_EXT_TLM_UTILS_MULTI_PASSTHROUGH_TARGET_SOCKET_H__
20 #define __SYSTEMC_EXT_TLM_UTILS_MULTI_PASSTHROUGH_TARGET_SOCKET_H__
22 #include "../core/sc_module.hh"
23 #include "../core/sc_port.hh"
40 template <
typename MODULE,
unsigned int BUSWIDTH=32,
135 if (
m_b_f.is_valid()) {
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> *> &
367 template <
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
const char * name() const
virtual void bind(base_initiator_socket_type &s)
virtual FW_IF & get_base_interface()
virtual sc_core::sc_export< FW_IF > & get_base_export()
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 sc_core::sc_export< tlm::tlm_fw_transport_if< TYPES > > & get_base_export()
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()
TYPES::tlm_phase_type phase_type
multi_passthrough_target_socket(const char *name=default_name())
unsigned int(MODULE::* dbg_cb)(int, transaction_type &txn)
tlm::tlm_fw_transport_if< TYPES > * get_last_binder(tlm::tlm_bw_transport_if< TYPES > *other)
void register_get_direct_mem_ptr(MODULE *mod, dmi_cb cb)
multi_target_base< BUSWIDTH, TYPES, N, POL > base_type
virtual const sc_core::sc_export< tlm::tlm_fw_transport_if< TYPES > > & get_base_export() const
bool m_export_callback_created
void register_transport_dbg(MODULE *mod, dbg_cb cb)
base_type * get_hierarch_bind()
base_type * m_hierarch_bind
tlm::tlm_bw_transport_if< TYPES > * operator[](int i)
base_type::base_initiator_socket_type base_initiator_socket_type
void check_export_binding()
virtual tlm::tlm_fw_transport_if< TYPES > & get_base_interface()
virtual void bind(base_type &s)
void(MODULE::* b_cb)(int, transaction_type &, sc_core::sc_time &)
std::vector< callback_binder_fw< TYPES > * > & get_binders()
sync_enum_type(MODULE::* nb_cb)(int, transaction_type &, phase_type &, sc_core::sc_time &)
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
static const char * default_name()
callback_binder_fw< TYPES >::nb_func_type m_nb_f
void register_nb_transport_fw(MODULE *mod, nb_cb cb)
std::map< unsigned int, tlm::tlm_bw_transport_if< TYPES > * > m_multi_binds
TYPES::tlm_payload_type transaction_type
std::map< unsigned int, tlm::tlm_bw_transport_if< TYPES > * > & get_multi_binds()
virtual const tlm::tlm_fw_transport_if< TYPES > & get_base_interface() const
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)