【UVM_phase & objection_2024.03.08

phase

棕色:function phase 不消耗仿真时间
绿色:task phase 消耗仿真时间
run_phase与右边的phase并行执行,右边的phase(run_time phase)依次执行:
在这里插入图片描述

  1. List itemreset_phase对DUT进行复位,初始化等操作
  2. configure_phase则进行DUT配置
  3. main_phase主要完成DUT的运行,模拟各种现实DUT
  4. shutdown_phase则是做一些与DUT断电相关的操作
phase属于component,sequence属于objection,只有component有phase机制
在命令行可以使用+UVM_PHASE_TRACE来调试phase

build_phase

build_phase功能:
	创建UVM树,例化所有组件
	config_db:set,get interface
build_phase执行顺序:
	除了build和final_phase是自顶向下执行,其它都是自底向上执行
	深度优先原则:active_agent里执行完再执行passive_agent
	在agent里平级的driver、monitor和sequencer按开头字母先后执行

在这里插入图片描述

仿真顺序

在这里插入图片描述

objection

解决多个组件在同一个phase里面需要不同时间的需求
只有task phase里有objection
命令行使用+UVM_OBJECTION_TRACE来调试objection

使用规则:

若多个组件同时raise objection,此时以最长时间为准
一般sequence中raise and drop,driver中不会raise_objection,通常monitor也不会
当某一个组件的phase raise and drop了,别的组件该phase也会使用该raise and drop
run_phase与run-time phase并行执行,如果12个动态运行的phase有任意一个objection提起,那么run_phase也会自动执行,但如果run_phase里有objection提起,但12个小phase里没有任何objection提起,那么只有run_phase会运行,12个小phase不会运行
必须要有raise and drop才能执行耗时语句
virtual task shutdownn_phase(uvm_phase phase);
	super.shutdown_phase(phase);
	#1;//无有效时间,phase到该条直接退出,不会打印信息
	`uvm_info("case_0","shutdown_phase",UVM_MEDIUM);
endtask
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

iKUNqa

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

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

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

打赏作者

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

抵扣说明:

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

余额充值