37class ahb_target_b :
public sc_core::sc_module,
public tlm::tlm_fw_transport_if<tlm::tlm_base_protocol_types> {
39#if SYSTEMC_VERSION < 20250221
42 using payload_type = tlm::tlm_base_protocol_types::tlm_payload_type;
43 using phase_type = tlm::tlm_base_protocol_types::tlm_phase_type;
45 sc_core::sc_in<bool> clk_i{
"clk_i"};
70 void b_transport(payload_type& trans, sc_core::sc_time& t)
override;
72 tlm::tlm_sync_enum nb_transport_fw(payload_type& trans, phase_type& phase, sc_core::sc_time& t)
override;
74 bool get_direct_mem_ptr(payload_type& trans, tlm::tlm_dmi& dmi_data)
override;
76 unsigned int transport_dbg(payload_type& trans)
override;
87 void set_operation_cb(std::function<
unsigned(payload_type& trans)> cb) { operation_cb = cb; }
104 sc_core::sc_port_b<tlm::tlm_bw_transport_if<tlm::tlm_base_protocol_types>>& port,
size_t transfer_width);
116 void send_resp_thread();
118 sc_core::sc_port_b<tlm::tlm_bw_transport_if<tlm::tlm_base_protocol_types>>& socket_bw;
119 sc_core::sc_semaphore sn_sem{1};
120 sc_core::sc_mutex wr, rd, sn;
121 bool fast_resp{
false};
122 bool fast_req{
false};
123 std::function<unsigned(payload_type& trans)> operation_cb;
125 sc_core::sc_clock* clk_if{
nullptr};
126 void end_of_elaboration()
override;
137 using payload_type = base::payload_type;
138 using phase_type = base::phase_type;
143 ahb3_target(tlm::tlm_target_socket<BUSWIDTH, TYPES, N, POL>& socket)
145 ahb3_target(sc_core::sc_gen_unique_name(
"simple_target"), socket) {}
147 ahb3_target(
const sc_core::sc_module_name& nm, tlm::tlm_target_socket<BUSWIDTH, TYPES, N, POL>& socket)
164 tlm::tlm_target_socket<BUSWIDTH, TYPES, N, POL>& socket;