You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UVM基础结构:子类new函数的作用及父类来源咨询

UVM中new函数的作用与父类溯源

为什么每个UVM组件类都要写这个new函数?

UVM的核心组件(比如uvm_test、uvm_agent、uvm_driver这类)全部继承自uvm_component,而uvm_component的构造函数强制要求两个参数:string name(组件名称,用于UVM层次结构的唯一标识)和uvm_component parent(父组件指针,用来搭建验证环境的组件树层级)。

在SystemVerilog语法规则里,子类如果要继承带参数的父类构造函数,必须显式定义自己的构造函数并调用父类的构造函数——这就是你看到几乎每个UVM类都有这段new函数代码的原因。哪怕你不需要在自定义组件的new里添加任何额外逻辑,也必须这么写,否则编译会直接报错。

父类中new函数的定义与来源

  • 根源是uvm_component类,它的构造函数定义在UVM标准库的uvm_component.svh文件中,原型如下:
function uvm_component::new(string name="", uvm_component parent=null);

这个函数负责初始化组件的基础属性,比如把组件注册到UVM的层次结构中、设置父组件指针等核心操作。

  • uvm_test本身是uvm_component的子类,它的构造函数完全继承自uvm_component,没有额外重写逻辑——所以你调用super.new(name, parent)时,本质上就是调用uvm_component的构造函数。

另外补充:你代码里的uvm_component_utils宏是用来把组件注册到UVM工厂的,工厂在创建组件实例时,会自动调用这个符合参数要求的new函数,二者是配合使用的关系。

内容的提问来源于stack exchange,提问作者Derick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:42:33