0

我尝试将期望与以下属性一起使用

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 变为 1 吗?

4

1 回答 1

0

(posedge clk)不,无论 的值如何,它都会阻塞到第二个a,并且总是会通过。

expect语句直到第一个 clk 边缘才开始评估属性。先行词需要两个周期来匹配或不匹配。由于结果始终为真,因此该属性通过匹配传递。如果没有匹配,该属性也会空洞地通过。

于 2018-01-24T14:57:41.277 回答