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,
58 typedef unsigned int (MODULE::*
dbg_cb)(int, transaction_type &txn);
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> *> &
249 for (
unsigned int i = 0;
i < binders.size();
i++) {
253 if (multi_binds.find(
i) != multi_binds.end()) {
262 binders[
i]->get_other_side());
281 "Bind attempt ignored.");
290 s.set_hierarch_bind((base_type*)
this);
321 std::map<unsigned int, tlm::tlm_bw_transport_if<TYPES> *> &
366 template <
typename MODULE,
unsigned int BUSWIDTH=32,
370 MODULE, BUSWIDTH, TYPES, N, sc_core::SC_ZERO_OR_MORE_BOUND>
debug_transport_functor< TYPES > debug_func_type
b_transport_functor< TYPES > b_func_type
TYPES::tlm_phase_type phase_type
std::vector< callback_binder_fw< TYPES > * > m_binders
sync_enum_type(MODULE::* nb_cb)(int, transaction_type &, phase_type &, sc_core::sc_time &)
virtual void bind(base_type &s)
static const char * default_name()
std::vector< callback_binder_fw< TYPES > * > & get_binders()
void register_b_transport(MODULE *mod, b_cb cb)
multi_passthrough_target_socket(const char *name=default_name())
std::map< unsigned int, tlm::tlm_bw_transport_if< TYPES > * > m_multi_binds
const char * sc_gen_unique_name(const char *seed)
std::map< unsigned int, tlm::tlm_bw_transport_if< TYPES > * > & get_multi_binds()
std::vector< tlm::tlm_bw_transport_if< TYPES > * > m_sockets
const char * name() const
virtual std::map< unsigned int, tlm::tlm_bw_transport_if< TYPES > * > & get_multi_binds()=0
void end_of_elaboration()
get_dmi_ptr_functor< TYPES > dmi_func_type
callback_binder_fw< TYPES >::b_func_type m_b_f
multi_passthrough_target_socket_optional(const char *name)
nb_transport_functor< TYPES > nb_func_type
base_type * get_hierarch_bind()
tlm::tlm_fw_transport_if< TYPES > * get_last_binder(tlm::tlm_bw_transport_if< TYPES > *other)
unsigned int(MODULE::* dbg_cb)(int, transaction_type &txn)
void register_get_direct_mem_ptr(MODULE *mod, dmi_cb cb)
void check_export_binding()
virtual void bind(base_initiator_socket_type &s)
virtual const tlm::tlm_fw_transport_if< TYPES > & get_base_interface() const
callback_binder_fw< TYPES >::nb_func_type m_nb_f
multi_target_base< BUSWIDTH, TYPES, N, POL > base_type
TYPES::tlm_payload_type transaction_type
void display_error(const char *msg) const
virtual sc_core::sc_export< tlm::tlm_fw_transport_if< TYPES > > & get_base_export()
int mod(int val, int mod)
const sc_interface * get_interface() const override
void(MODULE::* b_cb)(int, transaction_type &, sc_core::sc_time &)
virtual tlm_fw_transport_if< TYPES > & get_base_interface()
bool(MODULE::* dmi_cb)(int, transaction_type &txn, tlm::tlm_dmi &dmi)
tlm::tlm_bw_transport_if< TYPES > * operator[](int i)
virtual const sc_core::sc_export< tlm::tlm_fw_transport_if< TYPES > > & get_base_export() const
~multi_passthrough_target_socket()
multi_passthrough_target_socket_optional()
void register_nb_transport_fw(MODULE *mod, nb_cb cb)
base_type * m_hierarch_bind
void register_transport_dbg(MODULE *mod, dbg_cb cb)
virtual sc_core::sc_export< tlm_fw_transport_if< TYPES > > & get_base_export()
callback_binder_fw< TYPES >::debug_func_type m_dbg_f
callback_binder_fw< TYPES >::dmi_func_type m_dmi_f
tlm_base_initiator_socket_b< BUSWIDTH, fw_interface_type, bw_interface_type > base_initiator_socket_type
void display_warning(const char *msg) const
virtual tlm::tlm_fw_transport_if< TYPES > & get_base_interface()
void set_hierarch_bind(base_type *h)
virtual BW_IF & get_base_interface()=0
virtual std::vector< callback_binder_fw< TYPES > * > & get_binders()=0
tlm::tlm_sync_enum sync_enum_type
void operator()(base_type &s)
base_type::base_initiator_socket_type base_initiator_socket_type
virtual multi_target_base * get_hierarch_bind()=0
bool m_export_callback_created
multi_passthrough_target_socket< MODULE, BUSWIDTH, TYPES, N, sc_core::SC_ZERO_OR_MORE_BOUND > socket_b