5.6 在寄存器传输级降低功耗

RTL完成时80%的功耗就已经确定,后端不能解决所有功耗问题。

综合前RTL阶段就应讲与功耗有关的所有问题解决。

5.6.1 状态机编码与解码

格雷码在相邻状态转换时仅有一位发生变化,消耗能量更少。此外格雷码编码的状态机也消除了依赖于状态的组合等式中存在毛刺的风险。

若使用别的编码风格,仍可以通过让翻转频率最高的状态有最少的翻转位数,降低功耗。

另一种方法:把FSM和STG(状态转移图)分解成两个,若两个子FSM之间没有转换发生,那么只有一个FSM需要供给时钟。

5.6.2 二进制数表示法

某些应用中,有符号数在切换过程中比补码更有优势。

某些只使用积分器求和的应用,补码在0->1时所有位都会发生变化,而有符号数只有两位发生变化。

5.6.3 门控时钟基础

该RTL综合出的电路在load_cond为真时写入输入数据值,否则寄存器值保持不变。该RTL写法在clock线上推不出任何门控时钟。后端工具可能产生门控,但是不应依赖于这种方法。

上面这种编码方式后端环境设置会加入一个门控时钟取代32个多路复用门。

某些综合过程中未能识别的情况,可以明确地指定门控时钟对所有功能进行动态控制。

同样门控信号和数据通路重组(把容易产生毛刺或者会经常翻转电平的电路放在电路后级)都应在编写RTL时就予以考虑。

5.6.4 独热码多路器

采用独热码编码,输出更快更稳定,并且初期就可以将未选中总线隐藏,实现了低功耗的效果。

5.6.5 除掉多余的转换

转换后的数据未被采样,就是多余的,将这样的转换去掉可以显著降低功耗。

图中AB和CD只有一组会最终输出,所有有一组的转换是多余的。

优化后的电路只有一组输出会读入数据模块。

5.21中数据会输入所有模块,但是只有选中的模块会输出,导致了不必要的功耗。

修正好的逻辑消除了多余的转换。新增逻辑门只将信号输入到有用的模块上,降低了功耗。

5.5.6 资源共享

同样的操作多次使用,避免多个位置重复出现。

这里中文版书value1>value2写成了value1==value2。下面的写法复用逻辑,同样可以减小功耗。

5.6.7 使用行波计数器降低功耗

使用行波计数器会对STA和综合工具带来麻烦,应尽量避免,但是其使用的门更少,电平的翻转也更少,可以降低功耗。

由于寄存器存在传播延迟,所以较高位相对于降低有效位更晚发生变化。时钟行进时有毛刺会导致错误的结果。

时钟行进延时累计,也会导致短暂出现错误的值。

这种效应在大部分场景可以接受,如控制LED闪烁,但是该信号驱动多路数据选择器就可能导致错误输出。

行波计数器中每一个阶段都产生了一个新的时钟域,这就需要STA工具处理更多的时钟域,消耗更多时间。

同时行波计数器会为扫描链插入增加难度。

上面接收电路低有效才读入数据。相当于把还在转换的过程给屏蔽掉了。

使用行波计数器必须从正反两方面加以权衡。

5.6.8 总线翻转

当前数据与下一个数据汉明距离大于N/2,将数据反向后传输,以减少总线上出现的转换的位数量。

这项技术需要数据伴随着额外的控制位,表示数据是否已反转。从上图可以看出反转后数据转换的区别很明显。(不过感觉数据在传输前后的反转也要算进去 才对呀)

5.6.9 高活跃度网络

思路:将活跃度高的网络从活跃度较低的网络区区分出来,并将其置于逻辑云尽可能深的位置。

X变化频率低,Y是高活跃度网络。图中将Y=0,Y=1分成两个逻辑云,再根据Y的值选择使用哪一个。分开后的逻辑云没有Y,整体就不活跃了,规模也更小。这样就可以降低功耗了。

某些降低功耗的EDA工具自动实现上述低功耗策略。

5.6.10 启用和禁用逻辑云

操作大规模逻辑云(宽加法器、乘法器),在需要时才将其打开。

上图在数字逻辑前加了一个使能,在不需要逻辑云时禁用它。

5.7 寄存器级低功耗技术5.7.1 技术水平

更先进的硅处理技术,可以额外降低功耗。

5.7.2 版图优化

版图阶段优化可以显著降低功耗。理想布线所有有直接关联的模块在硅片上都紧密挨在一起。长布线会增加功耗,但是复杂的SoC使得越来越难以达到这种结果。

5.7.3 衬底偏压

将衬底或合适的阱区电压偏置,以提高晶体管阈值,减少漏电。

阈值电压升高会影响性能,可以动态偏置,工作模式下保持较小的偏置电压,保持模式下加强偏置电压。臣弟便宜效果和工艺尺寸有关,所以在使用更小尺寸时,衬底偏压的效果会大大降低。

5.7.4 减小氧化层厚度

把栅氧化层尽可能做薄,使导通时沟道导电性和性能增至最大,晶体管关闭时将漏电流降到最低。在栅氧化层厚度1.2nm附近,会产生电子隧道效应的量子力学现象,增加功耗。

5.7.5 多氧化层器件

同5.7.4,厚氧化层头/尾可以用于压制栅极漏电。

5.7.6 利用定制设计减小电容

亚微米技术中Cw是最主要的一种电容,也是最难估计的。必须将串扰之类的复杂效应考虑在内。

使用定制设计对参数可以有更好的控制。