VLSI DV Interview Puzzles · All levels
Round Walkthrough: Sequencer Waits for item_done
Live interview round: test hangs at 2.3 ms, log says seqA waiting for item_done. Walk through the full debug narrative and give the concrete fix.
Puzzle
Difficulty: Medium · Puzzle 1 of 6 · Topic: Real Interview Rounds: End-to-End Debug Walkthrough
Live interview round: test hangs at 2.3 ms, log says seqA waiting for item_done. Walk through the full debug narrative and give the concrete fix.
Code
virtual task run_phase(uvm_phase phase);
my_item req;
forever begin
seq_item_port.get_next_item(req);
if (req.err) begin
return; // bug
end
drive_req(req);
seq_item_port.item_done();
end
endtaskHint
In interview settings, structure matters as much as correctness.
Step-by-step solution
1) Symptom: identify liveness failure (sequence blocked waiting handshake completion).
2) Hypotheses: missing item_done path, blocked driver thread, or sequencer arbitration starvation.
3) Instrumentation: add paired logs for get_next_item/item_done with transaction ids.
4) Root cause: early return on req.err exits loop without item_done.
5) Fix + validation: replace return with guarded branch that still calls item_done; rerun failing seeds.Answer
Answer: Actual bug: driver returns before item_done on error path. Fix: preserve one item_done per get_next_item and keep loop alive.
Why candidates get it wrong
Candidates often jump straight to fix before proving which branch skipped handshake completion.
Interviewer follow-up
What one-line assertion would you add to catch missing item_done within bounded cycles?