Prove Assertions Are Tested
Assertions pass silently. Add cover properties to prove you actually exercised them:
property handshake;
@(posedge clk) req |-> ##[1:3] ack;
endproperty
assert property(handshake); // Catch violations
cover property(handshake); // Prove we saw this pattern
// Coverage for different delay cases
cover property(@(posedge clk) req ##1 ack); // 1-cycle
cover property(@(posedge clk) req ##2 ack); // 2-cycle
cover property(@(posedge clk) req ##3 ack); // 3-cycleDebugging Failed Assertions
When an assertion fails:
property debug_rule;
@(posedge clk) disable iff(reset)
valid && data != 8'hXX else
$error("Assertion failed: invalid data at %0t", $time);
endpropertyKey Takeaways
- ✅ cover property = prove assertion was tested
- ✅ Assertions catch design bugs automatically
- ✅ Both functional & formal verification benefit
Day 20: Integrating assertions into testbenches.