跳转至

输入查询内容

    本页内容

    Phase / Objection / Event

    优先检查旧 uvm_test_done_objection:类仍可用,但 raise/drop 不再控制 run phase。常规 phase objection 与 phase_ready_to_end 入口保持;旧 stop 流程和 event 回调需要改写。TEST_DONE 日志、phase hopper 和新增查询接口按实际使用核对。

    建议阅读顺序

    先确认 run 能保持到激励与检查器完成,再处理旧停止流程、event 回调和日志解析。

    M03-003M03-002M03-001M03-004

    实际 phase.raise_objection激励完成与检查器排空对应 drop 与 phase 收尾

    目标库的旧 test_done 单例不再控制这条路径;对象仍能创建也不能据此判断运行时有效。

    用户接口与行为

    条目 修改方案
    M01-002 component kill/status 删除与进程收尾
    编译断点先按接收者类型确认旧 component 接口;正常收尾改用显式完成握手与成对 objection。复位重启等确需跳转的流程按 M03-002 / M03-009 设计目标 phase,并自行处理事务、锁和检查器状态。仅对用户自己管理的进程使用 process::kill ,同时释放相关资源。
    M03-001 event 回调改用 uvm_callbacks 注册和删除
    编译断点 其他行为变化确认接收者为 event 后替换注册/删除调用。旧 ev.add_callback(cb) 对应 uvm_callbacks#(uvm_event#(T), uvm_event_callback#(T))::add(ev, cb) ;旧 ev.add_callback(cb, 0) 表示插到队首,须显式传第三参 UVM_PREPEND 。删除用同一特化类型的 ::delete(ev, cb) 。核对回调顺序及 pre_trigger 的阻止触发返回值。
    M03-002 stop 机制整体删除:stop_phase / enable_stop_interrupt / stop_request / force_stop
    编译断点 其他行为变化把旧 stop_phase 中必须执行的收尾任务移到显式停止握手:停止产生新事务,等待在途事务与检查器排空,再成对 drop 实际 phase 的 objection。 end_prematurely() / jump() 会改变 phase 执行流程,不能自动完成这些任务;仅在确需提前结束或重启阶段时单独设计并验证。旧 stop_timeout 应改为握手超时检查,不能直接等同于整个测试的 set_timeout。
    M03-003 旧 test_done 不再保持 run 存活
    高风险 · 静默/数据检查 uvm_test_done 相关结束控制,保留 raise/drop 的配对、计数与收尾条件,改用实际 run_phase(uvm_phase phase) 参数调用 phase.raise_objection(this) / phase.drop_objection(this) 。 phase.get_objection() 返回 objection 对象,不是 phase 句柄;sequence 中需要由调用方传入 phase,或确认 get_starting_phase() 返回了所需的非空 phase。
    M03-004 TEST_DONE 消息移除
    日志/调试变化回归成功条件改为业务完成标志、预期事务数、检查器排空和错误结果同时满足。需要阶段时间戳时可观察 uvm_phase_cb::phase_state_change 的 UVM_PHASE_ENDED 状态;READY_TO_END 可能多次发生,report 总结也可能出现在异常终止路径,均不能单独代替成功判定。同步移除 TEST_DONE 日志匹配依赖。
    M03-005 uvm_phase::max_ready_to_end_iter 公共字段删除,改为访问器;get_ready_to_end_count() 删除
    编译断点 其他行为变化将 phase.max_ready_to_end_iter = n 改为 phase.set_max_ready_to_end_iterations(n),读字段改为 phase.get_max_ready_to_end_iterations()。旧 get_ready_to_end_count() 无等价公开替代;若它参与退出判断,改为明确的业务完成条件,若仅用于统计则在自己的回调中计数。
    M03-006 通过 get_objection() 获取 task phase 的 objection
    其他行为变化用 get_objection() 代替直接访问 phase_done 字段;不要假设其非空。
    M03-008 自定义 phase 图:新增位置参数与诊断变化
    日志/调试变化 其他行为变化原有合法的四参数 add 调用可保留。调整 phase 图时保持 with/after/start_with 互斥、with/before/end_with 互斥,新增参数使用命名实参避免位置混淆。日志解析将 PH_ADD_PHASE 更新为 PH_BAD_ADD,并验证前驱/后继的实际执行顺序。
    M03-009 phase.jump(null) 与跳转状态查询
    其他行为变化原本用 jump(null) 取消或结束运行的代码需改写:正常结束按 M03-003 释放实际 phase 的 objection,需要跳转时传入明确且合法的前驱/后继 phase。仅未激活节点的 set_jump_phase(null) 路径用于清除挂起状态;不要将其推广至激活节点。查询方向使用 is_jumping_forward()/is_jumping_backward(),提前结束状态使用 is_ending_prematurely()。
    M03-011 uvm_event#(T) trigger 默认数据机制:新增 set/get_default_data,reset 清数据
    高风险 · 静默/数据需要在 reset 后使用上一次数据时,在 reset 前读取并保存到用户变量;后续消费该变量,不再向已 reset 的 event 取旧值。若业务需要默认数据,显式设置 set_default_data 并按默认值语义读取;两种意图不能混用。
    M03-012 uvm_event 系 get_type_name() 返回值变化
    日志/调试变化按 get_type_name() == "uvm_event" 分支的代码,若目的是判断类型,改为向实际 uvm_event#(T) 句柄 $cast 并检查返回值;若仅用于日志展示,则接受目标输出 uvm_pkg::uvm_event#(T),更新字符串匹配。不要靠该字符串区分不同的 T。
    M03-014 objection trace(+UVM_OBJECTION_TRACE)消息格式变化
    日志/调试变化保留以 report ID 为入口的 trace 解析;旧依赖列位置的正则需加入位于操作数量之后、objection(s) 之前的 objection 名称字段,并避免将其当作对象路径。使用条目中的两版 trace 样本更新期望格式,核对 raise/drop 的对象、计数和 phase;统计不能依赖固定空格数。
    新增功能 · 2 项

    目标库新增的 API 和可选替代接口;已有用法的迁移要求列在用户接口与行为中。

    条目 修改方案
    M03-010 新增 phase 图查询 API:get_predecessors / get_successors / get_sync_relationships / get_objection_total
    新增/接口调整无。
    M03-013 uvm_queue::wait_until_not_empty() 新增;uvm_pool/uvm_queue/uvm_barrier 加入工厂注册
    新增/接口调整无。

    全部新增功能

    内部实现 · 1 项

    文件组织、内部数据结构与实现钩子的变化。直接依赖内部接口时查阅,普通 API 的使用不需要重审这些源码。

    条目 修改方案
    M03-007 新增 uvm_phase_hopper 类,phase 执行引擎从 uvm_phase 迁出
    其他行为变化无(仅当曾依赖 uvm_phase::m_run_phases 等 internal 接口时需改走 hopper)。

    全部内部实现

    VCS 定制说明

    VCS 定制说明

    以下对照用于区分 VCS 定制与 Accellera 参照;需要迁移的事项以关联条目的条件、改法和验证为准。

    定制项 两版状态 工程影响与入口
    Phase / Objection Verdi trace 联动 目标在 m_phase_trace 与 trace_mode 的追踪条件中保留 is_verdi_trace_aware_used,受 UVM_VERDI_NO_VERDI_TRACE 控制 相对 Accellera 的附加追踪逻辑;影响调试可见性,不能作为所有日志等价的依据。目标文件为 src/vcs-uvm-ieee-2020-2.0/src/base/uvm_phase.svhsrc/vcs-uvm-ieee-2020-2.0/src/base/uvm_objection.svh
    UVM_EVENT_CALLBACK_FIX 1.2 私有条件分支在目标移除/重写,旧库无默认 define Callback 参数类型和改法见 M03-001
    FGP 锁属性与 UVM_CREATE_OPT 1.2 存在的实现分支在目标不再沿用 FGP 条件见 M10-007,构造路径见 M09-003;不要求普通 phase/objection 调用单独改写。

    版本适用范围