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, busy must be 1 in every cycle from the next one up to and including the first cycle where done is 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.