在现代半导体设计的复杂性与规模不断增长的背景下,功能验证已逐渐成为芯片开发流程中的关键环节。其中,覆盖率作为衡量验证进度及指导后续工作重点的核心指标,其重要性不言而喻。通过综合考量寄存器传输级(RTL)设计的代码覆盖率、验证团队明确指定的功能覆盖率,以及源自断言的覆盖率,我们能够得到一个全面反映验证完整性的量化指标。
覆盖率目标通常设定得相当高(如95%或以上),实现这些目标颇具挑战性。芯片验证工程师往往需要投入大量时间(数周甚至数月)来努力达成这些未竟的覆盖率目标,以确保设计的充分运行并排除所有潜在错误。传统方法依赖大量手动操作,这不仅耗费宝贵的人力资源,还可能导致项目进度的延误。
幸运的是,近年来涌现出多种先进技术,旨在自动化覆盖过程,从而加速覆盖率的收敛,并最终实现更高的整体覆盖率。
NVIDIA测试芯片设计验证工具
NVIDIA在2024年新思科技用户大会(SNUG)硅谷活动上的演讲中描绘了一个项目,其测试分级、不可达性分析和人工智能(AI)的芯片验证覆盖率增强技术取得了巨大成功。NVIDIA团队仔细评测了三代相关芯片的影响,为我们提供了一个非常定量的案例研究。其中涉及的设计数量庞大,覆盖率目标超过了1亿个。许多模块被多次实例化,每个实例也都有独特的绑定值。
在基线设计(项目A)中,这种设计拓扑结构让覆盖收敛变得非常具有挑战性。这些绑定值令每个实例都存在大量不可达的逻辑锥,任何测试都无法达到其覆盖率目标。每个实例都需要自己独特的一组覆盖排除条件,因此每个实例都必须独立进行覆盖签核。如以下一组覆盖率目标的示例所示,使用随机约束测试平台时的收敛速度较慢,并且需要大量的手动操作才能达成覆盖签核。
一些重要的设计缺陷直到项目后期才被发现,这非常令人担忧。芯片验证开发者希望加快覆盖收敛,以便更早地发现缺陷并减少所需的手动操作。他们在衍生项目B中尝试的第一种技术是测试分级(在新思科技VCS®仿真器中可用)。测试分级将会对仿真测试进行分析,并根据达到的覆盖率进行排序。它允许验证开发者设置仿真回归,其中效率最高的测试要比效率较低的测试运行得更频繁,而使用的种子也更多。这样可有效提高覆盖收敛速度,节省项目资源。
测试分级只是第一步,效果很好,但团队仍然面临着挑战——设计中有许多无法实现的覆盖率目标。他们找到了一个有效的解决方案,即新思科技VC Formal及其Formal Coverage Analyzer(FCA)应用程序(app),该应用程序可以确定RTL设计中无法实现的覆盖率目标。这样就化解了以往的困境,即验证团队要花费大量时间和资源试图达到永远无法达成的覆盖率目标。
最终,形式化分析会确定无法实现的覆盖率目标,并将其从未来的仿真中移除。这有利于整体覆盖率的计算:
通过消除实际上明显无法达到的覆盖率漏洞并减少仿真中要达成的覆盖率目标总数,排除无法达到的覆盖率目标也就提高了总覆盖率。这是一个完全自动化的过程。FCA应用程序会生成一个排除文件,其中包含了设计中每个独特实例具体不可达的覆盖点。如下图所示,项目B的测试分级与不可达性分析相结合,在两个关键里程碑上实现了覆盖的重大“左移”。
在SNUG上的演讲中,NVIDIA开发者报告了从项目B中收获的以下成果:
尽早关注测试分级,以改进激励效率,提高覆盖率
尽早关注覆盖率、进展发现缺陷,从而提高设计质量并节省集成工作
使用不可达自动排除来减少手动操作,将验证工作重点放在可达的覆盖率差距上,并尽早发现缺陷
通过有效地应用测试分级和不可达性分析,实现覆盖率和缺陷查找的左移
尝试通过工具、学习和调整来改进验证方法
在项目B的结果公布之后,验证团队迫切地想尝试其他技术来进一步左移验证过程。对于项目C,他们试用了一些基于AI的技术,而第一个就是新思科技VSO.ai验证空间优化解决方案。该解决方案包含一个覆盖率推理引擎,用于根据仿真激励和RTL设计来定义覆盖点。此外,它还利用连接引擎和基于机器学习(ML)的解算器来瞄准难以到达的覆盖点。
验证团队在项目C的后期首次尝试使用了新思科技VSO.ai,而所采用的随机约束测试平台则符合通用验证方法(UVM)标准。与仅使用测试分级和不可达性分析相比,结果令人印象深刻:在相同运行次数的测试中,增加VSO.ai实现了33%以上的功能覆盖率,同时将回归测试套件的大小缩减至原来的五分之一。在相同运行次数内,代码覆盖率和断言覆盖率提高了20%,而与基线设计相比,回归压缩率提高了16倍。
开发者利用一组不同的基线回归测试,试验了新思科技VCS中的智能覆盖率优化(ICO)功能。ICO使用强化学习来增强测试多样性,从而缩短了回归周转时间(TAT),加快了覆盖收敛,提高了覆盖率,并发现了更多的设计和测试平台缺陷。ICO可提供测试平台可见性和分析,包括激励分布直方图和多样性指标。此外,它还提供根本原因分析,以确定覆盖率低的原因,例如激励分布不均匀或约束过度/不足。
如下图所示,在相同运行次数内,应用ICO、VSO.ai和不可达性分析将覆盖率提高了17%,而与基线设计相比,回归测试压缩率提高了3.5倍。同时,还发现了四个独特缺陷。
NVIDIA团队报告了从项目C中收获的以下成果:
在相同运行次数内,提高功能、代码和断言覆盖率
覆盖收敛速度更快、覆盖率更高,回归压缩率更出色
由于设计实践不断改进,发现了更多缺陷
在SNUG上的演讲中,最后对三个芯片项目的成果进行了总结。单独来看,不可达性分析的作用最大,它以最少的工作将覆盖率指标提高了10-20%。结合芯片验证技术,使得所有测试平台的功能覆盖率提高了33%,回归压缩率提高了2-7倍。ICO可以发现独特缺陷,而VSO.ai可用于所有的项目里程碑。
NVIDIA验证开发者的建议是:从项目一开始就使用测试分级来改进激励效率。VSO.ai应该用于早期里程碑(当激励尚不成熟时),以提高回归压缩率;而继续用于后期里程碑的目的则是进行额外压缩并提高总覆盖率。最后,应在项目中期启用ICO和不可达性分析,以减少计算资源、将覆盖率左移至少一个里程碑并尽早发现独特缺陷。如果是将这四种技术组合在一起,那么任何复杂的芯片项目都会受益匪浅。