在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 18530|回复: 16

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

[复制链接]
发表于 2016-3-19 11:35:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 mil818 于 2016-3-19 11:52 编辑

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


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?
发表于 2016-3-19 16:30:56 | 显示全部楼层
你去看看uvm source code,关于uvm_component的new怎么写的就知道了
发表于 2016-3-21 16:10:49 | 显示全部楼层
test是整个test bench的顶层,它没有parent,所以这里给null。在new里面传递parent,主要是建立component的树状图,方面uvm_config_db使用。
发表于 2016-3-21 19:03:06 | 显示全部楼层
参照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 ();
发表于 2016-4-12 19:18:25 | 显示全部楼层
thanks!
发表于 2016-4-13 11:20:51 | 显示全部楼层
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的。
发表于 2016-7-18 18:09:31 | 显示全部楼层
请先把形参实参先搞清楚。建议很学systemverilog
 楼主| 发表于 2017-1-19 10:33:08 | 显示全部楼层
谢谢谢谢谢谢
发表于 2018-7-17 20:37:37 | 显示全部楼层
回复 1# mil818

yes
发表于 2018-7-20 14:28:45 | 显示全部楼层
先搞清楚systemverilo语法或者c语言的语法再过来
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-22 22:54 , Processed in 0.029183 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表