UVM phase

由于想要实现事件发生的不同顺序,UVM提供了不同的phase,每个phase运行时间不一样。
常见phase及运行顺序:

不消耗仿真时间根据继承关系自顶向下
build_phase我们一般这里完成需要的对象实例化和资源的初始化

不消耗仿真时间根据继承关系自下而上
connect_phase完成端口的连接工作

消耗仿真时间根据继承关系自下而上
run_phase和12个小phase并行运行(如reset_phase、configure_phase、main_phase、shutdown_phase),一般复杂消耗时间的逻辑在这里运行。

objection

可以使用两种方法结束仿真,一种是调用$finish(),一种是通过UVM objection机制关闭。
objeciton机制需要我们在run_time的phase中raise一下objection,phase运行时会收集objection,如果objection被drop完或者没有raise objection会直接进入下一个phase中。

task main_phase(uvm_phase phase);
	......
	phase.raise_objection(this);
	#100;
	phase.drop_objection(this);
endtask

通常一般在sequence中使用来控制平台的关闭,通过设置为phase的default_sequence,设置时会自动将phase指针传入sequence,从而可以使用uvm_component方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值