19 #include <axi/pe/axi_target_pe.h>
20 #include <cci_configuration>
21 #include "target_info_if.h"
29 sc_core::sc_in<bool> clk_i{
"clk_i"};
31 sc_core::sc_export<tlm::scc::pe::intor_fw_nb> fw_i{
"fw_i"};
33 sc_core::sc_port<tlm::scc::pe::intor_bw_nb, 1, sc_core::SC_ZERO_OR_MORE_BOUND> bw_o{
"bw_o"};
35 cci::cci_param<std::string> replay_file_name{
"replay_file_name",
""};
44 void transport(tlm::tlm_generic_payload& payload,
bool lt_transport =
false)
override;
51 void snoop_resp(tlm::tlm_generic_payload& payload,
bool sync =
false)
override {}
54 reset_end_cycle=sc_core::sc_time_stamp()/clk_if->period();
57 sc_core::sc_clock* clk_if{
nullptr};
58 uint64_t reset_end_cycle{0};
59 using entry_t = std::tuple<uint64_t, unsigned>;
60 std::vector<std::vector<entry_t>> rd_sequence, wr_sequence;
61 sc_core::sc_time time_per_byte_rd, time_per_byte_wr, time_per_byte_total;
69 double total_residual_clocks{0.0};
70 void end_of_elaboration()
override;
71 void start_of_simulation()
override;
72 void process_req2resp_fifos();
73 void start_rd_resp_thread();
74 void start_wr_resp_thread();
82 sc_core::sc_port_policy POL = sc_core::SC_ONE_OR_MORE_BOUND>
86 using payload_type = base::payload_type;
87 using phase_type = base::phase_type;
89 sc_core::sc_in<bool> clk_i{
"clk_i"};
91 sc_core::sc_in<bool> rst_i{
"rst_i"};
100 : sc_core::sc_module(nm)
102 , repl_buffer(
"repl_buffer"){
105 repl_buffer.clk_i(clk_i);
106 pe.fw_o(repl_buffer.fw_i);
107 repl_buffer.bw_o(pe.bw_i);
109 SC_METHOD(end_of_reset);
110 sensitive<<rst_i.neg();
123 size_t get_outstanding_tx_count()
override {
return pe.getAllOutStandingTx();}
126 void end_of_reset() {
127 repl_buffer.end_of_reset();
129 void end_of_elaboration(){
130 auto* ifs = sckt.get_base_port().get_interface(0);
131 sc_assert(ifs!=
nullptr);
132 pe.set_bw_interface(ifs);
136 replay_buffer repl_buffer;
void transport(tlm::tlm_generic_payload &payload, bool lt_transport=false) override
scc::fifo_w_cb< tlm::tlm_generic_payload * > rd_resp_fifo
queues to handle bandwidth limit
void snoop_resp(tlm::tlm_generic_payload &payload, bool sync=false) override
scc::fifo_w_cb< std::tuple< tlm::tlm_generic_payload *, unsigned > > rd_req2resp_fifo
queues realizing the latencies
replay_target(const sc_core::sc_module_name &nm)
the constructor
The ordered_semaphore primitive channel class.
TLM2.0 components modeling AHB.
The AXI protocol traits class. Since the protocoll defines additional non-ignorable phases a dedicate...