- 差异参考
- 按模块查阅
- Config DB / Resource DB
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-003 → M05-001 → M05-005 → M05-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-919、src/vcs-uvm-ieee-2020-2.0/src/base/uvm_resource_pool.svh:505。 |