跳转至

输入查询内容

    本页内容

    新增功能

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

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

    Object / Factory

    条目 具体差异
    M01-011 新增 uvm_policy / uvm_copier / uvm_field_op 与 do_execute_op / set_local 钩子
    新增/接口调整
    纯新增能力:uvm_policy 为所有策略类基类(扩展挂接 set_extension/get_extension);uvm_field_op 描述字段操作并由 do_execute_op 分发—— 自定义字段自动化行为应 override do_execute_op 而非旧钩子 ;pack/unpack 新增 longint 流变体。 set_int_local/set_string_local/set_object_local 保留但改经 uvm_field_op 实现。
    M01-013 use_uvm_seeding 静态变量 → get/set_uvm_seeding()
    新增/接口调整
    新旧接口读写同一变量( uvm_default_coreservice_t::get_uvm_seeding() 直接返回 uvm_object::use_uvm_seeding , uvm_coreservice.svh:367-371 ), 旧代码 uvm_object::use_uvm_seeding = 0; 在 2.0 仍然生效 ;新写法是标准推荐形式。
    M09-012 新增 abstract 注册宏族(virtual class 可注册 factory)
    新增/接口调整
    新增 object/component abstract utils 及 param/begin/end 变体,通过 abstract registry 注册。registry 提供 create 入口,允许 factory override 到具体类型;无具体 override 时返回 null 并报告抽象创建错误,不是完全没有 create API。
    M09-013 新增 uvm_declare_type_alias
    新增/接口调整
    新增宏,为已注册类型声明 factory 类型别名( type_id::set_type_alias ),支持多名称 override。

    Comparer / Printer / Packer / Recorder

    条目 具体差异
    M02-009 uvm_printer 新增标准配置/查询 API(accessor、set_default/get_default、element 栈)
    日志/调试变化
    新增全套标准化接口:set/get_name_enabled、type_name_enabled、size_enabled、id_enabled、radix_enabled、radix_string、default_radix、root_enabled、recursion_policy、max_depth、file、line_prefix、begin/end_elements; uvm_printer::set_default/get_default 及各子类同名静态方法(经 uvm_coreservice_t 管理默认实例);新类 uvm_printer_element / uvm_printer_element_proxy ( :366 / :410 )与 element 栈 API 供自定义 printer 使用; object_printed() 提供递归状态查询。 print_generic_element(name,type_name,size,value) 替代了 1.2 用 size=-2 打 "..." 的技巧(print_array_range 内部改用它)。
    M02-010 uvm_packer 新增 API(pack_object_with_meta / unpack_object_with_meta / set_default 等)
    高风险 · 静默/数据
    新增对象引用追踪打包(with_meta 系列,可保持结构/句柄一致性,@uvm-contrib 待进标准)、pack_object_wrapper/unpack_object_wrapper、is_object_wrapper; uvm_packer 注册进工厂( uvm_object_utils ),构造 new(string name="") ,经 coreservice 管理默认实例。另新增 compat 辅助 unpack_string_with_size(int num_chars=-1) ( :363 ,注意基类实现忽略 num_chars,直接等价 unpack_string())。
    M02-011 uvm_comparer 新增标准配置 API
    新增/接口调整
    uvm_comparer extends uvm_policy 并注册工厂, new(string name="") ;新增 flush()(重置 miscompares/check_type/result/递归状态——注意不重置 show_max/verbosity/sev/threshold)、 set_threshold (快速失败阈值,默认 1)、object_compared() 递归状态查询。1.2 字段 policy/show_max/verbosity/sev/miscompares/result/check_type 全部保留(@uvm-compat)。
    M02-014 新增 uvm_cache / uvm_lru_cache(及内部 uvm_regex_cache)
    新增/接口调整
    通用缓存基类 + LRU 实现,标注 @uvm-contrib(尚未进标准正文)。纯新增,不影响存量代码。
    M02-015 新增 comparer 宏与命名比较辅助
    高风险 · 静默/数据
    目标新增 comparer 宏族(uvm_compare_int/enum/real/object/string/sarray/qda、named 变体及 threshold begin/end),供手写 do_compare 时按目标 comparer 策略调用。pack/record 宏的拆分、默认 policy 参数和原有调用兼容性统一见 M09-010;跨版本位流变化见 M02-001。

    Phase / Objection / Event

    条目 具体差异
    M03-010 新增 phase 图查询 API:get_predecessors / get_successors / get_sync_relationships / get_objection_total
    新增/接口调整
    phase 图结构(前驱/后继/同步关系)与 objection 总数首次提供只读公开访问器,便于调试与结构化检查(如迁移期校验自定义 domain 的挂接)。
    M03-013 uvm_queue::wait_until_not_empty() 新增;uvm_pool/uvm_queue/uvm_barrier 加入工厂注册
    新增/接口调整
    三者获得 factory 注册( type_id::create 可用),API 面其余不变; uvm_queue 新增 wait_until_not_empty() 阻塞任务。 uvm_barrier_pool / uvm_event_pool typedef 保留( uvm_pool.svh 尾部,标注 §10.4.2.1/§10.4.1.1)。

    Reporting / 命令行

    条目 具体差异
    M04-015 新增 API(uvm_globals / uvm_misc)
    新增/接口调整
    新增库初始化/状态查询( uvm_init / get_core_state )、字符串转 verbosity、与 uvm_split_string 语义不同的 uvm_string_split (保留空字段,旧函数跳过空字段)。另 uvm_re_match 新增 deglob 默认参数( src/vcs-uvm-ieee-2020-2.0/dpi/uvm_regex.svh:40 ), uvm_is_match 改经 deglob=1 实现;不能把调用重构推导为所有开关下都等价,缓存模式问题见 M10-006。

    Config DB / Resource DB

    条目 具体差异
    M05-006 新增 config_db / resource_db implementation 类,DB 行为可工厂级替换
    其他行为变化
    config_db 的 get/set/exists/wait_modified 等外观接口委托 implementation 实例,可经 set_imp() 或 factory override 定制( @uvm-contrib )。 trigger_modified(inst_name, field_name) 是 implementation 类的方法,不能直接写为 uvm_config_db#(T)::trigger_modified(...) 。接口保留不代表所有资源查询行为等价,优先级、入池和单侧 override 变化见 M05-003/004/005/010。

    Sequence / Sequencer

    条目 具体差异
    M06-015 新增 get_randomize_enabled / set_randomize_enabled
    新增/接口调整
    标准新增的随机化使能存取器;旧字段继续可用。
    M06-016 新增 uvm_sequencer_base::get_arbitration_sequence / start() 重入检测改 mutex
    其他行为变化
    新增只读仲裁观察 API;start() 重入检测行为等价(重复 start 仍 SEQ_NOT_DONE fatal)。

    RAL(寄存器模型)

    条目 具体差异
    M07-008 uvm_reg_item 新增全套 set/get 访问器(34 个方法)
    新增/接口调整
    1800.2 为 uvm_reg_item 的属性定义标准访问器;字段本身仍保留公有(兼容直接读写 rw.value[0] 、 rw.kind 的旧代码)。parent 对应的方法名是 set_parent_sequence/get_parent_sequence,不能照搬字段注释中的 set_parent/get_parent。get_value_array 拷贝数组,不返回可直接修改原数组的别名;修改副本后必须 set_value_array 写回。do_copy 由 super.copy 改为 super.do_copy(目标 src/vcs-uvm-ieee-2020-2.0/reg/uvm_reg_item.svh:256 )。
    M07-009 uvm_reg_block 新增 unlock_model/wait_for_lock/set_lock/unregister/get_block_by_full_name,lock_model 行为增强
    其他行为变化
    新增解锁/锁定和全名查找接口。wait_for_lock 的实现是等待事件,并非检查 is_locked 后立即返回;若在锁定事件之后才调用,会等待下一次事件。set_lock 只是递归设置锁位,不等价于 lock_model 构建地址缓存或 unlock_model 清理缓存,动态修改模型须使用完整流程。
    M07-010 uvm_reg_err_service:寄存器检查错误处理钩子
    日志/调试变化
    检查不通过时的错误消息生成改为经由可替换的单例服务类,用户可 uvm_reg_err_service::set(自定义子类) 定制错误输出。1.2 中直接 override do_check 的做法仍可用( do_check 仍是 virtual)。源码标注 @uvm-accellera ——该 API 属 Accellera 实现扩展,不在 IEEE 标准正文。
    M07-015 uvm_reg_map 新增 API 组(uvm_reg_seq_base / get_physical_addresses_to_map / perform_accesses / do_bus_access / unregister / clone_and_update)
    新增/接口调整
    总线访问循环重构为 perform_accesses / do_bus_access ;旧 get_physical_addresses 签名保留。L2 和扩展矩阵覆盖 64 位寄存器拆分、32 位 memory burst、独立响应、并发访问及失败返回。实测并非全面等价:大端数据、字段访问粒度、失败后镜像行为见 M07-020 至 M07-022。复杂层级 map、自定义访问顺序和特殊总线协议仍需环境级验证。
    M07-017 uvm_reg_field 新增 set_rand_mode/get_rand_mode
    新增/接口调整
    纯新增。

    Field Automation / 版本宏

    条目 具体差异
    M09-014 新增 field 宏:real 数组/队列/静态数组与 aa_object_key/aa_string_key
    新增/接口调整
    补齐 real 类型容器。aa_object_key/aa_string_key 中 object/string 指数组的值类型,KEY 是显式的索引类型,不能将宏名解释为“对象/字符串作键”。相关实现用 $bits(KEY) 与整数索引打包,须按支持的键类型使用;既有宏签名统一加默认 FLAG

    版本适用范围