clock gating和power gating是降低芯片功耗的常用手段,相比power gating設(shè)計(jì),clock gating的設(shè)計(jì)和實(shí)現(xiàn)更為簡單,多在微架構(gòu)、RTL coding階段即可充分考慮,在綜合時(shí)(compile_ultra -gate_clock)即可自動(dòng)mapping到clock gating結(jié)構(gòu)上去。本文先講解clock gating,ICG的基本結(jié)構(gòu)如下圖所示:
門控時(shí)鐘電路有效的降低了動(dòng)態(tài)功耗,因?yàn)槠錅p少了時(shí)鐘樹的翻轉(zhuǎn)行為、減少了寄存器clock pin的翻轉(zhuǎn)行為、減少了大量MUX邏輯消耗的功耗,一般可以節(jié)省20%-60%的功耗,同時(shí)也節(jié)省了MUX面積。
門控時(shí)鐘單元分成兩種,一種是帶鎖存器(latch based)的門控時(shí)鐘單元,一種是不帶有鎖存器(latch free)的門控時(shí)鐘單元。latch based的門控時(shí)鐘單元能避免毛刺,因此更推薦使用。
門控時(shí)鐘又分為離散的和集成的(ICG)兩種:
- 離散的CG單元
1)帶latch的CG(默認(rèn))
set_clock_gating_style -sequential_cell latch
2)不帶latch的CG
set_clock_gating_style -sequential_cell none - 集成的CG單元(ICG)
set_clock_gating_style -negtive_edge_logic "integrated"
通常,在執(zhí)行命令compile_ultra -gate_clock前需要設(shè)置好clock gating的相關(guān)配置選項(xiàng),具體選項(xiàng)如下:
set_clock_gating_style的options解析如下:
- -sequential_cell none | latch
1)-sequential_cell latch(默認(rèn))指帶latch的CG(latch based style), 并可指定使用具體某個(gè)latch cell,比如:-sequential_cell latch:lib_cell。
2)-sequential_cell none指不帶latch的CG(latch free style),比如:
與門做CG,時(shí)鐘使能為1時(shí)鐘穿透AND,但posedge trigger存在毛刺;
或門做CG,時(shí)鐘使能為0時(shí)鐘穿透OR,但negesge trigger存在毛刺;
- -minimum_bitwidth minsize_value
為了節(jié)省gating cell的數(shù)量,需達(dá)到一定寄存器數(shù)量的register bank才使用gating cell。
-
-setup setup_value 指定建立時(shí)間
-
-hold hold_value 指定保持時(shí)間
-
-positive_edge_logic {cell_list | integrated [active_low_enable]
[invert_gclk]}
-
{cell_list}用于指定“上升沿”觸發(fā)使用的CG單元。需要注意的是-sequential_cell指定的是否有l(wèi)atch應(yīng)該和cell_list的對應(yīng)電路是否含有l(wèi)atch保持一致,如:
set_clock_gating_style -sequential_cell latch -positive_edge_logic { latch and }
set_clock_gating_style -sequential_cell none -positive_edge_logic { or }
-
{integrated}用于表明使用上升沿觸發(fā)的ICG單元。
如下圖所示,該ICG單元就是一個(gè)pre-conctrolled positive-edge triggered clock gating latch。
-
-
-negative_edge_logic {cell_list | integrated [active_low_enable]
[invert_gclk]}
-
{cell_list}用于指定"下降沿”觸發(fā)使用的CG單元。需要注意的是-sequential_cell指定的是否有l(wèi)atch應(yīng)該和cell_list的對應(yīng)電路是否含有l(wèi)atch保持一致,如:
set_clock_gating_style -sequential_cell **latch ** -negtive_edge_logic { latch or }
set_clock_gating_style -sequential_cell ** none ** -negtive_edge_logic { and }
如下圖,-sequential_cell none指定latch-free模式,但是cell_list卻指定了latch、and/or, 這種情況下,DC工具仍然會(huì)綜合出latch-based clock-gating的電路。
-
{integrated}用于表明使用下降沿觸發(fā)的ICG單元。
如下圖所示,該ICG單元就是一個(gè)pre-conctrolled negative-edge triggered clock gating latch。
- -control_point none | before | after
對于DFT測試電路,為了滿足電路可控,需要引入TE信號(hào)來控制latch的使能端。before就是在Latch之前插入或門,將TE信號(hào)和時(shí)鐘使能信號(hào)或起來然后連接到Latch的D端。同理,after就是在Latch之后插入或門,將TE信號(hào)和Latch的Q端或起來然后連接到IGG的AND門。 - -num_stages num_stages_count
工具默認(rèn)只使用一級(jí)門控時(shí)鐘,而使用多級(jí)門控時(shí)鐘可進(jìn)一步節(jié)省面積、降低功耗。如下圖,a信號(hào)被三個(gè)CG單元共享,那么將a信號(hào)做成第一級(jí)CG,b、c、d做成第二級(jí)CG。這樣,增加了一個(gè)CG但減少了3個(gè)與門,同時(shí)節(jié)省了組合邏輯和第二級(jí)的CG的功耗。
set_clock_gating_style -num_stages 2
那么如何編寫門控時(shí)鐘的RTL代碼風(fēng)格呢?
第一種風(fēng)格:
綜合出來電路有32個(gè)MUX2選擇器:
我們換一種寫法,DC工具就可將load_cond作為Latch的使能,從而一個(gè)clock gating cell便取代了32個(gè)MUX2,節(jié)省了大量面積的同時(shí),還節(jié)省了32個(gè)寄存器的動(dòng)態(tài)功耗,32MUX2組合邏輯的功耗,也節(jié)省了時(shí)鐘樹上buffer的功耗。
那么如何保證ICG中Latch的時(shí)序呢?
除in2reg、reg2reg、reg2out、in2out類型路徑外,我們會(huì)經(jīng)??吹絩eg2cgate的setu/hold檢查,即clock gate上enable信號(hào)要比clock信號(hào)提前到達(dá)一段時(shí)間setup和保持一段時(shí)間hold。
通常clock gate上的setup較難收斂,如下圖
- register CK端作為launch clock發(fā)起端,latch的CK端作為capture捕獲端,它們之間天然會(huì)存在skew k,即clock tree必然不balance。
- Latch的時(shí)序檢查只有半個(gè)時(shí)鐘周期;
- register Q到Latch EN的combo邏輯延遲;
解決辦法:
- 一般將clock gate 單元放在寄存器附近以減小skew。
- 也可以采用set_clock_gating_check,加大對clock gating時(shí)序約束。
對于clock gating cell,synthesis時(shí)就會(huì)插入,和CTS沒太大關(guān)系,一般只要確保clock timing check打開的就行。
另外,CTS工具會(huì)對其做clone、declone操作。
- ICG cell Clone: 同一個(gè)ICG單元控制的寄存器較多或者分布不均勻時(shí),就會(huì)導(dǎo)致ICG時(shí)鐘連線過長,可通過clone ICG cell進(jìn)行優(yōu)化;
- ICG cell De-Clone: 同一個(gè)ICG單元控制的寄存器較少,導(dǎo)致ICG cell數(shù)量過多,可通過De-clone ICG cell進(jìn)行優(yōu)化;
-
寄存器
+關(guān)注
關(guān)注
31文章
5363瀏覽量
121194 -
鎖存器
+關(guān)注
關(guān)注
8文章
908瀏覽量
41645 -
RTL
+關(guān)注
關(guān)注
1文章
385瀏覽量
59952 -
DFT
+關(guān)注
關(guān)注
2文章
231瀏覽量
22841 -
門控時(shí)鐘
+關(guān)注
關(guān)注
0文章
27瀏覽量
8972
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論