SystemC-sc_event_queue
sc_event_queue 与sc_event的共同点是都有notify(…)方法,而不同点是sc_event_queue实际上是一个分层通道,它可以有多个等待触发的通知,这些通知不互相覆盖。sc_event_queue实现的接口sc_event_queue_if定义如下:
- class sc_event_queue_if
- : publ virtual sc_interface
- {
- public:
- virtual void notify( double , sc_time_unit ) = 0;
- virtual void notify( const sc_time& ) = 0;
- virtual void cel_all() = 0;
- };
- class sc_event_queue
- : public sc_event_queue_if , public sc_module
- {
- public:
- sc_event_queue();
- explicit sc_event_queue( sc_module_name );
- ~sc_event_queue();
- virtual const char* kind() const;
- virtual void notify( double , sc_time_unit );
- virtual void notify( const sc_time& );
- virtual void cancel_all();
- virtual const sc_event& default_event() const;
- };
其中cancel_all()取消所有等待的通知。
- sc_event_queue EQ;
- SC_CTOR(Mod)
- {
- SC_THREAD(T);
- SC_METHOD(M);
- sensitive << EQ;
- dont_initialize();
- }
- void T()
- {
- EQ.notify(2, SC_NS); // M在2ns后执行
- EQ.notify(1, SC_NS); // M在1ns后也执行
- EQ.notify(SC_ZERO_TIME); // M在0ns执行
- EQ.notify(1, SC_NS); // M在1ns后再次执行。
- }
- 上一篇:SystemC-sc_export
- 下一篇:SystemC-sc_event