Допустим, что есть сигнал a
. Когда сигнал идет высоко, он должен оставаться высоким, по крайней мере, для трех положительных краев тактовых импульсов.Утверждение, чтобы проверить сбой в сигнале
Мы можем написать свойство, как
property p;
@(posedge clk) $rose(a) -> a[*3];
endproperty
Свойство терпит неудачу в случае ниже.
clk _ _ _ | = = = | _ _ _ | = = = | _ _ _ | = = = | _ _ _ | = = = |
a _ _ | = = = | _ _ | = = = = = = = = = = = = = = = = = = = = = = = = =
Это не соответствует спецификации, где a идет низко посередине, но будет вытягиваться высоко следующим положением и, следовательно, выше утверждения не поймают это.
Может ли кто-нибудь сказать, есть ли способ написать утверждение, чтобы поймать эту ошибку?
Спасибо