時(shí)鐘XOR自門(mén)控(Self Gating)基本思路和時(shí)鐘門(mén)控類(lèi)似,都是當(dāng)寄存器中的數(shù)據(jù)保持不變時(shí),通過(guò)關(guān)閉某些寄存器的時(shí)鐘信號(hào)來(lái)降低設(shè)計(jì)的動(dòng)態(tài)功耗。不過(guò)XOR 自門(mén)控是利用異或門(mén)(XOR)將存儲(chǔ)在寄存器中的數(shù)據(jù)與到達(dá)寄存器的數(shù)據(jù)引腳的數(shù)據(jù)進(jìn)行比較,輸出門(mén)控時(shí)鐘使能信號(hào)。
在講解XOR自門(mén)控之前,先回顧一下時(shí)鐘門(mén)控(Clock Gating)技術(shù)的缺點(diǎn)。
時(shí)鐘門(mén)控使用條件:
代碼中有確定的門(mén)控時(shí)鐘使能信號(hào)或者有門(mén)控時(shí)鐘使能譯碼邏輯存在。比如下面代碼中的EN信號(hào):
input [n:0] D;
input CLK,EN;
output [n:0] Q;
always@ (posedge CLK)
begin
if (EN)
Q<=D;
end
時(shí)鐘門(mén)控的缺陷:
從上面代碼能看出,要想使用時(shí)鐘門(mén)控技術(shù),對(duì)代碼風(fēng)格有一定的要求,得有時(shí)鐘門(mén)控信號(hào)。這可是硬傷,畢竟設(shè)計(jì)中不可能所有的寄存器都能找到這樣邏輯,也不能保證所有寫(xiě)Verilog代碼的人都有這樣的覺(jué)悟。
因此,這就導(dǎo)致設(shè)計(jì)中有些寄存器組無(wú)法采用門(mén)控時(shí)鐘技術(shù)。
XOR自門(mén)控與時(shí)鐘門(mén)控的不同之處:
與時(shí)鐘門(mén)控的不同之處在于,時(shí)鐘門(mén)控技術(shù)依賴(lài)于現(xiàn)有設(shè)計(jì)中的使能條件,而XOR 自門(mén)控則利用異或門(mén)(XOR)將存儲(chǔ)在寄存器中的數(shù)據(jù)與到達(dá)寄存器的數(shù)據(jù)引腳的數(shù)據(jù)進(jìn)行比較,輸出門(mén)控時(shí)鐘使能信號(hào)。如果數(shù)據(jù)不變,則由異或門(mén)直接關(guān)斷寄存器的時(shí)鐘輸入信號(hào)。下圖顯示了插入XOR自門(mén)控單元產(chǎn)生門(mén)控時(shí)鐘使能信號(hào)的原理。
XOR自門(mén)控單元
XOR自門(mén)控的優(yōu)點(diǎn):
默認(rèn)情況下,工具僅支持非門(mén)控時(shí)鐘寄存器上的XOR自門(mén)控。
以下是XOR自門(mén)控的優(yōu)點(diǎn):
?有些情況,某些寄存器的使能條件無(wú)法從現(xiàn)有邏輯推斷出,因此無(wú)法用傳統(tǒng)的門(mén)控時(shí)鐘技術(shù)來(lái)關(guān)斷它們的時(shí)鐘信號(hào)。這種情況下可以使用XOR自門(mén)控來(lái)關(guān)斷它們的時(shí)鐘信號(hào);
?時(shí)鐘門(mén)控和XOR自門(mén)控并不沖突,可以同時(shí)使用。對(duì)于那些已經(jīng)采用門(mén)控時(shí)鐘關(guān)斷的寄存器,可以使用下面的命令允許在這些寄存器上采用XOR自門(mén)控:
set_self_gating_options
-interaction_with_clock_gating
采用了該技術(shù)之后,這些寄存器時(shí)鐘信號(hào)的關(guān)斷時(shí)間可能會(huì)增加。
DCT實(shí)現(xiàn)的Flow:
DCT實(shí)現(xiàn)的Flow
注意:當(dāng)具有XOR自門(mén)控單元的ASCII網(wǎng)表被讀回到Power Compiler工具中時(shí),所有屬性信息都將丟失,并且工具無(wú)法識(shí)別自門(mén)控單元用于報(bào)告或優(yōu)化。Power Compiler工具使用write_script命令支持XOR自門(mén)控ASCII流程。如下圖所示,使用下面的命令保存設(shè)計(jì)的當(dāng)前屬性:
write_script -hierarchy -output file_name
XOR Self-Gating ASCII Flow
將需要將設(shè)計(jì)讀回工具時(shí),可以使用source命令來(lái)加載由write_script命令導(dǎo)出的腳本。這將設(shè)置設(shè)計(jì)中的所有必需屬性,包括用于報(bào)告和優(yōu)化目的的自門(mén)控單元。
DCT實(shí)現(xiàn):
使用set_self_gating_objects命令可以指定XOR自門(mén)控的對(duì)象,運(yùn)行compile_ultra -self_gating命令時(shí)會(huì)執(zhí)行XOR自門(mén)控。
如果不想對(duì)MID子設(shè)計(jì)中的D_OUT寄存器組執(zhí)行XOR自門(mén)控,可以用下面的命令:
dc_shell-topo> set_self_gating_objects -exclude MID/D_OUT_reg[*]
dc_shell-topo> compile_ultra -self_gating
對(duì)時(shí)鐘門(mén)控寄存器執(zhí)行XOR自門(mén)控:
默認(rèn)情況下,Power Compiler工具不會(huì)在時(shí)鐘門(mén)控寄存器上執(zhí)行XOR自門(mén)控。如果要對(duì)時(shí)鐘門(mén)控的寄存器執(zhí)行XOR自門(mén)控,可以使用以下命令:
dc_shell-topo> set_self_gating_options
-interaction_with_clock_gating insert
指定XOR自門(mén)控選項(xiàng):
要指定XOR自動(dòng)門(mén)控的條件并定義與時(shí)鐘門(mén)控的交互,使用set_self_gating_options命令。在用命令compile_ultra -self_gating進(jìn)行編譯,Power Compiler插入XOR門(mén)時(shí),會(huì)采用這些設(shè)置。
應(yīng)用舉例:
使用set_self_gating_options命令,對(duì)2位到9位之間的寄存器插入XOR自門(mén)控:
dc_shell-topo> set_self_gating_options -min_bitwidth 2 -max_bitwidth 9
dc_shell-topo> compile_ultra -self_gating
審核編輯:湯梓紅
-
寄存器
+關(guān)注
關(guān)注
31文章
5343瀏覽量
120375 -
時(shí)鐘
+關(guān)注
關(guān)注
10文章
1733瀏覽量
131483 -
門(mén)控時(shí)鐘
+關(guān)注
關(guān)注
0文章
27瀏覽量
8951 -
XOR
+關(guān)注
關(guān)注
0文章
12瀏覽量
161959
原文標(biāo)題:數(shù)字IC低功耗設(shè)計(jì)之--XOR自門(mén)控與Design Compiler topo實(shí)現(xiàn)
文章出處:【微信號(hào):集成電路設(shè)計(jì)及EDA教程,微信公眾號(hào):集成電路設(shè)計(jì)及EDA教程】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論