UVM-Objection机制

本文探讨了UVM中的objection机制,强调在main_phase等task phase中的使用,解释了为何需要objection来控制仿真结束。推荐在sequence而非driver或monitor中控制objection,并介绍了set_drain_time的重要性,确保DUT有足够时间响应最后的transaction。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

objection与task phase

        object字面意思是“反对”,通过drop来通知系统关闭验证平台,drop之前一定要先raise。

代码一:

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

        当一个phase中所有objection都已经撤销后,就会关闭此phase进入下一个phase,当所有phase执行完毕后,就会调用$finish来将整个验证平台关掉。

代码二:

task driver::main_phase(uvm_phase phase); 
    phase.raise_objection(this); 
    #100; 
    phase.drop_objection(this); 
endtask 
task monitor::main_phase(uvm_phase phase); 
    while(1) begin 
...... 
    end 
endtask

        如果main_phase中没有raise和drop,即没有任何objection被提起,那么他会直接跳转到post_main_phase,此时假设进入main_phase的时刻为0,那么进入post_main_phase的时刻也是0。如果想要执行一些耗费时间的代码,那么要在此phase下任意一个component中至少提起一次objection。

        以上结论只适用于12个run-time的phase,不适用于run_phase。run_phase与动态运行的ph

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值