UVM 1.0の例題のうち、examples/integratedディレクトリにあるものについて説明していきます。
今回は、code です。このディレクトリには、説明用のブロック図(block_diagram.pdf)があります。
DUTは、APBとVIPに接続されています。
APBは、examples/integrated/apbディレクトリのものを
VIPは、examples/integrated/codec/vipディレクトリのものを使います。
APBは、examples/integrated/apbディレクトリのものを
VIPは、examples/integrated/codec/vipディレクトリのものを使います。
トップテストベンチは、tb_top.svで、
module tb_top; reg clk, sclk; wire rst; wire tx, rx; wire intr; tb_ctl_if ctl(clk, sclk, rst, intr); apb_if apb0(clk); vip_if vip0(sclk, rx, tx); dut dut0(tx, rx, sclk, apb0, intr, clk, rst); initial begin // Clk & rst start at x // Rst resolves first #100 ctl.rst = 1'b1; // then clocks #200; clk = 1'b0; sclk = 1'b0; // the clocks eventually toggles // but it is up to the environment to release rst #500; fork forever begin #50 clk = 1'b1; #50 clk = 1'b0; end #4 forever begin #250 sclk = 1'b1; #250 sclk = 1'b0; end join_none end endmodule
tb_ctl_if_ctlインターフェースのインスタンスctl、
apb_ifインターフェースのインスタンスapb0、
vip_ifインターフェースのインスタンスvip0、
と
dutモジュールのインスタンスdut0だけであり、
initial文内では、リセット(ctl.rst)とクロック(clk/sclk)の制御をしているだけです。
apb_ifインターフェースのインスタンスapb0、
vip_ifインターフェースのインスタンスvip0、
と
dutモジュールのインスタンスdut0だけであり、
initial文内では、リセット(ctl.rst)とクロック(clk/sclk)の制御をしているだけです。
では、どこで、run_test()が実行されているのでしょうか?
検証、Verification、SystemVerilog、UVM、Unified Verification Methodology