使用人工智能和bug发现其他错误

新方法正在开发处理越来越复杂。

受欢迎程度

调试开始重新思考和使用芯片变得更复杂和更紧密地集成到包或其他系统,特别是在安全、关键任务应用程序的平均寿命大大延长。

今天,主要的检查方法使用无处不在的约束随机/报道驱动的验证技术,或形式验证技术。但随着设计变得更加复杂,需要应用新的方法和方法,以确保质量。这可以包括从AI /毫升简单地更新方法包括更多的自动化和更少的bug跟踪在笔记本电脑或电子表格。

”约束随机的,通常的方法是创建一个覆盖模型的验证计划和目标,这是哪里的地图目标刺激彻底测试的重要的设计特征,”Mike Stellfox说节奏的家伙。“在约束随机验证场景中,测试是随机生成各种各样的刺激,运动通过设计不同的路径,你不一定会想到作为一个人,会发现错误。因为你有覆盖的目标,你知道你是否行使你认为重要的事情。通常发生错误会被发现,如某一行为,引发了一个检查程序识别不正确的行为,或另一个二阶效应。这可能包括没有直接检查器,一个状态机挂,或另一个错误的行为发生。一旦发现错误,将做根本原因分析与设计,以确定原因,这就是你通过调试过程。”

通常,多人参与发现一个bug。它可以涉及到设计师,谁不小心插入,验证器是谁发现了它。设计师修复它,作为这一进程的一部分,他们可以确定问题是固定的方式应该是固定的。这就是有机会做更多的系统。今天,这主要取决于验证工程师的经验和直觉。

“他们将寻找的表弟bug,因为错误可能是固定在一组特定的刺激条件下,“Stellfox说。“约束随机的好处是如果你让事情有点开放,除了原始的测试,您可以运行很多其他的刺激。你想泡区看看你会发现其他的表妹bug。这是一个领域有机会利用数据驱动的方法。”

同样的事情也发生在正式验证。“成为正式的验证错误狩猎,非常受人欢迎的目标不是关闭的证据,”他说。“这类似于发生在约束随机的方法,而是使用约束的随机刺激引擎设计锻炼,你使用一个正式的引擎锻炼它,这些使用类似的概念覆盖点寻找领域的关注。正式技术的好处是能探索更多的空间相对较快,在所有的情况下。但当你在错误狩猎模式中,你通常试图刺激设计在某些特定区域找到错误当你实现你的覆盖目标。”

许多业内人士正在调查自动化调试过程的方法。随着系统越来越复杂,以及公差吃紧,曾经被认为是三阶问题现在第二或一阶问题。这意味着在更多地方需要追捕的bug。好的起点包括RTLtestbenches,变量通常引入或者大部分的变化。

”之间有一个高度相关的源代码版本控制系统跟踪修正在哪里,以及验证工程师应该聚焦bug打猎,因为这些往往是最高的地区的新引入的bug,“Stellfox说。介绍了“一旦一个错误,你发现越早,就越容易调试和执行根源分析。如果设计师在一块,他们介绍了错误,因为他们的人写的,如果他们能在那里找到一个错误,这是最快的方法造成的错误根源和删除。因为涉及到一个人,这是一个小范围内,所以你可以运行模拟或正式的很快。有很多专注于这一领域的设计师发现低级错误。”

随着范围的扩大,例如IP,验证工程师创建一个UVM约束随机环境或正式的周围环境更大的范围。帮助,在某种程度上,因为它增加了一个新的视角。但因为它是一个更大的范围,它可以花更长的时间才能到错误和更长的时间来修复它,他说。

所有这些发生在硬件方面。在软件方面,情况就不同了。软件工程师是用来处理技术不断升级,并与应用程序涉及非常明显机器学习

不过,对于许多验证工程师,他们的个人笔记本的最佳方法是他们已经找到跟踪检查活动。这是很快就被证明是不够的。

“不知怎么的,我的笔记本是自动化,代替我经历我的笔记本之前阅读所有的错误我发现,笔记本应该来找我,提醒我,当我已经做了些,“达尔科Tomusilovic说,验证铅Vtool。“理想情况下,应该有一个工具,一旦我日志调试周期,下次我做同样的调试工具应该足够聪明的建议是否可能发生过同样的问题。该工具应该能够识别,或者至少表明,我看看如果它帮助特定的信号。或者,“看这个消息。它帮助。也许它会再次帮助。然后,用户应该能够告诉工具如果它是对还是错,和工具应该向它学习。它会变得越来越聪明的利用用户的反馈。”

调试的数字
更复杂的情况是,调试是困难的,它变得更加设备持续增长之间的依赖关系。如果有一个工具来跟踪每一个步骤每一次调试完成,然后允许用户交互,工程师可以开始这样的工具可以学习和理解的步骤。

“这可能帮助最后一些关于下一个错误的结论,或者至少表明没什么工程师做了到目前为止,也是良好的输入,意味着一个不同的方向,“奥利维拉Stojanovic说,项目经理在Vtool。”不过,很难定义调试的所有步骤。这是直观的。你需要思考,得出一些结论,并根据经验而做出一些决定你做调试,或一个不同的方向。但是很难定义如何得出某种结论。”

Tomusilovic相信工程师太有偏见,过于依赖自己的直觉。“有时候你的直觉可以帮助你解决问题。但另一方面,同样的直觉可以引导你在一个完全错误的方向,让你困了天。不知你的直觉应该更好的利用。经验有所帮助,但即使你的经验可能会导致错误的方式,特别是在俯瞰些简单的东西。倾向于认为获得更多的经验,更好的理解系统,问题将变得更加困难,更加困难。通过这种方式,如果弹出一个简单的问题,它可能是容易被忽视,这可能会导致失去的时间。怀疑和投资时间到一个非常复杂的问题,需要大量的时间来验证它,找到它,发现它。然后,如果事实证明它实际上是简单的东西,就像没有时钟,没有复位,错误的信号连接,或类似的问题,这可能是一个杀手。一个好的工具将帮助我轻松地检测简单的问题,然后让我专注于更复杂的东西我自己的权利,相信我的直觉和我的经验。”

然而,在每一个场景中,验证有很多潜在的影响不仅对你现在正在做什么,但是对于未来。“我们需要找到未来的错误随着CPU的复杂性增加,”菲利普Luc解释说,验证主管Codasip。“如果你的验证也会增加复杂性,你不会找到更多的错误。你需要增加强大的测试验证,这样你的模拟能力不会增加CPU一样快变得更加复杂。你必须聪明找到最好的算法能够找到新的RTL设计错误。人工智能技术开始被用来推动的结果。有一个点,人类开始不懂什么验证方法因为太多随机发电机混合在一起。这个问题必须是固定的,它是一个人工智能技术可以应用于更进一步。”

同时,这并不意味着AI / ML / DL是一切的答案,特别是因为太多在这个领域还在不断演化。

“虽然很满意的说,‘我不需要工作了,我只是给机器的数据,它会找到下一个测试的缺点是,我们不知道这台机器是做什么,”卢克说。“验证应用机器学习的大意是提前生成一些测试,问机器如果这些测试会好的,这意味着它将会发现一个新的bug或添加更多的报道。如果机器说,它不会增加覆盖,不运行工作。但如果它认为可能找到新的报道,运行它。”

这种方法消除了一些测试的验证任务,然而,一些最有趣的错误不是故意寻找。“最后的五个错误你发现在一个复杂的设计——最后的为客户可能会造成大麻烦——发现的运气,”他说。“我不会预测,作为一个人,为什么这个测试发现这个bug。所以我担心机器学习算法会说,“对于这个测试,不运行它,它看起来是一样的。我真的怀疑你可以应用人工智能技术,将奇迹般地说,“运行这些测试,不要运行这些测试。今天我不知道AI不会删除测试让我们找到下一个错误,所以我没有足够的信心来应用它。”

说,吕克·指出,第一步应该是确保固定确实是一个问题,这就是经验重严重。“是验证适当的强度与CPU的复杂性?到目前为止,我所看到的是可能是的,但有地方可以改进。目标是能够发现,从经验,下一个错误将在设计。当人们说他们没有想到,这意味着有一些改善。这是新的验证工程师工程师的困难。他们没有思维打破东西,总的来说,很难说,看得更深些。他们只是说,这是好的。它是正确的。的发现这是一个微妙的平衡的地方绝对是一个需要改进和说,“你应该从经验看,因为我知道,这是一个棘手的地区。”

这是一个错误或失败的过程吗?
别人看错误不仅仅是单一事件,而是一个过程或工具的失败。

“我们时常看到某人的测试和测试时他们说他们做什么,他们失踪的任意数量的其他领域,还没有考虑,”Simon Davidmann称首席执行官治之软件。“一些人来找我们,问我们识别错误,这样他们就可以解决问题,但这是一个失败的过程。你不想修复bug。你想要修复的过程允许错误。如果你自行修正一个错误,你失败,因为你调试存在的东西。这是错误的方法。相反,使用错误,分析它,和工作过程失败,这样的错误是允许,或被允许呆在那里。”

可能需要不同的工具,工具或方法是不够的,或者不了解事情妥善原始验证计划。“也许这个过程是与你使用的工具,“Davidmann说。“发现一个错误的概念,帮助找到别人并不完全正确。他们不应该寻找其他错误。他们应该寻找的过程。如果你发现一个错误,你不修复bug,你去看看你的测试策略。你改变这一切,希望当你运行它,它不会找到一个错误,它发现三个或四个。”

他指出,要花费大量的时间试图帮助工程团队和他们的流程,是特别具有挑战性的东西RISC-V处理器验证因为这个行业没有一个验证的解决方案。“如果你想验证一个USB块或一个SoC,这就是验证行业所做的在过去的20到30年。开发出一种测试方法。但随着RISC-V,很多我们想帮助人们与他们的方法和过程,而不仅仅是错误。你怎么找到虫子吗?确保你有这些东西,开始验证计划。是的,你会发现一路上bug,但他们不应该奇怪,孤立的。应该有方法和工具和流程。我们参与很多这些处理器的验证,因为我们成为事实上的参考,”他说。

这远不是很多设计,解决了问题。“有那么多我们可以做验证,”尼尔说,营销主管IC验证解决方案导师,西门子业务。“AI /毫升/数据分析,选择你最喜欢的流行词——将产生巨大影响。我们总是试图找到里面的错误设计的巨大的虚无空间,因为设计空间,对于任何合理的设计,都不能达到。如果你看报道方法和覆盖分析,有些人认为是最要紧的事,终结。但工程社区说,这是重要的,但是不够的。”

当前方法错误狩猎在很大程度上是蛮力,手说。“如果你有一把锤子,看什么都像是钉子。但当我们开始看一些新技术,和AI /毫升能做什么,开始变得非常激动人心,因为现在您就可以开始标识集中的地方。ML-based数据分析可以表明把注意力放在哪里,因为它会还清。但是你可以超越。你可以开始所有这些机器学习技术的应用设计使用bug发现bug。如果你开始觉得像一块特定风格的有更多的bug,或者你发现登记发生在周五下午4点缺陷的概率更高,或任何看似随机的东西,这就是人工智能/毫升。我们确定的关系不确定,而且它可以开始说去哪里看。你也可以开始使用历史随着时间和一个特别的设计。因为它越来越成熟,从一个特定的错误设计的一部分到另一个设计的一部分。 Again, you can use machine learning to identify that because you’ve got an unsolvable problem in that you’ve got way more vectors than you could ever run, and the most effective vector you can run is one you don’t have to. There’s no faster simulation cycle than one you don’t have to run. That’s where we can start to apply these AI and ML techniques.”

一个尚未解决的挑战是共享数据。“公司不希望竞争对手受益于他们的学习,这是可以理解的,”说。“你不能进行反向工程,生成机器学习模型在大多数情况下,任何有意义的数据,但是同时你不想帮助你的竞争对手,尽管你可能会帮助自己。面临的挑战是如何建立必要的组数据是有效的。你可以在一个单一的设计。你可以在一组设计在一个公司。但对于任何机器学习问题,更多的数据可以给它更有效。”

结论
没有特效药调试。它仍然是一个艰苦的过程,尽管一个越来越重要的芯片找到进入更多的工业,任务紧迫和高安全性的应用程序时,这些芯片集成到更复杂的系统,需要更长时间的函数。面临的挑战是加快调试过程,同时增加结果的信心。

“大多数公司都有这一个工程师似乎可以很快的根源问题,“手说。“他们看,他们开始把信号,并找到它,而平均工程师可能需要几个小时才能到达那里。如果你可以从那些工程师呢?如果你可以突然呈现最有可能影响的信号吗?所以不要说,‘这是你的信号,您可以添加400个不同的,“我们可能会说,“这是最可能的是这两个或三个东西,”或者,“开始查看日志文件。“如果你发现一个错误日志中之间的关系,和一个错误的波形,这可以让你做一些很酷的事情。虫子你找到越多,越好你在寻找下一个bug,因为你现在有细微痕迹。”

相关的
不可避免的错误
可避免的错误从一个不可避免的缺陷的区别是什么?专家们试图定义的分界线。
寻找权力漏洞
找到耗散功率意味着你明白期望,如何测量它,以及它如何与真正的硅。我们进一步的比你期望的。
打破调试过程
专家表:调试不是单一的任务,和每个阶段的过程需要一个不同的焦点。



留下一个回复


(注意:这个名字会显示公开)

Baidu