我想验证一条总线在断言中是否稳定。例如,如果在data
下降沿之后re
时钟发生变化,我希望以下断言标记错误。
wire clk, rst_n, re;
wire [15:0] data;
a_chk_stable_data:
assert property (@(posedge clk) disable iff(!rst_n)
($fell(re) |=> $stable(data[15:0])))
else begin
$display("ERROR: one or more bits of data not stable");
end
我相信$rose
仅在总线的LSB上运行(link)。 $stable
是否仅在LSB上运行,还是支持任何宽度的信号?
答案 0 :(得分:3)
根据the spec,$stable
对整个表达式进行操作。而$rose
和$fell
对表达式的LSB进行操作。
来自IEEE 1800-2012的第16.9.3节:
- 如果表达式的LSB更改为1,则
$rose
返回true。否则,它返回false - 如果表达式的LSB更改为0,则$fell
返回true。否则,它返回false - 如果表达式的值没有改变,则$stable
返回true。否则,它返回false - 如果表达式的值发生更改,则$changed
将返回true。否则,它返回false。