篇2-uvm tb的运转&run_test
参考资料:
(1) uvm中run_test | 骏的世界 (lujun.org.cn)
(2) 从run_test浅谈Test Bench的启动 (qq.com)
1. run_test
(1) run_test是uvm_globals.svh中定义的一个task,用于启动UVM.
2. 调用uvm_root.run_test
(1)在run_test内,会先获取uvm_root的实例,然后调用其run_test函数,传入test_name的名字.
3. class uvm_coreservice_t
4. uvm_root
5.uvm_root.run_test
(1) 初始化objection;
(2) 设置testcase的name,从cmdline获取+UVM_TESTNAME参数.如果有,将来使用第一个参数设置的值.如果cmdline没有设置UVM_TESTNAME,使用传入的testname.
(3) 根据test_name,调用工厂函数create_component_by_name,创建testcase的实例,并且赋值给uvm_test_top,因此对于UVM环境,顶层的testcase将来都会变成uvm_test_top;
(4) m_children是uvm_component中内建的变量,保存该类包含哪些子类;当一个子类,通过UVM的工厂机制创建类实例后,会往其父类的m_children中加入该类对象;而testcase的父类就是uvm_root,因testcase被工厂机制创建实例之后,会将往uvm_root的m_children中加入该testcase的类对象,此时m_children的个数就不为0。
(5) 判断创建的实例是否成功;
(6) 通过process类,保存进程号,启动uvm phase。此处用fork join_none,父进程就不必等子进程结束,就可以退出。#0,父进程休眠,其他进程得到调度,使其他phase的runner得到运行。
(7) 最后等待uvm的phase结束.结束之后.将创建的所有子进程杀掉.调用report.打印(l_rs.report_summarize,格式可以见仿真log末尾部分).最后调用$finish结束仿真。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?