SVA允许像 Verilog那样在检验器中使用参数( parameter),这为创建可重用的属性提供了很大的灵活性。比如,两个信号间的延迟信息可以在检验器中用参数表示,那么这种检验器就可以在设计只有时序关系不同的情况中重用。例子1.2显示了个带延迟默认值参数的检验器。如果这个检验器在设计中被调用,它使用一个时钟周期作为延迟默认值。如果在实例化时重设检验器中延迟参数值,那么同一个检验器就可以被重用。在例子1.2中,模块“top”有两个“ generic_chk”的实例。实例i1将延迟参数改写为2个时钟周期,而实例i使用默认的1个时钟周期。
例12使用参数的SA检验器的例子
- module generic_chk(input logic a,b,clk);
- parameter delay=1;
-
- property p16;
- @(posedge clk) a |-> ## delay b;
- endproperty
-
- a16 :assert property (p16);
-
- endmodule
-
- //call checker from the top level module
- module top(...);
- logic clk,a,b,c,d;
-
- generic_chk #(.delay(2)) i1 (a,b,clk);
- generic_chk #(c,d,clk);
-
- endmodule
图1-19显示了两个检验器实例i和i在模拟过程中对信号变化的响应。