[UVM源代码研究] 如何通俗易懂的理解UVM环境的运行机制

本文详细解析了UVM环境中phase机制的运行过程,从run_test()任务出发,追踪到phase方法的执行路径,包括m_run_phases(),execute_phase(),traverse(),execute_func()等关键步骤,帮助读者理解Phase调度和执行顺序。

[UVM源代码研究] 如何通俗易懂的理解UVM环境的运行机制

引言

一直想从宏观一点的角度讲讲UVM环境从启动到运行的完整过程而不必拘泥于一些细枝末节的源代码实现,由于工作上比较忙一直没有静下心来好好研究研究,今天正好有时间决定着手边研究边写,其实一切的动机还是源自于作者本身对于phase机制的一些实现还不甚了解,就比如一些基本概念:

  1. uvm_phase是个什么样的类?为什么我们实际搭建uvm环境的时候很少会用到,但是在实现phase方法的时候又需要传递一个uvm_phase类型的参数?这个参数究竟是做什么用的?

  2. phase机制我们虽然没有实例化uvm_phase实例,但是我们写的那些phase方法分别是在什么时候被调用的,uvm源代码是怎么实现phase机制的调度的?自顶向下、自下向上调用这些phase方法是如何实现的?

本文试图从宏观角度搭配一些简单的代码截图,浅显易懂的将上述几个问题讲述明白,想要具体了解实现机理,可以参考之前写过的一篇关于UVM的PHASE机制的文章:[UVM源代码研究] 浅谈UVM PHASE机制的运行

UVM源代码溯源

我们在 [UVM源代码研究] 当我们在tb里调用run_test()时uvm环境是如何启动的 一文中讲述了UVM验证环境是如何从run_test()任务启动的,其中关于下图1中的m_run_phases()这个任务并没有展开讲解,而UVM中的PHASE机制就是在m_run_phases()中实现的。

图1

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值