In reply to dmitryl:
In reply to cool_cake20:
If so, why not always to use both of them? ‘assert’ will check a failure of the rule/property, ‘cover’ will check whether the rule/property was ever fulfilled…
For example:
sequence s;
@(posedge clk) a ##1 b;
endsequence
property p;
a |-> s;
endproperty
assert property (p);
cover property (p);
When using both assert and cover on the same property, the coverage reports for the two simulators I use (Incisive and VCS) report 2 uncovered items for the same property. I find this annoying because I think I have twice as many uncovered items as I really have. For example, the report summary will say I have 10 uncovered assertions, but after I look at the details I realize I really only have 5 uncovered assertions. For this reason, I have stopped automatically adding a cover for each assert. I haven’t read anything in this good thread to convince me to do otherwise.
Perhaps other simulators or other tools (formal) use cover for different purposes.