Cycle Delay
SystemVerilogでは、クロックサイクル単位での遅延指定が簡単にできるようになった。
テストベンチでは、遅延の指定に時間指定ではなく、クロックサイクルで指定することにより、クロックタイミング等の変更に強いコードが書けるようになる。
サイクル指定の遅延を使用するためには、default clockingで基準となるクロックを決め、##でクロックサイクル数を指定する。
下の例でのcbはクロッキングブロックの名前で、好きな名前をつければいい。クロッキングブロックについては別途説明する。
module test();
reg clk;
initial begin
clk = 0;
forever
#50 clk = ~clk;
end
default clocking cb@(posedge clk);
endclocking
initial begin
##5 $display("Current time = %t", $time);
$finish();
end
endmodule // test
最初のクロック立ち上がり回数5回分の450ps(最初の立ち上がりクロックエッジは50psにある)のタイミングで$displayが実行されている。
# 6.5e
# vsim -do {run -all; quit} -c test
# Loading sv_std.std
# Loading work.test
# run -all
# Current time = 450