scc  2022.4.0
SystemC components library
axi::pe::axi_initiator_b Class Reference
Inheritance diagram for axi::pe::axi_initiator_b:
Collaboration diagram for axi::pe::axi_initiator_b:

Classes

struct  tx_state
 

Public Types

using payload_type = axi::axi_protocol_types::tlm_payload_type
 
using phase_type = axi::axi_protocol_types::tlm_phase_type
 

Public Member Functions

void b_snoop (payload_type &trans, sc_core::sc_time &t) override
 
tlm::tlm_sync_enum nb_transport_bw (payload_type &trans, phase_type &phase, sc_core::sc_time &t) override
 
void invalidate_direct_mem_ptr (sc_dt::uint64 start_range, sc_dt::uint64 end_range) override
 
size_t get_transferwith_in_bytes () const
 
void transport (payload_type &trans, bool blocking) override
 The forward transport function. It behaves blocking and is re-entrant. More...
 
void snoop_resp (payload_type &trans, bool sync=false) override
 triggers a non-blocking snoop response if the snoop callback does not do so. More...
 
 axi_initiator_b (sc_core::sc_module_name nm, sc_core::sc_port_b< axi::axi_fw_transport_if< axi_protocol_types >> &port, size_t transfer_width, flavor_e flavor)
 
 axi_initiator_b (axi_initiator_b const &)=delete
 
 axi_initiator_b (axi_initiator_b &&)=delete
 
axi_initiator_boperator= (axi_initiator_b const &)=delete
 
axi_initiator_boperator= (axi_initiator_b &&)=delete
 
void add_protocol_cb (axi::fsm::protocol_time_point_e e, std::function< void(payload_type &, bool)> cb)
 register a callback for a certain time point More...
 
- Public Member Functions inherited from axi::bw_blocking_transport_if< TYPES::tlm_payload_type >
virtual void b_snoop (TYPES::tlm_payload_type &trans, sc_core::sc_time &t)=0
 snoop access to a snooped master More...
 

Public Attributes

sc_core::sc_in< bool > clk_i {"clk_i"}
 
sc_core::sc_export< tlm::scc::pe::intor_fw_bfw_i {"fw_i"}
 
sc_core::sc_port< tlm::scc::pe::intor_bw_b, 1, sc_core::SC_ZERO_OR_MORE_BOUND > bw_o {"bw_o"}
 
sc_core::sc_attribute< bool > data_interleaving {"data_interleaving", false}
 
sc_core::sc_attribute< unsigned > artv {"artv", 1}
 Read address valid to next read address valid.
 
sc_core::sc_attribute< unsigned > awtv {"awtv", 1}
 Write address valid to next write address valid.
 
sc_core::sc_attribute< unsigned > wbv {"wbv", 1}
 Write data handshake to next beat valid.
 
sc_core::sc_attribute< unsigned > rbr {"rbr", 0}
 Read data valid to same beat ready.
 
sc_core::sc_attribute< unsigned > br {"br", 0}
 Write response valid to ready.
 
sc_core::sc_attribute< unsigned > rla {"rla", 1}
 Read last data handshake to acknowledge.
 
sc_core::sc_attribute< unsigned > ba {"ba", 1}
 Write response handshake to acknowledge.
 
sc_core::sc_attribute< bool > enable_id_serializing {"enable_id_serializing", false}
 Quirks enable.
 
sc_core::sc_attribute< unsigned > outstanding_snoops {"outstanding_snoops", 8}
 number of snoops which can be handled
 

Protected Member Functions

unsigned calculate_beats (payload_type &p)
 
void snoop_thread ()
 

Protected Attributes

const size_t transfer_width_in_bytes
 
const flavor_e flavor
 
sc_core::sc_port_b< axi::axi_fw_transport_if< axi_protocol_types > > & socket_fw
 
std::unordered_map< void *, tx_state * > tx_state_by_tx
 
std::unordered_map< unsigned, scc::ordered_semaphore * > id_mtx
 
tlm_utils::peq_with_get< payload_type > snp_peq {"snp_peq"}
 
std::unordered_map< void *, tx_state * > snp_state_by_id
 
scc::ordered_semaphore rd_chnl {1}
 
scc::ordered_semaphore wr_chnl {1}
 
scc::ordered_semaphore sresp_chnl {1}
 
sc_core::sc_event any_tx_finished
 
sc_core::sc_time clk_period {10, sc_core::SC_NS}
 

Detailed Description

Definition at line 32 of file axi_initiator.h.

Member Function Documentation

◆ add_protocol_cb()

void axi::pe::axi_initiator_b::add_protocol_cb ( axi::fsm::protocol_time_point_e  e,
std::function< void(payload_type &, bool)>  cb 
)
inline

register a callback for a certain time point

This function allows to register a callback for certain time points of a transaction (see #axi::fsm::protocol_time_point_e). The callback will be invoked after the FSM-actions are executed.

Parameters
ethe timepoint
cbthe callback taking a reference to the transaction and a bool indicating a snoop if true

Definition at line 120 of file axi_initiator.h.

◆ snoop_resp()

void axi::pe::axi_initiator_b::snoop_resp ( payload_type &  trans,
bool  sync = false 
)
overridevirtual

triggers a non-blocking snoop response if the snoop callback does not do so.

Parameters
trans
syncwhen true send response with next rising clock edge otherwise send immediately

Implements tlm::scc::pe::intor_fw< type::BL >.

Definition at line 354 of file axi_initiator.cpp.

◆ transport()

void axi::pe::axi_initiator_b::transport ( payload_type &  trans,
bool  blocking 
)
overridevirtual

The forward transport function. It behaves blocking and is re-entrant.

This function initiates the forward transport either using b_transport() if blocking=true or the nb_transport_* interface.

Parameters
transthe transaction to send
blockingexecute in using the blocking interface

Timing

Timing

Timing

Implements tlm::scc::pe::intor_fw< type::BL >.

Definition at line 122 of file axi_initiator.cpp.


The documentation for this class was generated from the following files: