每次作為面試官問(wèn)一些RTL功耗優(yōu)化的問(wèn)題時(shí)候,都會(huì)希望聽(tīng)到一個(gè)答案:優(yōu)化了RTL的clk-gating比例。
相傳在很多年前,時(shí)序邏輯中是不存在自動(dòng)時(shí)鐘門(mén)控(clk-gating)的。那個(gè)時(shí)候我還小沒(méi)趕上,如果我們回家問(wèn)問(wèn)家大人的話,他們會(huì)告訴我們那時(shí)候流行的D觸發(fā)器綜合應(yīng)該是這樣的:

這種結(jié)構(gòu)呢在沒(méi)有使能的情況下,觸發(fā)器的D端是不會(huì)有信號(hào)跳變的,能夠有限的降低一些功耗。不過(guò)大家也清楚寄存器的動(dòng)態(tài)功耗主要來(lái)源于時(shí)鐘的跳變,因此這種綜合結(jié)果下時(shí)鐘信號(hào)保持翻轉(zhuǎn),觸發(fā)器的內(nèi)部電路也大多保持活躍,于是后面進(jìn)一步的出現(xiàn)了自動(dòng)時(shí)鐘門(mén)控結(jié)構(gòu)。
什么是自動(dòng)時(shí)鐘門(mén)控結(jié)構(gòu)呢?就是通過(guò)工具自動(dòng)的插入一些結(jié)構(gòu),能夠在數(shù)據(jù)不跳變的時(shí)間里,關(guān)斷寄存器的時(shí)鐘輸入。那么如果來(lái)做一個(gè)最簡(jiǎn)單的門(mén)控結(jié)構(gòu),那必然就是如此了:

當(dāng)使能為低時(shí),D觸發(fā)器的時(shí)鐘被關(guān)斷,沒(méi)有時(shí)鐘跳變自然寄存器也不會(huì)翻轉(zhuǎn),因此Q端也不需要連線回接到D端來(lái)實(shí)現(xiàn)數(shù)據(jù)保持。不過(guò)這樣的結(jié)構(gòu)存在一個(gè)明顯的問(wèn)題,en信號(hào)顯然是邏輯電路生成的,雖然其必然滿足建立時(shí)間和保持時(shí)間要求,但是當(dāng)en信號(hào)維持時(shí)間過(guò)短時(shí),時(shí)鐘會(huì)被過(guò)早的關(guān)斷:

以及en的邏輯跳變引起的時(shí)鐘脈沖和毛刺:

因此呢就出現(xiàn)一個(gè)需求,作用在clk上的en信號(hào)必須要能在時(shí)鐘上升沿到時(shí)鐘下降沿這個(gè)區(qū)間保持為一個(gè)常量,所以進(jìn)一步的我們引入一個(gè)鎖存結(jié)構(gòu):

clk信號(hào)作為鎖存器的控制端,en信號(hào)為被鎖存信號(hào),當(dāng)clk為1時(shí)鎖存en信號(hào),clk為0時(shí)透?jìng)鱡n信號(hào),對(duì)應(yīng)的波形如下:

通過(guò)鎖存器的鎖存功能,en信號(hào)只要在上升沿前保持穩(wěn)定,即可保證產(chǎn)生完整的時(shí)鐘脈沖,這個(gè)結(jié)構(gòu)就已經(jīng)基本滿足我們的需求了。此外,大部分的廠商會(huì)在標(biāo)準(zhǔn)單元庫(kù)中提供“時(shí)鐘門(mén)控單元”,比上面的結(jié)構(gòu)會(huì)多一個(gè)test_se信號(hào),在掃描測(cè)試時(shí)候使用,因此一個(gè)完成的gating結(jié)構(gòu)大體是這樣的:

而最終一個(gè)插入了自動(dòng)時(shí)鐘門(mén)控的D觸發(fā)器的門(mén)電路結(jié)構(gòu)圖也就完成了:

那么完成了clk-gating結(jié)構(gòu)后我們需要分析一下,clk-gating的收益是什么呢?功耗收益,能夠在EN端不使能時(shí)關(guān)斷時(shí)鐘降低寄存器的動(dòng)態(tài)功耗。那么對(duì)應(yīng)的額外消耗支出有哪些呢?
1.面積增加,與門(mén)、或門(mén)和latch都是會(huì)增加面積的,因此工具不會(huì)無(wú)腦的插入gating,一般只有在EN控制的寄存器超過(guò)4bit時(shí)才會(huì)插入,這個(gè)值是可以設(shè)置的;
2.EN路徑的時(shí)序更加緊張,為了保證時(shí)鐘及時(shí)被開(kāi)啟,EN端必須更早的實(shí)現(xiàn)時(shí)序收斂(或者理解為EN路徑是相對(duì)clk的,D路徑是相對(duì)gating clk的)。關(guān)于這一點(diǎn)綜合完的clk timing.rpt和clk gating timing.rpt對(duì)比下就會(huì)發(fā)現(xiàn)gating的timing路徑中一般會(huì)減去一個(gè)時(shí)間比如-100ps;
最后再解答還是經(jīng)常在面試?yán)飭?wèn)的問(wèn)題:為什么時(shí)序邏輯里不寫(xiě)else工具才能自動(dòng)插入時(shí)鐘門(mén)控呢?
通過(guò)觀察結(jié)構(gòu)就可以發(fā)現(xiàn),時(shí)鐘門(mén)控的結(jié)果就是當(dāng)EN不使能時(shí)Q端數(shù)據(jù)不發(fā)生改變,如果else分支里有賦值,那么天然就不滿足這個(gè)條件了,因此工具無(wú)法插入時(shí)鐘門(mén)控。
當(dāng)然本篇所述是在觸發(fā)器級(jí)的自動(dòng)時(shí)鐘門(mén)控,而整體看門(mén)控時(shí)鐘可以處于整個(gè)時(shí)鐘樹(shù)的任何節(jié)點(diǎn),越靠近根部的門(mén)控時(shí)鐘對(duì)于降低功耗的作用越明顯。原因顯而易見(jiàn),整個(gè)電路結(jié)構(gòu)的功耗整體由三部分組成:組合邏輯產(chǎn)生的功耗+觸發(fā)器產(chǎn)生的功耗+時(shí)鐘樹(shù)功耗;靠近根部的門(mén)控結(jié)構(gòu)不僅降低了大量觸發(fā)器的功耗,同時(shí)降低了區(qū)域的時(shí)鐘樹(shù)功耗(時(shí)鐘樹(shù)功耗幾乎占到了芯片功耗的50%)。
-
寄存器
+關(guān)注
關(guān)注
31文章
5608瀏覽量
129991 -
RTL
+關(guān)注
關(guān)注
1文章
394瀏覽量
62656 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2056瀏覽量
63406 -
CLK
+關(guān)注
關(guān)注
0文章
132瀏覽量
18041 -
時(shí)鐘門(mén)控
+關(guān)注
關(guān)注
0文章
8瀏覽量
7055
發(fā)布評(píng)論請(qǐng)先 登錄
XOR自門(mén)控與時(shí)鐘門(mén)控的不同之處
fpga門(mén)控時(shí)鐘問(wèn)題
什么是時(shí)鐘門(mén)控?如何去實(shí)線時(shí)鐘門(mén)控的設(shè)計(jì)呢
基于門(mén)控時(shí)鐘的CMOS電路低功耗設(shè)計(jì)
門(mén)控時(shí)鐘與時(shí)鐘偏移研究
通常有兩種不同的時(shí)鐘門(mén)控實(shí)現(xiàn)技術(shù)
什么是門(mén)控時(shí)鐘 門(mén)控時(shí)鐘降低功耗的原理
門(mén)控時(shí)鐘實(shí)現(xiàn)低功耗的原理
什么是門(mén)控時(shí)鐘?如何生成門(mén)控時(shí)鐘?
FPGA原型平臺(tái)門(mén)控時(shí)鐘自動(dòng)轉(zhuǎn)換
門(mén)控時(shí)鐘檢查(clock gating check)的理解和設(shè)計(jì)應(yīng)用
什么是時(shí)鐘門(mén)控技術(shù)?為什么需要控制時(shí)鐘的通斷呢?
為什么需要時(shí)鐘門(mén)控?時(shí)鐘門(mén)控終極指南
什么是自動(dòng)時(shí)鐘門(mén)控結(jié)構(gòu)呢?關(guān)于自動(dòng)時(shí)鐘門(mén)控的解析
評(píng)論