$ past с входным сигналом

Я хочу убедиться, что если событие происходит, то в «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


person noobuntu    schedule 11.01.2017    source источник
comment
Я только что заметил, что использую устаревшую версию расширения LRM - 2002 Accellera. Любые предложения о том, как достичь $ прошлой функциональности с помощью переменной num_ticks?   -  person noobuntu    schedule 11.01.2017
comment
Я использовал некоторую логику, чтобы понять это. Не очень красиво, но справляется со своей задачей   -  person noobuntu    schedule 12.01.2017


Ответы (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
person Karan Shah    schedule 12.01.2017