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

基于門控時鐘的低功耗時序電路設(shè)計
什么是時鐘門控?如何去實線時鐘門控的設(shè)計呢
基于門控時鐘的CMOS電路低功耗設(shè)計
基于門控時鐘的低功耗電路設(shè)計方案

應(yīng)用于片上系統(tǒng)中低功耗IP核設(shè)計的自適應(yīng)門控時鐘技術(shù)
低功耗時鐘門控算術(shù)邏輯單元在不同F(xiàn)PGA中的時鐘能量分析
通常有兩種不同的時鐘門控實現(xiàn)技術(shù)
門控時鐘實現(xiàn)低功耗的原理
FPGA原型驗證系統(tǒng)的時鐘門控
PyTorch教程10.2之門控循環(huán)單元(GRU)

FSMs低功耗設(shè)計

評論