27 sc_core::sc_in<bool> clk_i{
"clk_i"};
29 sc_core::sc_export<tlm::scc::pe::intor_fw_nb> fw_i{
"fw_i"};
31 sc_core::sc_port<tlm::scc::pe::intor_bw_nb, 1, sc_core::SC_ZERO_OR_MORE_BOUND> bw_o{
"bw_o"};
33 sc_core::sc_attribute<unsigned>
min_latency{
"min_latency", 10};
35 sc_core::sc_attribute<unsigned>
max_latency{
"max_latency", 100};
38 sc_core::sc_attribute<unsigned>
window_size{
"window_size", 2};
52 void transport(tlm::tlm_generic_payload& payload,
bool lt_transport =
false)
override;
59 void snoop_resp(tlm::tlm_generic_payload& payload,
bool sync =
false)
override {}
64 tlm::scc::tlm_gp_shared_ptr trans;
66 que_entry(tlm::tlm_generic_payload& gp)
69 std::array<std::unordered_map<unsigned, std::deque<que_entry>>, 3> reorder_buffer;
79 using payload_type = base::payload_type;
80 using phase_type = base::phase_type;
82 sc_core::sc_in<bool> clk_i{
"clk_i"};
92 : sc_core::sc_module(nm)
93 , pe(
"pe", BUSWIDTH) {
96 pe.fw_o(reorder_buffer.fw_i);
97 reorder_buffer.clk_i(clk_i);
98 reorder_buffer.bw_o(pe.bw_i);
111 size_t get_outstanding_tx_count()
override {
return pe.getAllOutStandingTx(); }
114 void end_of_elaboration()
override {
115 auto* ifs = sckt.get_base_port().get_interface(0);
116 sc_assert(ifs !=
nullptr);
117 pe.set_bw_interface(ifs);
122 tx_reorderer reorder_buffer{
"reorder_buffer"};