【问题标题】:$past with an input signal$past 带有输入信号
【发布时间】:2017-01-11 18:42:21
【问题描述】:

我想验证如果一个事件发生,那么在过去的“num_ticks”处,应该已经断言了一些信号。

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

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

这里的问题在于num_ticks。如果num_ticks 是写入属性的模块的输入信号,则断言失败。如果我将 num_ticks 声明为 int,并将其分配给常量,则通过。

$past 是否仅适用于常量值? LRM 中没有提到这一点。

我正在使用 Questasim 10.3

【问题讨论】:

  • 我刚刚注意到我使用的是过时版本的 LRM - 2002 Accellera 扩展版本。关于如何使用变量 num_ticks 实现 $past 功能的任何建议?
  • 我使用了一些逻辑来解决这个问题。不漂亮,但工作正常

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


【解决方案1】:

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

假设 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2018-09-21
    相关资源
    最近更新 更多