27 #ifndef SC_PRIM_CHANNEL_H
28 #define SC_PRIM_CHANNEL_H
89 virtual const char*
kind()
const
90 {
return "sc_prim_channel"; }
254 void wait(
int n,
int seg_id = -1 )
379 void perform_update();
382 void construction_done();
385 void elaboration_done();
388 void start_simulation();
391 void simulation_done();
431 {
return m_prim_channel_vec.size(); }
453 void perform_update();
456 bool construction_done();
459 void elaboration_done();
462 void start_simulation();
465 void simulation_done();
473 class async_update_list;
475 async_update_list* m_async_update_list_p;
476 int m_construction_done;
477 std::vector<sc_prim_channel*> m_prim_channel_vec;
506 prim_channel_.m_update_next_p = m_update_list_p;
507 m_update_list_p = &prim_channel_;
526 if( ! m_update_next_p ) {
549 sc_prim_channel::perform_update()
virtual void update()
The update method (does nothing by default).
sc_process_b * sc_get_current_process_b()
void async_request_update()
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.
virtual const char * kind() const
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 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.
bool timed_out(sc_simcontext *)
CHNL_MTX_TYPE_ m_mutex
A mutex to protect concurrent communication.
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_time &t, const sc_event &e)
A new parameter segment ID is added for the out-of-order simulation.
void wait(const sc_time &t, int seg_id=-1)
A new parameter segment ID is added for the out-of-order simulation.
bool pending_async_updates() const
void wait(int, sc_simcontext *)
void next_trigger(const sc_event &e)
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.
void insert(sc_prim_channel &)
sc_simcontext * simcontext() const
void async_request_update(sc_prim_channel &)
virtual void end_of_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.
virtual void start_of_simulation()
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.
User initiated dynamic process support.
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.
friend class sc_prim_channel_registry
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 wait(const sc_event_or_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, const sc_event_or_list &el)
A new parameter segment ID is added for the out-of-order simulation.
CHNL_MTX_TYPE_ & m_ref
A reference to the channel lock.
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.
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.
~chnl_scoped_lock()
The destructor automatically releases the channel lock.
void wait(int n, int seg_id=-1)
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.
void next_trigger(const sc_event_or_list &el)
A new parameter segment ID is added for the out-of-order simulation.
Registry for all primitive channels.
void lock_and_push(CHNL_MTX_TYPE_ *lock)
Acquire a new channel lock or increment the lock counter.
void request_update(sc_prim_channel &)
virtual void end_of_elaboration()
virtual ~sc_prim_channel()
void next_trigger(sc_simcontext *)
A new parameter segment ID is added for the out-of-order simulation.
void wait(int seg_id=-1)
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.
bool pending_updates() const
virtual void before_end_of_elaboration()
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 next_trigger(double v, sc_time_unit tu)
A new parameter segment ID is added for the out-of-order simulation.
The chnl_scoped_lock class to lock (and automatically release) a mutex.
void next_trigger(const sc_event_and_list &el)
A new parameter segment ID is added for the out-of-order simulation.
void pop_and_unlock(CHNL_MTX_TYPE_ *lock)
Release a channel lock or decrement the lock counter.
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.
Abstract base class of all primitive channel classes.
Abstract base class of all SystemC `simulation' objects.
chnl_scoped_lock(CHNL_MTX_TYPE_ &mtx)
The constructor automatically acquires the channel lock.