UVM Coding Practice · Senior
Subscriber Compare Hook
uvm_subscriber write() for light checks.
Interview prompt
Sketch uvm_subscriber that flags addr out of range.
diagram
WHITEBOARD CHAIN
1. DECLARE interfaces / types / ports you need
2. SKELETON class extends + utils macro + key methods
3. MECHANISM fill one critical method while narrating
4. PITFALL name one bug juniors make on this pattern
5. TEST how you would smoke-test the componentReference sketch (≤40 lines)
systemverilog
class addr_sub extends uvm_subscriber #(txn);
`uvm_component_utils(addr_sub)
function new(string name, uvm_component parent); super.new(name, parent); endfunction
function void write(txn t);
if (t.addr > MAX_ADDR)
`uvm_error("ADDR", $sformatf("OOR addr=%0h", t.addr))
endfunction
endclassMechanism to narrate
Subscriber extends uvm_subscriber#(txn) — analysis_export built-in
write() is the hook — keep light (one check or cover sample)
Heavy compare belongs in scoreboard, not subscriber
Smoke test (5 minutes)
Directed txn with addr=MAX+1 → one UVM_ERROR.
Legal addr → silent pass.
Common pitfalls
Full protocol checker inside subscriber.
Forgetting connect to analysis_export.