Bug Hunt

Practice on real simulators

Every problem is checked against a correct reference and a bank of realistic bugs. Filter by track, format and difficulty.

All problems

Module 1 · Storing data

  1. 1.1.1 Unknown-bit counter 675 Implement Easy Browser in review
  2. 1.1.3 The false-pass monitor 1050 Fix Medium Browser in review
  3. 1.1.4 Partial-knowledge scoreboard 1350 Implement Hard Browser in review
  4. 1.2.1 Byte-lane extraction 750 Implement Easy Browser in review
  5. 1.3.1 Header field decoder 750 Implement Easy Browser in review
  6. 1.4.1 Safe opcode decoder 825 Implement Easy Browser in review
  7. 1.4.2 State-transition validator 1200 Implement Medium Browser in review
  8. 1.5.6 Catch the broken formatters 825 Break it Easy Browser in review
  9. 1.6.1 Register index 750 Implement Easy Browser in review
  10. 1.6.6 Addresses that catch broken decoders 1050 Break it Medium Browser in review
  11. 1.7.2 Repair the transaction field 825 Fix Easy Browser in review
  12. 1.7.6 Catch the bad read paths 1275 Verify Medium Browser in review
  13. 1.7.7 Header monitor 1425 Implement Hard Browser in review

Module 2 · Collections

  1. 2.1.1 Resize and preserve 750 Implement Easy Verilator in review
  2. 2.2.1 First FIFO mismatch 825 Implement Easy Verilator in review
  3. 2.2.2 Bounded queue operations 1050 Implement Medium Verilator in review
  4. 2.3.1 Outstanding request lookup 750 Implement Easy Verilator in review
  5. 2.3.2 Duplicate-ID protection 975 Implement Medium Verilator in review
  6. 2.3.3 Out-of-order response matcher 1350 Implement Hard Verilator in review
  7. 2.4.2 Wide population reduction 825 Implement Easy Verilator in review
  8. 2.5.1 Missing beat indices 825 Implement Easy Verilator in review
  9. 2.6.1 Value snapshot 750 Implement Easy Verilator in review
  10. 2.6.2 Aliased collection repair 1050 Fix Medium Verilator in review
  11. 2.7.1 Flush pending requests 750 Implement Easy Verilator in review
  12. 2.7.8 The stale expectation 1125 Debug Medium Verilator in review

Module 3 · Routines and processes

  1. 3.1.1 Popcount function 600 Implement Easy Verilator in review
  2. 3.2.1 Invocation-local accumulator 750 Fix Easy Verilator in review
  3. 3.3.1 Wait for two workers 750 Implement Easy Verilator in review
  4. 3.3.3 Cancellation scope repair 1125 Fix Medium Verilator in review
  5. 3.3.6 The timer that outlived its race 1125 Debug Medium Verilator in review
  6. 3.4.1 Persistent initialization flag 825 Implement Easy Verilator in review
  7. 3.5.1 Exact-count consumer 825 Implement Easy Verilator in review
  8. 3.6.1 Protected shared counter 900 Fix Easy Verilator in review
  9. 3.7.1 Single-response deadline 900 Implement Easy Verilator in review
  10. 3.7.2 Inclusive boundary checker 1050 Implement Medium Verilator in review
  11. 3.7.6 Catch the late responders 1350 Verify Hard Verilator in review

Module 4 · Classes

  1. 4.1.1 Construct a valid packet 750 Implement Easy Verilator in review
  2. 4.2.6 The copy that shares its payload 750 Fix Easy Verilator in review
  3. 4.2.7 Transactions that expose broken compares 1050 Break it Medium Verilator in review
  4. 4.3.1 Derived read transaction 825 Implement Easy Verilator in review
  5. 4.4.1 Virtual response length 750 Implement Easy Verilator in review
  6. 4.5.1 Safe downcast 825 Implement Easy Verilator in review
  7. 4.5.3 Stale cast destination 1125 Fix Medium Verilator in review
  8. 4.6.1 Typed value box 825 Implement Easy Verilator in review
  9. 4.7.1 Factory by opcode 825 Implement Easy Verilator in review
  10. 4.7.2 Validated factory arguments 1425 Implement Hard Verilator in review

Module 5 · Randomization

  1. 5.1.1 Legal packet length 825 Implement Easy Verilator in review
  2. 5.1.6 The packet that kept its old length 825 Fix Easy Verilator in review
  3. 5.2.1 Legal value sets 825 Implement Easy Verilator in review
  4. 5.2.6 Operations that expose broken legality checks 1050 Break it Medium Verilator in review
  5. 5.3.2 Balance mode frequency 825 Implement Easy Verilator in review
  6. 5.4.1 Override a soft default 825 Implement Easy Verilator in review
  7. 5.5.1 Freeze one random field 900 Fix Easy Verilator in review
  8. 5.6.1 Replay one object stream 825 Implement Easy Verilator in review
  9. 5.6.6 The burst that changed after the solve 1125 Debug Medium Verilator in review
  10. 5.7.1 Aligned burst request 825 Implement Easy Verilator in review
  11. 5.7.9 Catch the generators that cross a bank 1200 Verify Medium Verilator in review

Module 6 · Connecting to the DUT

  1. 6.1.1 Typed bus connection 825 Implement Easy Verilator in review
  2. 6.2.1 Pre-update versus post-update 750 Fix Easy Verilator in review
  3. 6.2.6 Catch the broken pipelines 1125 Verify Medium Verilator in review
  4. 6.3.1 Clocking-view sampler 825 Fix Easy Verilator in review
  5. 6.4.1 Configure one driver 900 Implement Easy Verilator in review
  6. 6.4.3 Wrong-interface binding 975 Fix Medium Verilator in review
  7. 6.5.9 Traces that expose broken hold checkers 900 Break it Easy Verilator in review
  8. 6.5.2 Hold-until-accepted driver 1425 Implement Hard Verilator in review
  9. 6.6.6 Hold the offer 825 Verify Easy Verilator in review
  10. 6.6.7 Count the beats 975 Verify Medium Verilator in review
  11. 6.6.8 Answer in time 975 Verify Medium Verilator in review
  12. 6.6.9 The right data for the right request 975 Verify Medium Verilator in review
  13. 6.6.12 Tickets for a lost response 1050 Verify Medium Verilator in review
  14. 6.6.11 A read-channel assertion suite 1500 Verify Hard Verilator in review
  15. 6.6.13 A tagged channel assertion suite 1500 Verify Hard Verilator in review
  16. 6.7.1 Identify the sampling race 1125 Debug Medium Verilator in review

Module 7 · FIFO verification

  1. 7.1.1 Acceptance truth table 750 Implement Easy Verilator in review
  2. 7.1.6 Requests that expose broken FIFO rules 1050 Break it Medium Verilator in review
  3. 7.2.6 The read that was valid on an empty FIFO 900 Fix Easy Verilator in review
  4. 7.2.2 Arbitrary-depth FIFO 1125 Implement Medium Verilator in review
  5. 7.3.1 Directed fill and drain 750 Implement Easy Verilator in review
  6. 7.4.1 FIFO expected queue 900 Implement Easy Verilator in review
  7. 7.4.6 The scoreboard that checks too early 1125 Debug Medium Verilator in review
  8. 7.5.8 Two coverpoints for the FIFO 825 Implement Easy Verilator in review
  9. 7.5.9 The cross that can never close 1050 Fix Medium Verilator in review
  10. 7.6.1 Pointer-wrap sequence 825 Break it Easy Verilator in review
  11. 7.6.6 Catch the FIFOs that break at wrap and reset 1350 Verify Hard Verilator in review
  12. 7.7.3 Premature test completion 900 Fix Easy Verilator in review

Synchronous FIFO

  1. H1.9 Catch the faulty FIFOs 1350 Verify Hard Browser in review

UVM practice

  1. U1.4.1 The error test that never broke a checksum 900 Fix Easy UVM
  2. U2.4.1 Pack a frame whose payload has its own length 1125 Implement Medium UVM
  3. U3.2.1 Two environments that never talk 900 Fix Easy UVM
  4. U3.4.1 The trace window that never drops quietly 1050 Implement Medium UVM
  5. U4.3.1 The burst driver that outran its receiver 900 Fix Easy UVM
  6. U5.1.1 Catch the sequencers that grant out of turn 1275 Verify Medium UVM
  7. U5.3.1 A background sequence that leaves cleanly when killed 825 Implement Easy UVM
  8. U6.1.1 Keep a two-clock memory busy 1350 Implement Hard UVM
  9. U6.2.1 Play the memory, including its protected page 1125 Implement Medium UVM
  10. U6.3.1 Pack bytes into words, and flush the odd one 1350 Implement Hard UVM
  11. U7.2.1 A scoreboard among careless listeners 1125 Verify Medium UVM
  12. U7.4.1 The checker that fails nothing 900 Fix Easy UVM
  13. U8.2.1 Interleaved read bursts 1350 Implement Hard UVM
  14. U8.4.1 A latency meter with two bounds 1050 Implement Medium UVM
  15. U9.3.1 Three channels and a model that disagrees 1125 Fix Medium UVM
  16. U10.2.1 The scoreboard that remembered through reset 1050 Fix Medium UVM
  17. U12.1.1 Inject a bad check on one lane, on chosen beats 1050 Implement Medium UVM
  18. U13.2.1 Registers that all read zero 900 Fix Easy UVM
  19. U14.2.1 The overflow flag that would not stay set 900 Fix Easy UVM
  20. U15.2.1 The poison test with a short ledger 1125 Fix Medium UVM
  21. U16.4.1 The interrupt that clears itself 1425 Verify Hard UVM