带输入信号的$ past

时间:2017-01-11 18:42:22

标签: system-verilog uvm questasim system-verilog-assertions

我想验证一个事件是否发生,然后在过去的“num_ticks”,应该声明一些信号。

举个例子,我写的属性是:

property test_past;
  @(posedge clk)
    $rose(gnt) |-> $past(req, num_ticks);
endproperty

这里的问题是num_ticks。如果num_ticks是写入属性的模块的输入信号,则断言失败。如果我将num_ticks声明为int,并将其赋值给常量,则传递。{/ p>

$ past只适用于常量值吗?这在LRM中没有提到。

我正在使用Questasim 10.3

1 个答案:

答案 0 :(得分:3)

您可以为此目的使用多个断言。

假设num_ticks是4位宽,那么你可以这样做。

genvar x;
generate
  for (x=0; x<16; x++)
  begin
    property test_past;
      @(posedge clk)
      (num_ticks == x) && $rose(gnt) |-> $past(req, x);
    endproperty
  end
endgenerate