你的设计在执行特定功能时要消耗多少功率?对于许多设计来说,正确地掌握这个问题可能会决定成败,但要知道这个正确的数字并不像听起来那么容易。功率分析所预测的功率与硅片消耗的功率之间存在着巨大的差距。在已知的差距被弥补的同时,新的挑战和要求也在对工具提出。这使得功率分析和早期的功率优化尝试成为EDA最具创新性的领域之一。各种市场都关注功率的不同方面,每一个方面都会影响设计或实现过程的特定方面,同时,几何尺寸的缩小也增加了新的物理效应,而这些效应尚未被完全纳入。
设计和验证团队不得不重新配置,以应对这些挑战,同时平衡降低功耗带来的投资回报率与改进设计或更便宜的产品。"功耗感知设计至关重要,并得到了很多关注,但根本不是一个简单的过程,"Arm公司杰出工程师James Myers说。"这也是完全不同的,取决于设计的种类。"
这推动了人们对这个问题的大量关注。"每一个客户都对功率感兴趣,"Cadence的产品管理总监Rob Knoth说。"但功率的含义会随着每一次对话而改变。有的产品以消耗多少电量而生,也有的产品以消耗多少电量而死。其他人则更关心他们将需要多少台空调,或者他们是否能从环境能源中为设备供电。他们都会通过不同的视角来看待电源和功率错误。"
定义电力虫子听起来很简单,但它是什么呢?"我们将电源错误定义为不希望的功耗,"Ansys公司PowerArtist产品管理负责人Preeti Gupta说。"它对功能没有帮助。但功率是一个数字。如果我的设计消耗了500毫瓦,我怎么知道这是否是最佳的?是不是离我应该的位置有5倍的差距?"
猎取功率错误
也许一个更重要的问题会被问到,当一个芯片回来后,消耗的功率比预期的要大。你如何找到这个功耗错误的原因,是什么原因可能导致预测和实际的分歧?过程中哪里让你失望了?一些潜在的脱节现象如图1所示。
图1:今天的特设功率分析。
这个bug可能在非常详细的层面上,也可能在最高的抽象层面上,以及中间的任何地方。设备的灵活性可以是一种祝福,也可以是一种诅咒。"今天,设计师们看到了一系列可以使用的器件,"Synopsys设计组高级职员应用工程师Haran Thanikasalam说。"例如,代工厂提供高Vt器件、低Vt器件和超低Vt器件。如果你采用高Vt器件,那些器件速度较慢,但它们耗散的功率较小,而如果我们采用超低Vt器件,它们的速度非常快,但同时它们的漏电现象非常严重。在决策中可能会浪费很多功率。此外,当把低Vt器件和高Vt器件结合在一起时,某些代工厂或工艺不允许这两种扩散合并在一起,所以它们必须是单独的扩散,这就会影响你的领域。"
在最新的节点上,新的效应就会出现。"今天的设备几乎达到了角质级,"Thanikasalam补充道。"即使是轻微的变化也会大规模地改变设备的工作方式。我们甚至如何测量功率,以及如何将这些由模拟提供的功率数字与实际硅片相关联?这是一个越来越严重的问题,因为在硅片上,你无法准确地指出某个特定的块,比如内存,到底浪费了多少,因为你没有办法测量这些信息。"
在系统层面,发现了不同的问题。"仿真器本质上受限于它们能模拟的周期数,或者它们能运行的现实场景数,"Ansys的Gupta说。"用户需要能够采取真实的芯片级流量的工具和方法论,并在早期对其进行建模。他们需要考虑,对于10亿个时钟周期,有不同的操作模式,这就是相应的功率曲线。这是我的视频IP打开和关闭的时候,我的CPU子系统或者GPU子系统闲置的时候,任何暴露的功耗bug都会有非常大的影响。想象一下,在几秒钟的时间里,你的GPU子系统可能已经被关闭了。在简单的模拟场景中,你无法认识到这一点,但在现实的应用场景中,你或许能够认识到这一点。"
这就造成了抽象性和保真性的老难题。"当你进入更高的抽象水平时,你不可能像设计更明确时那样具有同样的准确性,"Gupta补充道。"但早期分析确实可以提供对更高影响功率问题的见解。今天,许多团队专注于RT级。例如,您正在查看一个具有数百万个倒装触发器的设计,您希望提取一个通用的高级使能。但在RTL,一个时钟网是理想的,这可以提供不太可预测的结果。我们必须估计负载,它将驱动什么样的电容。我们做时钟门拆分,我们做缓冲区尺寸调整,我们创建网状网络、树状网络,我们的想法是,这不是要达到一个超级精确的功率数字,而是这些高级功率调试方案应该被保真地识别出来。"
关注度不断扩大
Cadence的Knoth问道:“团队必须清楚地了解他们的权力担忧。你最担心的是什么?图2形象地展示了一些潜在的担忧。"是热担忧吗?是峰值功率问题吗?是待机功率问题吗?是di/dt问题吗?你是否担心唤醒的急流?即使你知道担心的问题是什么,你也要问什么时候才会有适当的刺激来正确地进行功率或热分析,这样我们就不会做出不正确的结论,要么给产品增加过多的余量,要么延迟进度。这是一个非常共同依赖的问题。”
图2:五种功率方案。
Gupta对此表示同意:“有些人开始在门级测量功率,以便了解电网是否已被正确构建,能够维持该功率。封装是否足以支撑该功率?从那里开始,它已经演变成更复杂的方案:数百种功率门控条件、动态电压和频率缩放。你把所有这些因素集中在一起,复杂性就会飙升。”
Arm的Myers说:“一些设计承认,必须存在反馈回路,以便就地处理电源问题。在服务器中,重点可能是在固定的热包络内最大限度地提高吞吐量,这归结为有源功率/GHz、热管理和对电源噪声的容忍度,其中一些可以在硅后通过表征电压和温度传感器然后调整系统管理软件来完成--所以可配置性很重要。但也有复杂的硬件设计反馈回路,例如何时对某一特定块进行节流,以维持系统完整性,同时将吞吐量影响降到最低。电流尖峰对系统完整性来说是个问题,但取决于上下文,如去耦电容、平面图中的相邻块、当前DVFS点、稳压器负载、封装布局等。考虑到所有这些因素,反馈回路通常太长,有不稳定的风险,所以需要新的方法,因为过多的静态裕度会直接影响性能。”
Knoth说:“有些人关心的是动力的积分--能量。一些公司正在改变对话,从我们做什么来优化动力,到我们做什么来优化能源?归根结底,能源才是真正完成工作的东西。动力在很多方面对我们来说是一个更容易衡量的东西,也是我们更容易兼顾的东西,但它确实是能量,是最终的目标,我们越是能直接衡量它,我们就越能创造出有助于理解它和利用它的工具。”
过去单独分析功率的许多方面,现在正变得由物理属性联系起来。热影响静态和动态功率,这也会影响时间。活动会产生热量,所以有一个反馈循环。方案必须足够长,不仅要产生热量,还要允许这些热量在裸片上的散失,以查看它对邻近器件的影响。
Gupta说:“功耗的一部分是由功能结构决定的,第二部分是由活动在你的设计中是如何流动的决定的。活动对功耗有一级影响,当然布局和变化效应也很重要。围绕时钟有很多关注点,因为它是你设计中最快的信号,它控制着设计中发生的很多功耗。你关闭时钟,你就可以节省大量的电力。你关闭电源,就能节省更多的电力。”
Knoth说:“电源必须是一个过程的组成部分。这是一个多层次的方法,你必须考虑用今天的信息能得出什么样的有效结论。随着设计的进展,事情的成熟,你能够得到更多的准确性,你能够对产品有更多的洞察力,但有时你能改变产品的数量会减少。随着时间的推移,它变得越来越少。早期你的灵活性最大,但准确性最小。什么时候你需要锁定某些关于封装、关于散热片、关于电网稳健性的决策?你必须从整体产品进度的角度来考虑这个问题。”
Ambiq公司架构和产品规划副总裁Dan Cermak说:“这总是一个微妙的平衡。对于硅片开发,总是存在挑战和风险,你会遇到GIGO效应(Garbage In Garbage Out),在设计阶段太早进行功率调试可能会给你带来误导性/错误的结果,但等到最终设计完成后再开始功率调试就太晚了,无法影响有意义的改变。”
结果保真度
仿真结果的准确性取决于必要的物理效应能否被模拟出来。功能性都是关于1和0的,但对于功率问题,这可能是个问题。
Synopsys的Thanikasalam说:“考虑一个存储器,有一些位线贯穿SRAM存储器,该存储器的主要功率来自于这些位线的波动。它们会耗费大量的功率。当你做仿真时,你有能力将它们设置为VDD或它们接地。在真实的硅中,你没有办法做到这一点。即使一条位线出现在VDD上,随着时间的推移,该位线也会开始泄漏,因为没有任何东西将该位线固定在VDD点上。这些都是差分对,它们可能就在中间出现,然后消耗大量的功率。所以模拟器和真实硅片的工作原理之间有很大的关联性差距。”
Ambiq的Cermak说:“即使假设了数字抽象,也有很大的误差空间。有一个问题是确定必须分析的适当的工作负载/场景,它是一个有代表性的工作负载吗?它是否涵盖了设计的所有关键操作模式?对于较大的设计,这个问题变得更加复杂,因为你必须将这些工作负载分解成更小的微工作负载来进行实际评估。”
Knoth补充道:“你的功率分析只有你的矢量才好,你必须在一个层次上看问题,你要看,'这个矢量的覆盖率是多少?活动是什么样的?我们已经投资了相当多的资金来构建实用工具,帮助客户对刺激本身做更多的工作,将不同的向量合并在一起以创建新的场景,将一个向量的活动与另一个向量的活动进行对比。”
Thanikasalam说:“整个过程比功能验证要复杂得多。除非你刺激电路的一部分,否则你不会拨动那个设备,也不会有热量从它身上散发出来,你必须让测试台更加严格,确保在做模拟时,电路的每个部分都是真正的拨动。这对性能有负面影响,而且需要更多的时间,需要更多的能力。这绝不是一个单一的问题了。你必须同时解决所有的问题。隔离一个单一的效果变得非常困难。”
Gupta说:“你无法任意装箱大型矢量集。我可能有成千上万的向量,我如何识别哪些是所有这些矢量中共同的最活跃信号。我有时序关键路径,我如何表征这些路径上的时序功率敏感性,以便做出设计决策?方法论需要有能力存储各种功率相关的数据,然后有一个框架和API,用户可以跨大型设计、长向量进行查看,帮助他们获得有意义的见解。”
知识产权问题
Myers说:“在设计中使用IP时,可能会对所提供的功率模型的保真度产生疑问。EDA工具很擅长精确定位功率的贡献者,如果它们在数字逻辑中,而且你有适当的仿真刺激,但它们对于检查内部宏,如存储器或混合信号部分的设计没有什么帮助,在那里你依赖于你的设计师或IP供应商。幸运的是,这方面有一些标准倡议,如IEEE 1801,它正在追求增强的功率感知宏的建模。”
Knoth说:“现在还处于早期阶段。业界在实现正常化方面取得了一些非常好的进展,即当你包装和销售IP时,功率信息与定时信息同样重要,即使你只是看看定时模型是如何在行业内出货的,自从Liberty模型首次推出以来,已经发生了令人难以置信的演变,功率比定时有一个额外的维度。”
Thanikasalam说:“现在问题依然存在。当设计公司向终端客户定义他们的功率规格时,有很多假设,这些设置是用于该功率情况的,而这些特定的设置甚至可能在真实的硅上不可能。所以,基于模拟的报价和硅片提供的实际数字之间存在这种差异。”
谁的责任?
设计和验证团队一起工作,却又独立工作。理解功率需要比功能验证更多的设计知识,那么最终由谁来负责寻找功率错误呢?
Gupta说:“在电源方面比较成功的公司已经创建了一个新的团队叫做电源方法团队,这个团队位于设计团队和验证团队之间。他们是将RTL设计者创建的设计进行功率分析并找出可以做出哪些改变的人。然后他们通过设计社区管理这些变化。他们与验证工程师合作,帮助他们认识到功率矢量应该是什么。”
Knoth说:“验证团队传统上一直是矢量集的维护者。"行业已经成熟,产品的功能验证和产品的功率分析和优化正在加入到一起,这两者真的需要合二为一,否则都不能有效地完成自己的工作。做功能验证的人可以关注功率。你不应该强迫人们使用一个完全独立的工具或运行集的生态系统。EDA行业有责任让人们尽可能不痛苦地将波形转化为瓦特。”
Gupta说:“这可能会造成目标的冲突。"随着时间的推移,我看到功率方法论团队开始雇用验证工程师,因为他们正在与功能回归资源竞争,没有功能,芯片就什么都不是。所以他们很难游说和竞选功率向量,而范式的转变是,功率方法论工程师现在正在为功率编写向量。”
结语
如今,大量的投资和创新都投入到功率分析工具中,没有简单的答案。用户不得不在测试的广泛性和结果的保真度之间做出权衡,并评估在开发路径上必须做出的每一个决策的必要条件。但这只是旅程的开始。分析是方法论发展的第一阶段,之后需要进行洞察、优化和自动化。其中一些是在问题空间不断发展的同时出现的。Knoth说:“当你从有一个电力焦点切换到能源焦点时,你已经得到了一个额外的自由度,这是你以前没有的,看看这对像地方和路线和综合这样的事情能做什么是相当迷人的。一旦你开始考虑能源与电力,就会有一些惊人的创新机会。”