SystemVerilog|bindについて考える

Systemverilog
田中太郎
田中太郎

モニタやチェッカをテストベンチを接続するとき、しばしばbindを使用します

bindの使い方について考えていきます

サンプルコード

テストベンチ、モニタ、DUTから構成されています

DUTとモニタをテストベンチでバインドしています

module tb;
    bit clk = 0;
    bit rst_n = 0;
    always #5 clk = !clk;

    initial begin
        #10;
        rst_n = 1;
        #100;
        $finish;
    end

    bind dut monitor
    i_monitor(
        .clk(clk),
        .rst_n(rst_n),
        .din(dout)
    );

    logic dout;
    dut u_dut(
        .clk(clk),
        .rst_n(rst_n),
        .dout(dout)
    );
endmodule

module dut(
    input clk,
    input rst_n,
    output logic dout
);
    always_ff @(posedge clk, negedge rst_n) begin
        if (!rst_n) begin
            dout <= '0;
        end
        else begin
            dout <= '1;
        end
    end
endmodule

module monitor(
    input clk,
    input rst_n,
    input din
);
    initial begin
        forever begin
            @(posedge clk iff rst_n);
            $display("%d", din);
        end
    end
endmodule

使い方

bind <A> <B>
<bind名>(
    .<Bのポート>(<Aのポート>)
);

まとめ

bindを使ってみました

コメント

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