Go to the documentation of this file.
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,
43 class multi_passthrough_target_socket :
44 public multi_target_base< BUSWIDTH, TYPES, N, POL>,
45 public multi_to_multi_bind_base<TYPES>
51 typedef typename TYPES::tlm_phase_type
phase_type;
59 typedef bool (MODULE::*
dmi_cb)(
135 if (
m_b_f.is_valid()) {
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.");
321 std::map<unsigned int, tlm::tlm_bw_transport_if<TYPES> *> &
336 std::map<unsigned int, tlm::tlm_bw_transport_if<TYPES> *>
m_multi_binds;
366 template <
typename MODULE,
unsigned int BUSWIDTH=32,
370 MODULE, BUSWIDTH, TYPES, N, sc_core::SC_ZERO_OR_MORE_BOUND>
bool(MODULE::* dmi_cb)(int, transaction_type &txn, tlm::tlm_dmi &dmi)
callback_binder_fw< TYPES >::debug_func_type m_dbg_f
multi_passthrough_target_socket_optional()
tlm::tlm_sync_enum sync_enum_type
void register_b_transport(MODULE *mod, b_cb cb)
int mod(int val, int mod)
multi_passthrough_target_socket(const char *name=default_name())
multi_passthrough_target_socket< MODULE, BUSWIDTH, TYPES, N, sc_core::SC_ZERO_OR_MORE_BOUND > socket_b
void display_warning(const char *msg) const
base_type::base_initiator_socket_type base_initiator_socket_type
static const char * default_name()
void(MODULE::* b_cb)(int, transaction_type &, sc_core::sc_time &)
TYPES::tlm_phase_type phase_type
callback_binder_fw< TYPES >::b_func_type m_b_f
multi_target_base< BUSWIDTH, TYPES, N, POL > base_type
tlm::tlm_bw_transport_if< TYPES > * operator[](int i)
b_transport_functor< TYPES > b_func_type
virtual tlm::tlm_fw_transport_if< TYPES > & get_base_interface()
void set_hierarch_bind(base_type *h)
void display_error(const char *msg) const
bool m_export_callback_created
debug_transport_functor< TYPES > debug_func_type
tlm::tlm_fw_transport_if< TYPES > * get_last_binder(tlm::tlm_bw_transport_if< TYPES > *other)
callback_binder_fw< TYPES >::dmi_func_type m_dmi_f
std::vector< callback_binder_fw< TYPES > * > m_binders
std::map< unsigned int, tlm::tlm_bw_transport_if< TYPES > * > m_multi_binds
const char * sc_gen_unique_name(const char *seed)
~multi_passthrough_target_socket()
base_type * m_hierarch_bind
callback_binder_fw< TYPES >::nb_func_type m_nb_f
const std::string & name()
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
void register_transport_dbg(MODULE *mod, dbg_cb cb)
void end_of_elaboration()
std::map< unsigned int, tlm::tlm_bw_transport_if< TYPES > * > & get_multi_binds()
void check_export_binding()
void register_nb_transport_fw(MODULE *mod, nb_cb cb)
TYPES::tlm_payload_type transaction_type
get_dmi_ptr_functor< TYPES > dmi_func_type
nb_transport_functor< TYPES > nb_func_type
void operator()(base_type &s)
virtual sc_core::sc_export< tlm_fw_transport_if< tlm::tlm_base_protocol_types > > & get_base_export()
std::vector< callback_binder_fw< TYPES > * > & get_binders()
base_type * get_hierarch_bind()
virtual multi_target_base * get_hierarch_bind()=0
std::vector< tlm::tlm_bw_transport_if< TYPES > * > m_sockets
unsigned int(MODULE::* dbg_cb)(int, transaction_type &txn)
virtual void bind(base_initiator_socket_type &s)
void register_get_direct_mem_ptr(MODULE *mod, dmi_cb cb)
virtual void bind(base_type &s)
sync_enum_type(MODULE::* nb_cb)(int, transaction_type &, phase_type &, sc_core::sc_time &)
virtual tlm_fw_transport_if< tlm::tlm_base_protocol_types > & get_base_interface()
virtual sc_core::sc_export< tlm::tlm_fw_transport_if< TYPES > > & get_base_export()
Generated on Wed Sep 30 2020 14:02:16 for gem5 by doxygen 1.8.17