我是SystemVerilog Assertions的新手,我知道我可以使用Concurrent Assertions检查信号在时钟滴答之间是否有变化:
assert property (@(posedge clk) enable == 0 |=> $stable(data));
但是我如何继续使用立即声明?这是我在网上找到的一个例子,但我不确定这是我需要的以及它是如何工作的:
assign not_a = !a;
always_comb begin : b1
a1: assert (not_a != a);
a2: assert #0 (not_a!= a); // Should pass once values have settled
end
答案 0 :(得分:0)
你所要求的是没有任何意义的。如果信号永远不会改变,那么它必须是一个常数。根据您显示的示例,a1
可能会失败 - a
和not_a
之间存在竞争条件。 a2
是延迟断言 - 它负责比赛,永远不会失败。但这两个断言的问题是,如果a
在某个时间发生变化,a2
永远不会失败,您可能看不到a1