SystemVerilog中的$ stable是否在公共汽车上运行?

时间:2015-02-02 16:06:46

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

我想验证一条总线在断言中是否稳定。例如,如果在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上运行,还是支持任何宽度的信号?

1 个答案:

答案 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。