SystemVerilog在0fs

时间:2015-12-09 22:51:36

标签: verilog system-verilog assertion system-verilog-assertions

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

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

有没有办法只在初始时干净地禁用这个断言?我可以使用reg !== 1'b1比较,比较' x'我也想抓住任何' x'在0fs之后的状态。

1 个答案:

答案 0 :(得分:0)

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

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

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

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