一、Property使用
1.结合sequence(序列)对时序和逻辑的描述,property(属性)可以用来描述设计的确切行为
2.Property可以在验证中用来做assumption,checker或者coverage:
①当使用assert关键词时,可以用作checker来检查设计是否遵循property的描述。
②当使用assume关键词时,可以作为环境的假设条件,对于仿真环境和形式验证均起到对激励进行假设的作用。
③当使用cover关键词时,可以将property是否真正通过作为断言覆盖率来衡量。
3.Property可以在module、interface、clocking块或者package中声明。
4.Property也可以铜sequence一样具备形式参数。
5.共有七中Property:
①sequence
②negation
③disjunction
④conjunction
⑤if…else
⑥implication
⑦instantiation
6.对于sequence类型的property,只有当出现满足该sequence条件时,property才可以通过。
7.对于negation类型,即not property_expr。如果property_expr不满足,那么negation类型的property即通过。
property rule2;
@(clkev) disable iff (foo) a |-> not (b ##1 c ##1 d);
endproperty
8.disjunction(OR)用法即property_expr1 or property_expr2,当至少一个property_expr满足时,
property rule3;
@(posedge clk) a[*2] |-> ((##[1:3] c) or (d |=>e));
endproperty
9.conjuntion(AND),用法property_expr1 and property_expr2,当两个property_expr均满足时,property通过。
property rule4;
@(posedge clk) a[