A Checklist for SystemVerilog Assertions

SystemVerilog Assertions (SVAs) are effective for low level verification. UVM is effective for high level verification. Unfortunalely, the high level concerns cloud my critical thinking and I forget what low level issues that I should be concerned about. Fortunately, many SVAs are mostly mechanical applications of a few simple concepts. I have listed my checklist for SVAs when writing RTL below. I look at it for inspiration when I feel that I should add another assertion.

Item Comments
Registers and outputs on reset
No unknown control signals Input and Output
No unknown data in transactions Input and Output
Restricted data ranges F. x. address ranges – math functions – data relationships
Restricted enumerations Enum and control signal combinations
Valid handshake protocols Every interface – spurious ack – cause has effect – data stable
Time Clock periods – setup/hold time – glitches – CDC – rate control
Invariants Data integrity – overflow/underflow – FSM transitions

The first assertions in the list are the easiest to write. The last ones are the hardest to write.

Leave a Reply

Your email address will not be published. Required fields are marked *