UVM中的get_type_name(),get_name(),get_full_name()方法

目录

1、简明解析

2、举个栗子


1、简明解析

get_type_name(),get_name(),get_full_name()

首先需要明确的是,在工厂注册机制下,get_type_name(),get_name()在component组件类和object基类中的返回值是一样的,而get_full_name()在不同类型的类中,会有不同的返回值。

  • get_type_name():返回对象的class名;
  • get_name():返回创建对象时,传入的字符串;
  • get_full_name():在component类会返回当前component组件的完整路径,在object类的返回值与get_name()一样,因为object类不是作为UVM树节点的,所以路径没有别的层次。

2、举个栗子

比如在UVM验证平台中,我们在这样的一个 uvm_component class中调用这几个函数,代码如下:

class my_comp1 extends uvm_component;
    …
    $display(“%0s”,get_name());

    $display(“%0s”,get_full_name());

    $display(“%0s”,get_type_name());
    …
endclass

将上述class在env中进行例化:

class my_env extends uvm_env;
    …
    my_comp1 my_comp1_inst;
    …
    function void build_phase (uvm_phase phase);

        my_comp1_inst = my_comp1::type_id::create(“this_is_my_comp1_inst”,this);

    endfunction
    …
endclass

my_env例化在my_test中名为my_env_inst:

class my_test extends uvm_test;
    …
    my_env my_env_inst;
    …
endclass

如上代码中my_comp1中调用的函数

  • get_name() 会打印出:“this_is_my_comp1_inst”。

就是创建对象时,my_comp1_inst = my_comp1::type_id::create(“this_is_my_comp1_inst”, this);传进去的字符串!使用my_comp1_inst = new(“this_is_my_comp1_inst”)方式写进去的字符串也是一样的效果。

  • get_full_name()会打印出:“uvm_test_top.my_env_inst.this_is_my_comp1_inst”。

打印出的是路径名字,这里要注意路径的开头是:“uvm_test_top”。打印的路径不是从UVM树根开始的,而是是树根的下一级uvm_test_top。(树根路径对应“__top__”)

  • get_type_name()会打印出:“my_comp1”。

对于uvm_component,这个get_type_name(),就是class的名字。

  • 40
    点赞
  • 162
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小wang的IC自习室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值