A sequence is a pattern of boolean expressions spread across clock cycles. A boolean expression is a one-cycle sequence, delays glue expressions across time, repetition compresses repeats, and composition combines patterns.
One model explains every operator below. A ranged delay or repetition forks a match thread per legal choice, and the sequence matches when any thread reaches its end.
Layer | Operator | Job |
|---|---|---|
Boolean |
| One-cycle base case |
Delay |
| Glue across ticks; ranges fork threads |
Repetition |
| Compress repeats and scattered counts |
Composition |
| Combine patterns from a common start |
Qualifiers |
| Constrain windows, prune threads |
Property |
| The assertion built on sequences |
Lesson | Idea | Path |
|---|---|---|
Fixed, ranged, and unbounded delays with the thread model and zero-delay fusion. | Required | |
Consecutive runs plus goto and non-consecutive counting on one shared stimulus. | Required | |
Joining patterns, pinning lengths, invariants, and containment. | Recommended | |
Pruning thread explosion and reusing endpoints as events. | Optional |
Required lessons are the core first pass for writing working assertions. Recommended lessons are worth reading for most learners once the first pass works. Optional lessons are reference, specialist material or revision, and you can come back to them when a project needs them.
Every lesson below ends with a bench that runs real assertions on Verilator 5.048 with planted bugs. Verilator checks single-thread sequences correctly: fixed delays, a range at the very end, written-out repetition, throughout over a fixed window. Sequences that fork and then continue (a range or goto followed by more, repetition or and in a consequent) compiled and missed some or all planted failures, while covers on the same sequences counted correctly. The benches show the compact form's count beside a form that works, and What the Open Simulators Run lists every case.
Two, one per satisfied thread. A ranged operator never picks one interpretation; every thread that completes is a match.