- 差异参考
- 按模块查阅
- Config DB / Resource DB
- M05-011
资源特化类删除返回子类型的静态 get_by_name/get_by_type
影响范围
调用资源特化子类的静态 get_by_name/get_by_type,或假设返回的都是该子类。
具体差异
uvm_int_rsrc/uvm_string_rsrc/uvm_obj_rsrc/uvm_bit_rsrc/uvm_byte_rsrc 类并未删除,其返回特化子类型的静态查询消失。构造函数现在调用 pool.set_scope,因此这组便利类型的构造还会入池,不应套用普通 uvm_resource 构造不入池的结论。
修改方案
按值类型使用 resource_db#(T)::get_by_name/get_by_type;结果为 uvm_resource#(T)。需要原特化子类型时显式检查 null 与 cast,不要假设池中同型资源都是该子类。
兼容措施与范围:特化资源类保留,旧静态查询不恢复;DB 返回基类型资源,所需子类型必须判空并 cast。
迁移后验证
编译 DB 查询替代,分别测试空结果、同值类型不同子类和预期子类;先判空再检查 cast 结果。
记录本条结果:M05-011 · 状态与证据。
已有实测与复现
补充查阅
扫描定位与记录结果
有扫描规则,覆盖部分可识别写法。脚本检查名称、参数和部分 FLAG 表达式,并对少数直接声明关联使用点;未做完整类型解析或预处理,行为结果仍需验证。
- C16 · 文本匹配:资源特化类的静态查询删除。 按括号配对识别特化资源的静态查询,支持标准包限定和嵌套参数;用户包同名类型不按标准 UVM 类型处理。
核对命中对象及生效分支后,在条目清单记录修改与验证证据;扫描规则记录用于整理命中位置。
源码与标准依据
核查方式:源码与实测核对。实测仅覆盖本条所列场景。
证据:tests/uvm_review/compile_extended.sv C16。
VCS 内置 UVM-1.2:uvm_resource_specializations.svh:72(uvm_int_rsrc 等通过 UVM_RESOURCE_GET_FCNS 定义静态查询)
VCS 内置 uvm-ieee-2020-2.0:uvm_resource_specializations.svh:72(特化类保留,但查询宏调用删除)
引用代码(高亮为引用行);上方行号链接可直接定位。
完整源码 · SHA256:5a83d54baaa380c333663fbc23e87564344400edbc94117facd59b7ec4567b13
完整源码 · SHA256:a53564a206282793961fae03ebaca9726fa846dd870af3d2c332e499ace68fe0
返回Config DB / Resource DB · 迁移清单