- 差异参考
- 按模块查阅
- RAL(寄存器模型)
- M07-020
大端 map 的整宽反转可能破坏数据,单拍也受影响(S13)
已复现的目标库问题
目标库大端数据问题已复现,包含 32 位寄存器接 32 位总线的单拍;固定映射的 adapter 补偿已验证。
影响范围
使用 UVM_BIG_ENDIAN 的访问都需核对;关键是有效总线数据宽度与 uvm_reg_data_t 整宽的关系,不要求寄存器大于总线。默认 64 位 reg_data 下,32 位寄存器接 32 位总线同样受影响;多级 map、桥接与不同响应契约需单独验证。
具体差异
目标实现对 UVM_BIG_ENDIAN 访问的整个 uvm_reg_data_t 做 byte streaming 反转,而非只处理有效总线宽度。64 位 reg_data / 32 位总线下,原低 32 位数据被移到高位,常规 adapter 截取低 32 位后写出零;读回也被移位后掩掉。reg_access_probe 在有无独立响应时均复现,status 仍为 UVM_IS_OK,普通小端场景无此现象。补充 reg_width_probe 使用 32 位寄存器和 32 位总线,写入及读回 0x12345678 在两版分别为原值 / 零,证明单拍等宽访问也需核对。
修改方案
大端环境迁移前必须检查 adapter 两侧数据和总线 beat。示例 +BE_ADAPTER_COMPENSATION 在目标版本的 adapter 写入口反转回原数据,读出口预反转,以抵消目标库操作;它仅为本机固定宽度、地址映射和 response 契约验证过的处理方案,不能直接套用到任意桥接/层级 map。部署前与总线端序契约、有效位宽一并验证,也可采用经过验证的用户 frontdoor。
兼容措施与范围:兼容措施不修复大端整宽反转;adapter 补偿仅适用于已验证的宽度、映射和响应契约。
已知限制:KI-003
迁移后验证
对每个 beat 检查地址、adapter 输入/输出、总线数据、status、硬件值和镜像;补偿只在已核对的宽度、映射和响应契约下使用。
记录本条结果:M07-020 · 状态与证据。
已有实测与复现
补充查阅
扫描定位与记录结果
有扫描规则,覆盖部分可识别写法。脚本检查名称、参数和部分 FLAG 表达式,并对少数直接声明关联使用点;未做完整类型解析或预处理,行为结果仍需验证。
- S13 · 启发式:大端 reg map 可能丢失数据,单拍也受影响。
核对命中对象及生效分支后,在条目清单记录修改与验证证据;扫描规则记录用于整理命中位置。
源码与标准依据
核查方式:源码与实测核对。实测仅覆盖本条所列场景。
证据:tests/uvm_review/reg_access_probe.sv、tools/run_reg_review.py;tests/uvm_review/reg_width_probe.sv 的默认与 +MIGRATED 对照验证等宽单拍及限定补偿,两版补偿后均保留 0x12345678。
VCS 内置 UVM-1.2:uvm_reg_map.svh:2940(do_bus_write,以拆分访问数据调用 adapter)
VCS 内置 uvm-ieee-2020-2.0:uvm_reg_map.svh:2835–2837(写前反转)、uvm_reg_map.svh:2873–2875(读后反转)
引用代码(高亮为引用行);上方行号链接可直接定位。
完整源码 · SHA256:a254af6fbba9757b181756f224a3969c7c3dd0a4e2cb8f9dc499de69d0e00b94
完整源码 · SHA256:b9ea15a750893808abd619fd203ed3f6ea8762e38af01dac0bc47a1646013d26