调试问题增长新的节点

找到问题的根源越来越困难随着系统复杂性上升;方法和不同的方法发挥着越来越重要的作用。

受欢迎程度

调试和测试芯片越来越费时,更复杂,更困难的高级节点以及先进的包。

主要的问题是有太多的拼图,所以许多不同的用例和需求这些碎片,很难跟踪所有的变化和潜在的相互作用。有些块”“有时候,有些是“上”,其中一些是共享资源的方式是很难理解。实际上,有一个准独立子系统的组合爆炸,和每一块与他人交互创建一组不同的误解的机会,误解和一系列其他问题。

“问题是一个系统性的复杂性,鲁珀特•贝恩斯说,公司的首席执行官UltraSoC。“在的日子我们可能有一个核心运行一个软件,问题非常有限。但是当你有一百个不同的IP块相互作用,和许多来自不同厂商的不同口味的过程运行软件由不同的团队,所有交互,所有惊人的复杂性通过互联和国有石油公司联系在一起的,我们现在有一个全新的一类问题。这是一个不同的问题在过去是从未有过的世界,和验证和确认现有工具无法找到这些东西,因为他们不是看着系统作为一个整体,不是看这些交互。”

博Zalewski,总经理Aldec的硬件部门同意。“高级节点和设计复杂性显著改变调试是接近和执行的方式。它不再是软件或硬件调试;它通常是更多的软件和硬件调试和同步并行运行。以来的复杂性变得更远的节点数量大得多,所有来自不同的来源和供应商。不仅是对软件代码调试或硬件模块探测,因为这些复杂系统的集成不同的元素和域使用互联。因此,有必要使用总线监控和分析程序来记录交易和检测协议不当行为。现在标准程序分析AXI总线,例如,实际跟踪系统的不同部分的问题和缩小它的源头。调试过程影响的复杂性增加的速度验证环境,导致模拟平台提供的模仿调试功能,但在更高的执行速度以及不同的运作模式。这是值得考虑的,尤其是对于最复杂的项目,不仅测量尺寸,而且架构。”

调试本身是变化的处理,从测试的方式和执行引擎或平台用于测试。

“这是一系列的多米诺骨牌,基本上是下降,”拉里悟道说,产品管理总监节奏。”,一个是我们如何测试。的最新动向Accellera,提出了新的便携式刺激标准,真的是看其中的一些系统级测试的复杂性。我怎么做测试?你有很多并发行为和一致性和权力和安全。有系统级的担心你不解决IP测试层面,人们现在看,因为他们有这样的影响最终产品的水平。自然落入了更复杂的测试和强大的平台的必要性。这影响仿真,将仿真和FPGA平台的使用才能完成这个测试在你的一生中。”

问题不在于工具。它是设计和的大小和复杂性方法用于创建它们。

“我们使用的设计工具是非常擅长电器和电路设计,并验证域现在是杰出的,这是非常不寻常的错误将电子电路问题或问题或一个逻辑问题,”贝恩斯说。“我们放下芯片是我们预期的,它会在我们预期的方式工作。”

但即使有很好理解的工具,如仿真和FPGA平台,事情很快就可能出错,因为被测试的复杂性和规模芯片。

“连接所有这些作品已经成为非常具有挑战性,”说Krzysztof Szczur,硬件验证Aldec产品经理。“你分区之后,你可能没有足够的FPGAI / O,因为你必须添加到。和通用芯片,设计是软件和硬件的一部分。最重要的是,如果你看汽车和人工智能设计,一个FPGA的设计尺寸太大了。一个神经网络从硬件的角度是不同的结构”。

这就是不同的方法来解决这些问题真的开始有意义。

“如果你看看我们调试的改变方式,工件的,“悟道说。”,因为它的快速平台,因为它是长期测试,因为你需要的性能,你也看记录的成本信息来做调试。有这类问题,我们正在寻找更多的记录和计算,得到的行为和数据从测试为了能够调试。”

调试过程也是从一个交互式方法更加后处理,因为没有人想占用这些快速平台。如果数据可以采取离线和为了完成调试工作,更好地利用这个平台。这也是不扰民的交互式调试方法和防止问题被移走。

“你可以使用这些信息在一个封闭循环的方式,”贝恩斯说。“就像pre-silicon左移位的世界中,您可以使用这些工具集成和启动阶段作为让你左移位芯片给客户更快,让坡道进入卷得更快。有一面镜子在这个意义上,左移位方面。但还有一个闭环方面。这两个域名不需要解耦,所以你可以使用很多ideas-things像便携式刺激pre-silicon设计阶段,虚拟世界扩展到世界当你有你的芯片测试。但你也可以实际测量和真实的信息,给他们回你的系统模型和芯片的架构阶段提高下一代的建模和分析。”


图1:寻找问题后期制作。来源:英特尔

最好的方法是什么?
经验法则是,更大、更复杂的设计,越难调试。

“这主要是由于连续状况设计的输入和输出之间的周期数目,“说莎莎Stamenkovic,现场应用高级工程师OneSpin解决方案。“设计可能长管道、深队列/ fifo,或内存数据可以参加许多周期之前被使用。在这种情况下,改变设计的输入可以成百上千的周期变化传播到输出。在传统的模拟testbench,只有设计的输入和输出连接,跟踪一个不正确的输出值回源设计缺陷可能是一个挑战。”

如何最好地解决这个问题并不总是很明显,经常和不同的设计团队。

“系统级调试使用更验证团队的问题,但是不断推动左移位导致验证团队在系统级或SoC-level需求,看起来更“悟道说。”,因为复杂性是说这个东西是很难测试,你需要的那种纪律验证工程师做metric-driven approaches-really测试计划,知道你测试,你得到什么样的结果,和什么层次的质量,你将能够生产。更结构化的方法来测试在系统层面将帮助很大,这是一个大的驱动力便携式刺激。”

另一个方面是有清洁测试。到把一个完整的操作系统和应用软件平台,试图找到一个缺陷,远比直接一致性测试或权力测试并行而做许多事情。“这是一个直接的测试环境,你明白,“悟道说。“如果你能重现这个错误在这种环境中,你有一个更好的调试的机会。这是一个人做其他事情来调试这些事情越来越看到错误的特点,然后试图编写指导测试复制它,这样他们就可以得到更快的根源。”

这就难在每一个新节点,随着更多的异构元素被添加到一个设计。

“我们必须finFET双模式,它看起来像天空下降,”乔·戴维斯说,产品营销总监导师,西门子业务。“有公司已经工作在设计5海里,所以持续上涨的挑战。有一个重大的转变,从16 - 7海里,不仅从技术的角度来看,半导体公司正试图做些什么。有可用的面积是固定的,但是你可以把每个技术节点两倍的东西。就他们所投入的规模这些芯片今天是导致他们在设计上改变流动。”

设计周期基本保持不变,因为这些是由消费者愿意支付。“那些事情,”戴维斯说。“你不能雇佣无限的人,所以你必须看你的方法。我们看到变化的地区,包括可靠性、防静电,电气过分强调,所有方面的可靠性,由汽车加速自主车辆和趋势ISO 26262。这是驾驶更严谨和冗余成电子系统。同时我们增加的电子汽车,我们增加了这些电子产品可靠性要求。人们用来做很多ESD手工检查。铸造厂手册中规定,他们不能执行,因为没有EDA工具来检查他们,所以他们是手动完成的。只有那么多,你可以当你谈论数以十亿美元计的晶体管和数以万亿计的多边形。没有足够的统治者。”

这也使得它更难找到问题的原因。

“当你调试一个问题,你想要得到一个问题的根本原因,“说Vaishnav Gorur,产品营销经理验证小组Synopsys对此。“这涉及多个因素,包括设计团队的专业知识和专业技能的软件你使用来验证你的设计。这是复杂的事实,设计越来越大,更多的事情是,有更多的功能,更多的多样性设计,它不是完全建立在公司内部。你有知识产权这可能是由其他团队在公司内部。你购买IP。有许多不同的组件。现在,设计变得更大,有更多的整合。潜在的两个完全不同的设计,两个是什么时钟或权力领域,这些都是一起混合信号。这意味着失败签名是越来越长,所以它可能会在多个领域,其中一些可能是不熟悉的人做调试。因此,它需要更长的时间来找到问题的根源。”

因此,工程团队使用的是不同的验证方法更快地找到问题的根源。

“模拟用于验证的工作马过去,但现在越来越多的公司正在采用静态方法,正式的技术,所以不同的方法的数量你可以有增加,“Gorur说。“他们中的一些人帮助更快地根源。,你都可以抓一些虫子在早期甚至无需去testbench。你只是通过静态检查器运行您的设计。也许这是一个线头检验器。或者这是一个疾病预防控制中心或趟车检查程序。不管它是什么,这些静态检查能够更快地捕捉大量的缺陷。当你取出低垂的果实,你花更少的时间在调试之后当你做仿真,因为你不再遇到这些这些类型的错误。你抓住更多的个别案例问题之类的东西。”

另一种方法可以包括形式验证,可以发现角情况下的问题,而详尽的模拟运行。但是调试必须针对每一个验证方法,他说。

在过去,设计和验证团队有时添加临时监控在设计检测错误接近源和减少调试时间。“检测FIFO溢出发生比等待更高效损坏数据出现在设计输出”OneSpin Stamenkovic说。“现在断言用于执行类似的功能。断言时自动排除设计合成,所以他们更方便比hand-inserted监视器。自动生成和用户编写的断言都不断在模拟,检查报告任何问题之前和宽松调试。

形式验证进一步减少了调试时间,他说。“如果一个正式的工具找到一种违反断言,它提供了一个minimal-length测试用例说明违反发生。大多数正式仿真工具可以出口这个测试用例。调试发生在熟悉的环境中,但以更少的努力由于集中测试的性质。同样的,正式的等价跳棋恰恰可以显示任何分歧两个设计,功能上应该是相同的。这是更容易调试与不同的结果比两套模拟测试,并详尽的。”

其他问题
芯片制造商正在使用更多的商业IP和互连面料在复杂的设计,与他们使用标准接口连接到自己的秘密武器。不是所有的碎片在一起很好,然而。

“他们调整,互连提取的最大性能,“Gorur说。“但你猜怎么着?如果你没测量性能和确保,除了功能之外,业绩目标得到满足,那么没有办法告诉它将满足这些目标。你希望能够测量性能。”

这是特别重要的互联和协议。”子系统和SoC水平,一旦芯片出现这一点上,有显著的兴趣能够定义特定的指标,衡量这些指标,并确保这些阈值不断满足作为设计的一部分,”他说。”例如,在某些工具,性能分析给工程师一个定义和测量方法,可视化分析和调试这些性能指标。他们会说,‘我需要带宽这一特定频道之类的,他们设置的阈值。什么工具会运行模拟和收集所有的数据说,你通过这个织物运行一千个事务。延迟总是低于阈值为这五个specified-except事务。所以出千,五人超过这个门槛,现在验证团队可以深入挖掘那些是找出这些性能相关故障的根源,而不是真正的失败,但失败的性能定义。”

多少可以出发前已争论多年。“不仅仅是建立一个IP,让那家伙一起构建它,但是有一种团队或工具或基础设施,构建系统的知识的各种IP如何一起工作,”Rajesh Ramanujam说,产品营销经理NetSpeed系统。“否则,如果你只是调试一切本身变得困难的问题解决在系统级别。”

调试7海里下面
在7海里,调试挑战并不完全清楚,特别是在尝试新技术。“没有人真正想要的几内亚猪,“Ramanujam说。“没有人真正想成为第一个尝试新事物的人。人们可能会认为他们已经知道有发现所有的问题,但只有当你在你发现有更多的未知因素。当你移动到较低的节点,很多更复杂的事情变得添加的域交叉。和一些应用程序更容易比别人,如人工智能和汽车。这些客户需要更多的性能,更多的实时约束,它会使工作更加困难。如果出现错误或者需要调试,或者你必须弄清楚问题是什么,怎么做在系统级?真正的问题是什么是行业中需要解决这样的事情?”

能够观察各个部分以及它们如何相互作用是至关重要的。“如果你想看到每一个小块,将会有更多的信息给你消化,但然后你必须非常有条理和周到的方式,”他说。然后,有一个模块化的方法不是偶然的方式把“诱导多能性”在一起,甚至构建IP,这样很structured-will提供可伸缩性和一致的方法。如果你用这种方法,无论是10-IP SoC或200 - ip SoC,一旦你的方法是模块化的,那么将自动成为可伸缩的调试方法。”

虽然没有一个调试方法对于每一个设计和设计团队,今天可以使用各种技术。但它仍然是越来越难以确定问题的根源在每个新节点和优化性能的复杂性。



留下一个回复


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

Baidu