43 #ifndef _SYSC_PRINT_VERBOSE_MESSAGE_ENV_VAR
44 #define _SYSC_PRINT_VERBOSE_MESSAGE_ENV_VAR "SYSC_PRINT_VERBOSE_MESSAGE"
51 template<
class T>
class sc_in;
52 template<
class T>
class sc_inout;
53 template<
class T>
class sc_out;
101 const char*
gen_unique_name(
const char* basename_,
bool preserve_first );
103 virtual const char*
kind()
const
104 {
return "sc_module"; }
485 bool m_end_module_called;
486 std::vector<sc_port_base*>* m_port_vec;
569 #define SC_NEW(x) ::sc_core::sc_module_dynalloc(new x);
576 #define SC_MODULE(user_module_name) \
577 struct user_module_name : ::sc_core::sc_module
580 #define SC_CHANNEL(user_module_name) \
581 struct user_module_name : ::sc_core::sc_channel
583 #define SC_CTOR(user_module_name) \
584 typedef user_module_name SC_CURRENT_USER_MODULE; \
585 user_module_name( ::sc_core::sc_module_name )
588 #define SC_HAS_PROCESS(user_module_name) \
589 typedef user_module_name SC_CURRENT_USER_MODULE
606 #define declare_method_process(handle, name, host_tag, func, seg_id, inst_id) \
608 ::sc_core::sc_process_handle handle = \
609 sc_core::sc_get_curr_simcontext()->create_method_process( \
610 name, false, SC_MAKE_FUNC_PTR( host_tag, func ), \
611 this, 0, seg_id, inst_id ); \
612 this->sensitive << handle; \
613 this->sensitive_pos << handle; \
614 this->sensitive_neg << handle; \
623 #define declare_thread_process(handle, name, host_tag, func, seg_id, inst_id) \
625 ::sc_core::sc_process_handle handle = \
626 sc_core::sc_get_curr_simcontext()->create_thread_process( \
628 SC_MAKE_FUNC_PTR( host_tag, func ), \
629 this, 0, seg_id, inst_id ); \
630 this->sensitive << handle; \
631 this->sensitive_pos << handle; \
632 this->sensitive_neg << handle; \
641 #define declare_cthread_process(handle, name, host_tag, func, edge, \
644 ::sc_core::sc_process_handle handle = \
645 sc_core::sc_get_curr_simcontext()->create_cthread_process( \
647 SC_MAKE_FUNC_PTR( host_tag, func ), \
648 this, 0, seg_id, inst_id ); \
649 this->sensitive.operator() ( handle, edge ); \
658 #define SC_CTHREAD(func, edge, seg_id, inst_id) \
659 declare_cthread_process( func ## _handle, \
661 SC_CURRENT_USER_MODULE, \
673 #define SC_METHOD(func, seg_id, inst_id) \
674 declare_method_process( func ## _handle, \
676 SC_CURRENT_USER_MODULE, \
687 #define SC_THREAD(func, seg_id, inst_id) \
688 declare_thread_process( func ## _handle, \
690 SC_CURRENT_USER_MODULE, \
724 virtual const char*
kind()
const
725 {
return "sc_channel"; }
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_
Struct for temporarily storing a pointer to an interface or port.
void at_posedge(const sc_signal_in_if< sc_dt::sc_logic > &s, int seg_id)
A new parameter segment ID is added for the out-of-order simulation.
sc_simcontext * sc_get_curr_simcontext()
void next_trigger(double v, sc_time_unit tu)
A new parameter segment ID is added for the out-of-order simulation.
void halt(sc_simcontext *)
Specialization of sc_signal_in_if<T> for type bool.
void wait(int seg_id=-1)
A new parameter segment ID is added for the out-of-order simulation.
#define SC_REPORT_ERROR(msg_type, msg)
void wait(const sc_time &t, const sc_event &e, int seg_id=-1)
A new parameter segment ID is added for the out-of-order simulation.
Registry for all modules.
void reset_signal_is(const sc_in< bool > &port, bool level)
virtual void end_of_simulation()
bool timed_out(sc_simcontext *)
void at_negedge(const sc_signal_in_if< sc_dt::sc_logic > &s, int seg_id)
A new parameter segment ID is added for the out-of-order simulation.
void wait(double v, sc_time_unit tu, const sc_event_or_list &el, int seg_id=-1)
A new parameter segment ID is added for the out-of-order simulation.
void wait(const sc_time &t, const sc_event_or_list &el, int seg_id=-1)
A new parameter segment ID is added for the out-of-order simulation.
void wait(const sc_time &t, const sc_event_and_list &el, int seg_id=-1)
A new parameter segment ID is added for the out-of-order simulation.
void(sc_process_host::* SC_ENTRY_FUNC)()
void wait(double v, sc_time_unit tu, const sc_event_and_list &el, int seg_id=-1)
A new parameter segment ID is added for the out-of-order simulation.
void next_trigger(const sc_time &t)
A new parameter segment ID is added for the out-of-order simulation.
void next_trigger(const sc_event_or_list &el)
A new parameter segment ID is added for the out-of-order simulation.
void wait(const sc_event &e, int seg_id=-1)
A new parameter segment ID is added for the out-of-order simulation.
void wait(int, sc_simcontext *)
int append_port(sc_port_base *)
sc_module & operator,(sc_interface &interface_)
virtual void end_of_elaboration()
void next_trigger(const sc_event_and_list &el)
A new parameter segment ID is added for the out-of-order simulation.
sc_simcontext * simcontext() const
virtual const char * kind() const
User initiated dynamic process support.
void at_negedge(const sc_signal_in_if< bool > &, int, sc_simcontext *=sc_get_curr_simcontext())
A new parameter segment ID is added for the out-of-order simulation.
virtual const char * kind() const
void async_reset_signal_is(const sc_in< bool > &port, bool level)
void next_trigger(const sc_time &t, const sc_event_and_list &el)
A new parameter segment ID is added for the out-of-order simulation.
void operator()(const sc_bind_proxy &p001, const sc_bind_proxy &p002=SC_BIND_PROXY_NIL, const sc_bind_proxy &p003=SC_BIND_PROXY_NIL, const sc_bind_proxy &p004=SC_BIND_PROXY_NIL, const sc_bind_proxy &p005=SC_BIND_PROXY_NIL, const sc_bind_proxy &p006=SC_BIND_PROXY_NIL, const sc_bind_proxy &p007=SC_BIND_PROXY_NIL, const sc_bind_proxy &p008=SC_BIND_PROXY_NIL, const sc_bind_proxy &p009=SC_BIND_PROXY_NIL, const sc_bind_proxy &p010=SC_BIND_PROXY_NIL, const sc_bind_proxy &p011=SC_BIND_PROXY_NIL, const sc_bind_proxy &p012=SC_BIND_PROXY_NIL, const sc_bind_proxy &p013=SC_BIND_PROXY_NIL, const sc_bind_proxy &p014=SC_BIND_PROXY_NIL, const sc_bind_proxy &p015=SC_BIND_PROXY_NIL, const sc_bind_proxy &p016=SC_BIND_PROXY_NIL, const sc_bind_proxy &p017=SC_BIND_PROXY_NIL, const sc_bind_proxy &p018=SC_BIND_PROXY_NIL, const sc_bind_proxy &p019=SC_BIND_PROXY_NIL, const sc_bind_proxy &p020=SC_BIND_PROXY_NIL, const sc_bind_proxy &p021=SC_BIND_PROXY_NIL, const sc_bind_proxy &p022=SC_BIND_PROXY_NIL, const sc_bind_proxy &p023=SC_BIND_PROXY_NIL, const sc_bind_proxy &p024=SC_BIND_PROXY_NIL, const sc_bind_proxy &p025=SC_BIND_PROXY_NIL, const sc_bind_proxy &p026=SC_BIND_PROXY_NIL, const sc_bind_proxy &p027=SC_BIND_PROXY_NIL, const sc_bind_proxy &p028=SC_BIND_PROXY_NIL, const sc_bind_proxy &p029=SC_BIND_PROXY_NIL, const sc_bind_proxy &p030=SC_BIND_PROXY_NIL, const sc_bind_proxy &p031=SC_BIND_PROXY_NIL, const sc_bind_proxy &p032=SC_BIND_PROXY_NIL, const sc_bind_proxy &p033=SC_BIND_PROXY_NIL, const sc_bind_proxy &p034=SC_BIND_PROXY_NIL, const sc_bind_proxy &p035=SC_BIND_PROXY_NIL, const sc_bind_proxy &p036=SC_BIND_PROXY_NIL, const sc_bind_proxy &p037=SC_BIND_PROXY_NIL, const sc_bind_proxy &p038=SC_BIND_PROXY_NIL, const sc_bind_proxy &p039=SC_BIND_PROXY_NIL, const sc_bind_proxy &p040=SC_BIND_PROXY_NIL, const sc_bind_proxy &p041=SC_BIND_PROXY_NIL, const sc_bind_proxy &p042=SC_BIND_PROXY_NIL, const sc_bind_proxy &p043=SC_BIND_PROXY_NIL, const sc_bind_proxy &p044=SC_BIND_PROXY_NIL, const sc_bind_proxy &p045=SC_BIND_PROXY_NIL, const sc_bind_proxy &p046=SC_BIND_PROXY_NIL, const sc_bind_proxy &p047=SC_BIND_PROXY_NIL, const sc_bind_proxy &p048=SC_BIND_PROXY_NIL, const sc_bind_proxy &p049=SC_BIND_PROXY_NIL, const sc_bind_proxy &p050=SC_BIND_PROXY_NIL, const sc_bind_proxy &p051=SC_BIND_PROXY_NIL, const sc_bind_proxy &p052=SC_BIND_PROXY_NIL, const sc_bind_proxy &p053=SC_BIND_PROXY_NIL, const sc_bind_proxy &p054=SC_BIND_PROXY_NIL, const sc_bind_proxy &p055=SC_BIND_PROXY_NIL, const sc_bind_proxy &p056=SC_BIND_PROXY_NIL, const sc_bind_proxy &p057=SC_BIND_PROXY_NIL, const sc_bind_proxy &p058=SC_BIND_PROXY_NIL, const sc_bind_proxy &p059=SC_BIND_PROXY_NIL, const sc_bind_proxy &p060=SC_BIND_PROXY_NIL, const sc_bind_proxy &p061=SC_BIND_PROXY_NIL, const sc_bind_proxy &p062=SC_BIND_PROXY_NIL, const sc_bind_proxy &p063=SC_BIND_PROXY_NIL, const sc_bind_proxy &p064=SC_BIND_PROXY_NIL)
void wait(const sc_event_or_list &el, int seg_id=-1)
A new parameter segment ID is added for the out-of-order simulation.
Specialization of sc_inout<T> for type bool.
virtual void start_of_simulation()
void set_stack_size(std::size_t)
Function to set the stack size of the current (c)thread process and method process.
void next_trigger(double v, sc_time_unit tu, const sc_event_or_list &el)
A new parameter segment ID is added for the out-of-order simulation.
void wait(double v, sc_time_unit tu, const sc_event &e, int seg_id=-1)
A new parameter segment ID is added for the out-of-order simulation.
void at_posedge(const sc_signal_in_if< bool > &, int, sc_simcontext *=sc_get_curr_simcontext())
A new parameter segment ID is added for the out-of-order simulation.
void next_trigger(double v, sc_time_unit tu, const sc_event_and_list &el)
A new parameter segment ID is added for the out-of-order simulation.
sc_module * sc_module_dynalloc(sc_module *)
Abstract base class of all interface classes.
const ::std::vector< sc_object * > & get_child_objects() const
Base class for all structural entities.
Specialization of sc_signal_in_if<T> for type sc_dt::sc_logic.
Abstract base class for class sc_port_b.
void next_trigger(double v, sc_time_unit tu, const sc_event &e)
A new parameter segment ID is added for the out-of-order simulation.
void next_trigger(const sc_time &t, const sc_event_or_list &el)
A new parameter segment ID is added for the out-of-order simulation.
void at_posedge(const sc_signal_in_if< bool > &s, int seg_id)
A new parameter segment ID is added for the out-of-order simulation.
Base class for all hierarchical channels.
void halt(int seg_id)
A new parameter segment ID is added for the out-of-order simulation.
virtual void before_end_of_elaboration()
void wait(const sc_event_and_list &el, int seg_id=-1)
A new parameter segment ID is added for the out-of-order simulation.
sc_sensitive_pos sensitive_pos
void wait(int n, int seg_id)
A new parameter segment ID is added for the out-of-order simulation.
const char * gen_unique_name(const char *basename_, bool preserve_first)
This is the base class for objects which may have processes defined for their methods (e...
void next_trigger(const sc_event &e)
A new parameter segment ID is added for the out-of-order simulation.
void wait(double v, sc_time_unit tu, int seg_id=-1)
A new parameter segment ID is added for the out-of-order simulation.
const sc_bind_proxy SC_BIND_PROXY_NIL
int m_instance_id
Instance ID of this module.
void aux_seg_bound(sc_simcontext *simc)
A new parameter segment ID is added for the out-of-order simulation.
void at_negedge(const sc_signal_in_if< bool > &s, int seg_id)
A new parameter segment ID is added for the out-of-order simulation.
void next_trigger(const sc_time &t, const sc_event &e)
A new parameter segment ID is added for the out-of-order simulation.
sc_module & operator<<(sc_interface &)
Specialization of sc_in<T> for type bool.
void positional_bind(sc_interface &)
CHNL_MTX_TYPE_ m_mutex
A mutex to protect concurrent communication.
void wait(const sc_time &t, int seg_id=-1)
A new parameter segment ID is added for the out-of-order simulation.
void next_trigger()
A new parameter segment ID is added for the out-of-order simulation.
sc_sensitive_neg sensitive_neg
void elaboration_done(bool &)
Abstract base class of all SystemC `simulation' objects.