跳转至

输入查询内容

    本页内容

    迁移步骤

    用户接口变化总览阅读 UVM-1.2 的 API、宏和行为变化,再按下面步骤修改代码。手册覆盖所有用户接口;具体改动依据条目中的旧写法和触发条件确定。

    1. 保存可比较的 1.2 基线

    固定 VCS 版本、seed、测试列表、配置和超时。记录总线事务、scoreboard 结果、覆盖率及关键镜像;涉及外部 golden/DPI 的 packet 保存实际位流。将环境改动与库切换分别记录。

    检查实际 SoC 代码使用 uvm_migration_scan.py,先阅读下载与扫描说明,无需 VCS 环境。示例包里的三个 run_*_review.py 用于复现附带的最小 TB,按需选择;用途见脚本分工

    1
    2
    3
    4
    # 不提供 path:扫描 YAML 的 check_path(模板为 /project/tb)
    uv run tools/uvm_migration_scan.py
    # 提供相对 path:只扫描 check_path 下的 env/
    uv run tools/uvm_migration_scan.py env/
    

    先将 YAML 的 check_path 改为实际工程目录。扫描器默认扫描全部文本,自动生成 JSON、CSV 和扫描摘要;通过 --ext 可以主动缩小后缀范围。有未过滤命中返回 1,配置、输入或输出失败返回 2,零命中不能证明兼容。

    由报告的 entry_ids 定位具体改法;每个条目列出对应规则、检测方式和单项扫描命令。同步核对无对应规则的条目,按适用条件和验证方法补齐人工检查。

    2. 切库并修复编译断点

    使用 -ntb_opts uvm-ieee-2020-2.0,为两库分配独立构建目录。按照 C 系列清单 处理删除成员、宏与签名;需要旧宏时临时开启 deprecated,需要 compat packer/proxy 时显式编译 compat 包。

    先确认每个命中对象的真实类型和预处理分支,再修改。比如同名 kill 可能属于 sequence 或自定义对象,不能因文本命中统一替换。

    3. 在回归通过前核销静默风险

    检查面 必须观察
    激励 sequence 启动次数、约束值、优先级、parent/sequencer、两笔以上 push 请求
    生命周期 实际 phase objection、kill 后锁和请求、响应消费及溢出
    数据与检查器 field compare/record/pack 是否执行、GP 每个 extension、catcher 次数
    RAL 大小端、总线宽度、byte enable、相邻硬件更新、任意拍失败和 backdoor codec
    配置 resource 选中值/优先级、命令行宽值、regex/glob 顺序
    外部契约 与保留的 1.2 golden 逐位比较,确认接收端格式同步

    先运行 最小示例 理解差异,再把对应断言移到环境级测试。正文中的替代方案都有适用条件,尤其不能把普通 RW/串行场景的 RAL 方案直接扩展到乱序和带副作用字段。

    4. 分层回归

    按 smoke → 模块 → 子系统 → SoC 扩大范围。对比错误/告警分类、激励与事务完成、scoreboard、覆盖率和性能。新增或消失的日志逐项解释;不要屏蔽报错后直接宣布等价。

    对齐标准按观察内容区分:

    观察内容 验收方式
    业务数据、激励完成与检查器 满足协议和功能契约;注入错误时检查器能检出,完成条件不能只依赖零报错
    日志、版本字符串与报告格式 按对应条目更新解析;新增或消失的诊断逐项解释,不要求全文相同
    随机激励与合法仲裁顺序 同 seed 不保证跨库轨迹相同;核对约束、完成性和覆盖,固定向量需求应保存并回放实际数据
    外部 1.2 位流契约 与保存的 golden 逐位一致,并确认接收端正确解码;同版闭环不能替代跨版本比较
    覆盖率与性能 固定测试范围与统计口径,解释差异并满足实际验收目标,不从单个 seed 推断整体等价

    随机源与仲裁的具体边界见内置 reg/mem sequencelock 授权,外部位流见packer

    阶段一完成条件:所有适用的编译断点已处理;按全部静默与数据风险及各模块适用条件完成行为验收,包括无扫描规则的条目;关键回归结果与预期相符。高风险项仍待验证时,阶段一不能标为完成。其余未完成项保留实际适用范围与验证缺口,不计为已验证。

    5. 收敛兼容依赖

    每个 compat/deprecated 命中记录稳定条目 ID、依赖原因和替代计划。移除一项后重跑相关最小测试与环境回归,再关宏或删除 import。主库保留且行为符合需要的接口可继续使用;外部仍需 1.2 位流契约时,记录并保留必要的 compat 依赖。旧 UVM_NO_DEPRECATED 是 opt-out,不能机械改名为新 opt-in 而反转脚本意图。

    版本适用范围