quic/qbox
Loading...
Searching...
No Matches
Classes | Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | List of all members
gs::generic_lua_model Class Reference
Inheritance diagram for gs::generic_lua_model:
Inheritance graph
[legend]
Collaboration diagram for gs::generic_lua_model:
Collaboration graph
[legend]

Classes

struct  enum_hash
 
struct  register_info_t
 

Public Member Functions

 generic_lua_model (sc_core::sc_module_name _name, sc_core::sc_object *_container, sc_core::sc_object *_reg_memory)
 
 generic_lua_model (sc_core::sc_module_name _name, gs::reg_router<> *_reg_router, gs::gs_memory<> *_reg_memory)
 

Public Attributes

tlm_initiator_socket_t initiator_socket
 
tlm_target_socket_t target_socket
 
sc_core::sc_vector< TargetSignalSocket< bool > > target_signal_sockets
 
sc_core::sc_vector< InitiatorSignalSocket< bool > > initiator_signal_sockets
 
TargetSignalSocket< boolreset
 

Protected Types

enum class  action_source { REGISTER_CB , TARGET_SIGNAL , START_OF_SIM , UNKNOWN }
 
enum class  actions {
  PRE_READ , PRE_WRITE , POST_READ , POST_WRITE ,
  UNKNOWN
}
 
using tlm_initiator_socket_t = tlm_utils::simple_initiator_socket_b< generic_lua_model, DEFAULT_TLM_BUSWIDTH, tlm::tlm_base_protocol_types, sc_core::SC_ZERO_OR_MORE_BOUND >
 
using tlm_target_socket_t = tlm_utils::simple_target_socket_b< generic_lua_model, DEFAULT_TLM_BUSWIDTH, tlm::tlm_base_protocol_types, sc_core::SC_ZERO_OR_MORE_BOUND >
 
using reg_ptr_t = std::shared_ptr< gs::gs_register< uint32_t > >
 
using data_t = std::vector< std::tuple< sc_core::sc_time, uint64_t, uint32_t > >
 
using signals_t = std::vector< std::tuple< sc_core::sc_time, uint32_t, bool > >
 
using reactions_t = std::pair< data_t, signals_t >
 

Protected Member Functions

 SCP_LOGGER ()
 
void set_base_address ()
 
void b_transport (tlm::tlm_generic_payload &trans, sc_core::sc_time &delay)
 
unsigned int transport_dbg (tlm::tlm_generic_payload &trans)
 
bool get_direct_mem_ptr (tlm::tlm_generic_payload &trans, tlm::tlm_dmi &dmi_data)
 
void invalidate_direct_mem_ptr (sc_dt::uint64 start, sc_dt::uint64 end)
 
void before_end_of_elaboration () override
 
void start_of_simulation () override
 
void dispatch (const std::string &_name)
 
void set_data_and_signals_actions_from_cci (const std::string &cci_name, data_t &data, signals_t &signals)
 
void set_reg_mask_and_value_actions_from_cci (const std::string &cci_name, register_info_t &regs_info)
 
void dispatch_signals_actions (const std::string &cci_name, uint32_t sig_num, bool sig_val)
 
void dispatch_registers_cb_actions (const std::string &cci_name, const std::string &reg_name, uint64_t address, uint32_t reg_mask, bool is_default_value_set, uint32_t default_value, actions action)
 
void bind_register (register_info_t &regs_info)
 
void register_input_signal (uint32_t sig_num, bool value, const data_t &data, const signals_t &signals)
 
void reg_action_cb (tlm::tlm_generic_payload &txn, sc_core::sc_time &delay, const register_info_t &regs_info)
 
void target_signal_cb (int id, bool value)
 
void trigger_signals (const signals_t &signals, action_source act_src)
 
void write_data (const data_t &data, action_source act_src)
 
void exec_data_thread (action_source act_src)
 
void exec_sig_thread (action_source act_src)
 
void reg_data_thread ()
 
void reg_signals_thread ()
 
void sos_data_thread ()
 
void sos_signals_thread ()
 
void target_sig_data_thread ()
 
void target_sig_signals_thread ()
 
template<class T >
void cci_set (std::string n, T value)
 

Constructor & Destructor Documentation

◆ generic_lua_model()

gs::generic_lua_model::generic_lua_model ( sc_core::sc_module_name  _name,
sc_core::sc_object *  _container,
sc_core::sc_object *  _reg_memory 
)

This constructor signature is used when a container object is already instanciated and has a sub module called reg_router.

Member Function Documentation

◆ b_transport()

void gs::generic_lua_model::b_transport ( tlm::tlm_generic_payload &  trans,
sc_core::sc_time &  delay 
)
protected

Forward b_transport

◆ dispatch()

void gs::generic_lua_model::dispatch ( const std::string &  _name)
protected

This will handle the start of simulation after_ns entries, i.e. {after_ns = 100, address = 0x123456, data = 0x789abc}

◆ get_direct_mem_ptr()

bool gs::generic_lua_model::get_direct_mem_ptr ( tlm::tlm_generic_payload &  trans,
tlm::tlm_dmi &  dmi_data 
)
protected

DMI is not allowed

◆ invalidate_direct_mem_ptr()

void gs::generic_lua_model::invalidate_direct_mem_ptr ( sc_dt::uint64  start,
sc_dt::uint64  end 
)
protected

DMI is not allowed

◆ set_reg_mask_and_value_actions_from_cci()

void gs::generic_lua_model::set_reg_mask_and_value_actions_from_cci ( const std::string &  cci_name,
register_info_t regs_info 
)
protected

implemented as a separate function, not part of set_data_and_signals_actions_from_cci(), as it should only be used in the register callbacks trigger case.

◆ target_signal_cb()

void gs::generic_lua_model::target_signal_cb ( int  id,
bool  value 
)
protected

No need to use else clause here, as the target signal may be configured to trigger an action only for true value but false was written, or vice versa.

◆ transport_dbg()

unsigned int gs::generic_lua_model::transport_dbg ( tlm::tlm_generic_payload &  trans)
protected

Forward transport_dbg


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