- 差异参考
- 按模块查阅
- Comparer / Printer / Packer / Recorder
- M02-017
旧录制取时开关失效:明确事务时间契约
影响范围
传入 +UVM_VERDI_BEGIN_TR_REALTIME,并依赖 uvm_tr_stream::open_recorder 的默认取时路径。
具体差异
未定义 UVM_VERDI_FORCE_BEGIN_TR_TIME 时,1.2 在 open_time 为 0 时按旧 plusarg 在 $realtime 与 $time 间选择,并赋给 time 变量;2.0 固定使用 $time。两版均可传入非零 open_time;两版的 FORCE 宏仍会强制置零。因此不能把删除 plusarg 直接解释为所有事务必然损失时间精度,也不能认为 time 参数能保留任意小数。
修改方案
若只需目标默认取时,删除失效 plusarg 后核对实际事务时间;若已有明确的整数时间契约,在调用 stream.open_recorder(name, recorded_time, type_name) 时传入按项目单位换算的非零 time。原先依赖小数分辨率或 Verdi 展示的路径需核对源 timeunit/timeprecision、time 转换和后端;没有已验证的通用开关替换。
兼容措施与范围:兼容开关和 compat 包不恢复旧取时 plusarg;显式非零 time 只固定该参数,不能恢复被量化的小数部分。UVM_VERDI_FORCE_BEGIN_TR_TIME 定义时仍优先置零。
迁移后验证
检查调用点时间单位、0/非零参数和 FORCE 宏;对所需时间间隔核对 recorder.get_open_time 与实际 Verdi 展示。若依赖小数时间,在实际集成中验证量化和舍入,不能只检查参数存在。
记录本条结果:M02-017 · 状态与证据。
已有实测与复现
vendor_migration_probe 未定义 FORCE 宏,显式传入 time 值 7,两个库的 get_open_time() 均返回 7。旧开关默认取时及小数精度差异仅作源码核对,尚无全部 Verdi 集成实测。
补充查阅
扫描定位与记录结果
有扫描规则,覆盖部分可识别写法。脚本检查名称、参数和部分 FLAG 表达式,并对少数直接声明关联使用点;未做完整类型解析或预处理,行为结果仍需验证。
- D14 · 文本匹配:VCS 旧 recorder 取时开关删除。
核对命中对象及生效分支后,在条目清单记录修改与验证证据;扫描规则记录用于整理命中位置。
源码与标准依据
核查方式:源码与实测核对。实测仅覆盖本条所列场景。
1. 默认取时分支移除旧 plusarg,显式时间与 FORCE 分支保留
VCS 内置 UVM-1.2:根据 plusarg 选择并存入 time:uvm_tr_stream.svh:320–337。
VCS 内置 uvm-ieee-2020-2.0:open_time 为 0 时直接取 $time:uvm_tr_stream.svh:262–272。
补充定位
VCS 内置 UVM-1.2:uvm_tr_stream.svh:320–337
VCS 内置 uvm-ieee-2020-2.0:uvm_tr_stream.svh:262–272
标准依据:旧 plusarg 是 Synopsys 定制;Accellera 两版无此分支。此处结论基于实际源码,不宣称已验证所有工具时间显示。
标为“源码标注”或未注明原文核对的条款仅作定位;具体库行为以源码和实测为准。
引用代码(高亮为引用行);上方行号链接可直接定位。
完整源码 · SHA256:4e373501ca2bc9af44d4f168043d2ce07725ff3115a3966455b51529e48839d5
完整源码 · SHA256:9eebb1f40671f6c3d62666b8fd4f1e35b8a541d2a2c888c9a85a76bdd81d6af5
返回Comparer / Printer / Packer / Recorder · 迁移清单