更有效地使用验证数据

有比以往更多的提示和技巧的验证。

受欢迎程度

验证生产如此多的数据从复杂的设计,工程团队需要决定如何保持,保持多久,他们可以学习,为未来的项目数据。

文件从几百兆字节到数百gb,这取决于类型的验证任务,但实际价值可能不明显,除非AI /机器学习算法应用于所有的数据。但渐渐地,验证团队正在寻找方法,以确保更好的覆盖和更快的结果,时间和大部分可以在数据中发现,过去常常被丢弃。

大量的数据类型是用于验证:

  • 输入数据,设计源代码;
  • Testbench源代码、脚本和文件,这需要生成或创建的测试;
  • 验证输出结果,往往是最大的数据集;
  • 模拟日志,包括诸如故障跟踪跟踪失败的检查测试长椅。

每个回归可以产生巨大的文件,但保持一切事情都是有价格标签所以重要的是要理解数据的价值。

“有波形的调试数据,和调试工具,”Mike Stellfox说节奏的家伙。“这些可以在数十到数百gb取决于你倾倒多少数据。还有覆盖率数据——这是另一个大——这是用来跟踪验证目标的进展。”

这些文件到底有多大,取决于项目的规模和复杂性。一段时间,工程团队运行模拟,特别是约束随机刺激,是否UVM便携式刺激的,这使得自动化创建很多很多的测试。

“典型的回归将有数以千计运行,或成千上万的测试,首先要做的是有效地管理这些数据,以便工程团队可以决定,“Stellfox说。“这包括如何优化覆盖集合,如何优化和合并数据,连接回验证目标/验证计划,这样你就可以立即看到1000测试,所有的数据合并,洞可以看到,和集中的地方。您还可以看到如果你有bug。然后,如果有很多失败的检查,故障分类。你把所有的错误,你如何模拟,集群的一些有意义的方式,然后分发出来的工程团队,这样他们可以根源,然后调试吗?”

数据管理
就能够管理所有这些数据是一个挑战。“很多重点都是在数据的特定任务,并试图将其呈现给用户以最优的工程团队和高效的方式在上面做有效的工作,”他说。“这是还同意在这个行业,我们只是冰山一角的利用数据与其他行业相比,如数据挖掘和真的发现我们还能做些什么——如何更聪明与数据以不同的形式的数据,提出新的自动化利用机器学习技术。”

实现这些目标需要处理的数据,和在某些情况下减少源。

“数据需要尽可能地压缩,让用户可以选择允许数据被保存在自己的服务器,“弗拉季斯拉夫•Palfy表示应用程序的工程总监OneSpin解决方案。“正式的工具可以提供先进的代码中豁免,以及复杂豁免定义的可能性。这允许用户减少由工具生成的数据量。有信息关注实际设计问题可以通过正式的技术和在过程的早期可以帮助提高设计质量。把验证曲线进一步削减左边最终验证时间显著。”

足够的情况下不能减少数量,需要不同的方法。“如果我们在旧的工作这些来回传输的方法,这是一个问题,”尼尔说,营销主管IC验证解决方案导师,西门子业务。“第一层(行业)方式解决这是调试文件,例如,可以在多个字节,并执行重建。如果你将那么多数据,机器上的I / O带宽成为瓶颈,使得仿真显得缓慢。但那是因为你倾倒太多数据。稍后您可以重建它如果你知道所有的输入和输出。当你有关键的输入和输出,你有一个网表。后来调试系统能够说,‘我知道这是因为我可以传播这些东西。这里的想法是,它实际上是实时快速重建比转储所有数据。旧的方法这是抛弃一切。你会说,‘我想要所有这些波。’ The tool said, ‘You want every signal? I’ll give you every signal.’ Today’s tools will look at that and say, ‘What does that mean? What data do I need to give you?’ That will drastically reduce the amount of data being dumped, which then accelerates the simulation so you don’t have that backlog. You have smaller files. This is done with simulation and with coverage.”

接下来的问题是如何使用这些文件。“如果你看看报道使用这些文件在一个部门,“手说。“你应该倾销单个文件,试图将它们合并在一起,然后移动这些文件验证管理系统吗?答案是,这是不可能的。”

代表EDA工具提供商有工作做更多的数据,包括更好的自动化,以及技术,传统上被应用到大数据问题,如机器学习,因为有能力收集、存储和关联的所有数据。

“然后,基于集合覆盖目标,机器学习技术可以用来达到99%相同的覆盖在回归3 x 5 x的时间更少,“节奏的Stellfox说,指着一个巨大的机会分析。“人类可以更好地判断数据,并将数据以某种形式,它使它更明显的工程团队应该关注的焦点。

Stellfox失败集群作为一个例子。大量的失败可能会从一个回归回来,但多次检查器是指向相同的失败,尽管从不同的信息。“如果你有一个回归的测试,得到数以百计的消息,你会浪费很多时间试图通过,找出杂草开始根本原因分析”。

因为验证数据文件的目的是减少噪音和提供有用的数据,有太多数据,它可以是不可能专注于实际问题。

验证主管菲利普•卢克Codasip描述一个示例场景的验证文件是100 gb。“这是一个Linux引导,引导——从重置到提示,我们记录所有的指令,所有的记忆转移,所有的CPU内部发生了什么。这是用于调试。这么大的文件的限制之一是,它占用了大量的空间,但同时,它也是复杂的一个简单的编辑器中打开”。

使用这个文件从随机测试的角度来看,课程从回去,看数据,可以用于未来的项目。“我们在集群上运行回归测试,这将产生100 gb在一夜的回归,分为1000测试,每个测试产生大约100 mb的数据,”卢克说。“自定义工具开发处理这个问题,因为你不能每天晚上生产100 gb的数据并将其存储为一个多星期。它真的不适合。”

为此,定义验证是很重要的。两个因素是重要的,他强调说。“首先,你必须确保CPU作为一个可交付成果的质量,这意味着你必须向客户证明你有数十亿的周期运行很多好的结果显示,您的产品已经测试,和它的工作原理。另一部分是质量。质量意味着你必须找到客户之前每一个错误。这是破坏系统,进入角情况下,发现错误。这些是区别对待。”

有数据显示给客户,设备工作。还有更多的内部数据用于寻找bug。“我曾经笑话,说我们想要更多的集群推出更多的测试,有更多的空间,”卢克说。“我曾经说过,当我运行验证,和我想要打破的东西。我只需要运行测试失败了。当我想要打破的东西,我不在乎的测试通过。我只是使用集群的力量,但我不在乎,如果我们没有找到任何错误。测试通过,我想计算周期的数量,计算指令的数量以日志和证明这个的数据量已经应用于CPU、测试。我把必要的信息能够复制相同的测试。我不把所有的数据从一个测试”。

使用数据复制测试数据需要额外的工作。第一个迭代将收集简单统计和客户沟通做了多少工作来证明质量。下一步是如何处理数据,这就是保险和其他统计数据。

“你应该使用统计数据告诉如果你确认是这一地区的强或弱。这就要求工程时间处理数据和提高试验台的强度,”卢克说。“一些工程师可能开心的说,“我们发现了一个bug。只是修复它,去下一个bug。但良好的工程实践看,为什么和如何提高反复。”

理解和利用失败
优化回归运行增加了新的挑战。“一些公司不谈论失败测试的种子,所以在某些情况下,他们不会看到它在未来回归失败,不知道他们是否固定错误与否,“奥利维拉Stojanovic说,业务发展经理Vtool。“在这种情况下,测试应该跟踪失败的种子,让它回归到它,然后删除它。理想情况下,这应该是自动完成,不是留给验证工程师做手工。还有多久的问题结果应该保存在回归的日志,或者只是对失败测试结果是否应该保存。”

达科Tomusilovic, Vtool验证经理同意,只有通过/失败的信息比和覆盖需要保存。“原则上,至少在软件也在验证世界越来越多的持续集成应提供。在软件领域,它的标准,但在硬件我们开始注意到它有相当多的好处。那么,我们如何尽可能少的数据存储保存有意义的信息?”

这说话的能力找到bug。是否可以验证运行通过,看着它,然后从中学习?验证策略可以复制为一种特定的活动以某种方式寻找bug,即使通过了吗?

“总的来说,我们运行随机场景,这里几乎都是基于随机化,不稳定,“Tomusilovic说。“任何变化验证环境的行为,或者是RTL,可以打扰您的场景,和变得更加严厉,严厉的复制你曾经的案例。我通常做什么在这种情况下,在发展的过程中,即使一些关键场景的我不认为一开始就吸引了我的目光,我确保我把一个特定的点。虽然很难实现,但我保证我不只是依赖运行相同的种子,因为你无法信任他们。最后你必须确保你的测试用例将这个场景中,无论种子,不管变化发生。”

这持续集成的概念,这个工具将萍验证工程师每次失败。“他们可以确保添加一些机制跟踪它,”他说。“所有安全领域,这是一个要求。你必须证明在缺陷的生命周期的开发周期,所有的失败,是追踪。”

Stojanovic同意了。“有些人,当他们达到一定角度验证,喜欢使用一个工具来分析覆盖每个测试,这样他们就可以,例如,看哪个测试或种子达到覆盖多少,然后创建测试的子集与某些种子覆盖率达到100%。最重要的是,他们添加一些随机化。这样,衰退日志的大小是通过减少控制运行的数量所以它将帮助你达到覆盖率很容易,但将达到某个角落的附加随机情况下或不同的组合可能不是可见的RTL报道。”

分析可以帮助这里。

“总是有大量的由我们的工程团队和在我们的客户关注如何调整更多的性能,”Stellfox说。“分析用户代码——尤其是试验台代码,在长椅和复杂的面向对象的测试SystemVerilog正在写——提供了一个巨大的空间使糟糕的编码错误。但是如果你可以配置文件,您可以识别的地方几行代码可以提高模拟性能7或8 x。ln验证/绩效审计,我们试图把这些最佳实践,我们建议定期做一些分析发现严重问题,因为它很容易做到。利用这种数据来获得更好的利用是应该纪律的过程的一部分。验证可能是EDA的最大工作负载,所以你所能做的速度,除了我们加快模拟器,包括在其上运行的代码。这真的可以帮助得到更多的从你的计算效率。”

结论
空间交叉验证、数据和效率是新方法,包括大数据概念,遵循现代,云中的分布式数据的方法。例如,工程师们从他们的桌面可以附加到一个多用户数据库,而不必在一个商业云。它可以在私有云客户的网站。

“这是一个分布式数据库,每个人都在,所以你可能会有大量的数据,但是每个人都把他们的小零碎东西,“导师的手说。“现在这意味着你有集中的数据,然后把如何使用它。为此,我们使用AI /毫升问我们测试可以消除。我们没有看到的好处在哪里?你应该寻找问题的关键在哪里?”

与其说前进,问题将中心有多少数据,但数据是如何被收集和正在做的事情。

“我们都要找到最快的方法获取数据,无论是通过重建,无论是通过重复,不管它是什么,你需要做的,”手说。“你要这些文件小。更大的问题是,你有一个协作环境或者个人环境?对于一些数据,个人环境是你所需要的,所以重建数据库为桌面调试一个设计师都是好的。但是如果你有一个设计方法,你必须开始处理数据覆盖是一个很好的例子,然后你想要一个数据库驱动的方法,你可以分享,人们不必同步所有数据。他们可以说,“我的工具可以查看这些数据,给我我需要的信息。”,不仅如此,现在你有一个集中的数据库,你就可以开始使用人工智能和ML数据库,它变得更强大。老实说,如果数据库大小的字节,我不在乎,因为我得到更丰富的数据,它变成了一个不同的问题。然后,你怎么分析数据整体?”



留下一个回复


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

Baidu