I’m not very familiar with ABV and SVA, but someone a while back mentioned about avoiding the implication operator in cover properties
->/=>
the person was not able to elaborate his answer, so I’d like to know if this is correct? If so that means that cover properties should be always written something like
a##0b //for a->b
or
a##1b //for a=>b
The other question is related to chained implication operator
a->b->c
my understanding is that in case of a occurring but b never happening this type of assertion will not fail, is this the case and why?
Hello,
I’m not very familiar with ABV and SVA, but someone a while back mentioned about avoiding the implication operator in cover properties
->/=>
the person was not able to elaborate his answer, so I’d like to know if this is correct? If so that means that cover properties should be always written something like
a##0b //for a->b
or
a##1b //for a=>b
The cover property is typically used to cover in tests critical sequences. For example, you want to insure that in testing a FIFO that you address the sequence fifo_full ##1 push ##0 !pop;
The assertion of properties is typically provided by the tool.
The other question is related to chained implication operator
a->b->c
my understanding is that in case of a occurring but b never happening this type of assertion will not fail, is this the case and why?
Regards,
-R
b |-> c; if b==0 the property is vacuous.
a |-> (b |-> c) if a==1 you check the property (b |-> c) ;
There, if b==0 the property is vacuous.
I do not recommend the use of multiple implication operators. You can write multiple small assertions.