下冰雹 · 2021年05月26日

SoC设计之功耗--开篇

天下古今之庸人,皆以一惰字致败;
天下古今之人才,皆以一傲字致败。
——曾国藩

提到功耗这个词,估计大部分做SoC的工程师都是既熟悉又陌生。熟悉的是这个词会经常被提到。陌生的是又很难说清我们工程师在功耗方面能做什么。

我们先来看一下功耗是怎么构成的。在CMOS电路中,功耗可以分为动态功耗和静态功耗。静态功耗又叫做泄漏功耗,是指电路处于等待或不激活状态时泄漏电流所产生的功耗。静态功耗可以细分成好几种,我们不做学术研究也就没必要记住这些啦,只要记住正常情况下静态功耗要比动态功耗小几个数量级就可以了。动态功耗是芯片工作时,晶体管处于跳变状态所产生的功耗。拿一个反相器作为例子。

WeChat Image_20210526094956.jpg

当输入端翻转,电流分成两个走向,一是对负载的充放电,如图中蓝色虚线表示;另一个是两个管子瞬间同时导通产生的电流,如图中绿色虚线表示。前者产生的功耗称为开关功耗;后者产生的功耗称为短路功耗或内部功耗。直接上公式:

P\_\_switch=C\_\_load\_·V\_\_DD^2\_\_·\_f/2

其中\_C\_\_load\_是负载电容,\_V\_\_DD\_是供电电压值,\_f\_是翻转频率,充/放电算一次,所以除以2。需要注意的是,公式里面的\_f\_不是时钟频率。

P\_\_short=V\_\_DD\_·I\_\_short·\_f

其中\_V\_\_DD\_是供电电压值,\_f\_是翻转频率,\_I\_\_short\_为电源流到地的短路电流。

接下来从功耗构成的角度,我们来看有哪些和SoC设计相关的提示。首先是\_V\_\_DD\_,可以在满足功能的前提下尽量降低供电电压值,这里面包含的技术有多电压域(multi voltage domain)设计,比如内部模块工作在低电压域,与IO相关的模块工作在高电压域;多电源域(multi power domain),通过power gating控制关断不工作模块的供电;动态电压调节(Dynamic Voltage Scaling),根据工作负载情况调整电压,在芯片处于全速工作状态时调高供电电压,在芯片工作负荷不大时调低供电电压,通常会配合动态频率调节共同构成DVFS技术。另外一个降低功耗的方向就是降低芯片内部器件的无效翻转。无效翻转是指与功能实现无关的翻转,举个例子,对于运算单元来说并不是需要每时每刻都参与工作,如果不在输入端加以有效隔离,会把无用的数据通过输入端传进运算单元从而引起内部的器件翻转。这时候就需要加上操作数隔离的技术来降低无效翻转。其他还有一些降低翻转的办法,诸如clock gating等等。

一般我们说降低功耗都是指降低动态功耗。因为动态功耗通常比静态功耗大出很多。但并不是就不需要降低静态功耗了。在一些电池供电的设备中,芯片的静态功耗也是至关重要的。例如某些工作场景的IoT应用,供电装置是一粒纽扣电池,工作时间要求数月甚至一年。这时候就对静态功耗设计提出了挑战。可以参考的方向有以下几种:减少芯片内的器件数量(你没看错),比如量产芯片中拿掉与DFT相关的逻辑;使用high Vt的器件;输入向量控制,这里需要解释一下,如果你去仔细看foundry提供的lib文件,就会发现所有器件的静态功耗和器件静止时的输入有关。还拿反相器做例子,输入为0或1时,其静态功耗不一样。输入向量控制就是当芯片/模块置于休眠模式时,通过一组输入使芯片/模块的泄漏最小。这些输入向量可以通过寄存器上的置位/复位输入端或通过扫描链加入(听起来是不是有点丧心病狂的感觉)。其实前面提到的multivoltage和multi power技术也可以改善静态功耗,但是会相应的增加一些逻辑进去,这些逻辑本身又会造成功耗变大。至于怎么取舍,就要结合实际情况具体分析了。

上面讲的都是从功耗构成角度考虑,我们也可以结合SoC设计流程来看看在SoC设计的各个阶段都能做些什么来降低功耗。毕竟低功耗的设计贯穿了SoC设计的整个流程。

在系统级架构设计时,我们可以考虑进行软/硬件划分,某些工作由硬件模块完成好(相应增加物理器件),还有由软件完成好(增加了剩余器件的翻转率);系统实现要选择的算法是不是功耗最优解;考虑采用并行运算、流水线等手段降低功耗;可以采用multi voltage设计方案来降低功耗;还可以采用multi power设计,以便在系统不工作时关闭供电来降低功耗。

在RTL设计级,可以考虑加入模块级时钟门控;对于运算部件可以使用操作数隔离技术来降低功耗;也可以考虑把芯片内的大RAM切分成小RAM;减少毛刺,避免不必要的组合逻辑翻转等等。

在逻辑综合时,可以考虑采用插缓冲、相位分配等技术来降低功耗;也可以选择让工具插入时钟门控。

在物理设计时,可以将翻转高的节点用寄生电容较小的金属层来布线,以减少整体功耗。

在工艺上,可以考虑采用先进的工艺,新的材料、新的封装技术等来降低功耗。

总结一下,SoC的低功耗设计方法有很多,具体还要结合项目本身的实际情况来定。正如前一篇所讲,在芯片设计的世界里没有完美的技术,只有完美的tradeoff。

【后记】计划后面具体讲讲常用的几种低功耗设计技术。但是突然感觉好像给自己挖了一个大坑。

作者:老秦谈芯
来源:https://mp.weixin.qq.com/s/3hS6klR\_LNrSDY3eGxGUpQ
作者微信公众号
qrcode_LaoQinTanXin_1.jpg

相关文章推荐

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
19635
内容数
1303
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息