大多數(shù)低功耗設(shè)計手法在嚴格意義上說并不是由后端控制的,Clock Gating也不例外。在一顆芯片中,絕大多數(shù)的Clock Gating都是前端設(shè)計者或者EDA綜合工具自動加上去的,后端只有在極端例外的情況下才會動到它們。
盡管如此,Clock Gating的影響與后端息息相關(guān),甚至會引起后端的一些問題,因此我們有必要從頭理解一下它的原理。
芯片功耗從原理上區(qū)分主要有兩大類:靜態(tài)功耗(Static Power)和動態(tài)功耗(Dynamic Power)。二者的形成原因如下:
所謂動態(tài)功耗,主要是由于信號的翻轉(zhuǎn)從而導(dǎo)致器件內(nèi)部的寄生RC充放電引起的,而靜態(tài)功耗則是由器件在通電狀態(tài)下的泄漏電流(Leakage Current)引起的。對此,為了節(jié)約動態(tài)功耗,最初有個十分簡單的想法:在芯片實際工作過程中,有些信號或者功能并不需要一直處于活動狀態(tài),那么就可以在它們不用的時候?qū)⑵?a href="http://www.nxhydt.com/tags/時鐘/" target="_blank">時鐘信號關(guān)閉。這樣一來時鐘信號不再翻轉(zhuǎn),從而能夠有效減少動態(tài)功耗,而控制時鐘信號開關(guān)的就是Clock Gating。
那么Clock Gating是如何被加入到design中的呢?它主要有兩種來源:設(shè)計者從RTL階段加入或者由綜合工具自動加入。
下面的例子介紹了在RTL階段加入Clock Gating的方法:
可以看到在加入Clock Gating之后,DFF的clock信號前多了一個使能端EN,從而可以控制該時鐘信號的打開與關(guān)閉。
除此之外,在綜合階段,EDA工具同樣支持自動插入Clock Gating。以Synopsys公司的Design Compiler工具為例,簡單的插入Clock Gating的方法如下:
Clock Gating在后端會引起一些問題,尤其在Setup Timing以及時鐘樹綜合階段,有時候會需要做一些特殊的處理。關(guān)于為何Clock Gating容易引起setup timing 的問題,請參考歷史文章:
為了盡量避免ICG的setup timing,解決辦法之一是將ICG放在距離register(sink)盡量近的地方:
當然,EDA工具也提供了一些優(yōu)化方法以便在早期發(fā)現(xiàn)和解決ICG的問題,這些技巧希望大家在實踐中多多嘗試和挖掘。
編輯根據(jù)作者在DC中做了一下實驗,帶ICG的DFF如下所示:
ICG的結(jié)構(gòu)如下所示:
需要注意的是,只有當寄存器的位寬達到一定大小時,DC才會自動將其使能端綜合為ICG單元(經(jīng)過測試,3個及3個以上的位寬會綜合為ICG單元)。
事實上,由于ICG單元本身帶來了 面積占用 ,只有當寄存器位寬達到一定的大小時,使用ICG才能達到即降低面積又降低功耗的效果,這是在我們今后的使用中需要注意的地方。
-
寄存器
+關(guān)注
關(guān)注
31文章
5317瀏覽量
120006 -
EDA工具
+關(guān)注
關(guān)注
4文章
264瀏覽量
31714 -
RTL
+關(guān)注
關(guān)注
1文章
385瀏覽量
59701 -
低功耗設(shè)計
+關(guān)注
關(guān)注
0文章
80瀏覽量
16148 -
dff
+關(guān)注
關(guān)注
0文章
26瀏覽量
3400
發(fā)布評論請先 登錄
相關(guān)推薦
評論