26 template <
typename MOD>
28 :
public tlm_utils::multi_passthrough_initiator_socket<MOD, BUSWIDTH>
30 using typename tlm_utils::multi_passthrough_initiator_socket<MOD, BUSWIDTH>::base_target_socket_type;
32 const std::function<
void(std::string)> register_cb;
36 : tlm_utils::multi_passthrough_initiator_socket<MOD, BUSWIDTH>::multi_passthrough_initiator_socket(name)
43 tlm_utils::multi_passthrough_initiator_socket<MOD, BUSWIDTH>::bind(socket);
44 register_cb(socket.get_base_export().name());
52 sc_dt::uint64 address;
58 std::string shortname;
61 void rename_last(std::string s)
63 auto ti = bound_targets.back();
67 std::vector<std::shared_ptr<target_info>> get_bound_targets() {
return bound_targets; }
69 virtual ~router_if() =
default;
72 std::string parent(std::string name) {
return name.substr(0, name.find_last_of(
'.')); }
75 std::string nameFromSocket(std::string s) {
return s; }
77 virtual void register_boundto(std::string s) = 0;
79 virtual std::shared_ptr<target_info> decode_address(tlm::tlm_generic_payload&
trans) = 0;
81 virtual void lazy_initialize() = 0;
83 std::vector<std::shared_ptr<target_info>> bound_targets;