温戈 · 2021年07月20日

数字芯片低功耗设计(Low-power design)

前言

现如今便携式设备在人们的日常生活中已经越来越普及,手机,iPad,电脑已经成为了日常生活的必需品,就连我爷爷奶奶都已经开始使用智能手机视频聊天,刷抖音了。而便携式设备除了性能和大小以外,续航是我们最关心的问题。前几年某手机厂商更是打出了充电5分钟,通话2小时的广告语。

功耗过大的同时会产生更多的热量,设备过热便会影响器件工作,手机电脑会因此卡顿。同时也要更多的去考虑如何散热,增加散热设备,这样又增加了散热成本。

今天我们就来聊聊低功耗设计,在芯片设计中主要会用到哪些低功耗设计技术呢?

低功耗设计中的基本概念

Dynamic power and Leakage power:

在数字IC设计过程中,功率主要指动态功耗和漏电功耗。

1.jpg

在数字电路中,如果有信号翻转的话,那么便存在动态功耗,而漏电功耗则是一直存在的。

通常情况下,动态功耗远大于静态功耗,但是因为静态功耗是一直存在的,所以我们也不能忽略它。

低功耗设计的一般方法

- 基于时钟(clock)的低功耗设计

- 基于电压域(voltage)的低功耗设计

- 多阈值库(Multi-threshold libraries)

- RTL低功耗设计(Low power design structure)

a. 基于时钟(clock)的低功耗设计

该方法的设计思想就是当系统(比如手机手机)某一部分不工作时,我们可以控制其时钟的翻转,这样就能节省一部分功耗。举个例子,当我们打游戏时,那么通话模块是不工作的,我们可以停掉其时钟的翻转,从而节省功耗,增加手机的续航。

实现方法举例:

通常情况下我们是通过插入 clock gater 来控制时钟的翻转,插入clock gater是由综合工具自动完成的.

举个例子,有如下的RTL:

always @(posedge clk)
if (en)
Q<= D;

它的硬件电路如下图:

2.jpg

插入clock gater的硬件电路图如下:

3.jpg

寄存器级的clock gating 是为了减少一些不必要的时钟翻转。

下图就是clock gating做的不够好的示意图,DFF中间的 idle状态,时钟仍然是enable的。

4.jpg

为了节省功耗,我们可以在DFF idle的时候把enable信号置为0,从而控制时钟的翻转,达到节省功耗的目的,如下图:

5.jpg

在做clock gating的时候要通常注意以下2点:

1) 通常现在位宽比较大的寄存器加gater
因为加gater本身也会增加面积和功耗,所以要综合考虑。比如只有一位寄存器,加了gater省下的功耗还不如gater本身的耗电高,所以不值得。

2) 当我们加了gater以后要保证原本的电路功能不变

b. 基于电压域(voltage)的低功耗设计

电压与功耗有着密切的联系。因此功耗的降低可以考虑使用低一点的电压。多电压设计技术有三种方式:

6.jpg

A:各电压区域有固定的电压,如上图(a)所示 ;

B:各电压区域具有固定的多个电压,由软件决定选择哪一个电压,如上图(b)所示;

C:自适应的方式,各电压域具有可变的,由软件决定选择哪一个电压,如上图(c)所示。

A 是固定分配的电压,而B和C为动态电压管理,涉及到软硬件协同设计。

这里就要提到DVFS技术:dynamic voltage dynamic frequency scaling,动态电压频率技术,是一种通过将不同电路模块的工作电压及工作频率降低到恰好满足系统最低要求,来实时降低系统中不同电路模块功耗的方法。

电路模块中的最大时钟频率和电压紧密相关,如果一个电路能够估算出它必须做多少工作才能完成当前的任务,那么理论上讲就可以将时钟频率调低到刚好能适时完成该任务的水平。降低时钟频率意味着可以同时降低供电电压。频率和电压同时降低,功耗就大大降低了。这个是DVFS的原理。

DVFS技术这个种方法属于电压的动态管理,可以通过软件和硬件的方式实现。

c. 使用不同的阈值库文件(Multi-threshold libraries)

如果想要MOS管导通,低阈值的cell需要的导通电压更低,所以相比高阈值的cell,它导通的更快,与此同时,它的漏电也越多。

所以在做综合或者PD的时候,就要想好策略来平衡速度与功耗。

d. RTL设计

在我们做RTL设计的时候,我们依然有办法来节省功耗,来举个例子:

下图是一个典型的pipe line的design,当它处于工作模式下,每一个寄存器在clk的驱动下都在跳动。

7.jpg

这是对其网表的仿真波形:

8.jpg

此时我们可以对design做一些改进,比如用write\_pointer和read\_pointer, 普通的pipe就是数据一位一位的传输下去,此时改进以后,就是pointer动而pipe数据不动,从而减少寄存器翻转次数。此时该电路的行为更像ram, 我们甚至可以用latch array,因为latch array面积更小。

9.jpg

改进后的仿真波形,我们可以看到Q端的跳动大大减少了。

10.jpg

功耗分析的EDA工具

以下是做power 分析的常用工具PTPX/Power Artist

PTPX

  1. To calculate the power based on waveform
  2. input design and waveform based on the design
  3. report the power consuming data for all levels

Power Artist / Power Pro

  1. Good at analysis rtl
  2. Dynamic analysis with waveform
  3. Statistic analysis without waveform
  4. Provide design improvement suggestions (most on the clock gating efficiency

写在最后

没有什么是免费的,很多时候降低功耗势必会使其他方面受到影响,比如面积,性能等。

对功耗的优化也要有针对性,比如台式机可能更注重性能,而手机就要性能和功耗更平衡。所以对不同的产品要做针对性的平衡。

不讲项目时间表/工程师资源/风险等因素,而是一味的要求降低功耗的老板都是在耍流氓!

作者:温戈
原文链接:https://mp.weixin.qq.com/s/8p0uTOpn9wOjkd0T0L62nA
微信公众号:
openIC.jpg

推荐阅读

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