Verification #31 · 2026-10-24 · Sequences · Easy · about 10 min
The assertion that accepts a busy that never ends
A block raises busy for exactly 4 cycles after each one-cycle start pulse:
busyis high in each of the 4 cycles after the cycle wherestartis high.busyis low in the cycle after that.
start is never pulsed while a job is still running, but it may come in the cycle right after busy falls.
Write a concurrent assertion in checker.sv that enforces this and is disabled while rst_n is low. Use $error in the failure branch, or leave the branch out.
The stimulus in tb.sv contains one job that is the wrong length, but the starter assertion stays silent. Fix it so it fires once when you press Run. Grading uses four hidden scenarios.
Write and run your answer in the browser. The hidden tests check it, and it’s free.