中文 英语

设计和验证方法的分解

随着芯片变得越来越复杂,现有的工具和方法已经到了极限。

受欢迎程度

自半导体设计诞生以来一直存在的工具、方法和流程正在崩溃,但这一次,没有大量研究人员提出潜在的解决方案。这个行业要靠自己来制定这些想法,这将需要EDA公司、晶圆厂和设计师之间的大量合作,这在过去并不是他们的强项。

当你无法分析某个东西时,就很难优化它,而且分析变得越来越困难,因为大型半导体产品中的许多问题要么是多物理场的,要么是硬件和软件、系统、板、IC封装、插入器、芯片和IP块的组合。在过去,分而治之的方法一直是处理问题的方法。有时这是分层完成的,例如在集成之前完全验证一个块,或者有时通过隔离一个问题,例如通过时钟域交叉。

然而,越来越多的问题阻碍了这些方法,行业还没有找到一个简单的解决方案。例如,像安全性这样的问题是系统级问题。对于许多性能或电源问题也是如此。即使是像电源和信号完整性这样的问题,也必须处理从IP到系统的层次结构,通过许多层的复杂互连,每个层传统上都是针对不同的工具集量身定制的。

这就产生了一系列新的建模问题,并要求一些现有的工具比过去发挥更大的作用。或者,该行业将不得不认真考虑对设计施加限制,这样分析才有可能。虽然这个行业开始认识到这些问题,但它现在正在以一种零敲碎打的方式解决它。到目前为止,还没有人提出一个适用于未来的通用解决方案。

这是一个数字游戏。“如果你把整个系统都考虑进去,角落的数量会呈爆炸式增长,”印度航空公司高级营销总监谢卡尔•卡普尔(Shekhar Kapoor)表示Synopsys对此.“如今,这些方法仍然回到了分级分治的做事方式,同时也在寻找减少必须处理的场景数量的方法。如果没有这些,计算需求将是巨大的。对于你来说,能够在系统上签字,这条路将会长得多。”

分层方法在某些方面仍然有用。Real Intent总裁兼首席执行官Prakash Narain表示:“抽象原则被用于分析的基本复杂性过于复杂的地方。“在仿真中,我们将其用于总线功能模型和静态时序分析。我们通过创建I/ o级时序模型、时钟域交叉、用于时钟域交叉的静态注销技术、重置域交叉来使用它。这些都是我们成功运用分级技术的地方。”

减少角通常涉及到设计决策。Synopsys的卡普尔说:“为什么不避免领域交叉呢?“只要保持设计的异步性,每个部分都有自己的时间。这样你就可以管理特定零件的角的数量。然后你可以在此基础上使用减角技术。使用分层方法进行时间分析,我们分别计算每个部分的时间,然后在约束条件下将两者结合在一起,并进行角合并。”

什么是路径处处递增。Synopsys的高性能计算机IP高级总监米克·波斯纳(Mick Posner)说:“许多人都想对多模系统进行分析。“信号和电源完整性解决方案用于专注于模具,通过封装,到PCB。现在,它已成为模具、中间体、封装、PCB。对于高性能接口(如112G)和内存接口来说尤其如此,在这些接口中,非常关注中间体或路由层的影响。我们必须想出如何将这些信息与IP打包,这有时是不可能的,因为我们不知道IP是如何被使用的。我们可以提供一个参考流程,向他们展示如何进行分析。”

问题是做一些必要的抽象是困难的。“抽象需求对于应用程序来说是非常具体的,”Real Intent的Narain说。“它们依赖于技术,即使是应用于不同的产品,它们也是不同的。它们依赖于每个产品用于实现功能的技术。然后你必须考虑你所追求的准确性水平。它将非常具体地适用于应用程序和技术,标准将随后出台,因为这是一个非常困难的过程。”

波斯纳提供了一个具体的例子。“对于HBM3,我们打包了一个参考设计。这是我们自己测试芯片的参考设计。我们开发了PHY,但当我们做测试芯片时,我们还必须开发一个连接到HBM堆栈的中间体。我们必须以与客户相似的方式来做每一件事。然后他们就可以利用这种流动。当然,那是我们的测试芯片。他们可以重用流程,但实际数据将取决于他们如何布局中间体。”

建模问题
造成这些困难的原因是缺乏模型和生成这些模型的方法。模型是保真度、准确性和性能之间的权衡。高精度模型往往具有良好的保真度,但执行速度较慢,而执行速度较快的模型在准确性、保真度或两者方面都有所牺牲。所需的模型包括功能模型和非功能模型。

我们在函数领域处理这个问题已经有一段时间了,但还需要做更多的工作。“为了功能验证,我们做了一些模型,”设计验证技术战略总监尼尔·汉德(Neil Hand)说西门子EDA.“我们有周期精确、指令集精确等等。但是你想要一种在它们之间轻松移动的方法。使用混合建模,您就有了所谓的快速运行,然后精确运行的能力。在飞行中,您需要能够切换模型。例如,有人可能会将操作系统引导到一个精度较低、运行速度较快的模型上,然后将设计状态切换到运行速度较快的模型。现在,他们能够从这一点出发,在模型本身中有更大的粒度和更高的保真度。我们需要开发更强大的功能,以便在需要时在不同的保真度之间切换。”

今天,类似的方法用于块级和集成验证。“当你购买Arm核心时,你不会验证Arm核心的功能,”Arm的创始人兼首席执行官西蒙·大卫曼(Simon Davidmann)说治之软件.“你要验证它的整合。这就是像Breker这样的公司的用武之地。你有这些积木,但你如何检查它们是否都在友好地交谈?这与使用UVM或Verilog验证块的方式不同,后者是用于块级验证的。验证中的层次结构是让所有的块都工作,分别测试它们,然后将它们放在一起,并考虑集成测试。但它们需要不同的方法。”

问题一直是创建这些模型需要时间和精力,而且每个模型都必须经过验证以确保一致性。Synopsys虚拟原型首席工程师Tim Kogel说:“对于架构,你还需要非功能性属性,比如时间细节。“这需要更多的努力来构建模型。虽然业界已经建立了更高级别的抽象,但还没有成功地创建用于构建这些非功能性性能模型的工具。例如,软件将处理元素视为更抽象的资源单元,然后您可能有互连和内存子系统或不同芯片之间的网络的更详细的模型。Arteris和Arm确实为一致性网络、各种类型的IP互连以及内存控制器提供了这些功能,这些都是集成的关键部分。”

需要更多的模型生成工具。“当你使用特定的模式分析设计时,你就有能力创建一个抽象模型,”马利克·乌西里卡拉(Mallik Vusirikala)说有限元分析软件.“例如,当我分析芯片的内部结构时,我也知道它从接口的角度是如何工作的。我可以创建一个模型,就好像我从外围看到整个部分,或者在芯片与外部世界的边界。然后在分析与它相连的另一个芯片时,我不需要芯片的内部细节。我只要把这个行为模型代入分析,就搞定了。”

但也存在差距。Synopsys的科格尔说:“现在缺少的是物理世界和虚拟世界之间更好的数据整合和交换。“我们需要一个基于已学习的平面图信息和几何图形的建筑模型,当将其迁移到虚拟原型级别时,可以帮助您根据实际应用活动验证性能、功率和热。”

你什么时候完成?
完成是任何分析任务的问题之一。重要的案件你们都报道过了吗?覆盖度量用于块级别的功能验证,但这是另一个需要迁移到更高抽象级别和非功能领域的模型。“如果您在RTL领域运行部分验证,在虚拟原型中运行部分验证,您如何将这些覆盖项合并在一起?西门子的汉德问道。“今天,这是通过功能覆盖来实现的,但有机会——特别是当你看到刺激产生时,当你在覆盖方面使用人工智能时——开始从不同类型的覆盖中推断信息。”

软件世界在这方面非常松懈。Imperas的大卫曼说:“我不认为有标准的报道方法或方法。“据我所知,没有人围绕软件做过任何自动化,相当于HDL中的覆盖点和覆盖组。协议检查器确实存在,用于验证和分析。你可以建立统计数据,在那里你可以观察函数,或者观察对变量的访问。由于缺乏标准化,我们提供了必要的工具,但用户必须自己构建。”

一旦有了覆盖率的概念,就可以考虑优化验证了。汉德说:“无论是当前形式的便携式刺激,还是基于这些概念的刺激,我们都需要在系统层面上生成情景。”“我们能否更进一步,利用虚拟原型和系统建模,在健壮的系统中进行场景生成?”随着系统越来越一体化,这将变得越来越重要。”

其他人也同意。Kogel说:“你想要在ip级、soc级和后来的硅内验证之间保持这种连续性。”“可携带的刺激是实现这一目标的途径之一。然后,您还可以在虚拟原型中运行抽象的测试用例,例如嵌入式核心上的程序。从广义上讲,这是对建筑概念的验证。之后,你在一个模拟器上运行RTL,在一个FPGA原型上运行软件,这可以用来验证性能,因为它更像是“你看到的就是你得到的”。’这不是什么高级虚拟模型。”

图1:多层模型和验证目标。来源:Synopsys对此

图1:多层模型和验证目标。来源:Synopsys对此

处理集成验证的另一种方法是通过功能遵从性。Arm的杰出工程师和SoC验证架构师尼克·希顿(Nick Heaton)说:“Arm中有一个叫做‘系统就绪’的尝试,以定义兼容和能够启动操作系统的含义节奏.“如果你的实现通过了,你就不必修改红帽的操作系统版本,或者其他什么。他们只会启动它。这是软件和硬件之间的契约。便携式刺激试图以一种更普遍的方式做到这一点,我们称之为VIP,因为它是一种开箱即用的内容,我们在一个连贯的水平上提供。我们测试了所有的一致性排列,我们基本上可以将其交付给任何平台,无论是Arm还是RISC-V或其他平台。”

调试问题
能够运行模型是一回事,但在模型中发现并修复问题或如何使用模型是另一种复杂程度。“如果你在硬件或FPGA上调试软件,你会得到一个连接到它的gdb,你可以单步处理处理器的指令流,”Davidmann说。“但当他们有10个或更多的处理器时,问题就来了,他们需要知道什么时候‘这个’写入‘那个’,这个看起来像什么?”分析和调试必须以整体的方式进行,这样您才能看到所有内容。这必须涉及到软件堆栈,这样你才能看到平台的行为。”

这是一组不同于调试硬件的需求。“当我们开始进行硬件/软件集成测试时,我们开始看到更多的软件调试功能集成到虚拟原型调试环境中,”Hand说。“当我们开始为系统设计师提供它时,我们就有机会查看使用模型,以及那些团队想要工作的设计环境是什么?我们如何将其结合起来?您希望系统设计人员以一种对他们有意义的方式与虚拟原型交互。这一切都是关于识别最终用户并将使用模型映射到他们。在这个领域,我们可以做很多事情,也应该做很多事情。”

工具和方法必须与每个级别的需求相匹配。Cadence的Heaton表示:“进行集成验证的人并不是那些了解每个区块的人。调试时间或周转时间变得越来越重要。每天可以运行的调试周期的数量是个严重的问题。如果工具可以指向第一个订单位置,就可以节省调试时间。我们才刚刚开始这段旅程。学习正在进行中,我们使用这些工具的方式将会变得更好。”

人工智能可能会有所帮助。“尽管人类拥有最好的神经网络,但我们的I/O或多或少仍然是串行的,”Cadence的产品工程组总监马特·格雷厄姆(Matt Graham)说。“也许我们可以处理两到三条平行轨道,但肯定不能超过这个数量。机器可以并行地考虑所有这些问题。他们可能会使用一个简单的算法,或一组简单的人工智能,在大规模并行、高度集成的事情上做一些事情。但这与我们自己能够做到的不同。也许是我们上次进行了修订,或者发生了什么变化,或者确定了行为的不同之处,或者IP中的哪些参数发生了变化。”

结论
系统的复杂性压倒了当今的许多工具和方法。过去使用的技术虽然仍然有价值,但还不够。在功能验证领域,业界已经看到了许多这样的问题,但这只是冰山一角。鉴于在最广为人知的领域进展甚微,在许多其他领域,尤其是那些由先进包装驱动的领域,进展不太可能很快。



留下回复


(注:此名称将公开显示)

Baidu