Part 4 · Assertions (SVA) · Intermediate
Protocol Assertion Cookbook
Hub — complete assertion rulesets for valid/ready, req/ack, FIFOs, FSMs, stability and pulse discipline, and pipelined datapaths.
Overview
Everything before this point — sequences, implication, repetition, sampled value functions — exists so you can write the contents of this topic: complete, deployable rulesets for the interfaces every chip actually has. Real protocol checking is never one assertion. A valid/ready interface needs stability rules, X rules, and a liveness rule together; a FIFO needs occupancy math, flag exclusivity, and data integrity together. One missing rule and the checker passes while the bus burns.
This is also the most interview-loaded topic in all of SVA. “Write the assertions for an AXI-style handshake” or “what would you assert on a FIFO?” are the standard whiteboard prompts for verification roles, and the grading rubric is completeness: interviewers count how many of the canonical rules you produce unprompted, and whether you can defend each one with a waveform. Each sub-lesson below is structured as that answer — the full ruleset, the waveforms, and the reasoning.
Sub-topics
Valid/Ready Handshake Assertions — the full AXI-style ruleset: stability, X-safety, liveness, dependency rules.
Request/Acknowledge Protocols — hold-until-ack, bounded ack windows, pulse discipline, spacing rules.
FIFO Assertions — push/pop legality, occupancy consistency, flag exclusivity, data integrity, async notes.
FSM Assertions — one-hot encoding, legal-transition tables, bounded deadlock checks, reset state, cover points.
Stability, Pulse & Glitch Checks — throughout, exact pulse widths, mutual exclusion, interrupt persistence.
Pipeline & Datapath Assertions — fixed-latency equality, stall correctness, in-order completion, credit counters.
PROTOCOL ASSERTION COOKBOOK — TOPIC MAP
┌─────────────────────────┐
│ interface under check │
└────────────┬────────────┘
┌────────────────┬───────┴───────┬────────────────┐
▼ ▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐
│ handshake │ │ storage │ │ control │ │ datapath │
│ │ │ │ │ │ │ │
│ valid/ready│ │ FIFO │ │ FSM │ │ pipelines │
│ req/ack │ │ occupancy │ │ transitions│ │ latency │
└─────┬──────┘ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘
│ │ │ │
▼ ▼ ▼ ▼
stability + count math + legal arcs + out==$past(in)+
X-safety + flag exclus. + no deadlock + stall holds +
liveness data integrity reset + covers credits bounded
│ │ │ │
└────────────────┴───────┬───────┴────────────────┘
▼
every ruleset = SAFETY rules ("never bad")
+ LIVENESS rules ("eventually good")
+ X rules ("payload known")
+ COVER points ("we exercised it")Key takeaways
Protocol checking means rulesets, not single assertions — completeness is the quality metric.
Every ruleset mixes safety, bounded liveness, X-safety, and cover points.
These six interface families cover the overwhelming majority of real-world assertion work.
Interview prompts grade you on how many canonical rules you produce unprompted — learn them as sets.