48 using payload_type = axi::axi_protocol_types::tlm_payload_type;
49 using phase_type = axi::axi_protocol_types::tlm_phase_type;
51 sc_core::sc_in<bool> clk_i{
"clk_i"};
56 sc_core::sc_port<tlm::scc::pe::intor_fw_nb, 1, sc_core::SC_ZERO_OR_MORE_BOUND> fw_o{
"fw_o"};
58 sc_core::sc_export<tlm::scc::pe::intor_bw_nb> bw_i{
"bw_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; }
109 tlm::tlm_sync_enum nb_transport_bw(
payload_type& trans, phase_type& phase, sc_core::sc_time& t)
override {
110 SCCTRACE(SCMOD) <<
" in nb_transport_bw () " ;
111 return socket_bw->nb_transport_bw(trans, phase, t);
114 void invalidate_direct_mem_ptr(sc_dt::uint64 start_range, sc_dt::uint64 end_range)
override {}
117 virtual ~ace_target_pe();
124 explicit ace_target_pe(
const sc_core::sc_module_name& nm,
size_t transfer_width);
128 void snoop(payload_type& trans);
141 void end_of_elaboration()
override;
143 void start_of_simulation()
override;
155 unsigned operations_callback(payload_type& trans);
158 std::function<unsigned(payload_type& trans)> operation_cb;
159 sc_core::sc_fifo<payload_type*> rd_resp_fifo{1}, wr_resp_fifo{1};
161 sc_core::sc_fifo<std::tuple<fsm::fsm_handle*, axi::fsm::protocol_time_point_e>> wr_resp_beat_fifo{128},
162 rd_resp_beat_fifo{128};
163 scc::ordered_semaphore rd_resp{1}, wr_resp_ch{1}, rd_resp_ch{1};
165 sc_core::sc_clock* clk_if{
nullptr};
166 std::unique_ptr<bw_intor_impl> bw_intor;
167 std::array<unsigned, 3> outstanding_cnt{{0, 0, 0}};
169 void nb_fw(payload_type& trans,
const phase_type& phase) {
170 auto delay = sc_core::SC_ZERO_TIME;
171 base::nb_fw(trans, phase, delay);
173 tlm_utils::peq_with_cb_and_phase<ace_target_pe> fw_peq{
this, &ace_target_pe::nb_fw};
174 std::unordered_set<unsigned> active_rdresp_id;