跳转至

输入查询内容

    本页内容

    内部实现

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

    用户接口与行为差异 · 迁移清单

    Object / Factory

    条目 具体差异
    M01-006 registry 延迟注册与初始化实现
    其他行为变化
    2.0 通过 uvm_deferred_init 队列在 uvm_init() 中注册( base/uvm_globals.svh:422 ),而 coreservice 首次 get() 会自动触发初始化,不能据此断言普通 factory.print() 会看不到注册项。自定义 coreservice/静态初始化代码仍需核对调用顺序。新增 uvm_abstract_component_registry / uvm_abstract_object_registry 支持抽象类注册;未 override 而创建时报 UVM/ABST_RGTRY/CREATE_ABSTRACT_* ,这与直接 new 抽象类的编译失败不同。新增 type_id::set_type_alias("别名") 。 registry.type_name 的成员形态变化统一见 M09-006。
    M01-017 link 工厂显式保存调用进程的随机状态
    其他行为变化
    parent_child / cause_effect / related 三种 get_link 在 new 前后新增 process::get_randstate/set_randstate。utility_probe 对 parent_child 的观察两版都保持随机状态,不能从新增防护代码推断本机旧版必然改变后续随机序列。

    Comparer / Printer / Packer / Recorder

    条目 具体差异
    M02-013 uvm_text_tr_database / uvm_text_tr_stream 拆分为独立文件
    编译断点 日志/调试变化
    text database/stream 拆为独立文件,set_file_name 等入口与 UVM_CHANGE_DEFAULT_TR_DB_NAME 定制保留;注册与句柄类型也随新框架更新,不能称类体逐字不变。正常通过 uvm_pkg 获得类型;自行 include 宿主文件并依赖 text 类型的用法需同步文件依赖。
    M09-010 pack、unpack、record 宏的文件拆分
    编译断点 高风险 · 静默/数据
    宏从 uvm_object_defines.svh 拆到 5 个新 policy defines 文件(对用户透明,include 由 uvm_macros.svh 完成);签名新增默认实参( PACKER=packer 、 RECORDER=recorder 、 COMPARER=comparer 、 COPIER=copier ),在 do_pack(uvm_packer packer) 等标准上下文中的既有调用保持源码兼容。

    Phase / Objection / Event

    条目 具体差异
    M03-007 新增 uvm_phase_hopper 类,phase 执行引擎从 uvm_phase 迁出
    其他行为变化
    原 uvm_phase 内部的调度/执行逻辑整体迁入 uvm_phase_hopper (经 uvm_coreservice_t::get_phase_hopper() 获取)。 uvm_task_phase / uvm_topdown_phase / uvm_bottomup_phase 的 traverse 相应改调 hopper.traverse_on/execute_on (如 uvm_task_phase.svh:86-114 )。默认行为不变: traverse_on 默认仍调 imp.traverse() ,用户自定义 phase 的 traverse/execute 重写继续生效;高级用户可通过扩展 hopper 改变 phase 遍历/执行方式。普通用户无感知。

    Reporting / 命令行

    条目 具体差异
    M04-010 uvm_report_object 的 report handler 改为懒创建
    日志/调试变化 其他行为变化
    2.0 构造函数不再创建 m_rh ,首次使用任一 reporting 方法时才创建。直接读写 m_rh 成员(非标但大环境中存在)在首次 API 调用前会拿到 null。
    M04-017 新增文件 uvm_cmdline_report.svh(+UVM_VERBOSITY / +uvm_set_* 解析抽离)
    日志/调试变化 其他行为变化
    命令行 reporting 配置解析从 uvm_root 抽为独立类并增加"used 跟踪/dump/未生效告警"能力;+UVM_VERBOSITY 多个时仍取第一个(与 1.2 一致),非法值仍 ILLVERB/NSTVERB 告警。用户可见面基本不变。

    Config DB / Resource DB

    条目 具体差异
    M05-007 resource 审计表搬迁与读写实现
    编译断点 日志/调试变化 其他行为变化
    审计数据从 rsrc.access 移至 rsrc.dbg.access ,直接访问 access 成员的调试代码编译失败; record_read_access 等公开方法保留、行为等价(仍受 uvm_resource_options::is_auditing() 控制)。read/write 主体逻辑下沉为可重写的 do_read/do_write 钩子,供用户定制资源读写行为。 uvm_resource_options (turn_on/off_auditing、is_auditing)两版 API 不变。
    M05-009 uvm_resource_pool 内部表结构改用 uvm_shared 队列,rtab/ttab 类型变化
    编译断点 其他行为变化
    公开查找接口(lookup_name/lookup_type/lookup_scope 等)返回类型 uvm_resource_types::rsrc_q_t 不变;但 rtab / ttab 为 public 成员,直接遍历它们的调试/统计代码需按新容器类型改写( q.value[i] 替代 q.get(i) )。

    Sequence / Sequencer

    条目 具体差异
    M06-006 uvm_sequencer 的仲裁状态位 public → protected
    编译断点 其他行为变化
    slave/被动 agent 驱动中常见的技巧——直接改写 sequence_item_requested / get_next_item_called 绕过 get_next_item/item_done 配对检查——在 2.0 编译失败(protected 访问)。
    M06-018 get_tr_handle 返回类型 integer → int
    无行为变化
    两者均为 32 位有符号四态整数;此处仅统一类型拼写,不改变 X/Z 表达能力。

    RAL(寄存器模型)

    条目 具体差异
    M07-016 uvm_mem_mam:地址类型 bit [63:0] 统一为 uvm_reg_addr_t
    无行为变化
    uvm_reg_addr_t 默认即 bit [63:0] (受 UVM_REG_ADDR_WIDTH 控制),默认配置下完全等价;仅在改动地址宽度宏的工程中有类型一致性收益。

    TLM

    条目 具体差异
    M08-010 无代码差异文件清单(已逐一核对,供核销)
    无行为变化
    tlm1/uvm_ports.svh 、 uvm_exports.svh 、 uvm_imps.svh 、 uvm_tlm_imps.svh 、 uvm_sqr_connections.svh 、 uvm_sqr_ifs.svh 、 tlm2/uvm_tlm2_ports.svh 、 uvm_tlm2_exports.svh 、 uvm_tlm2_imps.svh 、 uvm_tlm2_defines.svh 、 macros/uvm_tlm_defines.svh (宏集合两侧逐一比对一致)仅有注释/ @uvm-ieee 标注/排版差异; tlm2/uvm_tlm2_sockets.svh 仅 uvm_error 宏调用尾分号清理; tlm1/uvm_analysis_port.svh 的 write 逻辑两侧等价(Verdi 录制钩子为 Synopsys 双侧共有,见下节)。

    Field Automation / 版本宏

    条目 具体差异
    M01-003 __m_uvm_field_automation 签名变更 + __m_uvm_status_container 删除
    编译断点 高风险 · 静默/数据
    __m_uvm_field_automation 并未从类中删除,2.0 保留了第二参为 uvm_field_flag_t 的空实现;字段操作主路径已改为 do_execute_op() 。旧手写 override 可能因签名不匹配报错,即使同步签名也不能恢复操作分派。应区分“兼容空钩子仍存在但不再由标准操作调用”与“status container 被删除”;后者的直接引用才是符号缺失的编译断点。 utils_begin/end 宏生成的函数也由 __m_uvm_field_automation 改为 do_execute_op(uvm_field_op op),并用局部 __m_uvm_execute_field_op 分派 COPY/COMPARE/PRINT/RECORD/PACK/UNPACK/SET 等操作。旧内部辅助宏 m_uvm_print_int / m_uvm_record_* 同步退出旧分派路径;手写这些宏的代码改用对应 policy API。只使用 field 宏的代码无需手写分派函数,但仍须按 M09-002 核对 FLAG
    M04-006 删除:uvm_status_container 与 uvm_scope_stack 类
    编译断点
    两者是老 field automation 的内部支撑类( uvm_object::__m_uvm_status_container 同步移除)。主流环境极少直接引用,但 custom field automation/printer 扩展可能触碰。
    M09-017 无用户可见变化的宏文件
    无行为变化
    uvm_callback_defines.svh 、 uvm_tlm_defines.svh 、 uvm_reg_defines.svh 在 VCS 1.2→VCS 2.0 间宏集合与语义无用户可见差异(tlm 的 Verdi 插桩两侧一致,见下节); uvm_undefineall.svh 仅新增 `undef UVM_XCELIUM 等清理项; uvm_objection_defines / uvm_policy_defines / uvm_field_op_defines 在两个版本中均不作为独立文件存在,本模块无对应条目。

    Component / VCS 集成

    条目 具体差异
    M10-002 uvm_driver / uvm_push_driver 新增 factory 注册
    其他行为变化
    两个 driver 基类在 2.0 通过参数化注册宏使用 uvm_component_registry,并补 type_name 声明,可按类型查询和覆盖。 m_uvm_component_registry_param 是宏名,并非新的 registry 类名;参数化注册也不保证按字符串名称查找能力。
    M10-005 uvm_random_stimulus 降级为 @uvm-compat 兼容 API
    新增/接口调整
    2.0 将该类标为 @uvm-compat,按发布说明属于兼容旧版接口。去除注释后类体 token 一致;它调用的新库随机化、报告等机制仍可能改变外围行为,不能从类体不变推导整个仿真逐字等价。

    版本适用范围