跳转至

输入查询内容

    本页内容

    静默与数据风险

    高风险 · 在回归通过前逐项验证

    编译通过与仿真无报错不能证明迁移等价。下列条目需观察激励、检查器、事务、位流或寄存器镜像。

    按症状排查 · 迁移核销清单 · 可运行示例

    Object / Factory

    规则 差异与修改方向
    C23 自定义 coreservice:新增虚方法与初始化时机
    用户接口与行为 · 自定义 coreservice 必须匹配目标接口,并在库实际初始化之前安装;用户 initial 的第一行不保证足够早。
    S23 callback 注册与重复 catcher 调用次数
    用户接口与行为 · 核对每条消息实际触发的 catcher 次数;全局与实例注册顺序可能改变重复调用行为。

    Comparer / Printer / Packer / Recorder

    规则 差异与修改方向
    S6 / S44 pack 位流格式改变:检查外部接收端与历史数据
    用户接口与行为 · 跨版本位流必须逐位对照 1.2 goldencompat packer 只覆盖部分路径,嵌套对象和 GP 需明确格式。
    C13 / S16 打印整数时显式传位宽,避免把 UVM_HEX 当宽度
    用户接口与行为 · 旧打印宏按目标原型改写,并验证 SIZE 与 RADIX;同名两参宏可能编译通过却传错位宽。
    S8 / C28 自定义比较:检查类型设置和不匹配消息数量
    用户接口与行为 · 类型检查由类型名改为 wrapper,不同类型名共用 wrapper 时可能漏检;顶层 compare 会重置 check_type,show_max=0 改为不限输出。

    Phase / Objection / Event

    规则 差异与修改方向
    S2 旧 test_done 不再保持 run 存活
    用户接口与行为 · 使用实际 run phase 的 objection 保持仿真存活;旧 test_done 单例的 raise/drop 在目标库中不能控制 phase 结束。
    S29 uvm_event#(T) trigger 默认数据机制:新增 set/get_default_data,reset 清数据
    用户接口与行为 · 需要在 reset 后使用上一次数据时,在 reset 前读取并保存到用户变量;后续消费该变量,不再向已 reset 的 event 取旧值。若业务需要默认数据,显式设置 set_default_data 并按默认值语义读取;两种意图不能混用。

    Reporting / 命令行

    规则 差异与修改方向
    S7 消息宏重写:新增 UVM_NO_ACTION 短路检查
    用户接口与行为 · 依赖 catcher 处理 NO_ACTION 消息时需调整入口或策略;消息宏会在进入 catcher 之前短路。
    C10a / C10c 旧全局配置、timeout 和 stop 函数需要改写
    用户接口与行为 · 全局配置调用优先改为 uvm_root::get().set_config_int/object/string(...) ,保留原实参与 object 的 clone 标志;这些组件方法在目标主库仍存在(M01-015),不需要 deprecated 开关。统一改用 config_db 时,必须同步类型、作用域和克隆契约,详见下面的映射。timeout 改 uvm_root::get().set_timeout(...) ;stop 的收尾超时按 M03-002 单独设计。
    S18 +uvm_set_config_int 宽值经 32 位字符串转换被截断
    用户接口与行为 · 超过32位的命令行配置改用 bitstream 参数或明确类型的 config_db 设置,并断言完整读回值。

    Config DB / Resource DB

    规则 差异与修改方向
    D5 禁用自动字段配置:旧开关改为组件方法
    用户接口与行为 · 检索 disable_apply_cfg_settings / UVM_DISABLE_APPLY_CFG_SETTINGS 使用点并改 override;如脚本依赖 +UVM_DISABLE_APPLY_CFG_SETTINGS 需删除。
    S5 / S15 resource precedence 的设置时机与保留写法
    用户接口与行为 · 默认 coreservice 下旧静态 precedence 字段仍有效;特殊实例优先级应在入池之后设置。
    S15 uvm_resource_pool 重构:set 系列改名 set_scope/set_override,新增 get_scope/delete 等 API
    用户接口与行为 · 普通入池与默认双置顶可保留;旧 name-only/type-only override 掩码必须改为对应的显式单侧接口。
    S11 resource_db::get_by_name 在 2.0 可能选中较低优先级资源(S11)
    用户接口与行为 · 直接按名查询 resource 时核对实际胜出的资源;依赖优先级的路径可采用已验证的显式查找与选择方案。

    Sequence / Sequencer

    规则 差异与修改方向
    S1 / D11 内置 sequence 库整体删除(uvm_random_sequence / uvm_exhaustive_sequence / uvm_simple_sequence)
    用户接口与行为 · 将旧内置类型改为自己的具体 sequence;需要候选集随机选择时用 uvm_sequence_library,显式登记候选类型并检查选中次数。字符串 default_sequence 改为 phase 路径下的 wrapper/instance 配置,完整代码见 M06-002;普通显式启动可写 seq = my_seq::type_id::create("seq"); seq.start(target_seqr)。
    S1 字符串 default_sequence 不再启动激励
    用户接口与行为 · 旧字符串式默认 sequence 与旧库管理接口需要迁移;已经使用 phase wrapper/instance 配置的代码可保留。
    S17 响应队列溢出默认不报错,需要显式开启
    用户接口与行为 · 显式开启响应队列溢出报告,并核对响应消费与队列深度,避免只依赖默认错误计数。
    S20 sequence_library 的选择边界与类型名
    用户接口与行为 · USER sequence library 动态缩减候选集时,应在选择前检查边界;固定候选集用法无需因此改写。
    S19 uvm_push_sequencer 未消费被 peek 的请求,第二笔激励失败
    用户接口与行为 · 至少验证两笔 push 请求;优先评估 pull 流程,保留 push 时需验证显式消费 FIFO 的局部替代。
    C5 uvm_do* 动作宏:约束、sequencer 与优先级的迁移
    用户接口与行为 · 把旧宏的约束、sequencer 和优先级完整传给新宏;只改宏名可能让激励丢失原约束。

    RAL(寄存器模型)

    规则 差异与修改方向
    S32 内置复位测试按 has_reset() 跳过字段
    用户接口与行为 · 自研复位测试用 field.has_reset() 判断是否存在 reset 值;镜像比较前保存原 get_compare(),对无 reset 字段临时 set_compare(UVM_NO_CHECK),比较后恢复原值。保留用户明确登记的 block/reg 排除,字段级排除单独核对实际名称。递归遍历采用每层本地寄存器加直接子块递归,避免叶寄存器重复 mirror
    D4 uvm_reg_address_config 与 get_registers_filtered_by_address 移除(UVM_REG_ENABLE_ADDRESS_EXCLUSION 扩展终止)
    用户接口与行为 · 若定义了 UVM_REG_ENABLE_ADDRESS_EXCLUSION ,改用 resource 排除机制。
    S13 大端 map 的整宽反转可能破坏数据,单拍也受影响(S13)
    用户接口与行为 · 大端访问在有效总线宽度小于 uvm_reg_data_t 整宽时可能传错数据;32 位寄存器接 32 位总线的单拍也需检查,补偿仅适用于已验证的映射与响应契约。
    S14 支持 byte enable 的相邻字段访问仍可能退化为整寄存器访问(S14)
    用户接口与行为 · 字段访问需验证真实 byte strobe 与相邻硬件值;必要时使用显式总线或 frontdoor 访问并只预测目标字段。
    S22 后门编解码可能失效:同时检查硬件值与读回值
    用户接口与行为 · 使用 backdoor encode/decode 时必须同时核对硬件值与逻辑值;单 codec 可用已验证的 pre_write/post_read 替代。
    S24 predictor 仅继承首拍 status,后续拍失败仍可能更新镜像(S24)
    用户接口与行为 · 多拍 predictor 必须聚合完整事务状态;任何一拍失败时,不能仅凭首拍成功更新镜像。

    TLM

    规则 差异与修改方向
    S9 uvm_tlm_fifo::flush() 不再向 get_ap 广播,VCS 两项队列实测存在残留(S9)
    用户接口与行为 · 无并发的清场边界可用 try_get 循环排空并断言 used=0;同时保留并检查 get_ap 广播契约。
    S12 uvm_tlm_generic_payload::do_compare() 全面重写
    用户接口与行为 · GP 比较必须同时检查 extension 键集合与各项内容;只依赖 GP compare 或安静的日志可能漏检。
    S6 / S44 uvm_tlm_generic_payload do_pack/do_unpack 无条件打包 m_dmi,打包流布局变化
    用户接口与行为 · GP 新增 DMI 打包位会改变跨版本协议;compat packer 不能撤销这项变化,应明确两端格式。
    S35 派生 TLM FIFO 的字段自动配置默认停止
    用户接口与行为 · 需要维持派生字段自动赋值时,在派生 FIFO 中 override virtual function bit use_automatic_config() 并返回 1;已有 build_phase 仍须保留业务逻辑和所需的 super 调用。未依赖派生字段自动配置的普通 FIFO 传输无需为本条改写。字段 FLAG 的使能方式另按 M09-002 核对。

    Field Automation / 版本宏

    规则 差异与修改方向
    S3 uvm_object_globals 字段标志位重构
    用户接口与行为 · 将硬编码 FLAG 数字改为对应的 UVM_COPY/COMPARE/PRINT/PACK/RECORD 及禁用位符号,不能按旧数字直接复制掩码。只禁用部分操作的声明按 M09-002 保留禁用位并显式启用其他所需操作;自动配置等自定义位另外核对目标编码。
    S3 uvm_field_* automation:显式启用需要的字段操作
    用户接口与行为 · 逐项核对 field FLAG 是否显式启用了所需操作;只有负向位或只含部分正向位都可能漏操作,且不一定告警。
    S4 版本宏与版本字符串的迁移
    用户接口与行为 · 版本分支应保持原来的精确版本或能力判断意图;旧版本宏不能统一替换为 POST 宏。

    Component / VCS 集成

    规则 差异与修改方向
    S21 / D7 正则接口与缓存:删除的调试 API 和匹配风险
    用户接口与行为 · 删除旧调试接口;regex/glob 混用时保持缓存默认关闭,并验证调用顺序不改变匹配结果。

    版本适用范围