ICG cell的用途和危害

数字后端在使用ICG cell带来的收益和危害

ICG :Integrated Clock Gating cell(集成时钟门控单元)

在数字后端中主要用来通过控制CLK的翻转频率降低动态功耗。

 那么ICG在电路中是怎么插入使用的呢?

下图是在RTL中ICG cell的插入;

可以看到的是在原有的CLK端之前增加了一个EN端;

这个EN端就用来控制CLK信号的输出;

 ----分割线

在后端设计中带有ICG的部分,主要会影响CLK tree;具体怎么影响的看下面解释:

因为ICG在CTS中不是REG和IP端口,所以tool不会把它认为是一个sink点,所以不会被balance,只是会through过去,所以会出现如下的现象:

 由上图可以看出,在分析DFF到ICG的setup timing时:

launck clk delay = a + b
capture clk delay = a

因此,对于ICG的setup path,天然存在clock skew:b ,而skew的大小完全取决于ICG距离sink DFF有多远。

在出现setup violation的ICG path上,比较多见的就是因为ICG和sink DFF的clock之间存在较多逻辑或者物理上距离较远,从而导致skew较大而发生setup violation。

 

针对这种现象,
(1) 在实际设计中,我们可能会考虑将出现setup violation的ICG尽量放在sink DFF附近以减小skew。

(2)与此同时,EDA工具也提供命令来收紧ICG的timing constraint来迫使工具来优化这些path,比如set_clock_gating_check命令。

另外,CTS工具会对其做clone、declone操作。

ICG cell Clone:

受相同ICG cell控制的时序单元较多或者分布不均匀时,就会导致ICG cell连线过长,这时可通过clone ICG cell进行优化;

ICG cell De-Clone:

受相同ICG cell控制的时序单元较少,就会导致ICG cell数量过多,设计density增大。这时可通过De-clone ICG cell进行优化;

 

比如:set_clock_gating_check 命令,其实也是对data path路径的优化。

在place之前 :set_clock_gating_check 

在CTS之后 :reset_clock_gating_check为default

注:CTS之前设clock gating check为了弥补clock tree, ICG cell的latency较短,所以加一些余量。CTS之后remove_clock_gating_check并不是不让tool做ICG timing check,而是用library的gating check的值。

 

posted @ 2025-01-02 11:30  chippeace  阅读(748)  评论(0)    收藏  举报