2.1 时钟门控
动态功耗很大一部分消耗在时钟上,尤其是时钟缓冲器(切换率高,为了最小化延时驱动力强);
时钟门控即不需要时关闭时钟;(此时钟指的是模块内部的gclk)
- 无时钟门控:
寄存器随着clk切换数据,不受EN控制;EN=0时虽然Q不变,但寄存器仍然处于高活动性;
寄存器的时钟端是常开的;
- 采用时钟门控后:
寄存器随着gclk切换数据,gclk受到clk和EN的控制,EN=0时gclk是不翻转的;——节省功耗
寄存器的时钟端是受门控控制的;
现在很多lib包括了可被综合工具识别的特殊时钟门控单元;
由于CLK是系统提供的、相对固定的信号,所以时钟门控是对于内部模块(寄存器)的时钟信号(gclk)进行的控制;
- 时钟门控 Design tips:
- 一般用在位宽超过3bit的寄存器;
- 一般被放在时钟路径的前段;(因为绝大多数时钟缓冲器位于时钟门控后,可以在门控时把buffer的活动性降到0)
2.2 门级功率优化
tips:
- 优化前的电路已经被映射到工艺库了,该优化是从已经映射的门级网表开始进行的。
- 门级功耗优化包括了设计总功耗,动态功耗以及漏电功耗的优化。
- 优化时,首先满足设计规则的要求,然后满足延迟(时序)约束的要求,接着进行总功耗的优化,再进行动态和漏电功耗的优化,最后对面积进行优化。
- 优化有优先级
功耗的优化不能降低设计的时序,设计中需要有正的时间冗余(timing slacks),功耗的减少以时序路径的正时间冗余作为交换。因此,设计中正的时间冗余越多,就越有降低功耗的潜力。
Examples×4:
名称 | 图示 | 描述 |
---|---|---|
将high activity net搞到单元内部,要驱动的电容减小了 | ||
对于多输入门,pins的power&input cap可能不同; 高活性–低功率 | ||
Cell sizing | 选择性地增加/减小时序关键路径上的单元驱动强度; | |
Buffer insertion | 插入buffer而不是增加门自身的驱动强度; |
2.3 多电压
权衡:由于动功与VDD平方成比例,因此降低VDD有利于显著降低动功,但同时会增加延时;
基本形式: 给不同模块提供不同的电压(eg.高速cache–1.2v,cpu–1v,soc–0.9v)
增加设计复杂性:需要添加IO引脚提供不同电源轨;更复杂的power grid&LS;
2.4 多阈值逻辑
使用带有多个VT的库(高HVT、标准SVT、低LVT)已经成为减少泄漏电流的常见方法。
亚阈值泄漏指数形式依赖于VT,而延迟对VT的依赖性要弱得多。
综合时“Dual VT”——优化功耗前制定一个目标:
- 最小性能更重要:先全使用高性能、高泄漏lib,再用低性能、低泄漏lib代换非关键路径上的等效单元;
- 最小泄漏更重要:先全使用低性能、低泄漏lib,再用高性能、高泄漏lib代换关键路径(速度关键位置)上的等效单元;
tips:性能与速度正相关,因此关键路径上的单元的速度会较大程度影响性能;
2.5 总结cost/benefit
总的来说,多电压在功耗降低方面效果最佳,但是对电路设计、布局、验证的影响较大;多阈值和时钟门控对电路设计、布局、验证基本无影响;