- 开始迁移
- 迁移清单
迁移清单
状态保存在当前浏览器。不适用请注明原因;待验证表示已修改或已确定处理方案;已验证应附测试结果或证据位置。勾选框等同于“已验证”。导出后可在其他浏览器导入,导入会替换当前清单记录。
按 UVM-1.2 用户接口的变化执行与记录迁移。 每项通过稳定条目 ID 关联具体改法、适用条件和验证证据。 修订日期:2026-09-15 | 目标版本:VCS W-2024.09-SP2-8 内置
uvm-ieee-2020-2.0
0. 使用说明
按以下两阶段执行:
- 阶段 1(跑通且结果可信):完成编译改造和关键静默失效点核销,再对齐回归。按实际依赖使用 deprecated、legacy field 开关或 compat 包,也可直接改写。
- 阶段 2(收敛兼容依赖):逐步消除实际使用的 deprecated、legacy field 或 compat 依赖;主库保留且行为符合需求的接口可继续使用,无需仅为改名替换。阶段 1 不得以“仿真零报错”替代激励、检查器和结果有效性验证。
HTML 为每个用户接口主条目提供独立状态与证据。原 C/S/D 规则和步骤继续保存;一条规则关联多个差异时,各差异仍分别核销。旧版导入记录恢复到原规则或步骤,不自动将关联条目标记为已验证。
扫描器:tools/uvm_migration_scan.py,与同目录的 uvm_migration_scan.yaml 配套,自动读取团队配置;需要 uv 和 PyYAML(仓库已固定依赖):
扫描不需要加载 EDA 环境。默认保存 JSON、CSV 及扫描范围摘要;上例在 YAML 的 output_dir 下生成 migration-report.json、migration-report.csv、migration-report.summary.json。默认不按文件后缀过滤,团队统一维护的排除项、去注释范围、兼容声明和豁免项从脚本同目录的 uvm_migration_scan.yaml 自动加载。输出按规则 ID(C/S/D 系列)分组,C10 细分为 a/b/c;它们映射到正文条目,跨章条目不一定一对一。退出码 1 表示有未过滤命中,2 表示配置、输入、读取或输出失败。使用兼容或豁免过滤时,同时核对 JSON/CSV 中保留的 suppressed 项及摘要,不将过滤等同于核销。
注意:扫描器提供嫌疑点,命中需人工核对类型、作用域和预处理分支;零命中不证明兼容。静默失效必须通过行为检查验证,不能仅以无编译或仿真报错核销。S5 是兼容字段提示、S10 是调试输出变化,均不计入静默/数据风险。
按差异条目记录
每个用户接口主条目单独保存状态与证据。原 C/S/D 规则及步骤记录保留在下方;它们不会自动将关联条目标为已验证。旧版导入数据中的规则和步骤仍恢复到原位置,未包含的条目保持未检查。
Object / Factory
-
M01-001 事务开始/结束事件改用 get_event_pool() · 命中后修改 · C2
-
M01-004 自定义 factory 子类需要补充虚方法 · 命中后修改 · C12
-
M01-005 copy(null) 现在计为错误;普通 copy 调用可保留 · 按条件核对 · S25
-
M01-008 run_test、pre_abort 与命令行配置的执行顺序 · 按条件核对 · S37
-
M01-009 自定义打印、比较与录制:检查策略状态和输出 · 按条件核对 · S27
-
M01-010 工厂 name 覆盖延迟解析:TYPNTF 由 set 时推迟到 create 时 · 按条件核对 · S26
-
M01-012 transaction 开始录制与组件回调的参数变化 · 按条件核对 · C26
-
M01-014 自定义 coreservice:新增虚方法与初始化时机 · 命中后修改 · C23
-
M01-015 组件配置与 transaction database 改用访问器 · 命中后修改 · C17
-
M01-016 callback 注册与重复 catcher 调用次数 · 按条件核对 · S23
-
M09-003 工厂创建的对象需要带 name 参数的构造函数 · 命中后修改 · C6 / D15
Comparer / Printer / Packer / Recorder
-
M02-001 pack 位流格式改变:检查外部接收端与历史数据 · 按条件核对 · S6 / S44
-
M02-002 uvm_packer 状态存取 API 重命名与签名变更 · 命中后修改 · C18
-
M02-003 删除无效的打印宽度配置,使用 printer 访问器 · 命中后修改 · C1
-
M02-004 打印整数时显式传位宽,避免把 UVM_HEX 当宽度 · 命中后修改 · C13 / S16
-
M02-005 自定义比较:检查类型设置和不匹配消息数量 · 按条件核对 · S8 / C28
-
M02-006 uvm_printer emit() 必须配 flush(),新增 UVM/PRINT/NO_FLUSH 检查 · 按条件核对 · S27
-
M02-007 自定义 recorder 的对象递归与文本输出 · 按条件核对 · S27
-
M02-008 uvm_tree_printer.newline 字段私有化;uvm_table_printer::calculate_max_widths 删除 · 命中后修改 · C19
-
M02-012 重写 recorder、stream、database 方法时同步句柄类型 · 按条件核对 · C26
-
M02-016 旧数组录制上限失效:显式控制记录项数 · 按条件核对 · D13
-
M02-017 旧录制取时开关失效:明确事务时间契约 · 按条件核对 · D14
Phase / Objection / Event
-
M01-002 component kill/status 删除与进程收尾 · 命中后修改 · C3
-
M03-001 event 回调改用 uvm_callbacks 注册和删除 · 命中后修改 · C4
-
M03-002 stop 机制整体删除:stop_phase / enable_stop_interrupt / stop_request / force_stop · 命中后修改 · C3
-
M03-003 旧 test_done 不再保持 run 存活 · 命中后修改 · S2
-
M03-004 TEST_DONE 消息移除 · 命中后修改 · S36
-
M03-005 uvm_phase::max_ready_to_end_iter 公共字段删除,改为访问器;get_ready_to_end_count() 删除 · 命中后修改 · C20
-
M03-006 通过 get_objection() 获取 task phase 的 objection · 按条件核对 · C20
-
M03-008 自定义 phase 图:新增位置参数与诊断变化 · 按条件核对 · S36 / S37
-
M03-009 phase.jump(null) 与跳转状态查询 · 按条件核对 · S28
-
M03-011 uvm_event#(T) trigger 默认数据机制:新增 set/get_default_data,reset 清数据 · 按条件核对 · S29
-
M03-012 uvm_event 系 get_type_name() 返回值变化 · 命中后修改 · S36
-
M03-014 objection trace(+UVM_OBJECTION_TRACE)消息格式变化 · 命中后修改 · S36
Reporting / 命令行
-
M04-001 消息宏重写:新增 UVM_NO_ACTION 短路检查 · 按条件核对 · S7
-
M04-002 uvm_report_warning/uvm_report_error 默认 verbosity 改为 UVM_NONE · 按条件核对 · S30
-
M04-003 非 INFO 消息不再做 verbosity 过滤 · 按条件核对 · S30
-
M04-004 旧全局配置、timeout 和 stop 函数需要改写 · 命中后修改 · C10a / C10c
-
M04-005 删除:reporting 类中的 deprecated 方法 · 命中后修改 · C10b
-
M04-007 report_summarize 签名与文件路由行为变化 · 按条件核对 · S31
-
M04-008 UVM_FILE 相关常量值变化(UVM_STDOUT=1 → 32'h8000_0001) · 按条件核对 · S31
-
M04-009 消息时间戳默认由 $time 改为 $realtime · 按条件核对 · S36
-
M04-011 get_arg_matches 重用统一匹配接口,/regex/ 仍保留正则语义 · 按条件核对 · S41
-
M04-014 report hooks 与 1.1d-compat 方法在 2.0 保留且不再受 UVM_NO_DEPRECATED 控制 · 无需改动 · 无扫描规则
-
M04-016 删除:uvm_vector_to_string;uvm_cmdline_proc 由 const 变为可写 · 命中后修改 · D7
-
M04-018 +uvm_set_config_int 宽值经 32 位字符串转换被截断 · 命中后修改 · S18
-
M04-019 +UVM_STACKTRACE 不再输出报告调用栈(S10) · 命中后修改 · S10
Config DB / Resource DB
-
M01-007 禁用自动字段配置:旧开关改为组件方法 · 命中后修改 · D5
-
M05-001 uvm_resource#(T) 自管理接口 set() / set_override() / get_by_name() / get_by_type() 被删除 · 命中后修改 · C7
-
M05-002 资源构造 scope 仍有效;对象 set() 删除后改由 pool 入池 · 命中后修改 · C7
-
M05-003 uvm_config_db#(T)::set 改进非空 context 下 /regex/ 拼接,优先级来源改为 coreservice · 按条件核对 · S42
-
M05-004 resource precedence 的设置时机与保留写法 · 按条件核对 · S5 / S15
-
M05-005 uvm_resource_pool 重构:set 系列改名 set_scope/set_override,新增 get_scope/delete 等 API · 按条件核对 · S15
-
M05-008 自定义 resource_converter 已删除 · 命中后修改 · D10
-
M05-010 resource_db::get_by_name 在 2.0 可能选中较低优先级资源(S11) · 命中后修改 · S11
-
M05-011 资源特化类删除返回子类型的静态 get_by_name/get_by_type · 命中后修改 · C16
-
M05-012 Resource DB 追踪需显式开启 · 按条件核对 · S41
Sequence / Sequencer
-
M06-001 内置 sequence 库整体删除(uvm_random_sequence / uvm_exhaustive_sequence / uvm_simple_sequence) · 命中后修改 · S1 / D11
-
M06-002 字符串 default_sequence 不再启动激励 · 命中后修改 · S1
-
M06-003 uvm_sequence_base 废弃的 sequence-library 方法删除 · 命中后修改 · C22
-
M06-004 不要直接 new sequence/sequencer 抽象基类 · 命中后修改 · C8
-
M06-007 自定义 sequence 仲裁函数改用 int 签名 · 命中后修改 · C14
-
M06-008 响应队列溢出默认不报错,需要显式开启 · 按条件核对 · S17
-
M06-009 UVM_SEQ_ARB_TYPE typedef 默认不可用 · 命中后修改 · C21
-
M06-011 多个 sequence 同时 lock 时授权顺序改变 · 按条件核对 · S34
-
M06-012 driver 等待请求时 kill sequence:核对后续仲裁 · 按条件核对 · S34
-
M06-013 sequence.kill() 清理仲裁请求、锁与路由,保留已排队响应 · 按条件核对 · S34
-
M06-014 starting_phase 的直接赋值与锁定限制 · 按条件核对 · C21
-
M06-017 sequence_library 的选择边界与类型名 · 按条件核对 · S20
-
M06-019 uvm_push_sequencer 未消费被 peek 的请求,第二笔激励失败 · 命中后修改 · S19
-
M09-004 uvm_do* 动作宏:约束、sequencer 与优先级的迁移 · 命中后修改 · C5
-
M09-005 旧 sequence 注册宏改为 object/component 注册 · 命中后修改 · D1
RAL(寄存器模型)
-
M07-001 寄存器 path 类型更名,旧别名仍可使用 · 按条件核对 · 无扫描规则
-
M07-002 get_local_map/get_default_map 移除 caller 调试形参(含 Xcheck_accessX) · 命中后修改 · C9
-
M07-003 uvm_reg_backdoor 变为抽象类;wait_for_change 由 local 变 public · 命中后修改 · C25
-
M07-004 内置复位测试按 has_reset() 跳过字段 · 按条件核对 · S32
-
M07-005 后门访问告警:not contained within map 'Backdoor' · 按条件核对 · S38
-
M07-006 内置 reg/mem sequence 的随机数据序列变化 · 按条件核对 · S38
-
M07-007 get_access() 返回的访问权限字符串变化 · 按条件核对 · S33
-
M07-011 uvm_mem::get_addresses 增加越界检查 · 按条件核对 · S39
-
M07-012 uvm_reg_predictor:type_name 由静态变量改为静态函数;新增 flush() · 命中后修改 · C27
-
M07-013 类抽象性调整(uvm_reg/uvm_reg_block/uvm_reg_file/uvm_reg_cbs 去 virtual;uvm_vreg_cbs/uvm_vreg_field_cbs 加 virtual) · 命中后修改 · C25
-
M07-014 静态按名查找函数去 m_ 前缀(m_get_reg_by_full_name / m_get_field_by_full_name) · 命中后修改 · C24
-
M07-018 uvm_reg_array / uvm_reg_array_md 文件删除(UVM_SPARSE_ARRAY 扩展终止) · 命中后修改 · D3
-
M07-019 uvm_reg_address_config 与 get_registers_filtered_by_address 移除(UVM_REG_ENABLE_ADDRESS_EXCLUSION 扩展终止) · 命中后修改 · D4
-
M07-020 大端 map 的整宽反转可能破坏数据,单拍也受影响(S13) · 命中后修改 · S13
-
M07-021 支持 byte enable 的相邻字段访问仍可能退化为整寄存器访问(S14) · 命中后修改 · S14
-
M07-022 失败访问不再更新寄存器镜像,新增 PREDICT_NOK 提示 · 按条件核对 · 无扫描规则
-
M07-023 后门编解码可能失效:同时检查硬件值与读回值 · 命中后修改 · S22
-
M07-024 predictor 仅继承首拍 status,后续拍失败仍可能更新镜像(S24) · 命中后修改 · S24
-
M07-025 私有 reg-bank 覆盖率改为构造时声明 · 按条件核对 · D6
TLM
-
M08-001 uvm_tlm_fifo::flush() 不再向 get_ap 广播,VCS 两项队列实测存在残留(S9) · 命中后修改 · S9
-
M08-002 uvm_tlm_generic_payload::do_compare() 全面重写 · 命中后修改 · S12
-
M08-003 uvm_tlm_generic_payload do_pack/do_unpack 无条件打包 m_dmi,打包流布局变化 · 命中后修改 · S6 / S44
-
M08-004 派生 TLM FIFO 的字段自动配置默认停止 · 按条件核对 · S35
-
M08-005 kill 阻塞 get 进程后,FIFO 的 can_get() 恢复 · 按条件核对 · 无扫描规则
-
M08-006 TLM2 socket 基类全部改为 virtual class · 命中后修改 · C25
-
M08-007 uvm_tlm_time 更名 uvm_time,文件同步更名,库内保留 typedef · 按条件核对 · D9
-
M08-008 TLM 组件的工厂创建与类型名 · 按条件核对 · S36
-
M08-009 TLM 接口未实现错误消息文本变化 · 按条件核对 · S43
-
M08-011 port.get_connected_to / get_provided_to 返回容器改为 port 句柄 · 命中后修改 · C15
Field Automation / 版本宏
-
M04-013 uvm_object_globals 字段标志位重构 · 命中后修改 · S3
-
M09-002 uvm_field_* automation:显式启用需要的字段操作 · 命中后修改 · S3
-
M09-006 注册宏的 type_name 改为函数形式 · 按条件核对 · C27
-
M09-007 废弃开关极性翻转:UVM_NO_DEPRECATED(opt-out)→ UVM_ENABLE_DEPRECATED_API(opt-in) · 按条件核对 · D2
-
M09-008 版本宏与版本字符串的迁移 · 命中后修改 · S4
-
M09-015 字段自动配置的查询模式与操作位宽 · 按条件核对 · S40
Component / VCS 集成
-
M10-001 uvm_driver 新增 seq_item_port 未连接告警(DRVCONNECT) · 按条件核对 · 无扫描规则
-
M10-003 抽象组件的工厂注册与 type_name 使用 · 按条件核对 · C27
-
M10-006 正则接口与缓存:删除的调试 API 和匹配风险 · 命中后修改 · S21 / D7
-
M10-007 旧 FGP 类与集成文件已删除 · 命中后修改 · D8
-
M10-008 Verdi native_dumping 录制文件已删除 · 命中后修改 · D8
直接依赖内部实现时核对(保留原记录)
直接依赖下列实现时才需核对。保留原 M ID 的状态与备注,旧数据仍可导入、导出。
1. 阶段 0:预检(按实际代码规模安排)
- 0.1 对全量环境代码跑扫描器,归档 JSON、CSV 和扫描摘要,核对有效配置、跳过路径、过滤项及各条目命中数
- 0.2 确认工程实际使用 VCS 内置 UVM-1.2,并保存编译日志中的库路径与版本字符串
- 0.3 建立回归基线:1.2 库下全量回归全绿,归档日志(后续比对用)
- 0.4 归档当前编译脚本中的 define/plusarg 列表(阶段 1 要改)
- 0.5 按用户接口变化总览和模块正文检查 API、宏与行为,包含公开虚方法扩展;扫描没有覆盖的用户行为按条目验证。
2. 阶段 1:构建与编译改造(2.0 库)
2.0 构建开关切换
- 1.0.1 库加载从
-ntb_opts uvm-1.2改为-ntb_opts uvm-ieee-2020-2.0(必须写全名:简写-ntb_opts uvm-ieee实际是 1800.2-2017 库、-ntb_opts uvm-ieee-2020是 2020-1.1 库,VCS UG 示例用的就是简写,勿照抄;见版本与兼容指南) - 1.0.2 需暂留 deprecated 旧写法时,加
+define+UVM_ENABLE_DEPRECATED_API(恢复uvm_do_with等 15 个宏);也可直接按映射改写;改法与验证:M09-004。 - 1.0.3 移除已失效/有害的 define:
UVM_NO_DEPRECATED(失效)、UVM_SPARSE_ARRAY(打开即编译失败)、UVM_REG_ENABLE_ADDRESS_EXCLUSION、UVM_USE_RESOURCE_CONVERTER(扫描条目 D2/D3/D4/D10);改法与验证:M09-007 / M07-018 / M07-019 / M05-008。 - 1.0.4 旧自动配置禁用 define/plusarg 先用 use_automatic_config 替代,再移除;数组录制限制与时间精度依赖单独核对后清理
+UVM_ARRAY_NUM_LIMIT、+UVM_VERDI_BEGIN_TR_REALTIME。改法与验证:M01-007;录制差异与改法见 M02-016 / M02-017。 - 1.0.5 VCS 编译选项检查:
+acc在 W-2024.09 已废弃,改-debug_access+...(仿真器选项调整) - 1.0.6 依赖 Verdi 自动开启 Resource DB 追踪时,显式加
+UVM_RESOURCE_DB_TRACE并确认访问日志;改法与验证:M05-012。
2.1 编译断点核销(C 系列,每条对应扫描器条目)
- C1 printer knobs 宽度字段(
name_width/type_width/size_width/value_width/max_width/truncation)与uvm_printer_knobs类型引用 → 删除或改 accessor;改法与验证:M02-003。 - C2
item.begin_event/end_event→item.get_event_pool().get("begin"/"end");改法与验证:M01-001。 - C3 确认旧 component kill/stop 接收者;正常结束采用完成握手、检查器排空与成对 objection;复位重启等 phase 跳转另验事务和锁状态。改法与验证:M01-002 / M03-002。
- C4
event.add_callback/delete_callback→uvm_callbacks#(...)::add/delete;用户回调继续继承uvm_event_callback#(T),旧 append=0 对应 UVM_PREPEND。改法与验证:M03-001。 - C5
uvm_do_*被废弃宏:可直接按完整映射改写;需暂留旧写法时启用 1.0.2 的 define。两条路径均检查原约束、sequencer、parent 与优先级;改法与验证:M09-004。 - C6 注册类无
string name形参时补new(string name="")+super.new(name);核对 1.2 的UVM_OBJECT_DO_NOT_NEED_CONSTRUCTOR,未用该开关的无参注册类原本就不兼容。扫描提示的未知依赖先查项目宏和外部 registry,直接 new 的无参类可保留;改法与验证:M09-003。 - C7 资源对象 set/get_by_* 改走 pool/DB;普通资源显式构造 scope 可保留,两版都需入池,特殊 precedence 在入池后设置;改法与验证:M05-001 / M05-002 / M05-004。
- C8
uvm_sequence_base直接实例化 → 具体派生类或uvm_compat_proxy_sequence(编译 compat 包:+incdir+.../compat+compat/uvm_compat_pkg.sv);uvm_sequence在 1.2 就已抽象,不能列作新增限制;改法与验证:M06-004。 - C9 map 查询的显式 caller 实参与 override 形参同步删除;改法与验证:M07-002。
- C10 已删全局函数与报告方法按映射改写;全局 set_config_* 可转 root 组件方法保留语义,统一到 config_db 时同步类型、scope 与克隆契约。改法与验证:M04-004 / M04-005。
- C12 自定义
uvm_factory子类 → 补 4 个 pure virtual;改法与验证:M01-004。 - C13
uvm_print_int3等数字后缀宏 → 新原型;改法与验证:M02-004。 - C14 user_priority_arbitration 的返回值和 avail_sequences 队列改为目标 int 签名,直接调用实参也需匹配;改法与验证:M06-007。
- C15 get_connected_to/get_provided_to 输出改为 uvm_port_base 类型容器,按实际端口参数匹配;改法与验证:M08-011。
- C16 特化资源类的静态查询改为 resource_db,构造时自动入池另行核对;改法与验证:M05-011。
- D1/D11
uvm_sequence_utils/uvm_package、内置 sequence(uvm_random_sequence等)→ 新机制;改法与验证:M09-005 / M06-001。 -
D7/D8/D9 删除接口与旧 include 按实际引用迁移;FGP 替代仍待确认,native_dumping 需验证标准 recorder 的 DPI、事务字段与父子关系,不能只删除文件引用;改法与验证:M04-016 / M10-006 / M10-007 / M10-008 / M08-007。
-
D6 使用 Synopsys reg-bank 扩展时,核对被删的 add_coverage 与私有 predictor/路径相关变化;改法与验证见 M07-025。
uvm_random_stimulus可继续使用,无需为本次迁移改写;可选替代见 M10-005。
直接依赖 UVM 内部接口时检查
- C11 手写
__m_uvm_field_automation→ overridedo_execute_op(uvm_field_op);改法与验证:M01-003。
2.2 告警处置与冒烟
- 2.2.1
DRVCONNECT新告警评估:正常连接的 driver 无视;特例用set_report_severity_id_action(UVM_WARNING,"DRVCONNECT",UVM_NO_ACTION);改法与验证:M10-001。 - 2.2.2 新增诊断按实际 severity 处理:
UVM/PRINT/NO_FLUSH、UVM/COMPARER/INT/BAD_SIZE、UVM/FIELDS/NO_FLAG、PH_BAD_ADD(更名)、UVM/ROOT/MULTI;包含 error/fatal,不能统一作为可忽略告警。改法与验证:M02-006 / M02-005 / M09-002 / M03-008 / M01-008。 - 2.2.3 最小环境 test 在 2.0 下编译 + 运行通过(冒烟)
- 2.2.4 启动回归诊断;阶段 1 通过还要求完成 3.1/3.2 的行为核销与结果对齐
3. 行为验收与阶段 2 兼容依赖收敛
3.1 与 3.2 是阶段 1 回归可信的前置条件;3.3 在其后进行。优先核销静默/数据风险;S5 是兼容字段提示,S10 独立核销调试能力。C/S/D 是扫描规则编号,不是完整影响分类;同时查阅条目的“影响类型”。
3.1 行为与调试核销(S 系列)
- S1 旧
default_sequence/count/add_sequence机制 →<phase>_phase.default_sequence的uvm_config_db#(uvm_object_wrapper)机制。范围:仅字符串式(config_db#(string)/uvm_config_string+ 裸default_sequence)静默失效需迁移;已是<phase>_phase的 wrapper/instance 两式写法 2.0 实测等价、不用动。验证:激励确实发出;改法与验证:M06-001。 - S2
uvm_test_done_objection引用 →phase.raise_objection(this);改法与验证:M03-003。 - S3 全部 field FLAG 按所需操作核对,包含负向位、部分正向位、自定义宏和数字;保留禁用意图并显式启用所需操作,或暂用 legacy field 开关。先处理报告列出的缺失操作;相同未知表达式按同文件合并提示,展开后核对
related_lines的全部使用点,再验证宏实际支持的操作。零命中及无 NO_FLAG 不能证明没有漏操作。改法与验证:M09-002。 - S4 逐个确认精确版本/能力分支意图,勿机械替换为 POST 宏;分别验证两库实际编译分支;改法与验证:M09-008。
- S5(兼容字段提示) 默认 coreservice 下
default_precedence静态改写仍有效。新代码推荐uvm_resource_pool::set_default_precedence();自定义 coreservice 单独核对;改法与验证:M05-004。 - S6 packer 跨边界位流逐位对照 1.2 golden;compat 只部分恢复,嵌套对象/GP 需显式格式或同步升级两端;改法与验证:M02-001 / M08-003。
- S7 demote 类 catcher 对 NO_ACTION 消息的依赖审计;改法与验证:M04-001。
- S8
show_max=0在 2.0 为不限输出;使用 verbosity/action 控制消息,并保留比较结果检查。顶层 compare 对显式 comparer 也会 flush;类型判据改为 wrapper,需验证同名但 wrapper 不同,以及不同名共用 wrapper 两种情况。S8 扫描仅定位 show_max 写法,类型漏检另行核对;改法与验证:M02-005。 - S9 先确认报告行的 flush 接收者属于 TLM FIFO,未知类型提示需查实际对象及跨文件继承。
uvm_tlm_fifo::flush()两项队列实测残留一项;无并发清场边界可使用公开 try_get 循环并断言 used=0,注意其保留 get_ap 广播;改法与验证:M08-001。 - S10(调试输出)
+UVM_STACKTRACE调用栈流程按实际工具构建确认;准备最小触发测试与支持材料,尚无通用实测替代命令。改法与验证:M04-019。 - S11 同名同类型多资源的 resource_db::get_by_name 优先级选择核对;lookup_name 后 get_highest_precedence 替代需检查 null、类型和审计副作用;改法与验证:M05-010。
- S12 GP scoreboard 显式核对 extension 键集合并逐项比较,不能只做双向 GP compare;改法与验证:M08-002。
- S13 大端 map 核对有效总线宽度与 uvm_reg_data_t 整宽,包含 32 位寄存器接 32 位总线的单拍;检查 adapter 输入/输出和每个 bus beat,适用的 adapter 补偿或 frontdoor 必须在实际拓扑验证;改法与验证:M07-020。
- S14 检查字段写 byte strobe 和相邻硬件更新值;必要时显式 bus sequence/frontdoor,镜像预测仅更新目标字段;改法与验证:M07-021。
- S15 resource 单侧 override 用显式对应 API;特殊 precedence 在入池后设置;改法与验证:M05-004 / M05-005。
- S16 旧两参 uvm_print_int 核对 SIZE/RADIX,改写后检查实际位宽与输出;改法与验证:M02-004。
- S17 显式恢复响应队列溢出报错,并核对响应消费及深度;改法与验证:M06-008。
- S18 宽命令行配置改 set_config_bitstream,断言读回完整值;扫描脚本/filelist 时显式包含对应文件;改法与验证:M04-018。
- S19 push sequencer 两笔以上请求逐笔核对,检查 FIFO 消费,不能只屏蔽 SQRSNDREQGNI;改法与验证:M06-019。
- S20 USER sequence library 动态缩减候选集时检查选择前边界;改法与验证:M06-017。
- S21 regex/glob 混用时保持正则缓存关闭,验证匹配顺序;改法与验证:M10-006。
- S22 backdoor codec 核对硬件值和逻辑回读值,多 codec 保持正序编码、逆序解码;改法与验证:M07-023。
- S23 全局与实例 catcher 混用时核对每条消息的实际调用次数;改法与验证:M01-016。
- S24 多拍 predictor 核对首拍和后续拍失败,聚合完整事务状态;改法与验证:M07-024。
- 3.1.17 event reset 后数据、自定义 lock 调度、失败 RAL 访问镜像按实际依赖核销(M03-011 / M06-011 / M07-022)
- 3.1.18 对照全部用户接口与行为条目完成编译与行为核销,先按扫描报告定位旧写法与适用线索,再补录无规则项及未覆盖写法;脚本已覆盖部分 field FLAG、reset sequence、策略派生和公开扩展入口,运行结果仍须验证。派生 FIFO 的注册字段核对自动配置是否仍赋值(M08-004);sequence.kill 后在再次 start 前检查已排队响应,需要丢弃时保留 clear_response_queue(M06-013)。在 HTML 的“按差异条目记录”中逐条以 M ID 保存范围、结论与证据;本项保留总检查和其他补充说明;相关高风险仍待验证时阶段 1 不通过。
- 3.1.19 出现
not contained within map 'Backdoor'时,区分 reg/field/mirror 和无实际 map 场景;field 后门仅改 map 实参无效。按 M07-005 区分库告警与调用错误;字段接口可保留,按 read/write 与 peek/poke 的访问语义核对 status、硬件和镜像;S38 零命中仍须检查 field 及默认后门封装。
3.2 日志与回归基线更新(无代码改动也会出现差异)
- 3.2.1 消息计数/
[TEST_DONE]判定类回归脚本改造(L1 实测:2.0 少一条 INFO,TEST_DONE 已移除,01 第 1、3 章);改法与验证:M03-004。 - 3.2.2 时间戳格式:
$time→$realtime;改法与验证:M04-009。 - 3.2.3
UVM_OBJECTION_TRACE输出多一列;miscompare 消息格式变化;消息 ID 更名(PH_ADD_PHASE→PH_BAD_ADD等);改法与验证:M03-014 / M02-005 / M03-008。 - 3.2.4 同 seed 不要求两库逐拍轨迹相同;核对合法约束、事务完成、scoreboard 与覆盖,固定激励需求须保存并回放向量。变化来源包括:
grant_queued_locks单发化、reg 内建 seq 随机源改uvm_reg_randval;改法与验证:M06-011 / M07-006。
3.3 compat / deprecated 依赖消除
- 3.3.1 将尚未迁移的旧动作宏按完整映射改写,移除
+define+UVM_ENABLE_DEPRECATED_API后重编译,检查是否仍有其他保留 API 依赖;已在阶段 1 改写的调用直接复验约束、对象创建与发送行为。改法与验证:M09-004。 - 3.3.2
uvm_compat_packer/uvm_compat_proxy_sequence使用点核销(评估是否仍需要 1.2 位流);改法与验证:M02-001 / M06-004。 - 3.3.3 确认主库保留接口的行为符合需要;
uvm_path_e、保留的 knobs 等不要求仅为改名而替换。需要采用 accessor/新名时再修改并验证;改法与验证:M02-003 / M02-005 / M06-015 / M07-001。 - 3.3.4 保存 1.2 基线版本及结果,迁移后的 2.0 代码通过等效回归和结果对齐;若业务要求同一源码双库兼容,再额外验证双库编译运行。跨边界旧位流等保留 compat 的例外记录原因和退出条件。
- 3.3.5 显式 FLAG 改写后移除
UVM_LEGACY_FIELD_MACRO_SEMANTICS,重新验证 compare/copy/print/pack/record 及自动配置,不以 warning 消失代替行为验收。