中文 英语

调试调试

在调试的时间可以减少吗?

受欢迎程度

似乎有一个不成文的法律在调试它所花费的时间是一个常数。

可能是所有的收益由改进的工具和方法抵消增加的复杂性,或调试过程会导致设计团队更保守。可能是无论多少时间花在调试,完成的唯一的事就是把错误的地方,对最终产品的危害较小。或者,任务需要不同寻常的直觉和逻辑思维。

不管原因,数据显示,在调试时间一直反对任何减少资源消耗。所以行业丢失的东西,或这只是我们必须接受吗?


图1:验证工程师花时间。来源:导师,西门子业务/威尔逊研究小组2016年功能验证研究

所以真的是花了多少时间调试吗?

“很难精确,因为调试是普遍的和不可分割的一部分,开发过程的方方面面,”哈利福斯特说,首席科学家验证导师,西门子业务。“同样的研究表明,设计工程师花53%的时间参与设计活动,并有47%的时间参与验证活动。从管理的角度来看,调试是阴险的,它是不可预测的。不可预测性的调试任务可以毁掉一个全副武装的项目计划。很明显,当你考虑如何调试所需的所有任务参与产品开发生命周期,可以做任何优化调试过程是一个为组织赢得。”

通常需要一个创新或范式转变的区域产生影响。“我们曾经有过一个晶体管的数量差距一天一个设计师可以创造和可用容量和合成有影响,”拉里悟道指出,验证产品的产品管理和营销主管节奏。“调试坐在悬崖。这一事实是保持在50%左右,而人们跨越广泛的光谱,为什么它是一个贡献者保持不变。这并不是说他们在做相同种类和数量的调试。那就是正在开展哪些工作正在增长。所以总数是静态的。”

深入话题,我们不得不考虑将问题划分为两个。“首先是在设计调试的问题,”道格莱彻说,首席执行官度量技术。“也许设计师正在建设一个新功能,并不完全正确地工作,他们需要调试,在传统的意义。这可能涉及到步进通过代码或观察波形。调试工作的第二个方面是调试在你想呆的大断裂变化之上你添加更多的测试或修复bug。”

早期的错误
这是更好的错误永远不会创建。“可以调试改进,但很多必须做更多的工作,以避免错误,”塞吉奥Marchese说,技术营销经理OneSpin解决方案。“当我们失败,我们需要提前检测错误,在简单的环境中。有点讽刺的是,好消息是,安全安全需求是间接迫使企业采取这个方向。”

研究人员在软件社区一直在研究1970年代中期以来的缺陷密度。“例如,虫子的数量每1000行代码,”福斯特说。“这对结构性指标保持相对恒定的编程语言(15 - 50的顺序错误/ 1000行代码)。我知道一对SoC项目经理一直在跟踪缺陷密度数年,并也发现了类似的结果。有趣的一个缺陷密度指标是虫子的数量每1 k行代码是相当一致的你是否正在处理一个RTL模型或一个高水平的合成(HLS)模型。这是一个理由搬到HLS当它是可能的。你不仅加速模拟的性能由一个或两个数量级HLS代码,但是你介绍更少的错误的设计在一个更高级别的抽象与设计在RTL。”

如果错误无法避免,那么早期发现他们是非常有益的。“一旦一个错误已经通过,尽快它是至关重要的检测,在最简单的情况下,“OneSpin的Marchese说。“例如,FPGA合成错误可以立即找到正式的等价性检查,而不是在门电路级模拟,或者更糟的是,实验室测试。同样,检测内存架构或知识产权程度的缺点,导致安全问题在系统层面上,效率远低于采取更严格的验证态度使用正式的系统地清理所有可疑的功能和短,简单些场景的痕迹。”

导师的培养表示同意。“底线是,一个项目需要不断重新评估自己,问,“这个错误应该被早期验证过程?例如,将bug被发现使用在模拟之前线头吗?这只虫子可以发现使用单元级测试和完整的系统级仿真?验证过程的一个错误逃得越远,所需的更多的时间和昂贵的修复。”

公司必须有流程捕获错误。“当您添加测试报道洞,你找到新的bug和修复那些创造了更多的错误,”莱彻说。“所以在这个过程中是很重要的,你掌握的东西,迅速赶上变化,造成问题。新的方法,如持续集成,意味着运行更多模拟前,尽快签入发生。这有助于你找到虫子以前某个时间点上的变化时的过程仍然是新鲜的心里。比较这一个公司,只有每周运行他们的回归。现在可能会有成百上千的破碎,之间发生的变化,现在,所以你必须解决的。”

期待意想不到的
持续集成和频繁的回归似乎运行方法的先进组织。“我们看到好的回报率回归调试的概念,“悟道说。“你运行大量的测试,能够描述这些测试和发现故障并将它们排序,所以有多少测试达到第一个失败条件和能够方便工程师选择最有效的测试调试,例如最短的运行时。我们可以添加更多的分析和科学的帮助。”

”工具可以应用大数据分析日志文件聚合和过滤仿真数据来衡量进展报道对预设目标在任意数量的轴,如线、分支,FSM,代码,和功能,“说,执行副总裁IC卡管理。”通过保留和分析这些数据的光谱结果随着时间的推移,管理人员可以准确预测里程碑日期,以更好地优化并应用他们的资源加快调试进度。”

大量的数据是可用的。“我们正在试图解决这个问题的方式提供可见性的所有数据已经存在,”莱彻说。“无论是来自一个模拟器或模拟器并不重要。什么是你想知道是否这是最后一次测试通过,当时和现在之间发生什么变化,谁做了更改,何时和为什么。这些数据可以帮助您隔离调试问题容易得多比刚开始说一些坏了。”

回归不只是为功能。“权力回归已经进化,看到越来越多的采用,“Preeti Gupta说,RTL产品管理主管有限元分析软件。“就像功能的回归,人们变得更加有条理和运行回归和跟踪电力消耗,如比例指标。任何时候你看到你应该能够改变属性的东西你改变设计。你不再寻找一根针在干草堆。回归缩短调试时间不少,不仅因为他们是来衡量的黄金标准,但只是测量相对于这是什么。”

选择正确的工具
并不是所有的工具都是一样有用的所有工作。“当你搬到模拟或原型,你转向一个软件开发的心态,“悟道说。“你是运行和调试软件,重点在这种引擎。软件模拟器,但更系统级中扮演了重要的角色用例和工作负载。我想了解电能消耗在一个特定的工作负载。是什么样的测试我运行和提供上下文”。

当发现硬件故障模拟器或原型吗?“有时候,一个模拟器的可见性是不一样,因为它将在模拟环境中,你必须复制可以调试的错误,”莱彻补充道。“需要去诸如模拟是由更复杂的设计,但是你必须复制在模拟器的问题。”

供应商正在迅速试图消除引擎之间的鸿沟。“FPGA原型和模拟之间的选择是一个权衡速度和调试功能,“博Zalewski指出,硬件部门的总经理Aldec。“原型提供了更高的速度,因为直接从时钟振荡器和锁相环时钟驱动。但他们运行在恒定频率和不能停止,这对高级调试是必要的。”

仿真运行可能会很长。“验证效率最大化,公司需要前期的策略解决调试计划,”罗布·范Blommestein指出负责营销的副总裁Oski技术。“正式的模拟调试要快得多。正式的痕迹更短,断言通常狭窄的范围信号调试导致调试只有往往在仿真周期的行为与成千上万的周期。调试时间通常可以从三个小时的比率减少模拟使用正式的30分钟或更少。”

工程师真正关心的是发现错误。悟道恰当地总结“调试的艺术呈现正确的可视化和上下文需要迅速得到的错误。”

新领域的调试

在过去的几年中,系统级验证已经成为更多可见的。直到最近,系统级测试是手写和编排系统中所有必要的事件是复杂和繁琐。

但是有希望在地平线上。“新兴便携式刺激出生的需要创建自动化,让它可以生成这种复杂的测试在一个正确的施工方式,”解释了悟道。“与调试的新范式。在我们的解决方案中,我们使用UML图来表示复杂的测试,因为它是更容易理解测试流程。你可以看到,这些处理器并行做这些活动,这是发生在这一点上在测试而不是试图解决它通过观察八个不同的核心和他们的程序,找出谁当和谁交谈。它成为一个容易处理的调试问题。”

验证也已成为一个流。“它不再是可能的设计和验证复杂的soc只使用单一验证引擎,如模拟、“福斯特指出。“今天引擎使用的频谱从虚拟样机,正式财产检查和正式的程序,模拟、仿真、FPGA原型。这就迫使我们重新思考调试过程。例如,调试已经超越了被视为一个简单的波形查看工具连接到一个引擎。今天,我们考虑跨引擎的调试环境。这些环境必须提供一套完整的同步视图,包括逻辑仿真波形,处理器状态,源代码,内存、寄存器、堆栈和输出。这是对其中测试尤其重要。”

不仅仅是确保调试功能是正确的。它包括设计的方方面面,包括编写一个描述,作出决定,或指导工具可能引入错误。例如,描述权力意图可以创建功能错误,或产生一个布局可以创建违反设计规则或引入错误涉及电磁耦合。

权力是一个领域得到越来越多的关注。“在过去,设计师将运行一个工具,提供一个号码,“Gupta解释道。“他们怎么知道他们收到的数量是他们应该期待什么?总功率号码不告诉你很多。因此,开发比例指标。有多少时钟周期需要根据数据变化的周期数了?你正在寻找一根针在干草堆,这有助于定位。工具是进化,使可视化能够发现异常。”

这仅仅需要新的基础技术使其成为可能。发生了“创新领域的快速跟踪引擎以便调试有点自动化集中在什么地方,”她补充道。“大多数设计公司关心功能第一和投放市场的时间。通常有很少的时间为优化提供超出架构的创建。当你提供一个交互式的环境,集中了问题,然后提供数据来帮助理解为什么。你可以设置阈值,你可以测量峰值功率、峰值平均比,甚至急剧增加或减少力量。”

新工具
新的工具和技术不断涌现。“许多大数据技术进入在调试的世界,在那里你想分析大量数据和执行数据分析上,“古普塔说。“把人的因素尽可能多。”

理想情况下,用户希望根本原因分析。“根源可以追溯到司机跟踪”,悟道说。“根源分析使您进一步追溯原因而不是一步一个脚印。你想带着它回到最初的来源,然后沿着这条道路显示所有影响的事情。它可以提供一个可视化的东西和地方,我从这个来源去目的地,和所有的控制信号,可能影响结果。它们变得更好,但它并不适合所有类型的问题的。现在可用的分析机器学习会给这些问题。”

利用大数据技术可以使新类型的问题。“从TCL(工具命令语言)等面向对象的语言Python与分布式数据库,可以访问形状,情况下,电路,和时间路径在MapReduce系统(类似于Hadoop)使光滑的和快速的查询,“Sankar拉玛钱德朗解释道,在Ansys区域技术经理。”的一个典型例子MapReduce工作时钟缓冲器会发现,通过高功率区域。MapReduce增加了更多的灵活性,所以用户可以建立自定义应用程序的分布式数据库和架构”。

,总是会有一个选择的工具,可用于调试。“另一种形式的缺陷密度,研究了行业内所分类错误的数量和类型的设计,”福斯特说。“研究人员表明,设计并发在本质上有五次错误的数量而设计,在本质上是连续的。事实证明,并发类的设计形式验证。为了提高验证效率,最好利用验证引擎优化为特定类别的问题。”

在调试的时间不太可能改变下一次调查结果。似乎有一种自然平衡系统中,和新的调试工具保存在平衡与新问题需要调试。如果有的话,调试可能获胜。

有关的故事
验证落后吗?
它的工具和方法越来越难以跟上增加设计复杂度。如何防止你的设计妥协。
验证是必要的多少?
解决问题要使用哪些工具是一个必要的第一次迈进的一门艺术。
验证引擎?
专家们表,第1部分:没有一个工具,但是所有的验证工具必须来自同一供应商吗?



2的评论

卡尔·史蒂文斯 说:

布莱恩写道:“无论解释,数据显示,在调试时间一直反对任何减少资源消耗。所以行业丢失的东西,或这只是我们必须接受吗?”

调试是能见度——之前的状态,输入变化,事件,当前状态。

控制也很重要能停下来,看到在任何时间点上的值。(没有设置和运行仿真然后翻找吨波形)
状态改变是由相对较少的输入和事件和可能只有一个先前的状态。因此,不需要切换输入的所有可能的组合。

在软件方面有调试器,可以设置断点,观察变量,单步,等。在硬件方面有仿真波形——哇! !

硬件输入、输出寄存器,记忆,布尔网,和数据总线,和运算器。

简单的软件类可以定义对应于这些硬件设施硬件和软件可以运行在相同的平台上使用相同的调试器。

这听起来很难吗?

托姆 说:

“正常”的软件调试特性包括断点和手表肯定是可用的硬件平台,可以实现和他们所使用的开放标准。爱特梅尔公司工作室作为一个例子,以及一个模板来创建一个定制的hardware-integrated开发环境。你是否花时间去建设这样的调试环境取决于至关重要的硬件软件调试是产品。如果你创建一个新的开发平台为神奇的视频DSP芯片,那是有意义的,或者至少创建图书馆现有的可扩展开发平台,如MatLab…就像现在很多供应商做。“数字双”的新概念首先要找到它的应用程序在模拟双胞胎的机器和系统的仿真不采用,而是学习资料驱动的。不信…

留下一个回复


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

Baidu