194、PCIE覆盖率收集与分析:从一次漏测bug说起上个月排查一个诡异问题:设备在连续热插拔第 1024 次时,某个 BAR 空间突然映射失败。查了三天,发现是配置空间里 Multi-Function 设备的 Function ID 翻转时,状态机有个角落条件没覆盖到——仿真阶段根本没测到这个场景。覆盖率不是报表上的数字游戏,它是验证工程师的“记忆证明”。没覆盖到的路径,就是埋在硅里的暗雷。一、覆盖率分类:你得盯着这三类代码覆盖率——工具能自动跑,但最容易骗人。行覆盖(line coverage):每行代码是否执行过。// 坏例子:为了凑行覆盖硬拆代码 if (cfg_en) begin a = b; $display("a assigned"); // 纯粹为了刷覆盖率 end条件覆盖(condition coverage):每个逻辑条件真假都测过。if (req ready) // 要测 {req,ready} = 00,01,10,11翻转覆盖(toggle coverage):信号 0→1 和 1→0 都出现过。注意位宽大的向量,比如 128