- 差异参考
- 差异查询
差异查询
按 API、宏名或症状查找变化;默认显示用户接口与行为,包含公开扩展接口。
用户接口变化总览 · 字段自动化 · Sequence 动作宏
没有符合当前条件的条目。可清除筛选、缩短关键词,或按症状排查。
item.begin_event → item.get_event_pool().get("begin") ; item.end_event 同理。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C2 · 启发式先按接收者类型确认旧 component 接口;正常收尾改用显式完成握手与成对 objection。复位重启等确需跳转的流程按 M03-002 / M03-009 设计目标 phase,并自行处理事务、锁和检查器状态。仅对用户自己管理的进程使用 process::kill ,同时释放相关资源。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C3 · 启发式手写 automation 改为对应 do_copy/do_compare/do_print/do_pack/do_record,或在确需统一操作分派时 override do_execute_op(uvm_field_op op)(M01-011);不再读写旧 status container,改用对应 comparer/printer 等策略对象的接口与结果。只改旧钩子签名不能恢复操作调用。
内部实现 · 命中后修改 · 主库保留扫描:C11 · 文本匹配直接继承 uvm_factory 时补 is_type_name_registered、is_type_registered、set_type_alias 和 set_inst_alias;四个方法必须使用同一注册/别名状态。能沿用默认工厂算法时,可继承 uvm_default_factory 并保留业务 override,具体签名与选择条件见下方代码。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C12 · 文本匹配排查回归中对 copy(null) 的依赖;需要浅拷贝/引用拷贝语义的用 uvm_copier::set_recursion_policy 。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S25 · 启发式普通 type_name 读取与 type_id::create 可保留;自定义初始化不要绕过 uvm_init 的 deferred 注册。若通过抽象 registry 创建对象,先设置具体派生类 override,再检查返回非空和实际类型;整体替换 coreservice 的时机按 M01-014 核对。
内部实现 · 按条件核对 · 无需启用扫描:无对应规则检索 disable_apply_cfg_settings / UVM_DISABLE_APPLY_CFG_SETTINGS 使用点并改 override;如脚本依赖 +UVM_DISABLE_APPLY_CFG_SETTINGS 需删除。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:D5 · 文本匹配删除或修正启动日志指出的无效 +uvm_set_* 配置,逐项确认目标组件和读回值。旧 pre_abort 中必须执行的诊断保留在该钩子内,并检查子组件与父组件的调用顺序;需要围绕 run_test 添加处理时,使用 uvm_run_test_callback 的 pre_run_test/post_run_test,不能以 post_run_test 单独判定业务成功。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S37 · 启发式保留业务 do_print/do_compare/do_record 钩子;其中调用的 printer/comparer/recorder API 分别按 M02-003 / M02-005 / M02-007 / M02-012 改写。每次独立对象操作核对策略状态,消息过滤按实际 comparer 发出的 MISCMP 路径配置;用返回值、输出内容和字段调用次数验证,不能只按日志数量判定成功。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S27 · 启发式保留已注册类型的按名 override;在建立 override 后实际执行一次 create,并检查返回非空及派生类型。若出现 TYPNTF,修正类型名或注册位置,不要仅因 set_override 没报错而忽略创建失败。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S26 · 启发式无(存量代码可不动);新代码建议直接使用新钩子。
新增功能 · 可选采用 · 无需启用扫描:无对应规则transaction 普通 begin_tr(begin_time) 调用可保留;需要父子链接时目标可调用 tr.begin_tr(begin_time, parent_handle)。该 transaction 方法本身非 virtual,业务开始钩子使用 virtual protected function void do_begin_tr();组件侧的 do_begin_tr(uvm_transaction tr, string stream_name, int tr_handle) override 应将旧 integer 句柄形参同步为 int,并保留 super 调用。普通句柄变量无需扩大到 64 位。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:C26 · 启发式建议统一改为 uvm_object::set_uvm_seeding(0) ;不强制。
新增功能 · 可选采用 · 主库保留扫描:无对应规则自定义 coreservice 补齐目标签名。只有库尚未初始化时,uvm_init(custom_cs) 才能安装;不能把“用户 initial 第一行”视为满足此前提。默认 VCS Verdi 集成在 src/vcs-uvm-ieee-2020-2.0/base/uvm_globals.svh:629 / :643 的静态变量初始化调用 root getter,实测 initial 中安装被忽略;仅关闭 UVM_NO_VERDI_RECORD 对应集成后,本探针安装成功。关闭录制不是通用迁移要求,有 Verdi 需求时优先通过现有 coreservice 的服务访问器定制单项能力,整体替换须单独设计初始化与已有引用的迁移。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C23 · 启发式将 obj.m_get_tr_database() 改为 obj.get_tr_database();派生类的 virtual function uvm_tr_database m_get_tr_database() 同步改名,方法体保留原数据库选择逻辑。通过 set_tr_database(db) 配置时检查读回对象身份。主库仍保留组件 set/get_config_*,无需因其不再报 deprecated warning 而重写调用;print_config_matches 可继续使用,或改用 get/set_print_config_matches。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C17 · 文本匹配注册按句柄管理;反复 get_all 前清空输出队列。utility_probe 先注册全局 catcher 再注册实例 catcher,全局调用次数为 1 / 2,实例均为 1;先完成实例注册再添加全局 catcher,两库均各调用一次。这个顺序替代仅覆盖初始化后注册集合固定的场景;后续动态创建实例或增删 catcher 必须重新核对,不能以 get_all 的去重结果推断执行路径只调用一次(S23)。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S23 · 启发式同版 pack/unpack 仍需验证实际对象类型、空对象和数组长度;跨边界流必须与保留的 1.2 golden 逐位对照。可用 uvm_compat_packer 配合显式 do_pack/do_unpack 固定契约,或统一升级两端格式。不能将替换 packer 本身作为位流兼容性验收。
用户接口与行为 · 按条件核对 · compat 包扫描:S6 · 文本匹配 / S44 · 启发式把 get_bits/get_bytes/get_ints 改为 get_packed_bits/get_packed_bytes/get_packed_ints,把 put_ 改为 set_packed_ ,reset() 改为 flush();同名 get_packed_bits 的返回值调用必须改为 ref 数组调用。目标状态流包含迭代器元数据,外部位流协议按 M02-001 单独迁移。
用户接口与行为 · 命中后修改 · compat 包扫描:C18 · 启发式删除旧 knobs 类型引用,改通过 printer 访问器配置。已被 1.2 忽略的宽度赋值可直接删除;只有确有输出截断需求时才另行实现。保留字段按实际 printer 类型选访问器: mcd/prefix/show_radix/default_radix 对应 set_file/set_line_prefix/set_radix_enabled/set_default_radix ; set_indent 、 set_separators 需核对具体 printer 子类,不能对任意基类句柄照搬。
用户接口与行为 · 命中后修改 · 主库保留扫描:C1 · 文本匹配保留现有 do_print 的字段选择,按目标原型改写,例如 `uvm_print_named_int("nm", val, $bits(val), UVM_HEX, integral, printer) ;或直接调用 printer.print_field_int("nm", val, $bits(val), UVM_HEX) (不超过 64 位)。已有 field automation 的字段不要再重复注册或打印;改用 field 宏前需单独明确 copy/compare/pack 等操作意图。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C13 · 文本匹配 / S16 · 启发式uvm_comparer::init() 改用 uvm_comparer::get_default() 获取默认实例;需要清理状态时另调 flush() 。 不能用较大的 show_max 恢复静默 ,它只放宽输出数量;可在 severity 为 UVM_INFO 时将 comparer verbosity 设为高于报告阈值,或在报告配置中针对 MISCMP 设置 action,并保留 compare 返回值与 result 检查。顶层 obj.compare(rhs, comparer) 对显式传入和默认 comparer 都会先 flush() ,本实现将 check_type 重置为 1;确需跨类型比较时,可先 flush() 、再 set_check_type(0) ,然后直接调用 comparer.compare_object(name, lhs, rhs) ,由调用方管理独立比较之间的清理。
用户接口与行为 · 按条件核对 · 主库保留扫描:S8 · 文本匹配 / C28 · 启发式直接拼装输出时,每次独立输出先 printer.flush(),再 print_field 等填入字段,最后保存 printer.emit() 返回值;下一次输出重新执行同样顺序。普通 obj.sprint(printer) 顶层已负责 flush,可保留该路径。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S27 · 启发式仅用于手工递归的 do_record_object override 可移除,由目标基类递归。需要自定义属性时保留该 override,但只保留一次递归入口:选择 super.do_record_object(name, value) 后,删除重复的 value.record(this)。自定义后端仍保留必要的写属性逻辑;文本后处理改为读取 inst_id,并核对嵌套对象身份。
用户接口与行为 · 按条件核对 · 主库保留扫描:S27 · 启发式需要单行输出时使用 uvm_line_printer ;自定义换行规则需在派生 printer 中实现并对照输出。 set_separators 配置对象的起止分隔字符,不替代 newline。删除 calculate_max_widths() 调用后,验证目标自动列宽满足原输出契约。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C19 · 启发式保留且行为符合需要的 knobs 字段可继续使用,无需仅为改名替换;需要标准配置接口时采用访问器并验证输出。删除成员按 M02-003 处理。
新增功能 · 可选采用 · 主库保留扫描:无对应规则无(新增能力,可选用)
新增功能 · 可选采用 · compat 包扫描:无对应规则普通 integer 变量存储 int 句柄无需因 64 位仿真而修改,两种整数都为 32 位四态。覆盖虚方法时须匹配目标版签名(参见 M06-007 的 VCS 类型检查);删除已失去调用入口的 m_get_handle override。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:C26 · 启发式通过 uvm_pkg 使用类型时无需修改;直接 include 旧宿主文件且依赖 text 类型时,同步目标文件依赖。
内部实现 · 按条件核对 · 无需启用扫描:无对应规则已有 do_compare 无需仅为新宏改写。选择新 comparer 宏时,按目标原型传入字段名、值和 comparer,并用相等/不等对象验证比较返回值与诊断。
新增功能 · 可选采用 · 无需启用扫描:无对应规则先确认需要记录全部元素还是限定元素;需要上限时,给对应字段的 field FLAG 加 UVM_NORECORD ,在 do_record(uvm_recorder recorder) 中按显式上限调用 record_field_int/record_object 等对应接口。调用旧 getter 的代码改读自己维护的配置;验证记录内容后再删除旧 plusarg。已有手工录制字段不要同时启用自动录制。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:D13 · 文本匹配若只需目标默认取时,删除失效 plusarg 后核对实际事务时间;若已有明确的整数时间契约,在调用 stream.open_recorder(name, recorded_time, type_name) 时传入按项目单位换算的非零 time。原先依赖小数分辨率或 Verdi 展示的路径需核对源 timeunit/timeprecision、time 转换和后端;没有已验证的通用开关替换。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:D14 · 文本匹配确认接收者为 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 的阻止触发返回值。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C4 · 启发式把旧 stop_phase 中必须执行的收尾任务移到显式停止握手:停止产生新事务,等待在途事务与检查器排空,再成对 drop 实际 phase 的 objection。 end_prematurely() / jump() 会改变 phase 执行流程,不能自动完成这些任务;仅在确需提前结束或重启阶段时单独设计并验证。旧 stop_timeout 应改为握手超时检查,不能直接等同于整个测试的 set_timeout。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C3 · 启发式检查 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。
用户接口与行为 · 命中后修改 · 主库保留扫描:S2 · 文本匹配回归成功条件改为业务完成标志、预期事务数、检查器排空和错误结果同时满足。需要阶段时间戳时可观察 uvm_phase_cb::phase_state_change 的 UVM_PHASE_ENDED 状态;READY_TO_END 可能多次发生,report 总结也可能出现在异常终止路径,均不能单独代替成功判定。同步移除 TEST_DONE 日志匹配依赖。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S36 · 启发式将 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() 无等价公开替代;若它参与退出判断,改为明确的业务完成条件,若仅用于统计则在自己的回调中计数。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C20 · 启发式用 get_objection() 代替直接访问 phase_done 字段;不要假设其非空。
用户接口与行为 · 按条件核对 · 无需启用扫描:C20 · 启发式无(仅当曾依赖 uvm_phase::m_run_phases 等 internal 接口时需改走 hopper)。
内部实现 · 按条件核对 · 无需启用扫描:D17 · 启发式原有合法的四参数 add 调用可保留。调整 phase 图时保持 with/after/start_with 互斥、with/before/end_with 互斥,新增参数使用命名实参避免位置混淆。日志解析将 PH_ADD_PHASE 更新为 PH_BAD_ADD,并验证前驱/后继的实际执行顺序。
用户接口与行为 · 按条件核对 · 无需启用扫描:S36 · 启发式 / S37 · 启发式原本用 jump(null) 取消或结束运行的代码需改写:正常结束按 M03-003 释放实际 phase 的 objection,需要跳转时传入明确且合法的前驱/后继 phase。仅未激活节点的 set_jump_phase(null) 路径用于清除挂起状态;不要将其推广至激活节点。查询方向使用 is_jumping_forward()/is_jumping_backward(),提前结束状态使用 is_ending_prematurely()。
用户接口与行为 · 按条件核对 · 无需启用扫描:S28 · 启发式无。
新增功能 · 可选采用 · 无需启用扫描:无对应规则需要在 reset 后使用上一次数据时,在 reset 前读取并保存到用户变量;后续消费该变量,不再向已 reset 的 event 取旧值。若业务需要默认数据,显式设置 set_default_data 并按默认值语义读取;两种意图不能混用。
用户接口与行为 · 按条件核对 · 无需启用扫描:S29 · 启发式按 get_type_name() == "uvm_event" 分支的代码,若目的是判断类型,改为向实际 uvm_event#(T) 句柄 $cast 并检查返回值;若仅用于日志展示,则接受目标输出 uvm_pkg::uvm_event#(T),更新字符串匹配。不要靠该字符串区分不同的 T。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S36 · 启发式无。
新增功能 · 可选采用 · 无需启用扫描:无对应规则保留以 report ID 为入口的 trace 解析;旧依赖列位置的正则需加入位于操作数量之后、objection(s) 之前的 objection 名称字段,并避免将其当作对象路径。使用条目中的两版 trace 样本更新期望格式,核对 raise/drop 的对象、计数和 phase;统计不能依赖固定空格数。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S36 · 启发式需要 catcher 统计或修改的消息,入口 action 不应先设为 UVM_NO_ACTION;让消息进入 catcher,再由 catcher 按业务规则处理并决定继续 THROW 或停止 CAUGHT。不依赖 catcher 的禁用消息可保持 NO_ACTION;改写后检查每条消息的 catcher 次数及最终计数/路由,过滤发生在不同阶段时不可只对照屏幕文本。 自定义消息宏需要接入目标报告流程时,按 uvm_report_begin / uvm_report_end 的成对结构封装原消息生成逻辑,并保留 severity、ID、verbosity 与 action 意图;使用该包装不会恢复 NO_ACTION 消息进入 catcher 的旧路径。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S7 · 文件级同现核对直调 warning/error 的消息策略。2.0 中显式传高 verbosity 也不会恢复旧过滤,需通过 report action 或经过验证的 catcher 控制输出。
用户接口与行为 · 按条件核对 · 无需启用扫描:S30 · 启发式若有用 verbosity 压制 WARNING 的用法,改为明确的 action 或经过验证的 catcher 策略;仅 severity override 为 INFO 不会恢复入口处的过滤。
用户接口与行为 · 按条件核对 · 无需启用扫描:S30 · 启发式全局配置调用优先改为 uvm_root::get().set_config_int/object/string(...) ,保留原实参与 object 的 clone 标志;这些组件方法在目标主库仍存在(M01-015),不需要 deprecated 开关。统一改用 config_db 时,必须同步类型、作用域和克隆契约,详见下面的映射。timeout 改 uvm_root::get().set_timeout(...) ;stop 的收尾超时按 M03-002 单独设计。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C10a · 文本匹配 / C10c · 启发式把对象 get_report_server() 调用改为 uvm_report_server::get_server()。自定义格式移到 compose_report_message,自定义 action 处理移到 execute_report_message;新参数为 uvm_report_message,不能只把旧方法改名后保留原形参。具体目标签名与默认行为保留方式见下方。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C10b · 文本匹配命中引用即需随 field automation 重构一并改写(详见 field 自动化模块章节)。
内部实现 · 命中后修改 · 无兼容恢复扫描:C11 · 文本匹配推荐省略实参或显式用 UVM_STDOUT;旧 report_summarize(0) 在目标版走 UVM_LOG 到句柄 0,不再表达 stdout。传入有效文件时,目标只恢复 action,未恢复 UVM/REPORT/SERVER 的 ID 文件配置( src/vcs-uvm-ieee-2020-2.0/base/uvm_report_server.svh:959 );需要复用原配置时调用方保存/恢复文件句柄。report_probe 已验证路由位、低 verbosity 可见性及恢复写法,未以捕获消息替代实际落盘集成验收。
用户接口与行为 · 按条件核对 · 无需启用扫描:S31 · 启发式表达 UVM 标准输出时用 UVM_STDOUT 替代硬编码 1,比较改为 handle == UVM_STDOUT;标准错误用 UVM_STDERR。保留 $fopen 返回的实际句柄,不要把目标文件描述符与旧 MCD 掩码按位拼接。report_summarize 的 stdout 调用按 M04-007 省略参数或显式传 UVM_STDOUT。
用户接口与行为 · 按条件核对 · 无需启用扫描:S31 · 启发式日志时间戳解析由仅接受整数改为允许实际 $realtime 输出的小数形式;比较时按日志中的时间单位归一化,不截掉小数部分。时间解析与 severity、ID、消息内容分别处理,再更新回归基线;报告调用本身可保留。
用户接口与行为 · 按条件核对 · 无需启用扫描:S36 · 启发式直接引用 .m_rh 的代码改走 get_report_handler() 。
内部实现 · 命中后修改 · 无需启用扫描:D17 · 启发式正常 /regex/ 用法无需为此改写为 glob。自行编译且关闭 DPI 的环境单独核对匹配支持范围。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S41 · 启发式将硬编码 FLAG 数字改为对应的 UVM_COPY/COMPARE/PRINT/PACK/RECORD 及禁用位符号,不能按旧数字直接复制掩码。只禁用部分操作的声明按 M09-002 保留禁用位并显式启用其他所需操作;自动配置等自定义位另外核对目标编码。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S3 · 启发式无。
用户接口与行为 · 无需改动 · 主库保留扫描:无对应规则无(存量代码不受影响;注意 uvm_string_split ≠ uvm_split_string ,勿混用)。
新增功能 · 可选采用 · 无需启用扫描:无对应规则uvm_vector_to_string(value, size, radix, radix_str) 改为 uvm_bitstream_to_string(value, size, radix, radix_str),原实参顺序与格式意图保持;例如 text = uvm_bitstream_to_string(value, 32, UVM_HEX, "h")。不要借此改用 int 截断宽值。uvm_cmdline_proc 的普通只读使用可保留。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:D7 · 文本匹配无。
内部实现 · 按条件核对 · 无需启用扫描:无对应规则目标版本的宽配置使用 +uvm_set_config_bitstream=uvm_test_top,wide_value,0x1234567801234567 ,该替代已保持完整 64 位;也可在测试中以明确类型调用 config_db::set。必须断言实际读回配置,不能只看 Applying config 日志。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S18 · 启发式将依赖 +UVM_STACKTRACE 的日志提取和排障步骤列为调试流程迁移项。提交最小触发测试、完整 VCS/Verdi 版本、编译/运行参数及缺少调用栈的日志片段,通过现有产品支持渠道确认目标构建可用的报告断点或调用栈方案。当前没有经过本项目验证、可直接替换此选项的通用命令;在方案确认前保留可复现问题的 1.2 调试构建。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S10 · 文本匹配rsrc.set() → uvm_resource_pool::get().set_scope(rsrc, scope) rsrc.set_override(ovr) :默认 name+type 双置顶用 rp.set_override(rsrc, scope) ;仅 name/type 时分别用 set_name_override / set_type_override ;ovr=0 用 set_scope 。保留原掩码意图,不能无条件替换为双置顶。 uvm_resource#(T)::get_by_name(scope, name, rpterr) → uvm_resource_db#(T)::get_by_name(scope, name, rpterr) uvm_resource#(T)::get_by_type(scope, type_handle) :仅在 type_handle 就是 T 的类型句柄时改用 uvm_resource_db#(T)::get_by_type(scope) ;动态类型句柄应保留 pool 查询和 cast/null 检查。 自定义资源子类型中使用了 `UVM_RESOURCE_GET_FCNS 的,删除该宏调用,改用 uvm_resource_db / uvm_resource_pool 查询。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C7 · 启发式显式 new(name, "scope") 可保留;将资源对象的 rsrc.set() 改为 rp.set_scope(rsrc, "scope") ,或使用主库保留的 rp.set(rsrc) 。普通资源两版都必须入池才能由数据库查询;无需仅为迁移删除构造 scope。连续示例见 M05-001,未直接操作 scope 的普通 config_db 用户无需为本条改写。
用户接口与行为 · 命中后修改 · 主库保留扫描:C7 · 启发式常规 uvm_config_db#(T)::set(cntxt, "env.*", ...) 用法无需改动; uvm_resource_base::default_precedence 在默认 coreservice 下仍有效,新代码推荐 uvm_resource_pool::set_default_precedence() 。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S42 · 启发式旧字段写法无强制迁移;新代码推荐 uvm_resource_pool::set_default_precedence(...) 或 uvm_coreservice_t::get().set_resource_pool_default_precedence(...) ,以及 rp.set_precedence(r, p) / rp.get_precedence(r) 。后一组实例级操作在资源入池后执行。
用户接口与行为 · 按条件核对 · 主库保留扫描:S5 · 启发式 / S15 · 启发式rp.set(rsrc) / 默认双置顶 rp.set_override(rsrc) 可继续使用。注意 2.0 rp.set(rsrc, override) 只检查 override 是否非零,旧 name-only/type-only 掩码会变为双置顶,须显式改用对应的单侧 override API。需要删除资源时使用新 delete() 。
用户接口与行为 · 按条件核对 · 主库保留扫描:S15 · 启发式常规 config_db 外观调用可保留;定制实现需覆盖既有 get/set/wait_modified 契约,并回归资源查找路径。
新增功能 · 可选采用 · 无需启用扫描:无对应规则rsrc.access[...] → rsrc.dbg.access[...] ;需要定制读写副作用时重写 do_read/do_write 而非修改库。
内部实现 · 命中后修改 · 无兼容恢复扫描:D17 · 启发式改用派生资源类重写 m_value_as_string() / convert2string() ;未启用过该宏则无需改动。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:D10 · 文本匹配仅直接访问 rp.rtab/ttab 的代码需要调整;正常使用查找接口者无改动。
内部实现 · 命中后修改 · 无兼容恢复扫描:D17 · 启发式审计直接使用 resource_db / resource_pool 按名查询并依赖优先级的代码;可使用 lookup_name(scope, name, type_handle) 后 get_highest_precedence() 并检查 null、转换类型。该替代不复刻 DB 的全部审计记录,应在封装边界采用。不要仅因 config_db 内部使用资源池就推断普通 config_db::get 同样受影响。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S11 · 启发式按值类型使用 resource_db#(T)::get_by_name/get_by_type;结果为 uvm_resource#(T)。需要原特化子类型时显式检查 null 与 cast,不要假设池中同型资源都是该子类。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C16 · 文本匹配需要 Resource DB 访问日志时,在仿真命令加入 +UVM_RESOURCE_DB_TRACE ;代码控制可在相关访问前调用 uvm_resource_db_options::turn_on_tracing() 。已有显式开启配置可保留;不需要该日志的环境无需增加开关。
用户接口与行为 · 按条件核对 · 无需启用扫描:S41 · 启发式将旧内置类型改为自己的具体 sequence;需要候选集随机选择时用 uvm_sequence_library,显式登记候选类型并检查选中次数。字符串 default_sequence 改为 phase 路径下的 wrapper/instance 配置,完整代码见 M06-002;普通显式启动可写 seq = my_seq::type_id::create("seq"); seq.start(target_seqr)。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S1 · 启发式 / D11 · 文本匹配全局扫描 default_sequence 字符串 config、 count / max_random_count 等字段及 add_sequence 等调用,迁移到 phase default sequence( uvm_config_db#(uvm_object_wrapper)::set(this, "<path>.<phase>_phase", "default_sequence", ...) )。已是 phase 式写法的 不用动 。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S1 · 启发式旧库管理不再放在 uvm_sequence_base 上:把候选类型登记移到具体 uvm_sequence_library,通过 add_typewide_sequence 登记类型,用 get_sequence(idx) 查询并检查索引。若只启动固定 sequence,直接 type_id::create 后 start(target_seqr),避免仅为保留旧方法名再造序列库。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C22 · 启发式直接构造 uvm_sequence_base 的代码改用具体业务 sequence,或在确需通用具体 sequence 时使用 uvm_compat_proxy_sequence#(REQ,RSP) 。直接构造 uvm_sequencer_base / uvm_sequencer_param_base 的代码需改成匹配 REQ/RSP 的 uvm_sequencer#(REQ,RSP) 或业务派生 sequencer;声明基类句柄不要求改写。
用户接口与行为 · 命中后修改 · compat 包扫描:C8 · 文本匹配扫描驱动中对这两个字段的直接赋值;改用正规 pull 流程或派生类内操作。
内部实现 · 命中后修改 · 无兼容恢复扫描:D17 · 启发式2.0 派生 sequencer 的返回类型和形参改为 int / int avail_sequences[$] ;直接调用时也同步队列元素类型。若同一源码必须支持两版,以库版本宏选择签名。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C14 · 文本匹配需要检测响应丢失的 sequence 显式调用 set_response_queue_error_report_disabled(0) (双库可用),或目标版 set_response_queue_error_report_enabled(1) ;同时检查消费速度和队列深度。不能仅靠默认 UVM_ERROR 计数验收。
用户接口与行为 · 按条件核对 · 主库保留扫描:S17 · 启发式改用 uvm_sequencer_arb_mode ,或加 +define+UVM_ENABLE_DEPRECATED_API 。
用户接口与行为 · 命中后修改 · deprecated 开关扫描:C21 · 启发式保留 lock/unlock 的配对流程;回归不再假定一次调度同时授权所有排队 lock。对并发 sequence 按实际授权与完成顺序判定;若业务必须固定先后,用显式握手表达依赖,并验证每个请求最终获准、锁最终释放。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S34 · 启发式普通请求等待流程可保留。存在多级 sequencer 堆叠时,在目标 sequencer 的 build_phase 读取配置之前,通过 uvm_config_db#(int)::set 配置其 wait_for_sequences_count,逐级验证计数满足传播需要;kill 等待中的 sequence 后,检查下一笔请求仍能被 driver 消费。具体配置读取位置见源码依据,不把固定延迟当通用补偿。
用户接口与行为 · 按条件核对 · 无需启用扫描:S34 · 启发式保留 sequence.kill();确认跨 sequencer 仲裁请求和锁已清理后,才移除针对这些残留的旧补偿。若业务要求即时丢弃已排队响应,继续显式调用 clear_response_queue;需要检查或消费响应的流程先完成对应处理。driver/scoreboard 在途事务仍按业务协议收尾,再验证后续请求与响应链路。
用户接口与行为 · 按条件核对 · 无需启用扫描:S34 · 启发式把 seq.starting_phase = phase 改为 seq.set_starting_phase(phase),读取改为 seq.get_starting_phase()。在 sequence 启动及相关 DAP 锁定前完成设置;锁定后的诊断应修正设置时机,不只修改消息过滤。
用户接口与行为 · 按条件核对 · 主库保留扫描:C21 · 启发式无。
新增功能 · 可选采用 · 无需启用扫描:无对应规则动态缩减候选集的 USER 模式须检查索引范围; tests/uvm_review/library_migrated.sv 派生带选择前边界检查的 select_sequence,在相同场景两库均返回 0。固定候选集的普通用法无需因此改写。
用户接口与行为 · 按条件核对 · 无需启用扫描:S20 · 启发式优先评估改用常规 pull sequencer/driver。保留 push 流程时, push_probe.sv 的派生类在安全选择之后显式消费 FIFO,再 put 与通知完成;这是绑定目标库内部接口的局部修复,需固定版本并回归 kill、响应及背压场景,不能仅屏蔽 fatal。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S19 · 启发式uvm_path_e / UVM_DEFAULT_PATH 等旧名称在主库保留,可继续使用。采用新命名时将类型改为 uvm_door_e、默认值改为 UVM_DEFAULT_DOOR;无需仅为改名重写所有 read/write/mirror 调用,访问语义仍按具体 RAL 风险验证。
用户接口与行为 · 按条件核对 · 主库保留扫描:无对应规则删除调用点的 caller 实参,并同步派生类的方法原型。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C9 · 启发式基类句柄可保留,new 的对象改为具体派生 backdoor。派生类实现 write(uvm_reg_item rw) 以及 read_func(rw) 或 read(rw),执行真实硬件访问并设置 status;不能只声明空子类绕过抽象类错误,基类默认 write/read_func 会报 fatal。将实例通过 rg.set_backdoor(bd) 挂到寄存器,使用 factory 时注册具体类型并检查 override 后的实际对象。需要 codec/callback 的访问按 M07-023 保留回调链。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C25 · 启发式自研复位测试用 field.has_reset() 判断是否存在 reset 值;镜像比较前保存原 get_compare(),对无 reset 字段临时 set_compare(UVM_NO_CHECK),比较后恢复原值。保留用户明确登记的 block/reg 排除,字段级排除单独核对实际名称。递归遍历采用每层本地寄存器加直接子块递归,避免叶寄存器重复 mirror。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S32 · 启发式字段调用不要求改成手工位操作。需要寄存器访问语义时保留 field.read/write,确认实际数据与副作用;若已定位为本库问题且必须消除告警,使用该最小实验核对工具修复。仅需直接取值或赋值时可选 peek/poke。reg 读写显式传伪 map 的情况按下方改为 null。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S38 · 启发式保留内置 sequence 调用;回归允许因 uvm_reg_randval 随机源变化而出现同 seed 的数据序列变化,使用访问约束、合法地址及 scoreboard 判定结果。外部 golden 若要求固定激励,应显式提供并保存激励数据,不能只凭同 seed 假定两库逐拍相同。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S38 · 启发式若自研 sequence 根据 get_access(map) 决定跳过或预测,按目标 WO map 的返回值更新分支:WRC/WRS→WO、W1SRC→W1S、W0SRC→W0S、W1CRS→W1C、W0CRS→W0C、WCRS→WC、WSRC→WS。按折算后的写副作用执行和预测,不能统一当普通 WO;RO 分支原有处理可保留。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S33 · 启发式无(纯新增)。
新增功能 · 可选采用 · 无需启用扫描:无对应规则正常范围内的 get_addresses 调用可保留;调用前检查 offset < mem.get_size(),超出模型范围时在用户逻辑中报告并停止该访问。删除依赖越界地址返回值的后续总线操作,分别验证最后一个合法 offset 与第一个越界 offset。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S39 · 启发式新代码显式调用 type_name() ;移除对原可写 type_name 字段的赋值。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C27 · 启发式将直接构造的 uvm_vreg_cbs / uvm_vreg_field_cbs 换成自己的具体派生类:构造函数接收 string name 并调用 super.new(name),原回调方法体迁入对应 override。uvm_callbacks 注册的对象仍指向原 vreg/field,传入新派生实例;原本已经使用具体回调类的代码可保留。uvm_reg/uvm_reg_block/uvm_reg_file/uvm_reg_cbs 的抽象限制放宽不要求反向修改已有派生类。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C25 · 启发式uvm_reg::m_get_reg_by_full_name(name) 改为 uvm_reg::get_reg_by_full_name(name);uvm_reg_field::m_get_field_by_full_name(name) 改为 uvm_reg_field::get_field_by_full_name(name)。保留原完整层级名,并在解引用查询结果前检查 null。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C24 · 文本匹配若环境定义了 UVM_SPARSE_ARRAY ,需移除该 define 并改用普通 uvm_reg 数组建模。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:D3 · 文本匹配若定义了 UVM_REG_ENABLE_ADDRESS_EXCLUSION ,改用 resource 排除机制。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:D4 · 文本匹配大端环境迁移前必须检查 adapter 两侧数据和总线 beat。示例 +BE_ADAPTER_COMPENSATION 在目标版本的 adapter 写入口反转回原数据,读出口预反转,以抵消目标库操作;它仅为本机固定宽度、地址映射和 response 契约验证过的处理方案,不能直接套用到任意桥接/层级 map。部署前与总线端序契约、有效位宽一并验证,也可采用经过验证的用户 frontdoor。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S13 · 启发式有 W1C、RC 或硬件自主更新字段的寄存器必须核对真实访问粒度。可使用显式 bus sequence 或经过验证的用户 frontdoor 实现 byte strobe,访问成功后只预测目标字段; +DIRECT_FIELD_WRITE 演示该固定映射场景。禁止仅屏蔽 warning 后将整寄存器访问视为等价。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S14 · 启发式失败处理和 scoreboard 必须检查 status;不要继续依赖 1.2 失败后被更新的镜像。该提示不是要求无条件重新 predict,恢复值应由成功重试或可靠观测确定。
用户接口与行为 · 按条件核对 · 无需启用扫描:无对应规则单 codec、受控回调链可在 pre_write/post_read 直接更新 rw.value,停用旧 encode/decode;相同探针两版均恢复硬件 54、读值 1。多 codec 的 decode 原为逆序调用,post_read 为正序,不能机械迁移,需在自定义 backdoor 中显式维持编码顺序、逆序解码与写回,并另行验证。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S22 · 启发式monitor/scoreboard 必须聚合完整事务的失败状态。示例在两拍全部成功时才通过公开 predict 更新镜像,两版均在任一拍失败时保留原值;该例限定普通 RW、串行、小端、全字节访问,复杂副作用字段、乱序、多 master 需按总线协议建模,不能把它视作完整 predictor 的通用替换。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S24 · 启发式对初始化时可确定的能力,把原构造能力与各次 add_coverage 参数合并为位掩码,通过 new(name, parent, has_coverage) 第三参传入;再用 set_coverage 选择当前启用项。不能用 set_coverage 冒充扩充能力。若运行中才增加能力,需调整模型生命周期或维护自己的模型实现;没有给存量对象追加能力的已验证通用替代。只使用其他保留接口时无需因此整体替换 reg-bank。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:D6 · 文本匹配在已确保没有并发 producer / 阻塞 consumer 的复位或清场边界,使用 while (fifo.try_get(item)) 排空并断言 fifo.used()==0 ;该公开方法将 mailbox 返回值归一成 bit,且保留 get_ap 广播。若刻意不需要广播,应在用户派生类中实现明确的排空策略并单独验证。并发场景须先停止参与方,不可仅将 flush 换成循环后宣称等价。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S9 · 启发式使用 extension 的 scoreboard 显式检查两侧键集合,并逐项比较每个 extension,结果与 GP 基本字段比较共同决定匹配。 semantic_probe.sv 的 extensions_equal() 演示了派生 GP 访问受保护集合的方案;实际环境也可对已知 extension 类型逐项检查。依赖日志的断言同步核对消息 ID、数量和 severity;不能仅凭 compare 输出安静就判断相等。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S12 · 启发式跨版本交换时升级两端契约或显式保留旧格式;更换 compat packer 不会撤销 GP 自身新增的 m_dmi。 serialization_probe 中相同 GP 在 compat packer 下仍由 240 位变为 241 位,1.2 默认流不携带 DMI 状态。两版已有的预分配 data 数组解包风险也应核对 UVM_TLM_GP_BUF_OVERFLOW_FIX ,不要仅凭同版闭环就免测。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S6 · 文本匹配 / S44 · 启发式需要维持派生字段自动赋值时,在派生 FIFO 中 override virtual function bit use_automatic_config() 并返回 1;已有 build_phase 仍须保留业务逻辑和所需的 super 调用。未依赖派生字段自动配置的普通 FIFO 传输无需为本条改写。字段 FLAG 的使能方式另按 M09-002 核对。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:S35 · 启发式先在实际阻塞 get 被 kill 的流程验证后续 can_get/get 能恢复,再移除针对旧计数泄漏的补偿;FIFO 清场另按 M08-001 验证,不能由本条推断 flush 已无风险。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:无对应规则基类句柄可保留,构造对象改为对应具体 socket。阻塞发起端用 uvm_tlm_b_initiator_socket#(T),阻塞目标端用 uvm_tlm_b_target_socket#(IMP,T) 并提供实现 b_transport 的 IMP;非阻塞端使用 uvm_tlm_nb_initiator_socket / uvm_tlm_nb_target_socket 并实现相应方向的 nb_transport。透传端改用对应的 uvm_tlm_{b,nb} passthrough {initiator,target}_socket。保留原 payload/phase 类型参数和连接方向,不要只删除 _base 后忽略新增的 IMP 参数。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C25 · 启发式仅使用 uvm_tlm_time 类型时可保留声明。自行组织库文件的构建将 tlm2/uvm_tlm2_time.svh 引用改为 tlm2/uvm_tlm_time.svh;使用 VCS 内置库和 import uvm_pkg::* 的用户代码不必额外 include 该类文件,避免重复定义。
用户接口与行为 · 按条件核对 · 主库保留扫描:D9 · 文本匹配普通 FIFO 和 req_rsp 传输调用可保留;根据 transport_channel 的 get_type_name() 输出匹配日志时,改为目标 uvm_tlm_transport_channel #(REQ,RSP)。类型判断优先使用实际类型句柄或 $cast;采用新 factory 创建能力时验证 override 后对象身份和一次完整请求/响应。
用户接口与行为 · 按条件核对 · 无需启用扫描:S36 · 启发式将容器声明为与端口 IF 参数匹配的 uvm_port_base#(IF) list[string] ,并调整后续访问;若需要旧 proxy 容器,可经 port.get_comp() 调用其查询接口。
用户接口与行为 · 命中后修改 · 主库保留扫描:C15 · 启发式审计全部 field FLAG 的实际操作意图,包括部分正向位、自定义宏和纯数字。若要保留旧版“除禁用项外都执行”,使用 UVM_ALL_ON | 原禁用位 ;若有意只执行部分操作,列出每个需要的正向位及对应禁用约束。S3 会计算受支持 FLAG 表达式的六类操作使能并报告未知表达式;宏展开、set 操作及实际数据行为仍需核对,不能仅凭零命中或没有 NO_FLAG 核销。legacy field 开关作为过渡时仍需验证实际操作。
用户接口与行为 · 命中后修改 · legacy field 开关扫描:S3 · 启发式对需要 factory/create 的类补齐默认 name 构造参数并转发给 super;先核对 1.2 构建是否依赖 UVM_OBJECT_DO_NOT_NEED_CONSTRUCTOR ,勿将所有无参类都计为新增断点。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:C6 · 启发式 / D15 · 文本匹配uvm_do_with(x,{...}) → uvm_do(x, get_sequencer(), -1, {...}) 或手工 start_item/randomize/finish_item;过渡期可 +define+UVM_ENABLE_DEPRECATED_API 。
用户接口与行为 · 命中后修改 · deprecated 开关扫描:C5 · 文本匹配uvm_sequence_utils(TYPE,SEQR) 改为 `uvm_object_utils(TYPE) ;原宏还声明了 typed p_sequencer,需要该成员时保留 `uvm_declare_p_sequencer(SEQR) 。只有确需使用具体 uvm_sequence_library 时才加 `uvm_add_to_seq_lib(TYPE, LIBTYPE) ,LIBTYPE 是 library 类型,不能直接填旧 SEQR。 uvm_sequencer_utils(TYPE) 改 `uvm_component_utils(TYPE) ;package 宏改为匹配的 package / endpackage 。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:D1 · 文本匹配普通读取可保留;新目标代码可显式写 T::type_name() 。重复声明或要求变量的用法单独核对,跨版本代码不能把旧常量机械改成函数调用。 需要可写字符串、ref 实参或缓存类型名时,先复制到自有 string 变量;不要仅因 type_name 的实现变化给 comparator/pair 补 factory 注册。registry 初始化另见 M01-006,抽象组件注册见 M10-003,predictor 的旧可写成员及 flush 见 M07-012。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:C27 · 启发式按原意检查构建开关。原先定义 UVM_NO_DEPRECATED 是排除旧接口,不能机械改成启用 UVM_ENABLE_DEPRECATED_API;仅当确实需要目标版保留的旧宏时开启新开关。
用户接口与行为 · 按条件核对 · deprecated 开关扫描:D2 · 文本匹配逐个确认分支意图。需要“恰为 1.2”与“支持 1.2 以后能力”时条件不同,不能一律把 UVM_VERSION_1_2 替换为 UVM_POST_VERSION_1_2。跨库签名示例见 semantic_probe 的目标宏分支;SV 预处理器没有 C 风格数值 #if ,可用构建定义区分受支持版本。 日志解析脚本用两版实际版本文本校验前缀和分隔规则;删除对旧 copyright 参数的直接引用,版权文本以所用库随附声明为准,不把它当版本判断接口。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S4 · 文本匹配直接 include 子宏文件的代码改用 uvm_macros.svh;跨版本打包须遵循 M02-001 的逐位验收,不能仅替换 compat packer。
内部实现 · 命中后修改 · compat 包扫描:D16 · 启发式无(可选用于整理 virtual 基类的 factory 注册)。
新增功能 · 可选采用 · 无需启用扫描:无对应规则无(1.2 中手写 do_* 处理的 real 容器字段可改用新宏)。
新增功能 · 可选采用 · 无需启用扫描:无对应规则默认注册字段的自动配置可保留。确需扩大资源查询范围时,在相关库编译前定义 +define+UVM_COMPONENT_CONFIG_MODE_DEFAULT=CONFIG_STRICT 并重建,检查实际选中值;该模式不会发现任意未注册成员。自定义操作位使用 UVM_FIELD_FLAG_SIZE 管理位宽并核对保留位,不能把扩大 FLAG 位宽当作恢复旧 FLAG 语义。
用户接口与行为 · 按条件核对 · 无需启用扫描:S40 · 启发式正常连接的 driver 无需改动;确不需连接的,在构造函数加 set_report_severity_id_action(UVM_WARNING, "DRVCONNECT", UVM_NO_ACTION); (VCS 2.0 内置 README "Migrating from 1.2" 第 2 条官方建议)。
用户接口与行为 · 按条件核对 · 无兼容恢复扫描:无对应规则普通 get_type_name() 或无参 type_name 读取可保留。若需要可写字符串或 ref 实参,先复制类型名到自己的 string 变量,停止将目标 type_name 当变量写入或重复声明;同源例子见 M09-006。通过抽象基类 factory 创建时,先设置具体类 override,再检查实际对象类型。
用户接口与行为 · 按条件核对 · 无需启用扫描:C27 · 启发式已有 uvm_random_stimulus 调用可继续使用并验证实际激励;需要改用 sequence 时再迁移约束与消费路径,不因兼容标注强制替换。
内部实现 · 可选采用 · 主库保留扫描:D12 · 文本匹配删除对 uvm_dump_re_cache() 的调用(若有)。保留缓存默认关闭:目标缓存只以表达式字符串为键,未区分 deglob( src/vcs-uvm-ieee-2020-2.0/dpi/uvm_regex.svh:46,59 )。utility_probe 先用 uvm_re_match("a.*","abc") 再用 uvm_is_match,同样代码在两库默认模式第二次均不匹配,目标开启缓存后错误匹配。混合 regex/glob 的查找结果可能依赖调用顺序,不能将缓存开关作为无条件性能优化(S21)。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:S21 · 启发式 / D7 · 文本匹配若环境引用 uvm_fgp_thread_object / uvm_fgpinit_phase ,需联系 Synopsys 确认替代方案;否则无
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:D8 · 文本匹配引用旧 native_dumping 文件或安装其 recorder 的脚本,迁移到目标安装提供的标准 uvm_custom_install_verdi_recorder.sv 流程,并核对 DPI 与启动配置。在实际 Verdi 中确认所需事务、字段及父子关系完整后,再移除旧脚本。未引用这些旧文件的流程无需因此替换文件;现有实测未覆盖全部 Verdi 工作流。
用户接口与行为 · 命中后修改 · 无兼容恢复扫描:D8 · 文本匹配