systemverilog assertion在 ##m延迟 和 [*m]连续重复 中使用变量代替常量

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 

 

你可能感兴趣的:(systemverilog assertion在 ##m延迟 和 [*m]连续重复 中使用变量代替常量)