| 
    scc
    2024.06
    
   SystemC components library 
   | 
 


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_b & | operator= (axi_initiator_b const &)=delete | 
| axi_initiator_b & | operator= (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_b > | fw_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"} | 
| cci::cci_param< bool > | data_interleaving {"data_interleaving", false} | 
| cci::cci_param< unsigned > | artv {"artv", 1} | 
| Read address valid to next read address valid.  | |
| cci::cci_param< unsigned > | awtv {"awtv", 1} | 
| Write address valid to next write address valid.  | |
| cci::cci_param< unsigned > | wbv {"wbv", 1} | 
| Write data handshake to next beat valid.  | |
| cci::cci_param< unsigned > | rbr {"rbr", 0} | 
| Read data valid to same beat ready.  | |
| cci::cci_param< unsigned > | br {"br", 0} | 
| Write response valid to ready.  | |
| cci::cci_param< unsigned > | rla {"rla", 1} | 
| Read last data handshake to acknowledge.  | |
| cci::cci_param< unsigned > | ba {"ba", 1} | 
| Write response handshake to acknowledge.  | |
| cci::cci_param< bool > | enable_id_serializing {"enable_id_serializing", false} | 
| Quirks enable.  | |
| cci::cci_param< 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} | 
| scc::sc_variable< unsigned > | rd_waiting {"RdWaiting", 0} | 
| scc::sc_variable< unsigned > | wr_waiting {"WrWaiting", 0} | 
| scc::sc_variable< unsigned > | rd_outstanding {"RdOutstanding", 0} | 
| scc::sc_variable< unsigned > | wr_outstanding {"WrOutstanding", 0} | 
Definition at line 34 of file axi_initiator.h.
      
  | 
  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.
| e | the timepoint | 
| cb | the callback taking a reference to the transaction and a bool indicating a snoop if true | 
Definition at line 122 of file axi_initiator.h.
      
  | 
  overridevirtual | 
triggers a non-blocking snoop response if the snoop callback does not do so.
| trans | |
| sync | when true send response with next rising clock edge otherwise send immediately | 
Implements tlm::scc::pe::intor_fw< type::BL >.
Definition at line 359 of file axi_initiator.cpp.
      
  | 
  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.
| trans | the transaction to send | 
| blocking | execute in using the blocking interface | 
Timing
Timing
Timing
Implements tlm::scc::pe::intor_fw< type::BL >.
Definition at line 113 of file axi_initiator.cpp.