Это была моя первая наивная попытка. В основном vld
может достигать максимума в любое время за 20 циклов. Но в первый раз, когда он становится высоким, data
должно быть определенным значением, скажем 'h20
.
sequence correct_vld_and_data;
##[1:20] vld
##0 (data == 'h20);
endsequence
property prop_correct_vld_and_data;
@(posedge clk)
(precondition_met)
->
(correct_vld_and_data);
endproperty
assert prop_correct_vld_and_data;
Проблема в том, что приведенная выше последовательность соответствует следующему случаю; но я не хочу, чтобы он совпадал, то есть я действительно хочу, чтобы срабатывала ошибка утверждения:
t=0 : precondition_met==1
t=1-4 : vld==0
t=5 : vld==1 data=='h5
t=6-9 : vld==0
t=10 : vld==1 data=='h20
t=11-20: vld==0
В первый раз, когда vld становится высоким, мне нужно data=='h20
, а не 'h5
, как в этом случае.