中文 英语

AI-Powered验证

人工智能可以以多种方式来帮助现有的验证过程,但最大的收获可能来自对一些基本原理的重新思考。

受欢迎程度

由于功能验证比设计花费更多的时间和精力,芯片行业正在寻找每一种可能的方法,使验证过程更有效、更高效。

人工智能(AI)和机器学习(ML)正在接受测试,看看它们能产生多大的影响。尽管取得了一些进展,但似乎仍只是触及了问题的外围。对于接下来会发生什么,业内有很多观点。

Agnisys首席执行官兼创始人Anupam Bakshi表示:“我们认为人工智能是一种颠覆性技术,从长远来看,它将消除并在短期内减少验证的需求。”“我们已经在使用机器学习以自然语言阅读用户规范并将其直接转换为SystemVerilog断言(SVA)、UVM测试台代码和C/ c++嵌入式代码进行测试和验证方面取得了一些早期的成功。”

有效的学习需要好的数据。Mirabilis Design的创始人兼技术副总裁迪帕克·尚卡尔(Deepak Shankar)说:“人工智能需要大量的学习,而我们真的没有大量的数据来让你做到这一点。”“你需要运行大量的场景,而你无法通过验证来做到这一点。即使你有一个服务器群,或者你在模拟器上运行,你仍然无法获得那种数据集。”

也许问题陈述需要修改。“我们是工程师,所以我们努力提高效率,这意味着我们做了很多假设,很多减少是可能的,”at设备建模的运营经理亚历山大·彼得(Alexander Petr)说Keysight技术.“当我们进行测量时,我们基本上知道角落的位置,我们正试图覆盖尽可能多的中间空间。因为神经网络是数据驱动的模型,所以这个问题可能需要重新表述。”

在问题陈述得到适当的改变之前,它可以用来提高我们今天所做事情的效率。“人工智能和机器学习正在帮助你提高你的表现或提高你的生产力,例如快速指出根本原因,或根据提供刺激多样性来提高你的覆盖率(见图1),”Kiran Vittal说Synopsys对此

图1:人工智能验证的机会来源:Synopsys对此

图1:人工智能验证的机会来源:Synopsys对此

Vittal解释了与每个阶段相关的挑战验证.他说,对于像样的设计,结构验证可能会非常嘈杂。这种噪音会导致大量的手工分析,并且可能导致一些真正的错误问题被忽略。为形式验证,存在大量的证明引擎,得到一个证明可能需要很长时间,特别是如果错误的引擎应用到一个属性。在运行动态验证时,使用的运行时开关可能会对模拟器性能产生重大影响。然后,当模拟器发现错误时,必须对这些问题进行调试。此外,填充覆盖漏洞和优化测试套件也很困难。

目前正在努力解决所有这些问题,这些努力可对核查的成绩和效力产生重大影响。

提高运行
没有什么比花费时间和资源没有得到想要的结果,或者花费比必要更长的时间更糟糕的了。“在形式上,我们有多个引擎,不同的算法,在任何给定的时间解决任何给定的问题,”皮特•哈迪(Pete Hardee)表示节奏.“实际上,这是一场发动机竞赛。我们跟踪比赛并查看每个属性哪个引擎正在工作。我们使用强化学习来设置引擎参数,即我将使用哪些引擎以及运行这些引擎的时间,以便在第一次运行时未能收敛的属性上获得更好的收敛性。”

这种方法非常有效。Synopsys的vital提供了一个例子。“一个客户有RISC-V设计,他们正在进行正式验证。他们编写了许多SystemVerilog断言。该工具开始在该设计上验证这些属性,第一次运行花了20个小时。它收敛于700个性质,但其他性质都是部分证明。当我们使用机器学习时,工具效率提高了,并且在两个小时内完成了运行。它还设法集中在另外30处房产上。”

正如人们常说的,最好的跑步是你根本不需要跑的跑步。Cadence的哈迪说:“有些东西我们称之为朴素的旧学问。“例如,我们有一个证明缓存能力。如果一切都没有改变,如果影响范围没有改变,如果属性没有改变,如果约束条件没有改变,我们就可以在回归中恢复现有的证明结果。没有必要重新进行。”

许多其他技术正在探索中。一个是改进模拟模拟的性能。“我们有一种叫做自适应架构的东西,它可以查看给定的电路,”该公司模拟混合信号组产品管理主管萨蒂斯·巴拉苏布拉曼尼亚(Sathish Balasubramanian)说西门子EDA.“有很多不同类型的模拟电路,从模拟器的角度来看,它们是不同的。然而我们只有一种模拟器架构——矩阵求解器。对于自适应架构,它查看设计并提出启发式,说这个设计可能是某种类型的,比如锁相环。它调整自己以使用不同的求解器体系结构。这减少了需要满足所有不同电路类型的架构的开销。与传统解决方案相比,我们已经看到速度提高了5到10倍。每个电路模拟都是一个多项式方程,但多项式方程的结构方式因电路类型而异。”

这些模型甚至可以是学习模型。“你可能会看到一些香料用人工神经网络(ANN)取代现有的数学求解器,”Keysights的Petr说。“我们不是求解整个微分方程,而是使用人工神经网络来训练行为,然后使用插值来获得数据点,这是相当准确的,因为它是数据驱动的。如果为输入和输出很好地定义了数据集,那么它可以是任何类型的块。这说明它并不局限于单一设备。它可以是一个基团。它可以是一个更大的函数。唯一的限制是它需要是一个连续的模拟信号。一旦你进入离散或数字,人工神经网络就会出现问题,因为我们使用的数学描述是双曲切线(tanh),它描述了一个连续的形式。”

类似的技术也被用于创建时序模型。西门子的Balasubramanian说:“一个定时模型本质上是一个8 × 8或16 × 16的表,包含不同的回转和负载,以及相关的定时延迟。”“为了得到这个,你需要在这些不同的表上,在所有不同的PVT点上,对每个细胞运行SPICE级别的模拟,这可以从64到128到256,这取决于正在使用的进程节点,最后它吐出一个Liberty模型,就像1或2 gb。这是静态定时验证所必需的。它为你的合成工具提供素材,并驱动许多其他东西。相反,我们使用传统方法生成一些锚点,其余的可以以非常高的精度自动生成。”

运行正确的测试
验证工程师很难确切地知道一个特定的测试是做什么的,或者它有多有效,特别是与其他测试相比时。一个公司很少抛弃一个测试用例,即使它看起来没有提供额外的覆盖。“机器学习可以用来提高约束随机模拟的能力,以针对各种措施,如覆盖箱或设计错误,”Daniel Schostak说,他是架构师和研究员手臂.“它还可以通过预测针对设计更改运行的最佳测试来帮助减少设计更改所需的验证量。然而,根据测试平台的设计,机器学习技术需要测试平台中随机生成的信息级别和控制级别,而这些信息可能并不容易获得。通过以标准方式扩展对反射编程功能的支持,工具可以潜在地提供帮助。”

其中一些方面即将到来。SmartDV应用工程总监Bipul Talukdar表示:“验证工程师需要注意覆盖率、属性密度或充分性,特别是对于添加的功能块。“机器学习算法可以让我们研究现有的覆盖数据,并在种子选择、约束调优和反应性测试台开发方面改进约束随机验证的应用。”

即使所有测试最终都重新运行,它们的执行也有一个最佳顺序。Synopsys产品营销总监布拉德利•格登(Bradley Geden)表示:“首先要进行最高的投资回报率测试。“这是ML技术的第一个层次,我们正在学习最有效的测试是什么,首先运行这些测试,这样您就可以更快地达到覆盖目标。根据所做的设计更改,这可能会有所不同。您需要ML技术来确定设计的哪些部分连接到哪些测试,这样它就可以计算出100个测试,这些测试将围绕您对RTL所做的更改,并完全验证这些更改不会破坏您的设计。”

这需要链接测试,通过测试获得的覆盖率,以及设计本身。“你必须有一个非常好的覆盖率数据库,但你也必须能够将你得到的覆盖率结果与解释该覆盖率的测试联系起来,”Hardee说。“我们认为能够追踪哪些测试使覆盖率大幅增加,并且能够通过重复这些测试来大大减少回归,这非常有价值。对于高可靠性市场,我需要的不仅仅是更高层次的覆盖。我还需要可追溯性。我需要能够一直追踪到规格。”

部分问题在于报道模型本身。“你可以一整天都在指定功能覆盖率,如果模型很糟糕,你的覆盖率可能也很糟糕,”微软高级技术营销经理保罗•格雷科夫斯基(Paul Graykowski)说Arteris IP.“经验是有帮助的,理解功能覆盖的局限性是关键。您必须确保模型准确地代表了您的设计需求。它还必须有某种方式来满足性能目标。许多公司只是创建了一个功能性覆盖率模型,并尽最大努力达到100%,但很少有公司会不断检查该功能性覆盖率模型,以确保它是好的。同时,该模型本身也必须得到验证。”

通过在测试创建中使用ML可以改进测试生成。Breker Verification Systems首席执行官戴夫·凯尔夫(Dave Kelf)表示:“我们看到人工智能和机器学习的使用正在从工具补充方法演变为实际上改变工具算法的基本机制。”“例如,ML的一个有用应用已经在模拟中,通过对现有测试进行排名,更快地提高覆盖率。然而,测试合成中内置的AI规划算法将其提升到一个新水平,生成测试以更有效地针对潜在的极端情况。这项技术的真正潜力在于,从一个工程师花一些时间就能完成的任务,变成一个远远超出人类能力的任务。”

重新思考核查可能会带来更大的收获。Synopsys公司人工智能解决方案高级总监斯泰利奥斯•迪亚曼提迪斯表示:“也许我们已经到了需要思考下一步会发生什么事情的地步。”“随机化总是能让我们均匀分布发现漏洞的能力。但如果我们要聪明地偏向我们的覆盖驱动优化过程,以及我们构建刺激的方式,以及我们寻找覆盖漏洞的方式,这个测试可以帮助我们偏向系统,以发现更多的漏洞。它本质上变成了一个大的搜索问题,可以像对待另一个游戏一样对待,或者用于设计空间优化系统,以追求更好的PPA。”

这种中断可能会影响流的所有阶段的模型。Mirabilis的Shankar说:“你可以通过一个模型运行数千个用例,但这并不能真正解决你的问题,因为你没有将它链接到你的需求数据库。”“我们应该连接起来,从需求数据库中提取数据,然后当您运行这些不同的迭代时,开始查看每次运行结果的质量。这次会比这次更好吗?首先你有你的AI参考,它来自你的需求数据库。然后你有智能,因为你现在分配给每个需求。这些要求的优先级是什么?”

培训
所有系统都依赖于充分的训练,但这也存在困难。“从多个客户那里收集知识非常困难,”哈迪说。“即使考虑到客户的机密性,你也必须对适用的设计进行培训,并确保你正在训练监督学习算法的设计能够代表你想要获得更好结果的设计。如果你在训练中使用非典型的设计,你将看不到任何改善,甚至可能会看到更糟糕的结果。你必须非常小心用于训练的确切数据。结果在很大程度上取决于这一点,即使在客户内部也是如此。”

训练数据也会随着时间而变化。“随着时间的推移,你必须衡量它们的准确性和现实情况。然后在某个时候,他们会发现自己需要继续学习。”“当你做出改变时,如果预测完全错误,模型就必须重新开始学习,并刷新它的知识。这绝对是一个循序渐进的学习过程。在大多数情况下,当您进行更改时,我们将选择相关的测试,运行这些测试,然后验证该更改。但如果这些测试没有达到变化,那么我们就需要更新模型。”

这要求每次运行都与之前的运行相关联。尚卡尔说:“我们正在做的是将新的结果与之前的情况进行验证。”“测试用例保持不变,但我们正在将其与之前的结果进行比较。我们试图证明,新值确实是这个变化的影响,而不是由系统中其他地方的错误引起的其他影响。”

即便如此,该模型也可能存在限制。“机器学习的挑战之一是你必须训练它,”Arteris的格雷科夫斯基说。“它必须基于过去的数据集进行学习。理论上,你可以建立一个模型,从过去的经验中学习,但问题是,你如何将其推断到需要做的新事情上?”

结论
AI和ML被有效地用于改进验证过程,到目前为止,工具供应商可能只触及了表面。但是,如果把一切都建立在现有的流程上,这个行业能发展到什么程度呢?也许是时候重新思考了。



1评论

恋人Krishnamoorthy 说:

很棒的文章,布莱恩。建立一个模型来理解过去的结果有助于减少冗余,但建立一个模型来帮助改进测试刺激才是重要的。我在过去的15年里一直从事核查工作,特别是在美光公司担任高级经理,在核查系统方面进行建模太难了。原因是目前系统验证已经变成了一套双重模拟和仿真,验证工程师使用仿真来验证大部分测试用例,以获得更快的模拟和更长的模拟,并建模真实世界的主机。但我们如何衡量覆盖率,AI/ML如何在这里提供帮助。

留下回复


(注:此名称将公开显示)

Baidu