Как проверить, не изменяется ли сигнал, используя Immediate Assertions в SystemVerilog Assertions

Я новичок в SystemVerilog Assertions и знаю, что могу проверить, не меняется ли сигнал между тактами часов, используя Concurrent Assertions:

assert property (@(posedge clk) enable == 0 |=> $stable(data));

Но как мне делать это постоянно, используя немедленные утверждения? Это пример, который я нашел в Интернете, но я не уверен, что мне нужно и как это работает:

assign not_a = !a;
always_comb begin : b1
    a1: assert (not_a != a);
    a2: assert #0 (not_a!= a); // Should pass once values have settled
end

person Adam Billal Guergachi    schedule 15.06.2017    source источник


Ответы (1)


То, о чем вы просите, не имеет никакого смысла. Если это сигнал никогда не может измениться, то он должен быть постоянным. В показанном вами примере a1 может выйти из строя - существует состояние гонки между a и not_a. a2 - это отложенное утверждение - оно заботится о гонке и никогда не подведет. Но проблема с обоими этими утверждениями заключается в том, что если a в какой-то момент изменится, a2 никогда не даст сбой, и вы можете не увидеть сбой с a1

person dave_59    schedule 16.06.2017
comment
Спасибо за ваш комментарий. Я думаю, что неправильно сформулировал свой вопрос. Все, что я ищу, - это использовать Immediate Assertions, чтобы проверить стабильность сигнала, поскольку у меня нет часов. - person Adam Billal Guergachi; 16.06.2017
comment
Без каких-либо ссылок, каково ваше определение стабильного? - person dave_59; 16.06.2017
comment
Сигнал не меняется, когда выполняется утверждение. - person Adam Billal Guergachi; 16.06.2017
comment
Итак, без какой-либо ссылки, когда следует начать выполнение утверждения, а когда - остановиться? Мое определение стабильного означает проверку на отсутствие изменений в течение определенного периода или временного окна. Вы не можете использовать сам сигнал в качестве эталона, потому что он действительно стабилен между своими изменениями. - person dave_59; 16.06.2017
comment
Сигнал A должен оставаться неизменным, когда у другого сигнала B высокий уровень. Извините за неразбериху. - person Adam Billal Guergachi; 16.06.2017