前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SoC设计之功耗--开篇

SoC设计之功耗--开篇

作者头像
空白的贝塔
发布2021-09-08 11:46:36
1.2K0
发布2021-09-08 11:46:36
举报
文章被收录于专栏:摸鱼范式摸鱼范式

天下古今之庸人,皆以一惰字致败;

天下古今之人才,皆以一傲字致败。

——曾国藩

不想错过我的推送,记得右上角-查看公众号-设为星标,摘下星星送给我

欢迎大家加入2022届数字IC交流群,QQ群号 1060380138

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

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

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

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。

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 摸鱼范式 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档