Verification #39 · 2026-11-01 · Until and throughout · Medium · about 12 min
The assertion that stops checking one cycle early
A job interface has start, busy and done. One rule ties them together:
- After a cycle with
start= 1,busymust be 1 in every cycle from the next one up to and including the first cycle wheredoneis 1.
done can come in the very first cycle after start, so a job can last a single cycle. Jobs never overlap, and done always arrives. Outside a job nothing is required of busy.
checker.sv is meant to count in fails each job that breaks the rule, and nothing while rst_n is low. It lets some bad jobs through. Fix it. Keep fails++ in the failure branch: the testbenches read it.
The bus in testbench.sv has two bad jobs.
Write and run your answer in the browser. The hidden tests check it, and it’s free.