objection

返回知识网络总入口 · 运行与激励

核心结论

objection 表示某 task phase 仍有工作未完成,由能判断整个场景完成的拥有者成对 raise/drop,防止提前退出或永久挂起。

关键机制

  • 对同一 phase 保持 source/计数配对,各阶段独立。
  • test 或顶层 virtual sequence 常适合作为拥有者,永久驱动/观测循环不适合。
  • 最后 item 后 DUT/scoreboard 仍可能未排空,应等明确完成条件。
  • drain time 留尾部处理时间,固定延时不证明完整性。
  • 教材 starting_phase 有版本背景,手动 start 不一定自动赋有效阶段。

小例子或流程

// test运行阶段片段
phase.raise_objection(this);
seq.start(env.agt.sqr);
wait (env.scb.all_done); // 平台实现:预期结果齐全且未决项清空
phase.drop_objection(this);

以独立 timeout 处理缺失响应,避免无限等待。

易错点

  • 无法退出的 forever 会让 drop 不可达。
  • 子 sequence 的 pre_body/post_body 可能被跳过。
  • +UVM_OBJECTION_TRACE 定位持有者,区分漏 drop 与 drop 太早。

关联知识

原文出处与已有面试题