📄 sc_simcontext.h
字号:
sc_name_gen* m_name_gen; sc_process_table* m_process_table; sc_curr_proc_info m_curr_proc_info; sc_object* m_current_writer; bool m_write_check; int m_next_proc_id; std::vector<sc_object*> m_child_objects; std::vector<sc_event*> m_delta_events; sc_ppq<sc_event_timed*>* m_timed_events; std::vector<sc_trace_file*> m_trace_files; bool m_something_to_trace; sc_runnable* m_runnable; sc_time_params* m_time_params; sc_time m_curr_time; sc_dt::uint64 m_delta_count; bool m_forced_stop; bool m_ready_to_simulate; bool m_elaboration_done; execution_phases m_execution_phase; bool m_error; bool m_in_simulator_control; bool m_end_of_simulation_called; bool m_start_of_simulation_called; sc_event* m_until_event; sc_cor_pkg* m_cor_pkg; // the simcontext's coroutine package sc_cor* m_cor; // the simcontext's coroutineprivate: // disabled sc_simcontext( const sc_simcontext& ); sc_simcontext& operator = ( const sc_simcontext& );};// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII// Not MT safe.#if 1extern sc_simcontext* sc_curr_simcontext;extern sc_simcontext* sc_default_global_context;inline sc_simcontext*sc_get_curr_simcontext(){ if( sc_curr_simcontext == 0 ) { sc_default_global_context = new sc_simcontext; sc_curr_simcontext = sc_default_global_context; } return sc_curr_simcontext;}#else extern sc_simcontext* sc_get_curr_simcontext();#endif // 0// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIinlineboolsc_simcontext::elaboration_done() const{ return m_elaboration_done;}inlineintsc_simcontext::sim_status() const{ if( m_error ) { return SC_SIM_ERROR; } if( m_forced_stop ) { return SC_SIM_USER_STOP; } return SC_SIM_OK;}inlinesc_object_manager*sc_simcontext::get_object_manager(){ return m_object_manager;}inlinesc_module_registry*sc_simcontext::get_module_registry(){ return m_module_registry;}inlinesc_port_registry*sc_simcontext::get_port_registry(){ return m_port_registry;}inlinesc_export_registry*sc_simcontext::get_export_registry(){ return m_export_registry;}inlinesc_prim_channel_registry*sc_simcontext::get_prim_channel_registry(){ return m_prim_channel_registry;}inlinesc_curr_proc_handlesc_simcontext::get_curr_proc_info(){ return &m_curr_proc_info;}inlineintsc_simcontext::next_proc_id(){ return ( ++ m_next_proc_id );}inlineconst sc_time&sc_simcontext::time_stamp() const{ return m_curr_time;}inline boolsc_simcontext::event_occurred(sc_dt::uint64 last_change_count) const{ return m_delta_count == last_change_count;}inlineboolsc_simcontext::update_phase() const{ return m_execution_phase == phase_update;}inlinevoidsc_simcontext::set_error(){ m_error = true;}inlineboolsc_simcontext::get_error(){ return m_error;}inlineintsc_simcontext::add_delta_event( sc_event* e ){ m_delta_events.push_back( e ); return ( m_delta_events.size() - 1 );}inlinevoidsc_simcontext::add_timed_event( sc_event_timed* et ){ m_timed_events->insert( et );}inline sc_object* sc_simcontext::get_current_writer() const{ return m_current_writer;}inline bool sc_simcontext::write_check() const{ return m_write_check;}// ----------------------------------------------------------------------------class sc_process_handle;sc_process_handle sc_get_current_process_handle();inlinesc_process_b*sc_get_current_process_b(){ return sc_get_curr_simcontext()->get_curr_proc_info()->process_handle;}// THE FOLLOWING FUNCTION IS DEPRECATED IN 2.1extern sc_process_b* sc_get_curr_process_handle();inlinesc_curr_proc_kindsc_get_curr_process_kind(){ return sc_get_curr_simcontext()->get_curr_proc_info()->kind;}inline int sc_get_simulator_status(){ return sc_get_curr_simcontext()->sim_status();}// Generates unique names within each module.externconst char*sc_gen_unique_name( const char* basename_, bool preserve_first = false );// Set the random seed for controlled randomization -- not yet implementedexternvoidsc_set_random_seed( unsigned int seed_ );extern void sc_start();extern void sc_start( const sc_time& duration );extern void sc_start( double duration );extern void sc_stop();extern void sc_initialize();extern void sc_cycle( const sc_time& duration );extern const sc_time& sc_time_stamp(); // Current simulation time.extern double sc_simulation_time(); // Current time in default time units.inlineconst std::vector<sc_object*>& sc_get_top_level_objects( const sc_simcontext* simc_p = sc_get_curr_simcontext() ){ return simc_p->m_child_objects;}extern sc_object* sc_find_object( const char* name, sc_simcontext* simc_p = sc_get_curr_simcontext() );inlinesc_dt::uint64 sc_delta_count(){ return sc_get_curr_simcontext()->m_delta_count;}inline bool sc_is_running( const sc_simcontext* simc_p = sc_get_curr_simcontext() ){ return simc_p->m_ready_to_simulate;}inlinevoidsc_start( double duration, sc_time_unit time_unit ){ sc_start( sc_time( duration, time_unit ) );}inlinevoidsc_cycle( double duration, sc_time_unit time_unit ){ sc_cycle( sc_time( duration, time_unit ) );}// for backward compatibility with 1.0inlinevoidsc_cycle( double duration ) // in default time units{ sc_cycle( sc_time( duration, true ) );}inlineboolsc_end_of_simulation_invoked(){ return sc_get_curr_simcontext()->m_end_of_simulation_called;}inlinebool sc_start_of_simulation_invoked(){ return sc_get_curr_simcontext()->m_start_of_simulation_called;}} // namespace sc_core#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -