从ICG cell 在 library 中的定义说起
如Coding 时需要考虑什么样的代码风格会使gating 的效率更高;综合时需要特别设置要插入的gating 类型,每个gating 的fanout 范围,是否可以跨层次,是否需要做physical aware 的gating;DFT 时需要确定clock gating 的TE pin 如何连接以保证在DFT 模式clock 可控;P&R 时需要考虑gating 的位置是否合理,是否由于物理上相互拉扯做gating 复制,是否需要人工约束某些关键gating 的位置,CTS 是否需要对gating 做特殊处理;形式验证时需要对gating 做特殊建模;STA时需要明白工具在什么情况下会映射出clock gating 的check, 哪些是真实的clock gating 哪些又是假的clock gating。
Icer 发明了Gating 这一技能,在不需要时钟翻转的时候就把时钟关掉,据统计这一技术可以减少20%的动态功耗。Clock gating 并不是一日长成今日这般模样,经过各种摸索尝试之后,时至今日使用最广泛的clock gating cell 就是glitch free 的Integrated clock-gating cell (ICG). 目前主流工艺Foundry 提供的库中都有ICG cell.