首页
学习
活动
专区
圈层
工具
发布
37 篇文章
1
Linux音频驱动-ASOC(ALSA System on Chip)
2
LPDDR5: A New Clocking Scheme 提高性能
3
FPGA 控制 RGMII 接口 PHY芯片基础
4
DDR3篇第三讲、DDR3读写测试项目分析
5
PHY(Physical Layer,PHY)通俗理
6
MIPI联盟已完成车载的Long-Reach SerDes PHY工业标准 A-PHY v1.0
7
【三】Bluetooth 技术||链路层七种状态与空口报文设计(Core_v5.2)
8
【RL-TCPnet网络教程】第5章 PHY芯片和STM32的MAC基础知识
9
FPGA和USB3.0通信-USB3.0 PHY介绍
10
USB技术浅析
11
优秀的 Verilog/FPGA开源项目介绍(二)-RISC-V
12
优秀的 Verilog/FPGA开源项目介绍(十六)- 数字频率合成器DDS
13
想学习高速ADC/DAC/SDR项目这个项目你不得不理解
14
优秀的 Verilog/FPGA开源项目介绍(九)- DP(增改版)
15
优秀的 Verilog/FPGA开源项目介绍(十三)- I2C
16
高速串行通信常用的编码方式-8b/10b编码/解码
17
SoC设计之PPA
18
SoC设计之功耗--开篇
19
开源SOC的设计与实践
20
SoC设计之功耗 – RTL/netlist功耗计算
21
转置型FIR设计
22
SSD目标检测系统系统结构网络训练
23
P2P接口Booth乘法器设计描述原理代码实现
24
流水线式p2p接口的分析与实现
25
流水线乘加树需求设计规划代码实现
26
分时复用的移位相加乘法器
27
Verilog实现全并行比较算法
28
全并行流水线移位相加乘法器
29
ROM乘法器基本算法单个ROM乘法器分时复用ROM乘法器
30
Flash中XIP模式
31
cordic的FPGA实现(五)、除法实现
32
cordic的FPGA实现(三)、乘法器实现
33
cordic的FPGA实现(三)、sin、cos函数运算与源码分析
34
FPGA卡拉ok系统--Biquad filter
35
音频总线I2S协议
36
脉冲压缩处理
37
虚拟地址(VA,virtual address)到物理地址(PA, ,physical address)的转换
清单首页SoC文章详情

SoC设计之功耗--开篇

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

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

——曾国藩

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

欢迎大家加入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

下一篇
举报
领券