19 #ifndef TLM_UTILS_MULTI_PASSTHROUGH_INITIATOR_SOCKET_H_INCLUDED_ 20 #define TLM_UTILS_MULTI_PASSTHROUGH_INITIATOR_SOCKET_H_INCLUDED_ 37 template <
typename MODULE,
38 unsigned int BUSWIDTH = 32,
82 sync_enum_type (MODULE::*cb)(
int,
94 m_nb_f.set_function(mod, cb);
99 void (MODULE::*cb)(
int, sc_dt::uint64, sc_dt::uint64))
125 display_error(
"'get_base_interface()' const not allowed for multi-sockets.");
146 virtual void bind(base_target_socket_type& s)
205 for (
unsigned int i=0; i<binders.size(); i++) {
213 virtual void bind(base_type& s)
221 display_warning(
"Socket already bound hierarchically. Bind attempt ignored.");
255 std::vector<tlm::tlm_fw_transport_if<TYPES>*>
m_sockets;
272 template <
typename MODULE,
273 unsigned int BUSWIDTH = 32,
286 #endif // TLM_UTILS_MULTI_PASSTHROUGH_INITIATOR_SOCKET_H_INCLUDED_ tlm_base_target_socket_b< BUSWIDTH, fw_interface_type, bw_interface_type > base_target_socket_type
invalidate_dmi_functor< TYPES > dmi_func_type
std::vector< tlm::tlm_fw_transport_if< TYPES > * > m_used_sockets
multi_passthrough_initiator_socket_optional(const char *name)
~multi_passthrough_initiator_socket()
std::vector< tlm::tlm_fw_transport_if< TYPES > * > & get_sockets()
void operator()(base_target_socket_type &s)
virtual multi_init_base * get_hierarch_bind()=0
virtual void bind(base_target_socket_type &s)
void display_warning(const char *msg) const
callback_binder_bw< TYPES > m_dummy
virtual tlm::tlm_bw_transport_if< TYPES > & get_base_interface()
nb_transport_functor< TYPES > nb_func_type
std::vector< tlm::tlm_fw_transport_if< TYPES > * > m_sockets
std::vector< callback_binder_bw< TYPES > *> & get_binders()
virtual const tlm::tlm_bw_transport_if< TYPES > & get_base_interface() const
std::vector< callback_binder_bw< TYPES > * > m_binders
virtual sc_core::sc_export< tlm_bw_transport_if< TYPES > > & get_base_export()
SC_VIRTUAL_ void bind(IF &interface_)
void(MODULE::* dmi_cb)(int, sc_dt::uint64, sc_dt::uint64)
callback_binder_bw< TYPES >::nb_func_type m_nb_f
tlm::tlm_fw_transport_if< TYPES > * operator[](int i)
virtual std::vector< tlm::tlm_fw_transport_if< TYPES > * > & get_sockets()=0
tlm::tlm_sync_enum sync_enum_type
TYPES::tlm_phase_type phase_type
virtual std::vector< callback_binder_bw< TYPES > *> & get_binders()=0
void register_invalidate_direct_mem_ptr(MODULE *mod, void(MODULE::*cb)(int, sc_dt::uint64, sc_dt::uint64))
virtual const sc_core::sc_export< tlm::tlm_bw_transport_if< TYPES > > & get_base_export() const
base_type * m_hierarch_bind
void display_error(const char *msg) const
virtual tlm::tlm_fw_transport_if< TYPES > * get_last_binder(tlm::tlm_bw_transport_if< TYPES > *)=0
multi_passthrough_initiator_socket_optional()
void register_nb_transport_bw(MODULE *mod, sync_enum_type(MODULE::*cb)(int, transaction_type &, phase_type &, sc_core::sc_time &))
multi_init_base< BUSWIDTH, TYPES, N, POL > base_type
virtual void bind(base_type &s)
const char * name() const
sync_enum_type(MODULE::* nb_cb)(int, transaction_type &, phase_type &, sc_core::sc_time &)
SC_API const char * sc_gen_unique_name(const char *, bool preserve_first)
void before_end_of_elaboration()
virtual tlm_bw_transport_if< TYPES > & get_base_interface()
base_type * get_hierarch_bind()
virtual sc_core::sc_export< tlm::tlm_bw_transport_if< TYPES > > & get_base_export()
static const char * default_name()
multi_passthrough_initiator_socket(const char *name=default_name())
virtual void bind(base_target_socket_type &s)
TYPES::tlm_payload_type transaction_type
virtual sc_interface * get_interface()
base_type::base_target_socket_type base_target_socket_type
callback_binder_bw< TYPES >::dmi_func_type m_dmi_f