验证指标差距

专家从手臂、英特尔、英伟达和AMD看看缺少验证数据和如何改进它。

受欢迎程度

随着设计复杂性爆炸,验证工作同样呈指数级增长,许多不同类型的验证被应用到不同类型的设计。

最近的一次小组讨论与主要芯片制造商检查这一主题,以阐明设计卫生和质量,测量验证的成功,知道什么时候验证完成,被正确的指标,在其他的事情。

主题构成的面板设计自动化会议是传统的验证指标是否精疲力竭了吗?艾伦•亨特高级首席设计工程师手臂打趣说,Betteridge头条定律给出了回答:没有。“任何标题有一个问号,答案永远是不。”

然而,他认为,验证指标是精疲力竭了。“我们看到内部的一个大问题是,它是非常困难的,随着设计越来越复杂,原因是什么报道模型应该是什么样的。我们经常会做非常详细的覆盖模型的部分设计,也许入口就是过于简单的覆盖模型的其他部分的设计。很难得到之间的平衡是一个很好的覆盖模型,告诉你一些关于你验证,就做得太多,因为你要做报道。真的很难平衡,正确的观点是做太多功能覆盖率和太少。也很难评论报道模式。”

原因可以写它的人是通常理解的最佳人选。”,因为我们生长在CPU设计团队,我们最终不得不越来越多的人进入不同的,更小的单元的设计,”亨特说。“现在有更多的人了解的非常详细的micro-architectural水平模型,有趣的是,我们现在可以有人帮助检查这些东西。传统上,这是很难做到这一点。很难对刺激质量的原因。有时从功能覆盖率结果你可以说,“我达到这个点X的次数,“但除非你可以看到发生在一个接一个的时间戳在模拟,很难推断刺激质量。

猎人说,占这手臂已投资于新技术,统计范围,允许在一段时间内的元素被添加到覆盖模型。“我们创建一些新的风格功能覆盖,让我们更多的了解发生了什么。”

然后,在一个知识产权水平,他指出,手臂的广泛使用功能覆盖率和代码覆盖率。“很显然,是我们必须要做的事情。这是一个我们所有的项目内部要求。在我们的经验中,实际上很难提取像超级详细的有意义的信息刺激的质量,和真的很难洞察如何将压力你把单位或设计的单元或super-sub-unit所以我们创建这个统计报道流;它让我们更了解DUT被刺激。我们写非常详细micro-architectural探针收集一大堆时间信息以及其他有趣的信息的微体系结构设计。我们可以使用所有这些帮助我们推进设计的角落,我们知道设计。另一个好处是,我们得到有用的毫升训练数据,我们投入数据,这给了我们很多的信息实际上是发生在集群使用和我们所做的设计本身,”他继续说道。


图1:关键的设计元素。来源:手臂

此外,亨特指出,手臂与设计师紧密合作以确定非常详细,关键部分的设计。“设计师们最了解,他们可能有问题的设计我们写这些非常轻量级的自定义探测器收集一堆的设计发生了什么信息。然后你可以开始情节大小事务方面的事情正在发生的事情,多少数据实际上是推动设计。在这种情况下,您可以看到,我们所做的一些填补水平非常低的水平,但是我们真的什么都不做在后面部分,我们试图把所有队列填满,设计和设计相当陷入困境。我们可以用我们所有的单位级运行这个测试的长凳上,我们有一个绘图系统,允许我们直接拉出所有的数据,然后推到我们的主要数据。通常,我们可以做一个表后端类型可视化数据,和我们也做一些其他的事情。我们有一些非常轻量级的图形,我们一直在本地工作数据直接看看发生了什么。”

因为他们synthesizable肿块,他说,这些数据包括在手臂的所有模拟流提取一大堆信息模拟器里想的是什么操作系统,以及压力。“事实证明,这不是很有压力。其实很有趣的想象发生了什么当你开始做一些事情,如添加硬件支持,如虚拟化和类似的东西。它也可以提供如何有效地事情可以移动虚拟接口,等等。已经真的有助于给额外的性能指标超过验证指标,我们希望内部。”

亨特指出,统计覆盖不消除好功能覆盖要求。但是这种方法使得手臂暴露关键错误的设计团队设计,特别是当事情非常完整和奇怪的数据开始从外部系统。“在系统层面上,我们也试图刺激形状真正有效压力系统以现实的方式,人们会使用它。常规指标精疲力竭了吗?在隔离,我认为他们是,是的。我们没有得到足够的信息从代码覆盖率和功能覆盖率。但对我们来说,添加统计报道真的帮了最后的验证过程。”

高级主管Maruthy Vedam工程系统集成和验证小组英特尔,猎人又讨论验证指标发挥巨大的作用在维护质量。他说的答案是否常规指标的蒸汽并不是那么简单。


图2:类型的指标。来源:英特尔

Vedam指出英特尔新的可编程加速卡一个堆栈。“这些应用程序层,这层堆栈,使人更容易进入和程序这些复杂的硬件引擎。如果你看看需要不同类型的指标,一种选择是看这自底向上。你从一个组件的角度来看,一个核心的观点来看,一个IP的观点,或一个API的观点。通常当你这样做,你往往指标结构,功能,单元级或级。你看它作为一个特定的功能,编码,以及是否已经验证。你看它作为特定API被启用,无论是工作。正确的输入和输出,是否中断工作。这些指标往往是常见的和类似的,无论你正在构建的产品在一天结束的时候。这些构件上的这种产品是建立和他们需要真正稳固。”

他观察到,许多工程团队进入一个设计评审会议,假设所有的工作。“这几乎是理所当然的,这些有这些指标,它们非常关键,他们通常是常见的这些产品大部分地区。但是如果你开始采取自上而下的观点,这是当我们开始观察系统层次、平台水平,用例。这是区分一个产品从另一个。例如,在一个可编程的加速卡,你可能想让某种程度的可编程性和一定的算法从主CPU转移到这个卡。你开始看那些用例并开始识别相关的交通。你开始理解硬件软件关系触发特定的工作负载或用例和具体需要什么验证以确保高质量的产品。”


图3:集成视图。来源:英特尔

用例添加一个水平的复杂性和英特尔所面临的最大挑战是集成视图的使用情况下IPs需要让这个用例工作互动,织物或公交系统需要发挥作用让这个用例的工作,什么系统流动,重置流,电源管理流需要启用这样做吗?这是纯粹的硬件方面。在软件方面,有BIOS固件、驱动程序和操作系统,所有这些都与硬件交互让这个用例的工作。

“尤其是当你开车pre-silicon更高层次的质量,有时不是绝对可以实时运行这些用例,所以你要把这些分成有意义什么,给了我们信心,这个用例将高硅回来时工作,以及如何你可以运行速度的东西,”他说。“如果这些成分不是在正确的质量或坏了,它会降低你的速度,它会让用例不实际执行,和你将会有挑战的确保你得到高水平的信心,一个特定的用例可以启用当你回来硅或平台。看着这些内部质量指标除了外部质量指标对用例等等,并创建组合变得非常重要我们在前进。”

接下来是Anshuman还,他管理CPU和Nvidia Tegra SoC验证团队。“当我们谈论的度量标准,它是一个测量的东西随着时间的推移,我们使用各种诸如回归健康,保险,代码覆盖率,功能覆盖率分别测量每一个组件,“还说。”的一件事是学习英伟达,通常有不同的指标,和你想创建决策基于这些指标。正确的方法是创建关键绩效指标,你看看这一趋势随着时间的推移,你期望得到完成,并在此基础上,修改你的战略计划,可以在某些方面投入更多精力,减少对其他方面的努力。kpi指标一样重要,变得更加重要,因为我们接近关闭。”


图4:度量和kpi。来源:英伟达

当涉及到各种类别的指标,Nvidia通常专注于所做的爆炸设计充分准备tapeout,还解释说。“还有其他方面。有项目管理方面我们是否步入正轨,而这些可能不是相同的指标。会有很多重叠的项目管理和设计的健康指标,但他们往往有不同的人问问题。另一个类别的指标与持续改进。作为我们的设计,我们图在某个地区有更多的错误。你想要标准,基本上告诉你,“嘿,你需要专注。输出操作指标,这类似于持续改进度量这些更关注所做的项目,并找出了不同。再次,有时有重叠,但他们必须被视为离散,不同类别。”

聚合的指标可以很有帮助,是英伟达曾尝试过很多,他说。“我们有各种不同类型的指标。我们如何创建一个指标表示设计的功能质量是什么吗?我们是要回归的方式,保险,无论套组件需要度量,然后应用加权分数每一个组件。权重可能随时间变化的基于组件的意义是什么,所以类似的工作在项目早期可能有更高的重量而不是后面的项目,或回归健康可能会在项目的后期更多的价值与早些时候的项目。我们一起机制总体指标,在各种项目我们比较指标。虽然这是我们创建的指标,根据我们的经验,kpi,告诉我们在某个阶段的项目我们可以期望模型的整体健康。”

指标和kpi也可以作为指导方针,建议当验证可能完成,还说。

“然而,它仍然可以归结为直觉和经验。我们做了什么相对于之前的项目,如何度量这些时间,以及它如何与该类型的bug发现,什么是设计的健康,回归健康、集成和单元测试——有时你最终找到更多bug在集成水平,你试图运行一个用例模型表示。你有一个自顶向下的方法。用例和你找到这台机器进入僵局与特定场景所以你想关注单元级测试。它随着时间的变化指标用来决定当你完成,”他说。

原型设计,模拟形式验证也在这里扮演了一个角色,还在继续。”形式验证越来越驯良的随着时间的推移,我期望形式验证指标将发挥关键作用的签字,过去依赖使用工作流作为一个附加到我们所做的。但在这里,正式可以代替大量的设计与RTL C等价性检查和其他技术。很多设计实际上是验证使用,所以我期待正式发挥关键作用。原型,仿真,运行软件设计是告诉我们关于集成测试的水平,它给了我们的设计,我们发现了很多错误在一个IP的一部分。这意味着你需要更加关注它。然后,有一个聚合metric-tweaking,提高聚合算法随着时间的推移,它也帮助我们。”

指标是EDA领域行业已短,还断言。“EDA行业需要退出标准功能和构建指标远离模拟器和试图让一些通用的东西,因为我不认为我们会永远的情况,我们将从一个供应商采购我们所有的工具。我们总是会有多个不同的供应商。EDA行业认识到并构建度量工具,帮助更容易聚合的指标,应用机器学习在预测问题。”

另一个领域是软件开发过程。“整个功能覆盖率和试图得到收敛的概念基于功能覆盖更多的是一种RTL硬件设计方法的流程,并应用到软件行业,因为现在我们的手臂,包括英特尔,我们都倾向于认为事物的系统。所以软件,驱动程序是解决方案的一部分设计本身。在EDA行业应用硬件设计原则和机械机制和度量在软件方面将对我们非常有用和有价值,”他补充道。

最后专家Farhan拉赫曼,增强现实技术在高级微设备公司的首席工程师,他们只关注RTL做出一点有多大”核心RTL的小空间,更不用说,如果你只是整个系统和剩下的东西,这真的很可怕。”

例子:处理器的复杂性增加40%,与去年同期相比,他说。


图5:处理器内核的复杂性。来源:AMD

“这不是性能。这是核心的数量随着时间的推移得到整合。2005/2006的时间,每个人都常说单芯或双核心。现在你谈论多核多核,没有限制。我听说28核心,32内核。还有线程。以前是单线程,多线程。现在有64个线程,128个线程。什么时候结束?它不是。 The memory channels and the bandwidths are increasing leaps and bounds to support all of this multithreadedness,” Rahman said.

这导致爆炸的验证数据。

“就从RTL的角度来看,只有在处理器方面,建立每周的数量的时候当我在摩托罗拉工作方式,我们只有几个testbenches。那是15年前。快进到现在,和8到10模型非常标准,这可能偏低。回归每周400 k到500 k的西姆斯。这是一个很多刺激和模拟。”


图6:处理RTL bug。来源:AMD

时保留一定数量的回归数据周,多次工程团队无法完成调试过程,他提醒。“假设你有100个签名,你有10个调试器,可以通过,说,60%的签名调试。但是,40%呢?如果你要让他们在一个28天窗口,调试器可以去那里和调试,和马克他们正确调试或有某种性情的RTL错误或验证错误。这是很大的挑战,所以你必须保留。通常我看到2.5到3 tb保存。功能覆盖率的箱子,它是大约150万箱。这不是一个小数目。失败的测试用例,每个测试用例可以是1 gb数据。假设你运行500000西姆斯-西姆斯相当于测试用例和2000失败。 It adds up pretty quickly. Task burndown is yet another database where approximately 1K tasks are there usually.”

那么接下来会发生什么呢?“我是一个非常强大的信徒,我们还没准备好扔掉一切,我们过去40年时间内建在处理器设计中,“Rahman说。“传统的指标。但是我们需要做的是增加与大数据和机器学习算法给我们预测我们肠道内转换成真实的东西,这样我们知道如果我修复这个bug,不会有另一组表兄bug在那里。”



留下一个回复


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

Baidu