|
scc 2025.09
SystemC components library
|
base class of all AXITLM based adapters and interfaces. More...
#include <base.h>


Public Types | |
| 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 |
Public Member Functions | |
| 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_handle * | find_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 | |
| virtual axi::fsm::fsm_handle * | create_fsm_handle ()=0 |
| function to create a fsm_handle. Needs to be implemented by the derived class | |
| virtual void | setup_callbacks (axi::fsm::fsm_handle *)=0 |
| this function is called to add the callbacks to the fsm handle during creation. Needs to be implemented by the derived classes describing reactions upon entering and leaving a state | |
| 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 *) |
Public Attributes | |
| ::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 |
| using axi::fsm::base::payload_type = axi::axi_protocol_types::tlm_payload_type |
| using axi::fsm::base::phase_type = axi::axi_protocol_types::tlm_phase_type |
| axi::fsm::base::base | ( | size_t | transfer_width, |
| bool | coherent = false, | ||
| axi::fsm::protocol_time_point_e | wr_start = axi::fsm::RequestPhaseBeg ) |
|
inlinevirtual |
|
pure virtual |
function to create a fsm_handle. Needs to be implemented by the derived class
Implemented in axi::pe::ace_target_pe, axi::pe::axi_target_pe, and axi::pe::simple_initiator_b.
| fsm_handle * axi::fsm::base::find_or_create | ( | payload_type * | gp = nullptr, |
| bool | ace = false ) |
| tlm_sync_enum axi::fsm::base::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
| trans | the tlm generic payload |
| phase | the protocol phase |
| t | the annotated time for LT environments |
| tlm_sync_enum axi::fsm::base::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
| trans | the tlm generic payload |
| phase | the protocol phase |
| t | the annotated time for LT environments |
| void axi::fsm::base::process_fsm_clk_queue | ( | ) |
| void axi::fsm::base::process_fsm_event | ( | ) |
|
inline |
|
inline |
| void axi::fsm::base::react | ( | axi::fsm::protocol_time_point_e | event, |
| axi::fsm::fsm_handle * | fsm_hndl ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
pure virtual |
this function is called to add the callbacks to the fsm handle during creation. Needs to be implemented by the derived classes describing reactions upon entering and leaving a state
| the | handle of the active fsm |
Implemented in axi::pe::ace_target_pe, axi::pe::axi_target_pe, and axi::pe::simple_initiator_b.
| std::unordered_map<payload_type*, axi::fsm::fsm_handle*> axi::fsm::base::active_fsm |
| std::vector<std::unique_ptr<axi::fsm::fsm_handle> > axi::fsm::base::allocated_fsm |
| ::scc::fifo_w_cb<std::tuple<axi::fsm::protocol_time_point_e, payload_type*, unsigned> > axi::fsm::base::fsm_clk_queue |
| sc_core::sc_process_handle axi::fsm::base::fsm_clk_queue_hndl |
| ::scc::peq<std::tuple<axi::fsm::protocol_time_point_e, payload_type*, bool> > axi::fsm::base::fsm_event_queue |
| std::deque<axi::fsm::fsm_handle*> axi::fsm::base::idle_fsm |
| const axi::fsm::protocol_time_point_e axi::fsm::base::wr_start |