田中太郎
モニタやチェッカをテストベンチを接続するとき、しばしば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を使ってみました
コメント