.门控时钟-概述
- 时钟信号的功耗占系统功耗的很大一部分(40%左右)占动态功耗的50%以上,而且由于时钟开启导致的触发器无效翻转以及相应组合逻辑的翻转会很大程度增加电路的动态功耗。
- DC门控时钟命令:
intert_clock_gating
set_clock_gating_style - 门控时钟插入:
1.1 使用效果实例:
a. 对于一个180nm工艺的芯片:有clock gating和没有clock gating的结果相比(芯片实测):
a. 功耗节省34%到43%(具体更应用模式有关)
a. 面积节省20%(一个clock gating能代替多个mux)
- 使用原则:
a. 至少位宽是3或以上的寄存器才用门控时钟
a. 单bit的寄存器使用门控时钟是没有效果的,面积和功耗都不会节省。
a. Clock buffer尽可能多的放到clock gating cell的后面。 - RTL具体措施:
a. 无用输出采用使能保持输出的方式编码:
NxtReadData = (ReadEn) ? RamData : 8'b0;
如果没有读使能时,我们不关心输出什么数据的话,则改成:
NxtReadData = (ReadEn) ? RamData : ReadData;
这样就可以让ReadEn无效时把这8个寄存器的时钟关掉。 - 3bit的计数器插clock gating前后电路对比
插门控之前:
插门控之后: - 不同bit数门控时钟插入对比
SMIC.18工艺 | 面积 | 动态功耗(W) | ||
---|---|---|---|---|
um2 | 门数 | |||
4bit暂存器 | 带ICG | 221.72 | 25.25 | 1.185e-05 |
不带ICG | 263.42 | 30 | 1.427e-05 | |
3bit暂存器 | 带ICG | 175.62 | 20 | 9.160e-06 |
不带ICG | 197.57 | 22.5 | 9.920e-06 | |
2bit暂存器 | 带ICG | 131.71 | 15 | 6.315e-06 |
不带ICG | 131.71 | 15 | 6.613e-06 | |
1bit暂存器 | 带ICG | 85.61 | 9.75 | 3.633e-06 |
不带ICG | 65.86 | 7.5 | 3.307e-06 |
1.2 门控时钟的结构:
a. 结构-1 与门
这种系统时钟门控的机制算然简单,但是容易使门控后的时钟不完整,甚至产生毛刺。
b. 结构-2
这种门控方法避免了门控时钟的不完整性,也可以避免避免毛刺的产生,但门控后的时钟可能会产生亚稳态。
c. 结构-3
这种结构解决了结构-2的亚稳态问题。
d. 结构-4
这种带测试模式的结构可以在测试时让时钟一直开着。
e. 结构-5
在ASIC进行后端测试的时候,有时候可能会将不同时钟域的逻辑和寄存器连起来进行扫描链插入,此时可能某个模块的时钟来源可能不是通过它原来的时钟路径,而是整个芯片统一的测试时钟,就此时需要对时钟进行选择。
1.3 门控的基本要求:
- 所需要的沿(对于正沿触发的寄存器是正沿,对于负沿触发的寄存器是负沿)不增加,不减少;
- 不会产生毛刺;
- 使用后功耗要能够降低;
- 最好面积还会减小。
1.3上升沿触发的门控时钟的结构研究
应用与上升沿触发的寄存器的门控。
1.直接与门结构:
2.高电平使能Latch + 与门结构:
3.低电平使能Latch + 与门结构(上升沿触发常用结构):
波形研究:从下面的波形可以看出:
1.如果En信号的上升沿在时钟的上升沿和下降沿之间的话,则结构1与结构2都会多产生一个时钟沿;见波形中的Error。
2.如果En的下降沿在时钟的下降沿和上升沿之间,则很容易产生一个毛刺;
3.结构3是符合我们需要的,上升沿没有丢失或减少。所以DC在正沿触发的寄存器前插入的都是这类CG;
1.4 下降沿触发的门控时钟的结构研究
应用与下降沿触发的寄存器的门控。
- 或门结构:
- 低电平使能Latch + 与门结构:
- 高电平使能Latch + 与门结构(下降沿触发常用结构):
- 波形研究:从下面的波形可以看出:
- 如果En信号的上升沿在时钟的下降沿和上升沿之间的话,则结构1与结构2都会多产生一个时钟沿;见波形中的Error。
- 如果En的上升沿在时钟的上升沿和下降沿之间,则很容易产生一个毛刺;
- 结构3是符合我们需要的,下降沿没有丢失或减少。所以DC在负沿触发的寄存器前插入的都是这类CG;
1.5 特殊情况分析
- 如果En信号的上升沿和下降沿都能保证在时钟的低电平区域,则与门结构可以作为门控来使用:
- 如果En是ClkSrc时钟域的寄存器负沿触发输出的信号,或者产生En的信号都是ClkSrc时钟域负沿触发产生的信号;
则通过合适的约束,可以做到En的沿都在时钟的低电平区域。 - 如果从功能上可以确认,En的沿都在时钟的低电平区域,则也可行。
- 这种结构不管是对上升沿触发的寄存器或者对下降沿触发的寄存器都是有效的。
- 如果En的上升沿和下降沿都能保证在时钟的高电平区域,则或门结构可以当成门控来使用:
分析: - 如果En是ClkSrc时钟域的寄存器正沿触发输出的信号,或者产生En的信号都是ClkSrc时钟域正沿触发产生的信号;
则通过合适的约束,可以做到En的沿都在时钟的高电平区域。 - 如果从功能上可以确认,En的沿都在时钟的高电平区域,则也可行。
- 这种结构不管是对上升沿触发的寄存器或者对下降沿触发的寄存器都是有效的。
- 这种结构综合的时候一般会综合成:一些这种结构;这种结构面积会小一点15%左右;但功耗会稍大一点;所以需要具体情况具体分析;
1.6 综合分析:
- 使用Latch为基础的门控结构:
- 优点:很明显,就是对En的沿的位置没有特殊要求。
- 缺点:
- 功耗收益:对寄存器数目比较少的门控效果就不明显,甚至会使功耗增加。比如3个或以下寄存器的门控效果就比较差。
- 面积收益:而且由于Latch的面积比较大(相当于5个门左右,而寄存器则相当于7个门左右),所以整个门控结构面积差不多是一个寄存器大小。所以对于面积的收益上来说,Latch结构的门控用在门控多个寄存器(一般是4个或以上)才有收益。
- 使用与门,或门的门控结构:
- 优点:
- 功耗收益:或门或与门的功耗显然比Latch要小得多。所以在驱动一个寄存器的门控都有收益。而且在时钟需要触发的时候不至于增加太多功耗。
- 面积收益:一个或门或与门(相当于1.2个Gate)的面积比一个MUX的面积(相当于2.2个Gate)要小,所以从面积收益上来说,即使是门控一bit寄存器都还有1个门左右的收益。
- 1bit门控对比分析:
- 不使用门控的情况:
- 时钟端输入电容(以tower库dfcfq1为例):0.002pF
- 时钟端反转短路功耗:0.00948pJ;
- 使用非与非门控的情况:
a. 跟时钟有关的输入电容:反相器+与非门:0.003+0.001=0.004pF
a. 时钟端短路功耗:0.00198-0.000918+0.0013=0.0023pJ - 使用非或门情况:
- 四种门控情况功耗对比与面积对比:
En0,时钟1MHz
En1,时钟1MHz
从上面的表格我们可以看出 - 使用或非门的功耗是最小的;但由于综合工具会把这个电路综合成非与非门结构,所以要使用这种结构的话需要使用库中的或门来例化,同时对这个或门dont_touch;
注意:不要对或门前的非门进行例会或dont_touch; - 面积是使用非与非门最小的;
- 使用Latch的门控虽然在En0时有功耗收益,但在En1时功耗增加太大;而且面积也比没有门控的大;