From SVA assertions to constrained-random testbenches and UVM — everything a chip verification engineer needs, explained with real Verilog and SystemVerilog code.
Five focused guides — start with SVA if you know Verilog, or begin at Classes if you're moving into OOP-based verification.
| Feature | Verilog | SystemVerilog | Use In Verification |
|---|---|---|---|
| Data types | wire, reg, integer | logic, bit, byte, int, enum, struct | Cleaner TB variables |
| Object-oriented | Not supported | class, extends, virtual | Reusable transaction objects |
| Randomization | $random (no constraints) | rand, randc, constraint blocks | Constrained-random stimulus |
| Assertions | Not built-in | assert, assume, cover, property, sequence | Protocol checking, coverage |
| Coverage | Not built-in | covergroup, coverpoint, cross | Functional coverage closure |
| Interfaces | port lists only | interface, modport, clocking block | Clean DUT-TB connection |
| Queues & arrays | Fixed arrays only | dynamic array, queue [$], assoc array | Scoreboards, expected models |
| Processes | fork-join only | fork-join_any, fork-join_none, disable fork | Parallel stimulus generation |