· 前言 ·
现如今便携式设备在人们的日常生活中已经越来越普及,手机,iPad,电脑已经成为了日常生活的必需品,就连我爷爷奶奶都已经开始使用智能手机视频聊天,刷抖音了。而便携式设备除了性能和大小以外,续航是我们最关心的问题。前几年某手机厂商更是打出了充电5分钟,通话2小时的广告语。
功耗过大的同时会产生更多的热量,设备过热便会影响器件工作,手机电脑会因此卡顿。同时也要更多的去考虑如何散热,增加散热设备,这样又增加了散热成本。
今天我们就来聊聊低功耗设计,在芯片设计中主要会用到哪些低功耗设计技术呢?
低功耗设计中的基本概念
Dynamic power and Leakage power:
在数字IC设计过程中,功率主要指动态功耗和漏电功耗。
在数字电路中,如果有信号翻转的话,那么便存在动态功耗,而漏电功耗则是一直存在的。
通常情况下,动态功耗远大于静态功耗,但是因为静态功耗是一直存在的,所以我们也不能忽略它。
低功耗设计的一般方法
- 基于时钟(clock)的低功耗设计
- 基于电压域(voltage)的低功耗设计
- 多阈值库(Multi-threshold libraries)
- RTL低功耗设计(Low power design structure)
a. 基于时钟(clock)的低功耗设计
该方法的设计思想就是当系统(比如手机手机)某一部分不工作时,我们可以控制其时钟的翻转,这样就能节省一部分功耗。举个例子,当我们打游戏时,那么通话模块是不工作的,我们可以停掉其时钟的翻转,从而节省功耗,增加手机的续航。
实现方法举例:
通常情况下我们是通过插入 clock gater 来控制时钟的翻转,插入clock gater是由综合工具自动完成的.
举个例子,有如下的RTL:
always @(posedge clk)
if (en)
Q<= D;
它的硬件电路如下图:
插入clock gater的硬件电路图如下:
寄存器级的clock gating 是为了减少一些不必要的时钟翻转。
下图就是clock gating做的不够好的示意图,DFF中间的 idle状态,时钟仍然是enable的。
为了节省功耗,我们可以在DFF idle的时候把enable信号置为0,从而控制时钟的翻转,达到节省功耗的目的,如下图: