调试可以驯服吗?

机器学习控制调试回来吗?

受欢迎程度

调试消耗更多的时间比其他任何方面的芯片设计和验证过程,这增加了不确定性和风险半导体发展因为总有挥之不去的问题是否足够的bug被发现在分配的时间。

最近的数据表明,这个问题变得越来越糟糕,,因为复杂性和可靠性需求继续上升。现在最大的问题是新工具的发展和不同的方法是否能阻止不受欢迎的轨迹调试成本。

时间花在调试西门子公司追踪了导师和威尔逊研究小组在未来几年内。最新的数据,如图1所示,显示,最大的集成电路和ASIC验证工程师的时间——44%——是花在调试。Synopsys对此的全球用户调查证实这一结果,指出调试始终是最高的两个验证客户所面临的挑战。


图1所示。集成电路/ ASIC验证工程师花时间。来源:威尔逊研究小组和导师,西门子公司

这个图表没有显示的是上升趋势。2010年的研究显示调试验证工程师消耗32%的时间。到2012年上升到36%,2014年为37%,2016年为39%。增加任何统计异常,无法解释清楚地表明,调试正在成为一个更大的问题。到目前为止,工具没有设法跟上日益增长的复杂性问题,尽管增加投资工具的公司。

调试的复杂性增加的原因是很多的。摩西Satyasekaran,产品营销经理导师,西门子业务指出,一些地区对调试产生的负面影响:

  • 设计越来越大;
  • 更多的代码是遗留代码,没有人记得;
  • 基于类testbenches (UVM)现在广泛使用;
  • 异构环境与仿真、模拟、静态正式,等等,是需要的,但每个域添加调试的复杂性;
  • 在云才刚刚开始调试;和
  • 协作环境满足全球劳动力的需求增加的复杂性。

老方法调试比比皆是,无论是好是坏。“大部分用户依靠视觉调试援助,“Satyasekaran指出。“因此,调试策略没有改变。客户仍然依靠波形和图表”。

戴夫•Kelf CMO Breker验证系统,对此表示赞同。“很奇怪,没有更多的关注这一领域。信号电平调试一直调试系统的支柱超过25年,利用波形的工具逻辑分析仪。”

虽然工具有明显改善,一些潜在的实践仍然是过时的。“调试在过去已经被隔离成不同的域相应的团队责任,”David Hsu说,产品营销主管Synopsys对此。”虽然这简化了当地分流费力地找到根源和业主负责bug相当简单也推出调试的系统级故障的结果很晚在产品周期,在许多情况下post-silicon。结合设计和验证的复杂性和规模的增长,这当然创建极其漫长而又艰难的后期调试和诊断周期。”

系统不再仅仅是硬件。”调查表明开发者花费的时间查找和修复bug,软件调试整个行业的成本确实是非常巨大的,我们充分重视,“Guilherme马歇尔说,主任手臂的开发解决方案。“近年来,和其他因素,软件栈的增加了复杂性和更普遍的使用汤(几个来历不明的软件),毫无疑问,推动行业向调试周期较长。为软件开发人员,使其更具挑战性的物理调试接口run-control和执行跟踪越来越设计生产硅半导体供应商能够实现设备小型化和/或降低成本的需求。”

可预测性是另一个问题。“修正错误的时间和精力是非常难以预测,”大卫·欧登指出开发工具为微芯片技术营销经理。”系统变得更有能力增加集成多个处理器,众多复杂的交互任务。可能需要考虑其统计性质。随着一个缺陷的难度增加,其发生的概率可能减少但可能会有更多简单的bug修复。在大多数情况下,它可能是一个非线性关系的努力需要修复一个错误和事件的数量。想象一个泊松分布与λ1。”

问题的一部分是很难自动化任务。“很难构建一个通用的自动调试工具,可以解决任何软件或高密度脂蛋白问题,”丹尼尔•汉森表示Verifyter CEO。“但是有自动调试解决方案的例子简单的错误定义的类:

  • 编译器会告诉你哪些线是错的如果你输错一个命令。
  • 产品毛羽工具可以告诉你哪些换行策略规则(即使选择规则将是一个手动过程)。
  • 在持续集成,一个小的测试套件运行在每个提交如果失败在这个测试套件你知道哪些是错误的。”

“自动调试将征服世界的方式可能是通过识别其他类的错误,可以自动化,”汉森补充道。

最重要的援助来调试可能定义的过程。“静态分析工具仍然是受欢迎的,因为他们可以检测到超出了编译器的语法问题,如可疑代码和编码错误,“微芯片的欧登说。“自动化测试遗留代码确保持续符合项目标准。许多开发系统可以确保新代码通过这些回归测试之前,可以添加到项目的存储库。也是越来越普遍为开发人员创建一个测试套件之前编写应用程序代码。

调试分类
大多数公司有大量回归套件和部署持续集成。“回归测试失败就是这样一个错误的类,工程师们花很多的时间,”汉森说。“持续集成是解决编译错误和小测试套件,但对于较大的和随机的测试套件,世界是基于ASIC开发,持续集成是不够的。”

调试开始当一个测试失败。“今天的分类主要是手动流动,“说Synopsys对此许。“它需要全面了解验证环境,和强大的分析工具关联错误中发现大量的验证数据转换成有用的根源。”

过程的一部分来一个bug可以自动确认。“筛选大回归可以自动运行,可预测,“导师的Satyasekaran说。“例如,自动化可以修复和重新运行测试来确认这个问题。用户花费的时间在调试问题而不是在进行大型回归。另一个自动化是启用调试能见度自动失败的回归测试工程师是准备好了。”

使用多个验证技术进一步复杂化。“查找和修复bug早些时候在设计和验证周期需要有先进的调试技术,跨域和流动,“许补充道。”这可以通过本机与仿真集成调试工具,静态的、正式的、仿真和原型验证引擎。然而,这将创建一个新的分类挑战:为了真正实现左移位的承诺,识别域,根本原因,业主负责验证失败很快成为一个至关重要的问题。”

在某些情况下,不同的技术可以互相帮助。”一个调试的关键因素是引发的模拟试验和检测到一个给定的设计缺陷,”解释了莎莎Stamenkovic,现场应用高级工程师OneSpin解决方案。“更短更集中测试,更快更容易诊断和修复错误。当测试是由正式的验证而不是通过一个模拟世界中testbench、调试简单。形式验证考虑所有可能的刺激对设计证明或违反断言。如果发现违反,正式工具显示精确刺激序列,称为反例,引发错误。许多正式的工具也可以导出反例的仿真测试,使调试一个熟悉的环境。自正式验证确定缺陷是如何触发信号是相关的,生成的测试实际上是更短更比测试从constrained-random测试长椅集中。”

这可能是非常有用的,当发现一个bug深处跑。“过去,可能是可以收集所有调试数据,存储起来,然后在需要的时候回到,“弗兰克Schirrmeister说,高级组的产品管理和营销总监节奏。“这是与等快速引擎不再可行模拟可以创建数据快,但是时间波形的影响所需要的加工准备调试原始信息。引擎生成调试信息需要提供适当的灵活性给调试工程师对数据收集选项。”

这可能为一些公司创造问题。“大型仿真系统继续下跌的更便宜的调试器同行,“欧登。“随着处理器继续增加复杂性和速度,有太多的数据传输,使它们有利的价格溢价。更小、更便宜的调试器提供的大部分相同的功能和对齐与分布的开发。”

这是最有可能发生在软件。“有必要投资集成软件开发软件和硬件技术,“胳膊的马歇尔说。“IP组件SoC设计人员提供一个解决方案,提供了安全的调试和跟踪通道USB等现有物理链路,CAN总线或WiFi。补充的硬件解决方案,虚拟原型提供指令的准确性和完整的程序执行的可见性,免费的探测效果。两个发展目标允许工具中使用严格的DevOps workflows-such连续集成加速故障隔离,发现和解决。”

可以超越pre-silicon调试问题。”物联网(物联网)应用程序继续增长导致新类通信相关的bug,安全性和遵从性,”欧登说。“新工具,可以自动识别这些问题每一次项目建立。许多这样的应用程序将引导装载程序,允许应用程序代码更新部署后添加功能,修复bug或应对威胁。这些更新是很难测试特定的操作条件是未知的。此外,许多客户都不愿意执行这些升级由于担心破坏系统或不知道如何应用这些更新。”

自动化并不总是直截了当。“任何系统,与其他硬件很难自动化,”欧登补充道。“基本连通性很容易测试,但很难详尽知道哪些类型的硬件连接,哪些类型的信号交换和操作条件的范围将会暴露。在软件方面,性能瓶颈很难检测算法”。

新方法
为了减少调试时间,新的,更强大的调试技术是必要的。“有一个学术研究领域称为“程序修复”,目标是建立工具,自动调试和修复软件漏洞,”汉森解释道。“到目前为止,他们有温和的成功。一种方法是让每一个回归测试再次失败通过通过自动修改代码,直到测试通过。这只适用于回归失败,即。测试,用来传递。它不能解决问题,但使用测试通过证明其调试分析是正确的。解决办法仍然是工程师需要做的事情。”

机器学习(毫升)是接收大量的关注。“我们看到自动化分类毫升和机会人工智能(AI),”徐说。”使用大数据平台和ML技术自动化根本原因分析(RCA)是进一步的关键主要减少分流循环周转时间。从更远的角度看,实际预测何时/何地bug可能发生是一个目标,和一个重要的跳板的目标完全规范的验证。”

调试有一些独特的挑战。“调试是一个典型的情况下,你不知道你不知道的,”Schirrmeister说。“虽然有20/20事后问题导致特定的缺陷可能是显而易见的,在现实中经常发现他们仍然是艰难的,甚至是可怕的。应用机器学习技术是一个明确的必须。它可能会帮助触发智能输入的依赖关系和问题调试工程师可能没有想过。”

这是接近现实如何?“机器学习有一个新兴的地方在调试过程中,但目前影响很小,”欧登说。“在调试代码其未来是光明的,但因为错误的类型几乎是无限的,没有足够的数据集用于机器学习参考。第一个出现的机器学习这种能力可能会异常检测。任何有意义的贡献的人工神经网络和支持向量机可能需要数十年的时间。”

获取必需的数据可以改变这种状况。“新工具,采取一个更全面的观点来调试,“Breker的Kelf说。“通过提取数据从整个设计可以调试场景的整体视图。毫升的应用这些整体数据集允许多个故障的分类提供快速方向的根本原因。为此,调试需要成为一个验证过程的一部分,而不是马后炮。使用正确的便携式刺激工具,它可以包括调试细节直接生成的测试集,集中精力研究了常见的失效模式与先进ML-based调试器可以运行。这个新的范式从模拟运行调试使系统级问题正确分析和快速解决。”

抽象层次也需要改变。“调试需要从一个signal-by-signal过渡到全面、结构化视图中,在整个设计和测试场景从一个抽象的全局视图检查,“说Hagai Arbel, VTool CEO。“ML这些新环境中占有一席之地,自动分类数据,允许工程师做出快速、准确的决策,缩短甚至取消调试周期。使下一代调试的关键是这些技术的组合在一个有效的和有凝聚力的方式。”

一个重要的问题是数据从一个公司是否就足够了。“挑战将用户愿意共享数据训练机,“Satyasekaran说。“大多数公司要保持内部的数据,所以我可以看到初始部署毫升的局部与全局。”

不幸的是,这些ML-based调试工具的开发和部署并不是主流的今天,这意味着我们可以看到现有工具和进一步承压的延续的趋势增加调试时间。目前调试似乎是胜利者,但没人愿意宣布失败。



留下一个回复


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

Baidu