比較演算でワイルドカード =?=/!?= SystemVerilog

はじめに

SystemVerilog 3.1では比較演算でワイルドカードを使用できます。

=?=/!?=でワイルドカードを用いた比較演算を行えます。

=?=は右辺と左辺が等しいときに真、!?=は右辺と左辺が等しくないときに真です。

式ではx, zがワイルドカードとして扱われます。

使い方

<左辺> =?= <右辺>
<左辺> !?= <右辺>

サンプル

=?=を使用したサンプル

module top();
    logic [3:0] a = 3'b111;
    initial begin
        if (a =?= 3'bz11)
            $display("Same");
        else
            $display("Diff");

        if (a =?= 3'bz10)
            $display("Same");
        else
            $display("Diff");
    end
endmodule
// 出力
// Same
// DIff

!?=を使用したサンプル

module top();
    logic [3:0] a = 3'b111;
    initial begin
        if (a !?= 3'bz11)
            $display("Diff");
        else
            $display("Same");

        if (a !?= 3'bz10)
            $display("Diff");
        else
            $display("Same");
    end
endmodule
// 出力
// Same
// DIff

まとめ

ワイルドカードを使用した比較演算を行いました。

コメント

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