object与component

返回知识网络总入口 · 平台与对象

核心结论

component 也是 object,但额外属于组件树并自动参与 phase。transaction、sequence 和配置对象通常是按需创建的普通 object。

关键机制

  • uvm_component 经 uvm_report_object 派生自 uvm_object;类型继承树与实例树不同。
  • driver、monitor、sequencer、agent、env、test 是 component,构造时需要 name 和 parent。
  • sequence 是 object,需显式启动,不自动经历组件 phase。
  • 分别用 object_utils/component_utils 注册,构造函数遵守对应约定。

小例子或流程

// 组件build_phase中创建driver,数据对象按需创建
drv = my_driver::type_id::create("drv", this);
tr = packet::type_id::create("tr");

易错点

  • 关联 sequencer 不会让 sequence 变为 component。
  • 有名字不等于挂在组件树上。
  • component 不能像 transaction 一样随意 copy/clone。

关联知识

原文出处与已有面试题