软件驱动的功率分析
软件驱动的功率分析
Software-driven power analysis
功率成本高;功率成本高。这是对阿克顿勋爵名言的一种强迫性的改编,抓住了半导体设计和功耗的两个重要方面。从一段时间内的平均功耗来看,很明显高功耗的芯片将产生高成本。在便携式设备中,更大的功率意味着电池体积更大、价格更高,或者电池寿命缩短。此外,更大的功率意味着更先进和更昂贵的包装来散热。这三个因素在产品定价、利润率和市场成功的可能性方面也会产生连锁反应。
对功耗的担忧远远超出了至少部分时间使用电池的便携式设备。壁挂式设备在包装、电源和配电系统方面也会产生额外的成本。这些相同的问题一直延伸到服务器领域,包括机架或计算服务器、海量数据存储阵列和网络交换机。服务器领域的运营成本是巨大的;研究表明,在每台服务器的生命周期中,功耗超过了硬件本身的价格。服务器场可能位于水电站大坝或大型太阳能电池阵列附近,以满足它们的高需求。一些地方还必须符合“绿色法律”,以规范服务器的功率消耗。
在高端,过度的功率消耗可能需要液体冷却系统,这会增加巨大的基础设施和相关成本。基于所有这些原因,降低平均功耗是几乎所有半导体项目的目标,而不管终端市场如何。在考虑峰值功率时,降低功率可能是一个关键需求,而不仅仅是一个目标。有些芯片被设计成只允许某些部分同时运行。在这种情况下,打开所有功能可能需要比设备所能处理的更多的电流消耗,从而导致热击穿和永久性损坏。
Challenges of power analysis
功率分析的挑战
考虑到限制功耗的所有动机,该行业已经开发出各种各样的低功耗设计技术。这些范围从布局级电路调整到系统级、应用程序感知、基于软件的电源管理。无论使用何种技术,在设计和验证正在开发的芯片时,通过估计平均功耗和峰值功耗来准确评估它们的影响是非常有价值的。在制造之后才发现平均功率对于一个可行的产品来说太高了,或者峰值功率消耗破坏了芯片,这是不可接受的。需要有效的硅前功率分析,最好在项目的多个阶段进行。
电子设计自动化行业传统的功率分析方法依赖于仿真。芯片的功能验证需要开发一个测试台,然后编写或生成一套测试,检查芯片设计的每个功能或特征。模拟整个测试套件,或者只模拟一个具有代表性的部分,并将结果输入传统的power signoff工具是一件相对简单的事情。由于大多数功耗只发生在电路切换状态时,模拟器可以向电源签核工具提供切换活动文件。当结合目标技术库中的功率特性时,该工具可以为平均功耗和峰值功耗提供相当准确的估计。
然而,这种准确性完全与在模拟中运行的测试有关。在实践中,任何验证测试套件都不能代表生产软件运行时的芯片操作。为功能验证而设计的测试,其目的在于只刺激目标特性所需的设计区域。受约束的随机测试台可以生成更多的并行活动,但仍然不太可能模拟真实世界的使用情况。真正精确的功率分析只能通过使用来自实际软件工作负载的切换活动来执行,包括在操作系统(OS)上运行的用户应用程序。
启动操作系统、启动系统服务和运行应用程序通常需要数十亿个时钟周期。这在模拟中运行是完全不现实的。相比之下,模拟器通常运行数十亿个周期,从操作系统引导到多个用户应用程序并行运行。仿真练习了执行高精度功率分析所需的实际软件工作负载。挑战在于,power签核工具被设计成可以处理数千个周期,而不是数百万个,当然也不是数十亿个。需要一种新的方法来识别仿真运行中的几个高活动区域,并将重点放在仅使用这些窗口进行功率分析(图1)。
Figure 1. Power analysis using power windows
Moving to software-driven power analysis
转向软件驱动的功率分析
图1所示流程的第一个要求是仿真器生成一个概要文件,显示设计的哪些部分在一段时间内处于活动状态。此活动配置文件可以在波形查看器或其他硬件调试工具中查看为图形。由于电源签准不能在数十亿个周期上执行,下一步是用户利用活动配置文件来确定一个或多个电源关键型窗口,在此期间活动最高,功耗也可能最高。如果这些窗口中的每一个都在数百万个周期内,则可用于下一阶段的功率分析。作为基准,模拟器应该能够在三个小时内生成十亿个软件工作负载周期的活动概要文件。
默认情况下,模拟器不生成活动概要文件;需要一个新的功率分析器工具来创建加权活动模型,并将其与设计一起加载到模拟器中。将多线程功耗分析引擎添加到仿真运行中,可以生成配置文件,使用户能够在执行数十亿个周期、复杂的软件工作负载时系统地分析其设计的功耗使用情况。一旦寄存器传输级(RTL)设计就绪,用户就可以运行这个功率分析步骤。由于实现流程中每个阶段的功率估计变得更加精确,因此用户可以对合成后的门级(GL)网络列表运行相同的分析(请参见图2)。由于总功耗是目标指标,因此应尽可能使用完整的芯片级RTL或netlist。
Figure 2. Selection of power critical windows
该过程的下一步是在模拟器中重放(重新运行)每个功率关键型窗口,以生成关于功耗和切换活动的更详细的信息。由于这可能是大量的数据,因此运行整个数十亿周期的工作负载是不切实际的。模拟器必须支持“保存”和“恢复”,以便标识为电源关键型窗口的工作负载的每一部分都可以自己快速轻松地重放。对于重播,模拟可以从最接近窗口的保存/还原点开始。模拟器还必须能够在测试运行期间记录刺激,这样回放就可以确定地发生。这些要求同样适用于仿真中的有效调试以及实际功率分析。
功率临界窗口回放的结果被输入到功率分析器中,这将产生两个结果。第一个是交换活动交换格式(SAIF)文件,它记录了设计中每个信号的交换活动。作为一个基准,这个流应该能够在两个小时内从1TB的仿真数据生成一个1亿个周期的SAIF文件。给定模拟器的适当输出,此文件可以100%准确。因此,它提供了对设计活动的深入洞察,并使更准确的功耗估计成为可能。由功率分析器生成的SAIF文件被输入power signoff工具(参见图3),它计算窗口期间的平均功耗。这对于试图了解最终芯片的功率要求的用户非常有用。
Figure 3. Estimation of average power
功率分析器还为整个功率临界窗口生成一个周期的功耗值。用户可以在调试工具中查看此信息,并使用它来选择一个或多个需要高精度功率估计的电源签出窗口(请参见图4)。除了完整的SAIF文件外,功率分析仪还可以访问目标芯片技术的详细库,包括电源特性。因此,与最终芯片相比,此阶段的功率分析通常准确率为95%。用户可以将power signoff窗口提供给power signoff工具,以进一步完善power分析。power signoff工具可以计算窗口的峰值功率,允许用户确保功耗保持在芯片的物理限制范围内。如果需要IR-drop分析,可以选择一个或多个事件窗口在适当的工具中运行。
Figure 4.Selection of power signoff windows
由于设计流程中的后续改进能够实现更精确的功率分析,用户可能希望在RTL、合成后网络列表和放置和路由的网络列表上运行功率分析器和电源签出工具。用户可能还想分析一个包含工程变更单(ECO)的网络列表,以确保功耗不会受到实质性影响。用户应该能够使用后端工具功能为快速分析创建一个零延迟波形,或者为更精确的后端分析创建更精确的延迟注释波形(参见图5)。
Figure 5. Power analysis calculations for multiple delay models from a single emulation run
Real-world results
实际结果
Synopsys提供了一个软件驱动的功率分析流程,满足了前面讨论的所有需求(参见图6)。它可以使用真实的软件工作负载而不是合成测试,从而大大降低了丢失关键电源问题的风险。它为数百万个周期的窗口提供精确的平均功率和循环功率结果,比基于模拟的方法快1000倍。下表显示了实际客户设计的示例:
在分析不同门级实现的功率时,流通过重用仿真结果来支持仿真效率。功率分析流程集成了熟悉的调试技术,使用户能够高效、准确地查明和修复与电源相关的问题。
Figure 6. Synopsys software-driven power analysis flow
Summary
摘要
功耗现在是许多芯片和系统的开发人员所关心的主要问题,从便携式、电池供电的设备到最大的计算服务器机架。即使在最早的产品规范中也出现了功率要求,在整个开发过程中都采用了低功耗设计技术,并且在该过程的多个点都需要精确的功率估计。这些计算必须使用在仿真中运行的实际软件工作负载来预测平均功率和峰值功率。本文概述的软件驱动的功率分析流程使用了最先进的技术和技术,比传统的基于仿真的方法更快、更精确。这个流的一个商业实现现在已经可以使用了。