第八段:Phase的使用

在这里插入图片描述

1)基础用法:
常用的是四种phase
build_phase中定义初始化相关的代码。
Connect_phase中定义componet的连接代码。
Run_phase中定义主程序。
Report_phase中定义打印相关的代码。
2)项目升级用法:与上一致。
3)底层原理分析
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

Phase按照是否消耗仿真时间一共分为2种,一种是function phase,如:build phase,connet phase等,另一种是task phase,如run_phase等。如图所示:
在这里插入图片描述

Run_phase和其他12个小phase并行运行。Uvm中Task都是自上而下运行,function都是自下而上运行的。然而这只适用于uvm树中有直系关系的component,对于同一层次的component,则是按照字典顺序,字典顺序则根据new时定义的名字。
uvm中采用的是深度优先原则。
代码中同样出现了super.phase等语句,如:在build_phase中,如果没有调用config中get函数,这可以不写该代码。其他雷同,假如没有用到父类定义的东西,则可不加。
Run_phase与main_phase在日常其实可以等效使用,只是要注意它们运行机制差别,还有是run_phase不需要强制写raise_objection,main_phase等小task则强制需要,否则会无法运行。小phase有一个写了raise_ objection,则run_phase不需要再写。
Phase流程:
add_uvm_phases和uvm_domain中定义了许多数组,用来存放定义的phase。
在m_run_phase()中调用了execute_phase执行之前定义的数组。
Raise_phase的实现是内部掉用了raise以及回调。
在这里插入图片描述

此外还有phase的跳转,遇到uvm_error退出等等,目前项目中未使用到,故不在论述。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱吃辣椒的年糕

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

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

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

打赏作者

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

抵扣说明:

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

余额充值