IC 验证周报|2026 年第 42 周

信息覆盖范围

  • 时间范围:2026-10-12 00:00 至 2026-10-18 23:59(北京时间,ISO 2026 年第 42 周)。
  • 收录原则:仅收录覆盖期内合入官方上游主线、能从原始页面核对时间且与数字 IC 验证直接相关的内容。
  • 事实边界:本期条目均为开发主线提交,不等同于稳定版本发布;工程建议与影响分析均为编辑判断。

本周速览

本周没有值得单独收录的验证标准或稳定工具版本发布,但几项主线变化会直接影响验证结果的可信度与可调试性。Verilator 将分支覆盖从行覆盖中拆出独立开关,并修正异步 disable iff、clocking block 同周期驱动等时序语义;UHDM 修复多类常量折叠错误。工程侧,OpenTitan 改进 UVM RAL 多实例复位值生成,并为 Xcelium 补齐 Verdi FSDB dumper 的加载;Caliptra SS 则增加一组 USB GET_INTERFACE、test mode 与 endpoint halt 定向测试。共同信号是:工具升级验收不能只看“回归通过”,还要锁定覆盖率口径、断言负向用例、波形产物和自动生成模型的一致性。

标准与方法学

Verilator 修复异步 disable iff 未及时终止 SVA 尝试

已确认事实(主线合入时间:2026-10-15,北京时间):Verilator 官方仓库提交 7f87fa7e 修复 disable iff 在采样时钟之间变为真时,没有终止待决 assertion attempt 的问题。该提交重构 assertion NFA 处理,并新增覆盖异步禁用、同时间片变化和后续重新启用的回归用例。

编辑判断:这是可能造成断言结果失真的修复。工具升级验收应同时包含“禁用在时钟边沿”“禁用在两个边沿之间”“重新启用后再次触发”三类用例,并明确检查 pending attempt 是否被清空;只验证禁用期间不报错还不够。

Verilator 修复 clocking block 同周期驱动晚一拍

已确认事实(主线合入时间:2026-10-15,北京时间):Verilator 官方仓库提交 cdc82c49 修复 clocking event 发生后、同一 time step 内发出的 clocking output drive 被延后一个周期的问题。新增测试覆盖由另一个 clocking block 唤醒进程后再驱动输出的场景,并按 IEEE 1800-2023 第 14.16 节校验输出 skew。

编辑判断:依赖 clocking block 消除 testbench/DUT race 的 UVM driver 应把“边沿后同时间片二次唤醒并驱动”加入小型一致性测试。否则激励晚一拍可能被误诊为 DUT 协议延迟,甚至被 scoreboard 的容忍窗口掩盖。

工具与开源项目

Verilator 将分支覆盖与行覆盖拆分

已确认事实(主线合入时间:2026-10-18,北京时间):Verilator 官方仓库提交 4f66d295 新增 --coverage-branch,用于 if / else 和 ?: 的分支覆盖;--coverage-line 只保留基本块行覆盖,--coverage 仍会同时启用二者。提交同步更新命令行文档、覆盖率实现和独立的 line-only / branch-only 回归用例。

编辑判断:升级后若流水线显式使用 --coverage-line,覆盖率分母和报告内容可能变化。团队应在升级前后分别保存行覆盖、分支覆盖与组合覆盖的原始计数,并确认门禁脚本是否曾把“行覆盖”默认当成两者合集。

UHDM 修复通配位、枚举宽度与拼接选择的常量折叠

已确认事实(主线合入时间:2026-10-18,北京时间):CHIPS Alliance UHDM 官方仓库提交 81a92aca 修复多类编译期求值问题,包括类型转换或拼接时丢失 x / z / ? 通配位、无显式基类型枚举的宽度被算成 0,以及对“按原样保存”的拼接进行元素选择时取错位置。提交说明这些问题由 BlackParrot 上 read_uhdm 与 read_slang 的 sweep 差异发现。

编辑判断:解析器或前端的一致性验证,适合把大型设计的结构差异与最小复现配对保存。对地址匹配、参数化端口宽度和路由矩阵这类静态配置,elaboration 后的结构 diff 往往比运行仿真更早暴露错误。

工程实践

OpenTitan 的 UVM RAL 生成器支持 multireg 实例级复位值

已确认事实(主线合入时间:2026-10-17,北京时间):OpenTitan 官方仓库提交 a16b10dd 修改 reggen 与 UVM RAL 模板:当 multireg 没有采用 DV compact 模式时,每个寄存器副本从自身字段定义生成复位值,而不再统一复用第一个副本的字段。

编辑判断:寄存器数组若允许实例级 reset value,不应只抽查地址和字段宽度。生成流程应增加逐实例的 spec-to-RAL 对比,并用一次 reset mirror/predict 检查验证模型与 RTL 初值是否一致。

OpenTitan 为 Xcelium 的 FSDB 波形补齐 Verdi dumper 加载

已确认事实(主线合入时间:2026-10-15,北京时间):OpenTitan 官方仓库提交 34d8b3c4 在 dvsim 的 Xcelium 配置中,为 -w fsdb 加载 Verdi 的 PLI/CFC 库并设置所需库路径。提交说明,旧配置会因找不到 fsdbDumpfile 而无法生成波形;SHM 等其他波形格式不受影响。

编辑判断:回归系统对波形的验收应检查文件确实生成且可打开,而不只是仿真返回码。对按需启用的调试格式,最好单独设置一条轻量 smoke job,持续验证仿真器、dumper 和动态库路径的组合。

Caliptra SS 扩充 USB 标准请求与 hub 状态定向测试

已确认事实(主线合入时间:2026-10-16,北京时间):Caliptra SS 官方仓库提交 6e5ed764 增加全速/高速 USB device 与 hub 的 GET_INTERFACE 测试,以及 hub test mode、endpoint halt 等定向测试;同时更新 UVM sequence、checker API、测试清单和 nightly 回归配置。

编辑判断:协议控制请求适合按“命令 × 速率 × 拓扑 × 合法/异常状态”维护可追踪矩阵。新增 testcase 时同步更新 checker API、回归层级和 README,能避免激励已覆盖但结果只靠日志人工判断。

行业与岗位动态

本周暂无值得单独收录的更新。

本周推荐

推荐优先阅读 Verilator 的 分支覆盖拆分提交。它提醒团队:看似只是新增命令行开关,也可能改变长期趋势图和覆盖率门禁的统计口径。实际升级时,可先对一组固定回归并行生成 line-only、branch-only 与 combined 三份报告,再决定门禁指标如何迁移。

来源与说明

本期采用 7 个一手来源页面,均为覆盖期内合入官方仓库主线的提交:

  1. Verilator:修复异步 disable iff 未终止待决 SVA 尝试(主线合入时间:2026-10-15,北京时间)。
  2. Verilator:修复 clocking block 同周期驱动晚一拍(主线合入时间:2026-10-15,北京时间)。
  3. Verilator:新增独立分支覆盖开关(主线合入时间:2026-10-18,北京时间)。
  4. UHDM:修复多类常量折叠错误(主线合入时间:2026-10-18,北京时间)。
  5. OpenTitan:支持 multireg 实例级复位值(主线合入时间:2026-10-17,北京时间)。
  6. OpenTitan:为 Xcelium FSDB 加载 Verdi dumper(主线合入时间:2026-10-15,北京时间)。
  7. Caliptra SS:扩充 USB GET_INTERFACE、test mode 与 endpoint halt 测试(主线合入时间:2026-10-16,北京时间)。

本期没有发现覆盖期内值得单独收录的标准发布、稳定工具版本或可靠岗位动态。上述变更均可能在后续稳定版本前继续调整;生产环境采用前应锁定提交、阅读后续 release notes,并在隔离回归中验证。