config_db

返回知识网络总入口 · 配置与通信

核心结论

config_db 按参数化类型、路径和字段名查找配置,还需核对 set/get 时机及覆盖优先级。

关键机制

  • set(cntxt,inst_name,field_name,value) 的上下文与路径共同决定范围,自取通常 get(this,"",key,value)。
  • module 设置全路径用 null;sequence 借 sequencer 取得组件上下文。
  • build 期间较高层上下文优先,同层后设置优先;build 后设置通常后写入优先。复杂组合用 +UVM_CONFIG_DB_TRACE 验证。
  • 数值为值复制,对象为句柄共享:字段修改可被共享者看见,但替换源句柄不会自动重绑接收者。

小例子或流程

// test中
uvm_config_db#(int)::set(this,"env.agt.drv","timeout_cycles",100);
// driver的build_phase中
if (!uvm_config_db#(int)::get(this,"","timeout_cycles",timeout_cycles))
  `uvm_fatal("CFG", "timeout_cycles missing")

易错点

  • 变量名不决定路径,字符串拼错不会编译报错。
  • 通配范围过宽易造成 agent 配置串用。
  • 教材旧式 set/get_config 与自动字段配置有版本背景,这里以显式 config_db 为主。

关联知识

原文出处与已有面试题