SystemVerilog|【enum】列挙型について考える

Systemverilog
田中太郎
田中太郎

enumのmethod(組み込みfunction/task)ついてまとめます

enumのmethod

method 内容引数戻り値
a.first()aを定義するenumの最初の値を返すなしenum
a.last()aを定義するenumの最後の値を返すなしenum
a.next()aの次の値を返すintenum
a.prev()aの前の値を返すintenum
a.num()aを定義するenumの要素数を返すなしint
a.name()aの要素名を返すなしstring

サンプルコード

a.first()
module tb;
    enum {one=1, two, three, four} a;
    initial begin
        $display("%d", a.first());
        $finish;
    end
endmodule
// 出力
// 1
a.last()
module tb;
    enum {one=1, two, three, four} a;
    initial begin
        $display("%d", a.last());
        $finish;
    end
endmodule
// 出力
// 4
a.next()
module tb;
    enum {one=1, two, three, four} a;
    initial begin
        a = two;
        $display("%d", a.next());
        $finish;
    end
endmodule
// 出力
// 3
a.prev()
module tb;
    enum {one=1, two, three, four} a;
    initial begin
        a = two;
        $display("%d", a.prev());
        $finish;
    end
endmodule
// 出力
// 1
a.num()
module tb;
    enum {one=1, two, three, four} a;
    initial begin
        $display("%d", a.num());
        $finish;
    end
endmodule
// 出力
// 4
a.name()
module tb;
    enum {one=1, two, three, four} a;
    initial begin
        a = two;
        $display("%s", a.name());
        $finish;
    end
endmodule
// 出力
// two

まとめ

enumのmethodについてまとめました

コメント

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