跳转至

输入查询内容

    本页内容

    Field Automation / 版本宏

    优先核对 field FLAG 是否启用全部所需操作;负向位或部分正向位都可能在目标库中跳过比较、打印等操作。字段自动化改由 do_execute_op/uvm_field_op 分派;旧 sequence 宏、print/record 宏、版本分支和 factory 构造约定分别核对。deprecated 与 legacy field 开关提供不同的过渡能力。

    建议阅读顺序

    本主题集中核对 field FLAG、版本判断和兼容开关。Sequence 动作宏归入 Sequence,打印与打包宏归入策略与 I/O,factory 注册宏归入对象模型与工厂。手写 automation 属于直接依赖 UVM 内部接口的代码。

    M09-002M09-007M09-008M09-006

    用户接口与行为

    条目 修改方案
    M04-013 uvm_object_globals 字段标志位重构
    高风险 · 静默/数据将硬编码 FLAG 数字改为对应的 UVM_COPY/COMPARE/PRINT/PACK/RECORD 及禁用位符号,不能按旧数字直接复制掩码。只禁用部分操作的声明按 M09-002 保留禁用位并显式启用其他所需操作;自动配置等自定义位另外核对目标编码。
    M09-002 uvm_field_* automation:显式启用需要的字段操作
    高风险 · 静默/数据审计全部 field FLAG 的实际操作意图,包括部分正向位、自定义宏和纯数字。若要保留旧版“除禁用项外都执行”,使用 UVM_ALL_ON | 原禁用位 ;若有意只执行部分操作,列出每个需要的正向位及对应禁用约束。S3 会计算受支持 FLAG 表达式的六类操作使能并报告未知表达式;宏展开、set 操作及实际数据行为仍需核对,不能仅凭零命中或没有 NO_FLAG 核销。legacy field 开关作为过渡时仍需验证实际操作。
    M09-006 注册宏的 type_name 改为函数形式
    其他行为变化普通读取可保留;新目标代码可显式写 T::type_name() 。重复声明或要求变量的用法单独核对,跨版本代码不能把旧常量机械改成函数调用。 需要可写字符串、ref 实参或缓存类型名时,先复制到自有 string 变量;不要仅因 type_name 的实现变化给 comparator/pair 补 factory 注册。registry 初始化另见 M01-006,抽象组件注册见 M10-003,predictor 的旧可写成员及 flush 见 M07-012。
    M09-007 废弃开关极性翻转:UVM_NO_DEPRECATED(opt-out)→ UVM_ENABLE_DEPRECATED_API(opt-in)
    其他行为变化按原意检查构建开关。原先定义 UVM_NO_DEPRECATED 是排除旧接口,不能机械改成启用 UVM_ENABLE_DEPRECATED_API;仅当确实需要目标版保留的旧宏时开启新开关。
    M09-008 版本宏与版本字符串的迁移
    编译断点 高风险 · 静默/数据 日志/调试变化逐个确认分支意图。需要“恰为 1.2”与“支持 1.2 以后能力”时条件不同,不能一律把 UVM_VERSION_1_2 替换为 UVM_POST_VERSION_1_2。跨库签名示例见 semantic_probe 的目标宏分支;SV 预处理器没有 C 风格数值 #if ,可用构建定义区分受支持版本。 日志解析脚本用两版实际版本文本校验前缀和分隔规则;删除对旧 copyright 参数的直接引用,版权文本以所用库随附声明为准,不把它当版本判断接口。
    M09-015 字段自动配置的查询模式与操作位宽
    其他行为变化默认注册字段的自动配置可保留。确需扩大资源查询范围时,在相关库编译前定义 +define+UVM_COMPONENT_CONFIG_MODE_DEFAULT=CONFIG_STRICT 并重建,检查实际选中值;该模式不会发现任意未注册成员。自定义操作位使用 UVM_FIELD_FLAG_SIZE 管理位宽并核对保留位,不能把扩大 FLAG 位宽当作恢复旧 FLAG 语义。
    新增功能 · 1 项

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

    条目 修改方案
    M09-014 新增 field 宏:real 数组/队列/静态数组与 aa_object_key/aa_string_key
    新增/接口调整无(1.2 中手写 do_* 处理的 real 容器字段可改用新宏)。

    全部新增功能

    内部实现 · 3 项

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

    条目 修改方案
    M01-003 __m_uvm_field_automation 签名变更 + __m_uvm_status_container 删除
    编译断点 高风险 · 静默/数据手写 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 等策略对象的接口与结果。只改旧钩子签名不能恢复操作调用。
    M04-006 删除:uvm_status_container 与 uvm_scope_stack 类
    编译断点命中引用即需随 field automation 重构一并改写(详见 field 自动化模块章节)。
    M09-017 无用户可见变化的宏文件
    无行为变化无。

    全部内部实现

    VCS 定制说明

    VCS 定制说明

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

    定制项 两版状态 工程影响与入口
    macros/snps_macros.svp 两版 VCS 文件相同,经 uvm_macros.svh 引入;Accellera 无 存量厂商扩展,无需因文件存在单独改写。
    UVM_VCS_DTL / UVM_VCS_* 与 Verdi 开关 目标宏入口含动态加载声明族、录制开关推导及 UVM_NO_VERDI_DPI 逻辑 属 VCS/Verdi 集成;选库与编译配置按目标安装核对。
    uvm_tlm_defines Verdi 插桩 目标 UVM_SEQ_ITEM_PULL_IMP 根据 UVM_VERDI_NO_PORT_RECORDING 选择插桩版本 端口事务追踪见 TLM 模块定制说明;不把调试可见性等同于功能全覆盖验证。
    ZEMI4UVM / UVM_VCS_FGP 旧 ZeBu 属性与 FGP 宏体系不再沿用 FGP 见 M10-007;ZeBu 流程需单独验证。
    旧对象 create 宏 VCS 1.2 默认 new()+set_name() 与 Accellera 不同,registry 默认仍 new(name) 编译断点必须结合旧构建开关判断,见 M09-003

    版本适用范围