52 template<
class T>
class sc_in;
53 template<
class T>
class sc_inout;
54 template<
class T>
class sc_out;
96 {
return simcontext(); }
99 const char* gen_unique_name(
const char* basename_,
bool preserve_first );
101 virtual const char*
kind()
const 102 {
return "sc_module"; }
107 virtual void before_end_of_elaboration();
109 void construction_done();
112 virtual void end_of_elaboration();
114 void elaboration_done(
bool& );
117 virtual void start_of_simulation();
119 void start_simulation();
122 virtual void end_of_simulation();
124 void simulation_done();
126 void sc_module_init();
153 const ::std::vector<sc_object*>& get_child_objects()
const;
170 void async_reset_signal_is(
const sc_in<bool>& port,
bool level );
171 void async_reset_signal_is(
const sc_inout<bool>& port,
bool level );
172 void async_reset_signal_is(
const sc_out<bool>& port,
bool level );
206 sc_time( v, tu, simcontext() ), e, simcontext() ); }
243 sc_time( v, tu, simcontext() ), simcontext() ); }
250 sc_time( v, tu, simcontext() ), e, simcontext() ); }
257 sc_time( v, tu, simcontext() ), el, simcontext() ); }
264 sc_time( v, tu, simcontext() ), el, simcontext() ); }
303 void set_stack_size( std::size_t );
313 bool m_end_module_called;
314 std::vector<sc_port_base*>* m_port_vec;
394 #define SC_NEW(x) ::sc_core::sc_module_dynalloc(new x); 402 #define SC_MODULE(user_module_name) \ 403 struct user_module_name : ::sc_core::sc_module 406 #define SC_CTOR(user_module_name) \ 407 typedef user_module_name SC_CURRENT_USER_MODULE; \ 408 user_module_name( ::sc_core::sc_module_name ) 412 #define SC_HAS_PROCESS(user_module_name) \ 413 typedef user_module_name SC_CURRENT_USER_MODULE 424 #define declare_method_process(handle, name, host_tag, func) \ 426 ::sc_core::sc_process_handle handle = \ 427 sc_core::sc_get_curr_simcontext()->create_method_process( \ 428 name, false, SC_MAKE_FUNC_PTR( host_tag, func ), \ 430 this->sensitive << handle; \ 431 this->sensitive_pos << handle; \ 432 this->sensitive_neg << handle; \ 435 #define declare_thread_process(handle, name, host_tag, func) \ 437 ::sc_core::sc_process_handle handle = \ 438 sc_core::sc_get_curr_simcontext()->create_thread_process( \ 440 SC_MAKE_FUNC_PTR( host_tag, func ), this, 0 ); \ 441 this->sensitive << handle; \ 442 this->sensitive_pos << handle; \ 443 this->sensitive_neg << handle; \ 446 #define declare_cthread_process(handle, name, host_tag, func, edge) \ 448 ::sc_core::sc_process_handle handle = \ 449 sc_core::sc_get_curr_simcontext()->create_cthread_process( \ 451 SC_MAKE_FUNC_PTR( host_tag, func ), this, 0 ); \ 452 this->sensitive.operator() ( handle, edge );\ 456 #define SC_CTHREAD(func, edge) \ 457 declare_cthread_process( func ## _handle, \ 459 SC_CURRENT_USER_MODULE, \ 464 #define SC_METHOD(func) \ 465 declare_method_process( func ## _handle, \ 467 SC_CURRENT_USER_MODULE, \ 471 #define SC_THREAD(func) \ 472 declare_thread_process( func ## _handle, \ 474 SC_CURRENT_USER_MODULE, \ Struct for temporarily storing a pointer to an interface or port.
void next_trigger(const sc_time &t, const sc_event_and_list &el)
Static sensitivity class for negative edge events.
void wait(double v, sc_time_unit tu)
inline ::std::ostream & operator<<(::std::ostream &os, const sc_fifo< T > &a)
void wait(const sc_event_and_list &el)
virtual const char * kind() const
Process base class support.
void next_trigger(const sc_event_and_list &el)
void at_posedge(const sc_signal_in_if< bool > &s)
Specialization of sc_signal_in_if<T> for type bool.
operand is not sc_logic object already exists internal maximum number of processes per module module construction not properly hierarchical name as shown may be incorrect due to previous errors incorrect use of sc_module_name set time resolution failed default time unit changed to time resolution immediate notification is not allowed during update phase or elaboration use reset_signal_is()" ) SC_DEFINE_MESSAGE(SC_ID_DONT_INITIALIZE_
Abstract base class of all SystemC `simulation' objects.
Specialization of sc_inout<T> for type bool.
void next_trigger(const sc_event_or_list &el)
void SC_API halt(sc_simcontext *)
void next_trigger(double v, sc_time_unit tu, const sc_event_or_list &el)
void wait(const sc_time &t)
Wait() and related functions.
Simple implementation of a doubly linked list.
Abstract base class for class sc_port_b.
sc_sensitive_pos sensitive_pos
SC_API sc_module * sc_module_dynalloc(sc_module *)
void at_negedge(const sc_signal_in_if< sc_dt::sc_logic > &s)
Static sensitivity class for positive edge events.
SC_API const sc_bind_proxy SC_BIND_PROXY_NIL
void wait(const sc_event &e)
void next_trigger(const sc_time &t)
Unique name generator class.
void wait(double v, sc_time_unit tu, const sc_event &e)
Wait() and related functions for SC_CTHREADs.
Base class for all structural entities.
Static sensitivity class for events.
sc_concref_r< sc_bitref_r< T1 >, sc_bitref_r< T2 > > operator,(sc_bitref_r< T1 >, sc_bitref_r< T2 >)
void wait(const sc_time &t, const sc_event_and_list &el)
Abstract base class of all interface classes.
Specialization of sc_signal_in_if<T> for type sc_dt::sc_logic.
Registry for all modules.
void next_trigger(double v, sc_time_unit tu)
void at_posedge(const sc_signal_in_if< sc_dt::sc_logic > &s)
SC_API bool timed_out(sc_simcontext *)
void next_trigger(const sc_event &e)
void next_trigger(double v, sc_time_unit tu, const sc_event &e)
Specialization of sc_in<T> for type bool.
void at_negedge(const sc_signal_in_if< bool > &s)
void next_trigger(const sc_time &t, const sc_event &e)
void next_trigger(double v, sc_time_unit tu, const sc_event_and_list &el)
void at_negedge(const sc_signal_in_if< bool > &, sc_simcontext *=sc_get_curr_simcontext())
void wait(const sc_time &t, const sc_event &e)
void wait(double v, sc_time_unit tu, const sc_event_and_list &el)
void next_trigger(const sc_time &t, const sc_event_or_list &el)
sc_sensitive_neg sensitive_neg
An object used to help manage object names.
Sensitivity classes. Requires "sc_process.h".
Report ids for the kernel code.
#define SC_REPORT_ERROR(msg_type, msg)
operand is not sc_logic object already exists internal maximum number of processes per module module construction not properly hierarchical name as shown may be incorrect due to previous errors incorrect use of sc_module_name set time resolution failed default time unit changed to time resolution immediate notification is not allowed during update phase or elaboration use dont_initialize() has no effect for SC_CTHREADs" ) SC_DEFINE_MESSAGE(SC_ID_WAIT_N_INVALID_
void wait(const sc_time &t, const sc_event_or_list &el)
void at_posedge(const sc_signal_in_if< bool > &, sc_simcontext *=sc_get_curr_simcontext())
void wait(double v, sc_time_unit tu, const sc_event_or_list &el)
void wait(const sc_event_or_list &el)
sc_time_unit
Enumeration of time units.
operand is not sc_logic object already exists internal maximum number of processes per module module construction not properly hierarchical name as shown may be incorrect due to previous errors incorrect use of sc_module_name set time resolution failed default time unit changed to time resolution next_trigger() is only allowed in SC_METHODs" ) SC_DEFINE_MESSAGE(SC_ID_IMMEDIATE_NOTIFICATION_
sc_simcontext * sc_get_curr_simcontext()
void SC_API wait(int, sc_simcontext *)