HomeDay 19

Assertion Coverage

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-cycle

Debugging 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); endproperty

Key Takeaways

Day 20: Integrating assertions into testbenches.