scc 2025.09
SystemC components library
axi::pin::axi4_initiator< CFG > Struct Template Reference
Inheritance diagram for axi::pin::axi4_initiator< CFG >:
Collaboration diagram for axi::pin::axi4_initiator< CFG >:

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

 SC_HAS_PROCESS (axi4_initiator)
 axi4_initiator (sc_core::sc_module_name const &nm, bool pipelined_wrreq=false)
Public Member Functions inherited from axi::aw_axi< CFG, CFG::master_types >
void bind_aw (aw_axi< CFG, OTYPES > &o)
Public Member Functions inherited from axi::wdata_axi< CFG, CFG::master_types >
void bind_w (wdata_axi< CFG, OTYPES > &o)
void bind_wdata (wdata_axi< CFG, OTYPES > &o)
Public Member Functions inherited from axi::b_axi< CFG, CFG::master_types >
void bind_b (b_axi< CFG, OTYPES > &o)
Public Member Functions inherited from axi::ar_axi< CFG, CFG::master_types >
void bind_ar (ar_axi< CFG, OTYPES > &o)
Public Member Functions inherited from axi::rresp_axi< CFG, CFG::master_types >
void bind_r (rresp_axi< CFG, OTYPES > &o)
void bind_rresp (rresp_axi< CFG, OTYPES > &o)

Public Attributes

sc_core::sc_in< bool > clk_i {"clk_i"}
axi::axi_target_socket< CFG::BUSWIDTH > tsckt {"tsckt"}
cci::cci_param< bool > pipelined_wrreq {"pipelined_wrreq", false}
cci::cci_param< bool > mask_axi_id {"mask_axi_id", false}
Public Attributes inherited from axi::aw_axi< CFG, CFG::master_types >
CFG::master_types::template m2s_full_t< sc_dt::sc_uint< CFG::IDWIDTH > > aw_id
CFG::master_types::template m2s_t< sc_dt::sc_uint< CFG::ADDRWIDTH > > aw_addr
CFG::master_types::template s2m_t< bool > aw_ready
CFG::master_types::template m2s_full_t< bool > aw_lock
CFG::master_types::template m2s_t< bool > aw_valid
CFG::master_types::template m2s_t< sc_dt::sc_uint< 3 > > aw_prot
CFG::master_types::template m2s_full_t< sc_dt::sc_uint< 3 > > aw_size
CFG::master_types::template m2s_full_t< sc_dt::sc_uint< 4 > > aw_cache
CFG::master_types::template m2s_full_t< sc_dt::sc_uint< 2 > > aw_burst
CFG::master_types::template m2s_full_t< sc_dt::sc_uint< 4 > > aw_qos
CFG::master_types::template m2s_full_t< sc_dt::sc_uint< 4 > > aw_region
CFG::master_types::template m2s_full_t< sc_dt::sc_uint< 8 > > aw_len
CFG::master_types::template m2s_opt_t< typename CFG::user_t > aw_user
CFG::master_types::template m2s_opt_t< sc_dt::sc_uint< 6 > > aw_atop
Public Attributes inherited from axi::wdata_axi< CFG, CFG::master_types >
CFG::master_types::template m2s_opt_t< sc_dt::sc_uint< CFG::IDWIDTH > > w_id
CFG::master_types::template m2s_t< typename CFG::data_t > w_data
CFG::master_types::template m2s_t< typename CFG::strb_t > w_strb
CFG::master_types::template m2s_full_t< bool > w_last
CFG::master_types::template m2s_t< bool > w_valid
CFG::master_types::template s2m_t< bool > w_ready
CFG::master_types::template m2s_opt_t< typename CFG::user_t > w_user
CFG::master_types::template m2s_full_t< bool > w_ack
CFG::master_types::template m2s_opt_t< bool > w_trace
Public Attributes inherited from axi::b_axi< CFG, CFG::master_types >
CFG::master_types::template s2m_t< bool > b_valid
CFG::master_types::template m2s_t< bool > b_ready
CFG::master_types::template s2m_full_t< sc_dt::sc_uint< CFG::IDWIDTH > > b_id
CFG::master_types::template s2m_t< sc_dt::sc_uint< 2 > > b_resp
CFG::master_types::template s2m_opt_t< typename CFG::user_t > b_user
CFG::master_types::template s2m_opt_t< bool > b_trace
Public Attributes inherited from axi::ar_axi< CFG, CFG::master_types >
CFG::master_types::template m2s_full_t< sc_dt::sc_uint< CFG::IDWIDTH > > ar_id
CFG::master_types::template m2s_t< sc_dt::sc_uint< CFG::ADDRWIDTH > > ar_addr
CFG::master_types::template m2s_full_t< sc_dt::sc_uint< 8 > > ar_len
CFG::master_types::template m2s_full_t< sc_dt::sc_uint< 3 > > ar_size
CFG::master_types::template m2s_full_t< sc_dt::sc_uint< 2 > > ar_burst
CFG::master_types::template m2s_full_t< bool > ar_lock
CFG::master_types::template m2s_full_t< sc_dt::sc_uint< 4 > > ar_cache
CFG::master_types::template m2s_t< sc_dt::sc_uint< 3 > > ar_prot
CFG::master_types::template m2s_full_t< sc_dt::sc_uint< 4 > > ar_qos
CFG::master_types::template m2s_full_t< sc_dt::sc_uint< 4 > > ar_region
CFG::master_types::template m2s_t< bool > ar_valid
CFG::master_types::template s2m_t< bool > ar_ready
CFG::master_types::template m2s_opt_t< typename CFG::user_t > ar_user
Public Attributes inherited from axi::rresp_axi< CFG, CFG::master_types >
CFG::master_types::template s2m_full_t< sc_dt::sc_uint< CFG::IDWIDTH > > r_id
CFG::master_types::template s2m_t< typename CFG::data_t > r_data
CFG::master_types::template s2m_t< sc_dt::sc_uint< 2 > > r_resp
CFG::master_types::template s2m_full_t< bool > r_last
CFG::master_types::template s2m_t< bool > r_valid
CFG::master_types::template m2s_t< bool > r_ready
CFG::master_types::template s2m_opt_t< typename CFG::user_t > r_user
CFG::master_types::template s2m_opt_t< bool > r_trace

Additional Inherited Members

Protected Types inherited from axi::fsm::base
using payload_type = axi::axi_protocol_types::tlm_payload_type
 aliases used in the class
using phase_type = axi::axi_protocol_types::tlm_phase_type
Protected Member Functions inherited from axi::fsm::base
 base (size_t transfer_width, bool coherent=false, axi::fsm::protocol_time_point_e wr_start=axi::fsm::RequestPhaseBeg)
 the constructor
virtual ~base ()
 the destructor
tlm::tlm_sync_enum nb_fw (payload_type &trans, phase_type const &phase, sc_core::sc_time &t)
 triggers the FSM based on TLM phases in the forward path. Should be called from np_transport_fw of the respective derived class
tlm::tlm_sync_enum nb_bw (payload_type &trans, phase_type const &phase, sc_core::sc_time &t)
 triggers the FSM based on TLM phases in the backward path. Should be called from np_transport_bw of the respective derived class
axi::fsm::fsm_handlefind_or_create (payload_type *gp=nullptr, bool ace=false)
 retrieve the FSM handle based on the transaction passed. If non exist one will be created
void process_fsm_event ()
 processes the fsm_event_queue and triggers FSM aligned
void process_fsm_clk_queue ()
 processes the fsm_clk_queue and triggers the FSM accordingly. Should be registered as rising-edge clock callback
void schedule (axi::fsm::protocol_time_point_e e, tlm::scc::tlm_gp_shared_ptr &gp, unsigned cycles)
 processes the fsm_sched_queue and propagates events to fsm_clk_queue. Should be registered as falling-edge clock callback
void schedule (axi::fsm::protocol_time_point_e e, payload_type *gp, unsigned cycles)
void schedule (axi::fsm::protocol_time_point_e e, tlm::scc::tlm_gp_shared_ptr &gp, sc_core::sc_time delay, bool syncronize=false)
 processes the fsm_sched_queue and propagates events to fsm_clk_queue. Should be registered as falling-edge clock callback
void schedule (axi::fsm::protocol_time_point_e e, payload_type *gp, sc_core::sc_time delay, bool syncronize=false)
void react (axi::fsm::protocol_time_point_e event, tlm::scc::tlm_gp_shared_ptr &trans)
 triggers the FSM with event and given transaction
void react (axi::fsm::protocol_time_point_e event, payload_type *trans)
void react (axi::fsm::protocol_time_point_e, axi::fsm::fsm_handle *)
Protected Attributes inherited from axi::fsm::base
::scc::peq< std::tuple< axi::fsm::protocol_time_point_e, payload_type *, bool > > fsm_event_queue
::scc::fifo_w_cb< std::tuple< axi::fsm::protocol_time_point_e, payload_type *, unsigned > > fsm_clk_queue
sc_core::sc_process_handle fsm_clk_queue_hndl
size_t transfer_width_in_bytes
const axi::fsm::protocol_time_point_e wr_start
const bool coherent
std::unordered_map< payload_type *, axi::fsm::fsm_handle * > active_fsm
std::deque< axi::fsm::fsm_handle * > idle_fsm
std::vector< std::unique_ptr< axi::fsm::fsm_handle > > allocated_fsm
std::string instance_name
sc_core::sc_event finish_evt

Detailed Description

template<typename CFG>
struct axi::pin::axi4_initiator< CFG >

Definition at line 37 of file axi4_initiator.h.

Member Typedef Documentation

◆ payload_type

template<typename CFG>
using axi::pin::axi4_initiator< CFG >::payload_type = axi::axi_protocol_types::tlm_payload_type

Definition at line 47 of file axi4_initiator.h.

◆ phase_type

template<typename CFG>
using axi::pin::axi4_initiator< CFG >::phase_type = axi::axi_protocol_types::tlm_phase_type

Definition at line 48 of file axi4_initiator.h.

Constructor & Destructor Documentation

◆ axi4_initiator()

template<typename CFG>
axi::pin::axi4_initiator< CFG >::axi4_initiator ( sc_core::sc_module_name const & nm,
bool pipelined_wrreq = false )
inline

Definition at line 58 of file axi4_initiator.h.

Member Data Documentation

◆ clk_i

template<typename CFG>
sc_core::sc_in<bool> axi::pin::axi4_initiator< CFG >::clk_i {"clk_i"}

Definition at line 50 of file axi4_initiator.h.

◆ mask_axi_id

template<typename CFG>
cci::cci_param<bool> axi::pin::axi4_initiator< CFG >::mask_axi_id {"mask_axi_id", false}

Definition at line 56 of file axi4_initiator.h.

◆ pipelined_wrreq

template<typename CFG>
cci::cci_param<bool> axi::pin::axi4_initiator< CFG >::pipelined_wrreq {"pipelined_wrreq", false}

Definition at line 54 of file axi4_initiator.h.

◆ tsckt

template<typename CFG>
axi::axi_target_socket<CFG::BUSWIDTH> axi::pin::axi4_initiator< CFG >::tsckt {"tsckt"}

Definition at line 52 of file axi4_initiator.h.


The documentation for this struct was generated from the following file:
  • /home/eyck/Projects/MINRES/SystemC-Components/src/interfaces/axi/pin/axi4_initiator.h