芯片设计中的功耗估计与优化技术
0赞1 引言:功耗在芯片设计中的地位
长期以来,设计者面临的最大挑战是时序收敛,而功耗处于一个次要的地位。近年来,下面的因素使功耗日益得到设计者的关注:
1)移动应用的兴起,使功耗的重要性逐渐显现。大的功耗意味着更短的电池寿命。
2)芯片集成度的提高,使供电系统设计成为挑战。
随着工艺的进步,芯片内的电路密度成倍提高,并且运行在以前数倍的频率之上,而片上连线则越来越细,片上供电网络必须将更多的电力以更少的连线资源送至每个单元,如果不能做到这一点,芯片的稳定性和预定工作频率都将成为问题。IR压降和供电网络消耗的大量布线资源成为困扰后端设计者的重要问题,现在这种压力正在一步步传导到前端设计者的身上,要求在设计阶段减少需要的电力。
3)功耗对成本的影响日益显著
功耗决定了芯片的发热量,封装结构需要及时把芯片产生的热量传递走,否则温度上升,造成电路不能稳定工作。因此,发热量大的芯片需要选择散热良好的封装形式,或者额外的冷却系统,如风扇等,这意味着成本的增加。
基于以上原因,功耗成为产品的重要指标与约束。下面的因素在设计之初,就应当列入设计者的考虑范围:
1)功耗目标的确定
a) 产品的应用领域中功耗指标的商业价值;
b) 封装,制程的成本影响;
c) 实现的可行度,复杂度,由此带来的设计风险和时程影响的评估;
d) 参考值的选取:根据同类产品,经验值,工具分析确定,并随着设计的深入不断修正。
2)优化方案(策略)的设定
在进一步分析之前,我们先看一下功耗的组成。
2 功耗的组成
2.1 core power
功耗的组成包含RAM、ROM、时钟树(clock tree)和核心逻辑电路(Core logic)等四部分,下面依次来分析。
1)RAM
RAM功耗的计算是项复杂的任务,幸运的是,memory compiler可以为我们进行此项工作。关键点在存取每个端口的速率,这可以通过考虑存取pattern类型得到,或者通过仿真得到。建议在设计初期即生成不同参数(宽度,深度,速度,port数)的RAM/ROM的功耗数据,以利于设计探索。
2)时钟树
时钟树的功耗占到整个芯片功耗的40%~60%,因为它的高活动率(100%)和正负边沿均消耗电力。
其中,电容包含寄存器的电容,驱动单元的电容和连线电容三部分。
3)核心逻辑电路
定义核心逻辑电路功耗为除时钟树外的组合与时序单元消耗的电力。由两部分组成:
leakage current
capacitive loads
4)宏单元(macro cell)
多数芯片包含PLL等模拟macro,可以从库提供商的数据手册找到其功耗参数。设计者可以通过切分系统模式关闭不需工作的模块,以减小功耗。
2.2 IO power
IO功耗包含IO单元、外部负载、外部终端等。因为需要驱动板级的连线,IO的电容会是内部单元的数百倍量级,因此消耗较多的电力。有时候,IO的功耗可以占到整体功耗的很大比例,系统架构可能因之改变,如:重新定义系统的划分,以减少芯片-芯片的连接;选择不同的IO接口协议,以减少能量消耗。IO功耗通常由系统架构,接口带宽与协议要求决定。一旦库选定,设计者可以优化的空间很小,但是核心的功耗是设计者可以减小的,在后面的篇幅中,我们将以核心功耗的估算与优化作为主题。