2015-09-22 4 views
2

Мне нужно проверить последовательность до конца симуляции после начального совпадения.повторение последовательности в утверждении системы verilog

property check_at_fall; 
@(posedge clk) 
    $rose(enable) ##[1:$] $fell(enable) |-> ##[0:2] ch_sel_seq [*1000] ; 
endproperty 
assert_TELEMETRY : assert property (check_at_fall) 
else `uvm_error("ADC_if",$psprintf("unexpected sequence ")) 

То, что я хочу что-то вроде [*$] вместо [*1000] выше. Я не хочу давать огромное количество, я хочу запустить его навсегда.

+0

Вы можете попробовать что-то вроде 'ch_sel_seq [* 1: $] ## 0 1'b0;' Он скажет вам, когда 'ch_sel_seq' терпит неудачу, но это утверждение никогда не будет завершено. Это может быть проблемой в вашей коллекции покрытия. – Greg

ответ

0

От SystemVerilog 1800-2012 Страница 359:

Чтобы задать конечное, но неограниченное, число итераций, используется знак доллара ($). Так, например, повторение

a ##1 b [*1:$] ##1 c 

Кроме того, [*] является эквивалентом представление [* 0: $] и [+] является эквивалентом представление [* 1: $].