UVM验证平台的运行

phase机制

1.

在这里插入图片描述

task_phase消耗仿真时间,而function_phase则不消耗仿真时间。上图中的phase自上而下运行,其中灰色的部分为task_phase

最常用的是是build_phase、connect_phase和main_phase

2.

run_phase中的resetconfiguremainshutdown四个phase是核心,分别完成对DUT的复位、配置、运行和关闭等操作。

function_phase基本都是自下而上执行的,当然这不包括build_phase,因为这是自上而下执行的,而task_phase是并行执行的。

注意对于同一层次的component的build_phase是按照字符串名称的字典序进行执行的。

run_phase中自上而下启动并执行,即顺序同时启动,并行运行。

UVM中采用深度UVM树的遍历,同时按照字典序排序。
在这里插入图片描述

如上图如果i_agt实例化时是bbb,而scb为aaa,则会先执行scb的build_phase,再执行i_agt的build_phase,接下来是driver、monitor及sequencer的build_phase。如果要求scoreboard的build_phase晚于driver的build_phase执行,或者要求两者的顺序反过来,需要修改实例化名。

3.

virtual function void build_phase(uvm_phase phase);
	super.build_phase(phase);
	if(!uvm_config_db#(virtual my_if)::get(this, "", "vif", vif))
		`uvm_fatal("my_driver", "virtual interface must be set for vif!!!")
	`uvm_error("my_driver", "UVM_ERROR test")
endfunction

有时候用uvm_errror会更好,因为一样会像uvm_fatal那样退出,并且会一次爆出所有的错误,并停止仿真。这样可以提高debug的效率。

4

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值