SystemVerilog Event変数を使ってみる ->

はじめに

あるシーケンシャルブロックから別なメソッド・シーケンシャルブロックを起動したいときにevent変数が便利です。

宣言する方法は以下です。

event <変数名>;

下記のように使用します。

-><変数名>;

サンプルコード

センシビリティリストで使用する

always @(<Event変数>)のようにして使用します。

module top;
    event a;
    initial begin
        -> a; // alwaysを動かす。
        #10;
        $finish;
    end

    always @(a) $display("a");
endmodule
// 出力
// a

Event変数のエイリアスを作成する

下記のようにEvent変数を定義します。

event a;
event b = a;

aとbはどちらかのEventが発生したら、もう一つに波及します。

module top;
    event a;
    event b = a;
    initial begin
        -> b;
        #10;
        $finish;
    end

    always begin 
        @(a);
        $display("a");
    end
    always begin
        @(b);
        $display("b");
    end
endmodule
// 出力
// b
// a

コメント

タイトルとURLをコピーしました