[UVM源代码研究] 如何通俗易懂的理解UVM环境的运行机制
引言
一直想从宏观一点的角度讲讲UVM环境从启动到运行的完整过程而不必拘泥于一些细枝末节的源代码实现,由于工作上比较忙一直没有静下心来好好研究研究,今天正好有时间决定着手边研究边写,其实一切的动机还是源自于作者本身对于phase机制的一些实现还不甚了解,就比如一些基本概念:
-
uvm_phase是个什么样的类?为什么我们实际搭建uvm环境的时候很少会用到,但是在实现phase方法的时候又需要传递一个uvm_phase类型的参数?这个参数究竟是做什么用的?
-
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

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

被折叠的 条评论
为什么被折叠?



