Answer each question out loud before opening it. If you miss more than three in the checkpoint, revisit the lessons linked at the end.
A loop: observe precisely from the first failure, hypothesise causes including the testbench, run the experiment that separates them, narrow until one cause explains every symptom.
Confirm the same seed, build, options and simulator; look for testbench non-determinism; run many seeds with the signature as the stop condition; never close as flaky without a cause.
Start at the stuck handshake and ask what it waits for, following one dependency at a time to the logic that should have released it.
Bisection over the history, about log2(n) runs, with reproducible runs.
Bucket by signature of the first error, debug one representative per bucket, largest first.
Rule out the testbench: clean-design comparison, driver protocol, the specification's words, simulator dependence, an independent check.
Task. After a merge, 120 regression runs fail across 8 tests. The first errors include scoreboard mismatches on one output, a protocol assertion on an ingress driver, and many timeouts. Lay out, step by step, how you would get from this to fixed bugs, and what you would automate afterwards.
Bucket the 120 by first-error signature: say a scoreboard bucket, a driver-protocol bucket and a timeout bucket. Start with the driver protocol bucket: a testbench driver breaking the protocol makes downstream failures meaningless, and it is probably a testbench bug introduced by the merge; check the clean design fails it too. Bisect the merge range for the first commit where each remaining bucket appears. For the scoreboard bucket, take the earliest failure, reduce it with delta debugging using the signature as the oracle, and follow the wrong value back to its first wrong stage. For timeouts, follow the wait from the oldest stalled handshake; re-bucket after each fix, since timeouts are often consequences. Before reporting, rule out the testbench (clean comparison, specification, independent check). Afterwards automate: signature bucketing on the dashboard, automatic bisection, test reduction with signatures, watchdogs that name the oldest stalled handshake, and protocol assertions on every driver.
Lost credits, which made the checker's timing model wrong.
Seed, exact build, options and tool version.
Random stability ties values to the order of random calls; the edit changes it.
sleeping.
wake = |in_vld[2:0], ignoring input 3.
About 6.
59.
6.
They identify the cause; times and values do not.
Running every new check on the clean design across seeds, against planted bugs, and against an independent check or the intended distribution.