我尝试将expect与以下属性一起使用
module tb;
logic a;
logic clk=0;
default clocking @(posedge clk); endclocking
always
#5ns clk = ~clk;
initial begin
$dumpfile("dump.vcd"); $dumpvars;
$display("START");
a = 0;
#100ns;
a = 1;
#100ns;
$finish;
end
initial begin
#10ns;
expect(@(posedge clk) 1 ##1 $changed(a) |-> 1) $display("SUCCESS"); else
$display("FAIL");
end
endmodule
预期会在100ns变为0之前阻塞吗?
答案 0 :(得分:0)
不,它会阻塞到第二个(posedge clk)
,无论a
的值如何,并且将始终通过。
expect
语句在第一个clk边缘之前不会开始评估属性。先行者需要两个周期才能匹配或不匹配。由于结果始终为真,因此该属性会在匹配时传递。如果没有匹配,该物业也会空转。