微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > UVM构造函数new的疑问,困扰一周了,先谢谢了

UVM构造函数new的疑问,困扰一周了,先谢谢了

时间:10-02 整理:3721RD 点击:

各位验证高手,代码如下:

class test1 extends uvm_test;

`uvm_component_utils(test1);

env t_env;
function
new (string name="test1", uvm_component parent=null);
super.new (name, parent);
t_env = new("t_env",this);
endfunction : new
问题:
类型 uvm_component parent 为什么是 null?之后又 调用父类 super构造函数
super.new (name, parent) 这里面的parent是空NULL吗?我的理解调用父类构造函数new,其参数parent=NULL,为什么这里给
要赋给NULL?什么条件下给NULL?

你去看看uvm source code,关于uvm_component的new怎么写的就知道了

test是整个test bench的顶层,它没有parent,所以这里给null。在new里面传递parent,主要是建立component的树状图,方面uvm_config_db使用。

参照uvm文件: uvm_conponent.svh
virtual class uvm_component extends uvm_report_object;
// Function: new
//
// Creates a new component with the given leaf instance ~name~ and handle to
// to its ~parent~.If the component is a top-level component (i.e. it is
// created in a static module or interface), ~parent~ should be null.
//
// The component will be inserted as a child of the ~parent~ object, if any.
// If ~parent~ already has a child by the given ~name~, an error is produced.
//
// If ~parent~ is null, then the component will become a child of the
// implicit top-level component, ~uvm_top~.
//
// All classes derived from uvm_component must call super.new(name,parent).
extern function new (string name, uvm_component parent);

//----------------------------------------------------------------------------
// Group: Hierarchy Interface
//----------------------------------------------------------------------------
//
// These methods provide user access to information about the component
// hierarchy, i.e., topology.
//
//----------------------------------------------------------------------------
// Function: get_parent
//
// Returns a handle to this component's parent, or null if it has no parent.
extern virtual function uvm_component get_parent ();

thanks!

function new (string name="test1", uvm_component parent=null);
这里的name = "test1", parent = null, 意思是参数默认值取这些。
所以你可以不传任何参数去调用这个new函数,此时new函数的参数就是test1和null的默认参数。
这只是写法问题,实际上uvm_component的构造基本都会传参数进去,至少parent肯定是需要传进去的。
当然也有例外,如不传parent,默认是null。UVM会把parent = null的component,将其parent设为uvm_top(uvm_root),如test就是通过这种方法来设定parent的。

请先把形参实参先搞清楚。建议很学systemverilog

谢谢谢谢谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top