tomako123

导航

2.2.3 加入objection机制

先分析前面的:

上一节中虽然输出了"main_phase is called",但是"data is drived"并没有输出。但是既然进入了main_phase,应该会把这一整个任务执行完成才对,但是这里好像在执行的过程中被外力kill掉了?

UVM中通过objection来控制验证平台的关闭

在上一节中并没有调用finish语句,但是在运行到一半的时候仿真平台确实关闭了。

这是因为在每个phase中,UVM会检查是否会有objection被提起 
(raise_objection),
如果有,那么等待这个objection被撤销(drop_objection)后停止仿真
如果没有,则马上结束当前phase

加入了objection机制的driver代码如下:

可以看到整个main_phase被包含在14行起objection和28行起objection之间,这样就能确保整个phase能执行完成。

其中raise_objection必须在main_phase中第一个消耗仿真时间的语句之前。
比如$display语句是不消耗仿真时间的,这些语句可以放在raise_objection之前
但是如果是@(posedge top.clk)等语句是要消耗仿真时间的。

posted on 2024-05-16 14:30  甜豆莎的辣白菜  阅读(1)  评论(0编辑  收藏  举报