Система Verilog ожидать поведения

Я пытался использовать ожидаемую со следующим свойством

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

Ожидается ли блокирование до изменения от 0 до 1 при 100 нс?

1 ответ

Нет будет блокировать до второго (posedge clk)независимо от стоимости aи всегда будет проходить.

expect оператор не начинает оценивать свойство до первого края clk. Антецедент занимает два цикла, чтобы соответствовать или не соответствовать. Поскольку последующее всегда верно, свойство передается на совпадение. Если совпадений нет, собственность также сдается пусто.

Другие вопросы по тегам