SystemVerilog Assertions

SVA Handshake Assertions Guide

Handshake assertions convert informal timing rules into executable properties. For ready/valid-style interfaces, the highest-value properties usually describe what must persist during backpressure, when transfers are allowed to occur and how reset disables or constrains the protocol.

Implementation-first: use this guide to review the design rules, then solve the linked HDLForge problems without looking at a solution first.

Core design rules

Implementation path

Verification checklist

Useful RTL / verification pattern

property valid_holds_until_ready;
  @(posedge clk) disable iff (reset)
    valid && !ready |=> valid;
endproperty

property payload_stable_while_stalled;
  @(posedge clk) disable iff (reset)
    valid && !ready |=> $stable(data);
endproperty

Practice with executable problems

SVA · MediumValid Must Eventually Handshake

Write an assertion for a ready/valid interface.

SVA · EasyReset Clears State

Verify that a synchronous reset clears a counter on the next clock edge.

Protocols · MediumBackpressure-Safe Ready/Valid Source

Implement a source register that obeys ready/valid protocol semantics.

RTL Design · HardReady/Valid Skid Buffer

Build a one-entry skid buffer that preserves data when downstream backpressure arrives.

Turn it into a project

ProjectUVM Verification Environment for an AXI4-Lite PeripheralProjectAPB Peripheral Verification Suite