IC 验证周报|2026 年第 43 周
信息覆盖范围
- 时间范围:2026-10-19 00:00 至 2026-10-25 23:59(北京时间,ISO 2026 年第 43 周)。
- 收录原则:仅收录覆盖期内合入官方上游主线、可从原始页面核对时间且与数字 IC 验证直接相关的内容。
- 事实边界:本期条目均为开发主线提交,不等同于稳定版本发布;工程建议与影响分析均为编辑判断。
本周速览
本周没有值得单独收录的验证标准或稳定工具版本发布,但开源验证工具链出现多项会改变结果解释方式的主线更新。Verilator 补齐 covergroup / cross 的 option.at_least,并修正 transition bin 的首次采样与重叠序列计数;cocotb 开始把“位宽”和“最外层元素数”从 len() 中拆开。工程侧,OpenTitan 为 I3C 建立首个 block-level UVM 环境,并为 RRAM 控制器加入初始验证计划;Caliptra SS 增加 unsupported endpoint 负向测试;Surelog 则修复逗号分隔多实例错误复用第一组端口连接的问题。共同信号是:工具升级验收应覆盖语义边界、负向协议响应与 elaboration 后的连线结构,而不应只看回归是否退出为零。
标准与方法学
Verilator 支持 covergroup 与 cross 级 option.at_least
已确认事实(主线合入时间:2026-10-21,北京时间):Verilator 官方仓库提交 47203930 为 covergroup 和 cross 级别补充 option.at_least 支持。该选项规定一个 bin 至少命中多少次才计为已覆盖。
编辑判断:覆盖率门禁若依赖 at_least > 1,升级前应准备“恰好少一次、恰好达标、超过阈值”三组最小测试,并分别核对单个 coverpoint、cross 与 covergroup 汇总结果。否则工具把“发生过”误当成“达到置信次数”时,整体百分比仍可能看起来合理。
Verilator 修复 transition bin 的首次采样与重叠计数
已确认事实(主线合入时间:2026-10-25,北京时间):Verilator 官方仓库提交 441c0dfb 修复 covergroup transition bin 把第一次 sample 错计为转移,以及重叠序列计数不正确的问题。
编辑判断:状态机覆盖率的工具验收应显式包含“只有首个样本”“可重叠序列”“不可重叠序列”和“重复前缀”四类轨迹。transition bin 的错误通常不会让仿真失败,却会直接污染覆盖率收敛判断。
工具与开源项目
cocotb 将句柄位宽迁移到 size,预告 len() 语义变化
已确认事实(主线合入时间:2026-10-23,北京时间):cocotb 官方仓库提交 bd840ac3 为 LogicObject、LogicArrayObject、PackedObject、IntegerObject 和 EnumObject 增加 size,其含义为位数;同时弃用非数组句柄上的 len()。同日提交 d8fd04a2 增加预览开关:启用后,可索引 PackedObject 的 len() 返回最外层维度的元素数,packed struct / union 则抛出 TypeError。
官方说明:项目提交将这一变化描述为把位宽查询与容器元素数量查询分离;未启用预览时,PackedObject 的旧 len() 行为暂时保留。
编辑判断:Python testbench 应先搜索所有 len(handle),按意图改为 handle.size 或保留元素数查询,并在 CI 中打开预览开关跑一轮。尤其要检查 packed array、packed struct 和 simulator-specific handle,因为它们最容易在迁移后出现“数值仍是整数、但单位已经变了”的静默错误。
Surelog 修复逗号分隔多实例复用首实例端口连接
已确认事实(主线合入时间:2026-10-25,北京时间):CHIPS Alliance Surelog 官方仓库提交 3d52c754 修复同一条 module instantiation 中多个逗号分隔实例都绑定到第一实例 port actuals 的问题。提交给出的实际影响是:VeeRwolf 所用 simple_spi 中,第二个 FIFO 实例错误复用了第一个 FIFO 的连接,自己的连接则未被读取。
编辑判断:对 parser/elaborator 升级,不妨保留一个“同语句多实例、参数化实例、实例数组”结构回归,并比较 elaboration 后每个实例的 high connection。仅靠编译通过或端到端软件测试,可能很晚才暴露这种静态错连。
工程实践
OpenTitan 为 I3C 建立 block-level UVM 验证环境
已确认事实(主线合入时间:2026-10-20,北京时间):OpenTitan 官方仓库提交 08255d04 为 I3C IP 新增基于 cip_base 的 UVM 环境、testbench top、CSR SVA bind、公共 CSR testplan 与仿真配置。提交说明此前没有 block-level testbench,因此 D1 检查项依赖的公共 CSR 与 memory 测试无法运行;新环境同时处理主时钟与 AON 域复位、总线上拉模型、按 DUT 配置调整 RAL,以及部分 memory window / interrupt 的 scoreboard 检查。
编辑判断:这是新 IP 从“RTL 可集成”走向“验证资产可复用”的典型骨架。搭建早期环境时,应把 clock/reset 域、板级电气默认值、参数化 RAL reset value 和硬件自主写内存造成的 prediction 例外一次列清;否则公共 CSR 测试很容易被环境假设而非 DUT 缺陷卡住。
OpenTitan 为 RRAM 控制器加入初始验证计划
已确认事实(主线合入时间:2026-10-24,北京时间):OpenTitan 官方仓库提交 5f318d63 为 rram_ctrl 增加初始 DV testplan;同批主线变化还加入了 emulated info page testpoints,但本条只把已合入的初始 testplan 作为确认事实。
编辑判断:新控制器的验证计划应尽早成为需求、testpoint 和回归用例之间的追踪主线。后续评审可重点确认错误注入、访问权限、跨复位持久性和擦写时序边界是否从计划落到可观测 testpoint,而不是只停留在功能列表。
Caliptra SS 增加 unsupported endpoint 负向测试
已确认事实(主线合入时间:2026-10-22,北京时间):Caliptra SS 官方仓库提交 1c7f1513 增加对 unsupported endpoint 发 token 或访问的 USB 测试,并修正相关 high-speed GET_STATUS 测试。提交历史还特别处理了忽略 NYET 响应会导致 EP15 用例假通过的问题。
编辑判断:协议负向测试不能只验证“没有返回正常 payload”,还应枚举并判定所有合法或非法握手响应。scoreboard 若忽略一种响应类型,测试可能在 DUT 明确拒绝请求时仍被记为通过。
行业与岗位动态
本周暂无值得单独收录的更新。
本周推荐
推荐优先阅读 OpenTitan 的 I3C block-level UVM 环境提交。它把新 IP 验证环境最容易被低估的几层依赖放在同一处:多时钟域复位、board-level pull-up、参数化 RAL、硬件自主更新内存,以及公共 CSR 测试的例外管理。对正在搭建 UVM 环境的团队,这比单独看某个 sequence 更有复用价值。
来源与说明
本期采用 8 个一手来源页面,均为覆盖期内合入官方仓库主线的提交:
- Verilator:支持 covergroup 与 cross 级
option.at_least(主线合入时间:2026-10-21,北京时间)。 - Verilator:修复 transition bin 首次采样与重叠计数(主线合入时间:2026-10-25,北京时间)。
- cocotb:增加句柄
size并弃用部分len()(主线合入时间:2026-10-23,北京时间)。 - cocotb:提供
PackedObject新len()语义预览(主线合入时间:2026-10-23,北京时间)。 - OpenTitan:增加 I3C block-level UVM testbench(主线合入时间:2026-10-20,北京时间)。
- OpenTitan:增加 RRAM 控制器初始 DV testplan(主线合入时间:2026-10-24,北京时间)。
- Caliptra SS:增加 unsupported endpoint USB 测试(主线合入时间:2026-10-22,北京时间)。
- Surelog:修复多实例端口连接错误复用(主线合入时间:2026-10-25,北京时间)。
本期没有发现覆盖期内值得单独收录的标准发布、稳定工具版本或可靠岗位动态。上述变更均可能在后续稳定版本前继续调整;生产环境采用前应锁定提交、阅读后续 release notes,并在隔离回归中验证。