0

我添加了一个立即断言来测试两个寄存器在任何给定时间都没有被编程为相同的值。我在时间 0fs 失败,因为所有值都未初始化并且是“x”。

always @(*) begin
  assert_reg_val_cmp:
  assert (reg != 1'b1) else $error("...error msg...");
end

有没有办法仅在初始时完全禁用此断言?我可以使用reg !== 1'b1比较,它也比较“x”,但我想在 0fs 之后捕捉任何“x”状态。

4

1 回答 1

0

如果您使用 SystemVerilog,请always_comb使用always @(*). 后者的问题在于,如果其中一个输入结果是常数,它就不会执行。

如果要确保寄存器在时间 0 初始化,则使用延迟断言。

always_comb begin
  assert_reg_val_cmp:
  assert #0 (reg != 1'b1) else $error("...error msg...");
end

但是为什么你不想为此使用并发断言呢?

于 2015-12-09T23:37:04.030 回答