property Delay;
@(posedge clk) trigger |-> ##delay output
endproperty
##delay 只能是常量,比如##2,如果是变量编译报错。可以如下写:
property delay;
int number;
@(posedge clk) (trigger,number=delay) ##1 (1,number=number-1)[0*:$] ##0 (delay==0) |-> output;
endproperty
这样就可以使用变量delay了。
property Repetition
@(posedge clk) trigger |-> (output[*repetition]);
endproperty
output[*reprtition] repetition不可以是变量,否则编译报错。可以如下写:
property Repetition
int number;
@(posedge clk) (trigger,number=repetition) |-> ((output, number=repetition-1)[*0:$]) ##0 (repetition==0);
endproperty