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