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)等语句是要消耗仿真时间的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」