微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > 复杂SoC设计中的功率管理 (上)

复杂SoC设计中的功率管理 (上)

时间:09-17 来源:互联网 点击:
长期以来,降低功耗一直是芯片设计中的重要需求。随着更大、更快的集成电路应用于便携式产品中,这个需求变得日益重要。因此,贯穿整个设计流程的功率管理技术也在不断改进,以确保产品的各个部分均得到适当、高效的功率供应,同时保证产品的可靠性。诸如多电压岛,以及时钟频率和阈值电压的动态调整等技术,均有助于在提供高性能的同时,节省便携产品中的电池能量。

更为重要的是,SOC在尺寸和速度方面的增长已经给大量的设计带来了功耗方面的挑战,而这些挑战并不属于传统的受供电限制的范畴。在这些设计中,热耗散和可靠性方面的问题,例如电迁移和电压降已经变得极为关键。深亚微米设计中的功率问题可能会限制设计的功能或性能,并严重影响到芯片的可制造性和良率。较高的功耗会造成结点区温度上升,导致晶体管动作速度变慢,并增加互连电阻。如果不考虑功率问题,会导致器件性能低于预期,进而使得器件良率下降。此外,较高的功耗会要求在温度管理方面采取更多的系统级措施。总而言之,这些功率问题正在造成SoC和系统成本的增加。在SoC设计流程中进行功耗管理,能够有效控制这些成本。

1 SoC中的功耗

芯片的总功率等于动态功率加上静态功率。动态功率是指在开关逻辑状态转换过程中所消耗的功率,包括单元内部(内部功率)和驱动芯片节点及外部负载的功率(开关功率)。动态功率 = CV2F其中,C为负载,V为电压摆幅,F为逻辑状态转换的频率。随着半导体器件结构日趋小型化,器件和互连电容降低,芯片获得了更高的性能和更低的功耗。而更大规模的设计以及更高的开关速率将会导致功率增加。静态功率(泄漏功率)是指在晶体管不进行开关动作时消耗的功率。

静态功率=VISTAT尽管在晶体管漏极和衬底之间的一些反向偏置二极管中存在着漏电流,但大部分泄漏功率来自晶体管关断时的亚阈值电流。由于亚阈值漏电流随着晶体管阈值电压(Vth)的降低而增大,从而带来了一定的麻烦。随着工艺技术向130nm及以下不断发展,泄漏功率可能会占到芯片总功率的50%(见图1)。泄漏功率的增加,会使得芯片中与可靠性相关的故障(即使是在待机状态下)呈指数增长。


随着CMOS工艺尺寸的减小,降低功率的主要方法转为降低供电电压VDD。由于功率和电压的平方成正比,所以降低电压对于控制芯片的动态功率极为有效。但是,由于开关延迟时间与负载电容和Vth/VDD成正比,因此,仅降低供电电压会导致电路速度降低。为了保证快速开关所需的足够的驱动能力,Vth必须与VDD成正比下降,这又会导致泄漏功率的增加。较好的方式是采用考虑了功率管理的设计流程,在时序要求和各类功耗目标之间取得平衡。

2 功率解决方案

设计抽象层次越高,对功耗的影响也就越大。例如,在系统级和算法级上,采用并行实现而非串行实现能够降低时钟频率,从而显著降低功耗。但并行方法的低功率可能要以面积增加或性能降低为代价。

以一个用于串行接收数据样本的芯片为例,来说明并行架构与串行架构的不同效果。将数据样本并行处理,可将芯片逻辑电路的时钟从80MHz降低至10MHz,供电电压也可从1.8V降低至1.25V。并行处理逻辑电路要比相同的串行处理电路的面积大得多,但较低的电压和工作频率可将功耗降低75%。在其它一些设计中,占用面积上付出的代价较小,而功率节省效果却很明显,所以这是值得探索的一种折衷方案。图2中介绍了几种功率优化和分析的技术,这些技术在SoC的整个设计流程中均可得到应用。本文所涉及的功率解决方案如下:(1)模块门控时钟(2)多供电电压;(3)多阈值电压;(4)综合过程中的功率优化,包括RTL级门控时钟。


3 功率估计和分析

设计过程中,在如表1所示的4个阶段内进行功耗估计是非常有用的。每个阶段所估计的功耗准确度随增补设计和可利用的库信息的增加而提高。



4 RTL级功率分析

在设计流程早期,功率分析可对设计的功耗进行粗略估计。此时可能尚未选择库,所以库数据有限,这时,电子数据表(spreadsheet)分析可以用于找出最佳的注重功率的库和设计架构。在选定库之后,即可用Design Compiler和Power Compiler来代替电子数据表,或向电子数据表提供数据。

功率分析的电子数据表中包含了大致的门数和每个模块的活动值、mW/MHz数据以及相关的功率估计。这时进行的分析也有助于确认一项设计的功耗是否过大而不现实,从而可避免花费数周时间来实现一个根本无法制造的设计方案。

为了使用电子数据表分析方法,有必要对每一模块的门数(每一种类型的库单元数量)和活动水平进行估计。同时还需知道每种类型的单元在开关时所耗费的能量,库供应商手册中的数据可用于确定正确的功率速度比(mW/MHz)。一个模块内每种类型的单元的内部功耗可由下式计算:功耗=门数×mW/MHz×活动×频率。将一个模块内所有不同类型的单元的功率加在一起,就可得出这一模块总的内部动态功率的估计值。在综合前,可根据所选择的体系结构和对设计本身的理解来对门数进行估计。例如,从总线宽度、字长、控制层和存储器深度等可得出大致的门数。在选择了库以后,模块的门数就可以利用Design Compiler的report-reference命令在初期综合后进行估计,这项功能将报告设计中每个例化设计的数量。功率计算的一个关键方面是指定活动水平。设计中的门电路都具有不同的活动水平,在对设计进行仿真提取开关动作或不进行仿真的情况下进行估计均可。但在选择了库之后,推荐进行功能仿真来确定开关动作。

开关动作以翻转率(TR)衡量。翻转率是指在单位时间内,一个设计对象(如节点、引脚或端口)从逻辑0至逻辑1以及从逻辑1至逻辑0进行转换的次数。对于一个节点来说,如果它在100ns的时间间隔内有50次从逻辑1至逻辑0的转换,以及50次从逻辑0至逻辑1的转换,则其翻转率为1,表示每ns有1次动作转换。功率与转换率之间的关系可以理解为,在状态改变的时间间隔内,为了完成内部电路的状态转换,就必须提供一定的能量,因此,每次转换都会消耗功率。

重要的是,只有在开关动作代表了芯片的实际工作状态的情况下,在任何抽象层次上的功率估计才有意义。常见的错误是在试图确定活动时,使用一个向量来仿真系统启动序列。此项活动极少能够代表真实的工作状况,因而会导致不准确的功率估计。采用RTL级仿真能够自动生成一个SAIF(Switching Activity Interchange Format)文件,但是活动值只有在此向量现实时才是准确的。目前的工具尚不能自动生成这样的向量,因为它需要对电路的实质有明确的理解。

图3所示为可以在VCS内使用的编程语言接口(PLI)系统任务,用于在仿真期间生成SAIF文件。Power Compiler提供了一项power_estimate功能,这项功能使用SAIF文件来定义库和约束条件,以及对设计进行注释,以用于功率估计。Power Compiler针对未注释端口的默认开关动作是,每个上升沿有1/4的概率翻转,此数值在整个模块内应用和传送。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top