转载自:http://www.chipsbank.com/news_detail/newsId=122.html
1. 时钟信号的功耗占系统功耗的很大一部分(40%左右)占动态功耗的50%以上
1. DC门控时钟命令:
intert_clock_gating
set_clock_gating_style
1. 门控时钟插入:
1. 使用效果实例:
a. 对于一个180nm工艺的芯片:有clock gating和没有clock gating的结果相比(芯片实测):
a. 功耗节省34%到43%(具体更应用模式有关)
a. 面积节省20%(一个clock gating能代替多个mux)
1. 使用原则:
a. 至少位宽是3或以上的寄存器才用门控时钟
a. 单bit的寄存器使用门控时钟是没有效果的,面积和功耗都不会节省。
a. Clock buffer尽可能多的放到clock gating cell的后面。
1. RTL具体措施:
a. 无用输出采用使能保持输出的方式编码:
NxtReadData = (ReadEn) ? RamData : 8'b0;
如果没有读使能时,我们不关心输出什么数据的话,则改成:
NxtReadData = (ReadEn) ? RamData : ReadData;
这样就可以让ReadEn无效时把这8个寄存器的时钟关掉。
1. 3bit的计数器插clock gating前后电路对比
插门控之前:
插门控之后:
1. 不同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. 门控时钟的结构:
a. 结构-1
这种系统时钟门控的机制算然简单,但是容易使门控后的时钟不完整,甚至产生毛刺。
a. 结构-2
这种门控方法避免了门控时钟的不完整性,也可以避免避免毛刺的产生,但门控后的时钟可能会产生亚稳态。
1. 结构-3
这种结构解决了结构-2的亚稳态问题。
1. 结构-4
这种带测试模式的结构可以在测试时让时钟一直开着。
1. 结构-5
在ASIC进行后端测试的时候,有时候可能会将不同时钟域的逻辑和寄存器连起来进行扫描链插入,此时可能某个模块的时钟来源可能不是通过它原来的时钟路径,而是整个芯片统一的测试时钟,就此时需要对时钟进行选择。