4

SystemC で、イベントをモジュールの入出力として使用する構文は何ですか。

ワーカー モジュールがあり、イベントを送信して、スケジューラ モジュールから現在行っていることをプリエンプトしたいと考えています。

sc_port<preempt_event_if> preempt_event;

上記のワーカー モジュール内でインターフェイスを宣言しています。

インターフェイスは次のように定義されます。

class preempt_event_if : virtual public sc_interface
{
    public:
        virtual const sc_event& preempt_event() const = 0;
};

イベントを使用するチャネルは、次のように定義します。

const sc_event& preempt_event() const { return preempt_interrupt; }

preempt_interruptチャネルの関数内から通知される SystemC イベントはどこにありますか。

4

3 に答える 3

0

waker モジュールでは、静的センシティビティ リストを使用して、オーバーライドされた end_of_elaboration() カーネル コールバック関数で動的プロセスを作成できます。

SC_METHOD(do_something);
sensitive << preempt_event->preempt_event();

エラボレーション フェーズの最後にのみ、ポートが既に既存のpreempt_eventチャネルにバインドされていることを確認できます。

waker モジュールでイベントに反応するもう 1 つの方法はwait(preempt_event->preempt_event())、ノーマルSC_THREADまたはnext_trigger(preempt_event->preempt_event())ノーマルで使用できることですSC_METHOD。どちらの方法でも、プロセスが動的にイベントに敏感になることができます。次に、スケジューラ モジュールで、 を再度作成し、sc_port<preempt_event_if>にアクセスしpreempt_event().notify()て、ワーカー モジュールにイベントを送信できます。

于 2013-10-11T20:30:55.767 に答える
0

void preempt()インターフェイスを介してイベントを返すのではなく、通知する呼び出しを使用するだけです。

于 2011-07-07T14:08:48.520 に答える