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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 650|回复: 4

[求助] 为什么需要uvm_root?

[复制链接]
发表于 2024-2-28 14:31:08 | 显示全部楼层 |阅读模式

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

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

x
组件最顶层直接是uvm_test_top不行吗?
 楼主| 发表于 2024-2-29 19:55:31 | 显示全部楼层
诺大的吧,没人了解吗
发表于 2024-3-1 16:14:04 | 显示全部楼层
本帖最后由 meistin 于 2024-3-1 16:30 编辑


zhuimeng2020 发表于 2024-2-29 19:55
诺大的吧,没人了解吗


uvm_test_top是所有testcase(testcase的声明不需要用户主动完成,原代码在uvm_root的run_test里自动实现的)的唯一实例,这些testcase都是从uvm_test继承而来,uvm_test又是从uvm_component继承而来。uvm_root也是从uvm_component继承而来的,他是个特殊的类,uvm_root有且只有一个实例就是uvm_top(单例模式),uvm原代码里把他设置成了一个全局变量。
UVM原代码的入口是调用uvm_root中的run_test()方法,这个在uvm原代码里被设成了一个全局方法,所以我们可以在module里通过initial beign end调用,前提是必须import uvm_pkg::*;
run_test()想要运行起来肯定要依托类的实例,这个类就是run_test()所在的类uvm_root,而这个实例就是uvm_top。
run_test()里又根据我们跑的仿真用例UVM_TESTNAME创建了具体的testcase实例uvm_test_top,所以说uvm_test_top也有父节点就是uvm_root(uvm_top),但是我们在树形结构里一般会把uvm_test_top作为树根而不把uvm_root计算在内,所以我们在uvm_config_db::set的时候第一个参数可以有三种写法:


1、null   (空)
2、uvm_root::   (用类引用)
3、uvm_top   (用类的实例引用)

下面这篇文章介绍的也比较清楚,可以参考一下:
https://zhuanlan.zhihu.com/p/567466742
 楼主| 发表于 2024-3-1 17:34:22 | 显示全部楼层


meistin 发表于 2024-3-1 16:14
uvm_test_top是所有testcase(testcase的声明不需要用户主动完成,原代码在uvm_root的run_test里自动实现 ...


懂了,很清楚,感谢~
发表于 2024-3-10 00:08:31 | 显示全部楼层
我以前记得笔记:




  1. uvm_root,一个类
  2. 一般这样用:uvm_root:get()

  3. uvm_top,一个对象,类型是uvm_root
  4. uvm_top.set_timeout(100)
  5. uvm_top.find('xxx')
  6. uvm_top.get()

  7. 全局对象,直接访问就可以了
  8. reporter.set_report_id_verbosity("TEST_DONE", UVM_NONE);


复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-18 22:46 , Processed in 0.019384 second(s), 7 queries , Gzip On, Redis On.

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