UVM Coding Practice · Senior
Resource Pool vs config_db
When to use uvm_resource_db.
Interview prompt
Global seed vs per-agent vif — which API?
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 componentvif: config_db scoped to hierarchy path — set in top, get in agent
global seed: uvm_resource_db or plusarg — not tied to one component path
config_db dump for bring-up; resource pool for cross-test globals
Reference sketch (≤40 lines)
systemverilog
// hierarchical vif
uvm_config_db#(apb_vif)::set(this, "env.agent*", "vif", vif);
// global seed
uvm_resource_db#(int)::set("GLOBAL_SEED", seed, this);Mechanism to narrate
config_db: scoped by instance path — best for vif, cfg objects
resource_db: global name lookup — seeds, shared knobs
Wildcard set("*") works but hides path bugs — use sparingly
Smoke test (5 minutes)
Explain which API for vif vs seed in 30 seconds.
Describe uvm_config_db::dump() use after build_phase.
Common pitfalls
Wildcard set for everything.
Same field name collision across agents.
get in wrong phase.