文章核心观点 - 当前芯片设计验证行业过度依赖覆盖率模型(如覆盖点交叉)作为验证充分性的指标,但这种方法存在根本性缺陷且代价高昂 [2] - 验证工作的核心应是识别和验证“唯一硬件”,而非追求无法实现的状态遍历或冗余的交叉覆盖 [2][3] - 路径覆盖率是一个被忽视但更有效的指标,它能帮助识别唯一代码路径,从而大幅减少不必要的验证工作量 [3][6] 验证方法的现状与问题 - 约束随机测试已成为验证设计的实际标准方法,这使得参考模型(如检查器、记分板)变得必不可少 [2] - 为评估测试有效性,行业普遍采用覆盖率模型,通过定义覆盖点和覆盖组作为验证充分性的替代指标 [2] - 验证人员通常强调覆盖点的交叉问题,但这会迅速导致状态组合爆炸,而实际设计的状态总数无法完全遍历,因此完全验证无法实现 [2] “唯一硬件”概念与路径覆盖率 - “唯一硬件”指经过测试并证明有效的硬件,在任何情况下都始终有效,除非其中包含仅在特定条件下运行的其他硬件 [3] - 路径覆盖率虽常被忽略,但能包含设计实现的全部功能,其难处理程度远低于覆盖点交叉 [3] - 路径覆盖率可用于找到“唯一代码”,利用此概念可以排除冗余的验证情况,从而显著减轻验证负担 [6] - 路径覆盖率在某种程度上与形式化覆盖(覆盖所有可能的输入和输入序列)相同,但它无需探索所有路径 [6] 概念例证与扩展 - 以一个简单的RTL条件语句(if a > 42)为例,要完全验证它仅需测试少数几个关键值(如41, 42, 43)[4][5] - 当将该语句的输入扩展到一个寄存器组(如16个寄存器)时,验证重点应是确保数据路径和多路复用器正确,而非遍历所有寄存器组合 [5] - 如果相同的代码(使用相同的运算符和硬件路径)被复制到其他地方,则无需重复所有原始验证,只需验证路径本身,因为其中不涉及新的“唯一硬件” [5] - 此概念可扩展:一旦验证了某个操作(如将结果写入特定寄存器)的正确性,只要未使用特殊硬件,类似操作就无需重复验证 [5]
关于芯片验证,一些思考
半导体行业观察·2026-02-04 09:38