跳转至

输入查询内容

    本页内容

    Config DB / Resource DB

    常规 uvm_config_db#(T)::set/get/exists/wait_modified 签名保持。直接使用 resource 自管理接口的代码需检查删除项;按名查询、override 和 precedence 需按实际资源集合验证。目标库增加 implementation 委托并拆分资源类文件,内部文件重组本身不要求修改常规 config_db 调用。

    建议阅读顺序

    普通 config_db 用户先看适用范围;直接操作 resource/pool 的代码重点检查入池、单侧 override 和选择优先级。

    M05-003M05-001M05-005M05-010

    用户接口与行为

    条目 修改方案
    M01-007 禁用自动字段配置:旧开关改为组件方法
    编译断点 高风险 · 静默/数据检索 disable_apply_cfg_settings / UVM_DISABLE_APPLY_CFG_SETTINGS 使用点并改 override;如脚本依赖 +UVM_DISABLE_APPLY_CFG_SETTINGS 需删除。
    M05-001 uvm_resource#(T) 自管理接口 set() / set_override() / get_by_name() / get_by_type() 被删除
    编译断点rsrc.set() → uvm_resource_pool::get().set_scope(rsrc, scope) rsrc.set_override(ovr) :默认 name+type 双置顶用 rp.set_override(rsrc, scope) ;仅 name/type 时分别用 set_name_override / set_type_override ;ovr=0 用 set_scope 。保留原掩码意图,不能无条件替换为双置顶。 uvm_resource#(T)::get_by_name(scope, name, rpterr) → uvm_resource_db#(T)::get_by_name(scope, name, rpterr) uvm_resource#(T)::get_by_type(scope, type_handle) :仅在 type_handle 就是 T 的类型句柄时改用 uvm_resource_db#(T)::get_by_type(scope) ;动态类型句柄应保留 pool 查询和 cast/null 检查。 自定义资源子类型中使用了 `UVM_RESOURCE_GET_FCNS 的,删除该宏调用,改用 uvm_resource_db / uvm_resource_pool 查询。
    M05-002 资源构造 scope 仍有效;对象 set() 删除后改由 pool 入池
    编译断点 其他行为变化显式 new(name, "scope") 可保留;将资源对象的 rsrc.set() 改为 rp.set_scope(rsrc, "scope") ,或使用主库保留的 rp.set(rsrc) 。普通资源两版都必须入池才能由数据库查询;无需仅为迁移删除构造 scope。连续示例见 M05-001,未直接操作 scope 的普通 config_db 用户无需为本条改写。
    M05-003 uvm_config_db#(T)::set 改进非空 context 下 /regex/ 拼接,优先级来源改为 coreservice
    其他行为变化常规 uvm_config_db#(T)::set(cntxt, "env.*", ...) 用法无需改动; uvm_resource_base::default_precedence 在默认 coreservice 下仍有效,新代码推荐 uvm_resource_pool::set_default_precedence() 。
    M05-004 resource precedence 的设置时机与保留写法
    高风险 · 静默/数据旧字段写法无强制迁移;新代码推荐 uvm_resource_pool::set_default_precedence(...) 或 uvm_coreservice_t::get().set_resource_pool_default_precedence(...) ,以及 rp.set_precedence(r, p) / rp.get_precedence(r) 。后一组实例级操作在资源入池后执行。
    M05-005 uvm_resource_pool 重构:set 系列改名 set_scope/set_override,新增 get_scope/delete 等 API
    高风险 · 静默/数据rp.set(rsrc) / 默认双置顶 rp.set_override(rsrc) 可继续使用。注意 2.0 rp.set(rsrc, override) 只检查 override 是否非零,旧 name-only/type-only 掩码会变为双置顶,须显式改用对应的单侧 override API。需要删除资源时使用新 delete() 。
    M05-008 自定义 resource_converter 已删除
    编译断点 日志/调试变化改用派生资源类重写 m_value_as_string() / convert2string() ;未启用过该宏则无需改动。
    M05-010 resource_db::get_by_name 在 2.0 可能选中较低优先级资源(S11)
    高风险 · 静默/数据审计直接使用 resource_db / resource_pool 按名查询并依赖优先级的代码;可使用 lookup_name(scope, name, type_handle) 后 get_highest_precedence() 并检查 null、转换类型。该替代不复刻 DB 的全部审计记录,应在封装边界采用。不要仅因 config_db 内部使用资源池就推断普通 config_db::get 同样受影响。
    M05-011 资源特化类删除返回子类型的静态 get_by_name/get_by_type
    编译断点按值类型使用 resource_db#(T)::get_by_name/get_by_type;结果为 uvm_resource#(T)。需要原特化子类型时显式检查 null 与 cast,不要假设池中同型资源都是该子类。
    M05-012 Resource DB 追踪需显式开启
    日志/调试变化需要 Resource DB 访问日志时,在仿真命令加入 +UVM_RESOURCE_DB_TRACE ;代码控制可在相关访问前调用 uvm_resource_db_options::turn_on_tracing() 。已有显式开启配置可保留;不需要该日志的环境无需增加开关。
    新增功能 · 1 项

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

    条目 修改方案
    M05-006 新增 config_db / resource_db implementation 类,DB 行为可工厂级替换
    其他行为变化常规 config_db 外观调用可保留;定制实现需覆盖既有 get/set/wait_modified 契约,并回归资源查找路径。

    全部新增功能

    内部实现 · 2 项

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

    条目 修改方案
    M05-007 resource 审计表搬迁与读写实现
    编译断点 日志/调试变化 其他行为变化rsrc.access[...] → rsrc.dbg.access[...] ;需要定制读写副作用时重写 do_read/do_write 而非修改库。
    M05-009 uvm_resource_pool 内部表结构改用 uvm_shared 队列,rtab/ttab 类型变化
    编译断点 其他行为变化仅直接访问 rp.rtab/ttab 的代码需要调整;正常使用查找接口者无改动。

    全部内部实现

    VCS 定制说明

    VCS 定制说明

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

    定制项 两版状态 工程影响与入口
    Config DB Verdi trace-aware 两版延续 config_db_options 追踪条件包含 is_verdi_trace_aware_used;不代表 Resource DB 同样自动开启。
    Resource DB Verdi trace-aware 1.2 有,2.0 未移植 显式开启访问日志见 M05-012
    lookup_name precedence 剪枝 1.2 在未定义 UVM_NO_RESOURCE_PRECEDENCE_OPT 时剪枝;2.0 不沿用 后接 get_highest_precedence 的路径与 get_by_name 排序路径不同;已复现风险见 M05-010,显式选择最高项见 M05-001。源码为 src/vcs-uvm-1.2/base/uvm_resource.svh:876-919src/vcs-uvm-ieee-2020-2.0/src/base/uvm_resource_pool.svh:505

    版本适用范围