爲何ICG容易出現setup violation?

ICG(Intergrated Clock Gating)作爲low power的設計手法之一,已經在實際中得到廣泛應用。它們能夠在某些時候將某些clock關斷從而達到降低功耗的目的。然而從時序的角度,經常會發生ICG的setup難以收斂的情況。

爲什麼會出現這種情況呢?

下圖展示了一種簡單的帶ICG的clock tree結構:

 

 

一般每個ICG會控制一個或多個DFF,通過某個DFF傳遞過來的控制信號控制ICG的開啓或者關斷。

然而,在CTS(clock tree synthesis)工具或者命令綜合時鐘樹的時候,ICG不會被看作sink因此並不會作爲balance對象,因此就會出現如下這種結果:

 

 

由上圖可以看出,在分析setup時:

launck clk delay   = a + b

capture clk delay = a

因此,對於ICG的setup path,天然存在clock skewb ,而skew的大小完全取決於ICG距離sink DFF有多遠。

在出現setup violation的ICG path上,比較多見的就是因爲ICG和sink DFF的clock之間存在較多邏輯或者物理上距離較遠,從而導致skew較大而發生setup violation

 

針對這種現象,在實際設計中,我們可能會考慮將出現setup violation的ICG儘量放在sin DFF附近以減小skew。與此同時,EDA工具也提供命令來收緊ICG的timing constraint來迫使工具來優化這些path,比如set_clock_gating_check命令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章