uvm中set_drain_time()的用法

发布时间 2024-01-09 16:36:27作者: IVY_Liu

任何模块都有其处理延时,比如:

 在p时刻DUT输出才有数据,同时当DUT输入完成时,n+p时刻,DUT输出才完成。

 

在UVM中,针对run time phase, 如果在发送完激励后立即drop_objection会导致很多问题(比如DUT输出还未结束就结束仿真了),为解决这一问题,可以在每个run time phase中使用set_drain_time去设置当drop_objection后delay 一段时间再跳入到下一个phase.

  首先需要了解,uvm的phase机制中,run_phase与12个run time phase是并行的。

  当run time phase有objection被提起,run_phase不需要raise_objection就可以自动执行。(tb里面driver 和monitor/scb 一般用run_pahse,test里面用  main_pahse去raise/drop objection,仿真时间由main_phase去控制)。

Q: 如果在run_phase中不raise_objection,但是set_drain_time,当12个run time phase全部执行完毕,run_phase中的drain time是否会起作用?

答案是No

 

 set drain time 的用法:

 注 :1、只要在drop_objection之前set_drain_time都是有效的。

          2、每个phase对应一个drain time。