為何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命令。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM