門控時鐘電路有效的降低了動態功耗,因為其減少了時鐘樹的翻轉行為、減少了暫存器clock pin的翻轉行為、減少了大量mux邏輯消耗的功耗,一般可以節省20%-60%的功耗,同時也節省了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"
set_clock_gating_style的options解析如下:
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存在毛刺;
為了節省gating cell的數量,需達到一定暫存器數量的register bank才使用gating cell。
綜合出來電路有32個mux2選擇器:
我們換一種寫法,dc工具就可將load_cond作為latch的使能,從而乙個clock gating cell便取代了32個mux2,節省了大量面積的同時,還節省了32個暫存器的動態功耗,32mux2組合邏輯的功耗,也節省了時鐘樹上buffer的功耗。
那麼如何保證icg中latch的時序呢?
除in2reg、reg2reg、reg2out、in2out型別路徑外,我們會經常看到reg2cgate的setu/hold檢查,即clock gate上enable訊號要比clock訊號提前到達一段時間setup和保持一段時間hold。
通常clock gate上的setup較難收斂,如下圖
register ck端作為launch clock發起端,latch的ck端作為capture捕獲端,它們之間天然會存在skew k,即clock tree必然不balance。
latch的時序檢查只有半個時鐘週期;
register q到latch en的combo邏輯延遲;
解決辦法:
對於clock gating cell,synthesis時就會插入,和cts沒太大關係,一般只要確保clock timing check開啟的就行。
另外,cts工具會對其做clone、declone操作。
低功耗設計
在數字系統中功耗主要包括動態功耗和靜態功耗。cmos的動態功耗 是訊號在0和1變化之間,電容充放電所消耗的功耗。我們知道,不僅僅cmos器件有寄生電容,導線間也有電容。將電容c充電到電壓vdd所需要的能量cvdd 2。降低動態功耗技術 1 動態電壓調節 2 動態處理溫度補償 3 門控時鐘和可變頻率時...
IC FPGA低功耗設計
功耗的構成 三個主要的功耗源 浪湧 靜態功耗和動態功耗 靜態功耗 也稱待機功耗,靜態功耗主要由電晶體的漏電流所導致的功耗 動態功耗 包括開關功耗或者稱為翻轉功耗 短路功耗或者稱為內部功耗。動態功耗影響因素 門寄生電容 時鐘翻轉率 時鐘頻率 供電電壓 降低功耗 應當在所有設計層次上進行,即系統級 邏輯...
5 低功耗設計
浪湧 靜態功耗 動態功耗 是三個主要的功耗源。浪湧電流指的是期間上電的時候產生的最大輸入電流,也稱之為啟動電流。電機的啟動電流是正常滿載電流的數倍。基於sram 的fpga浪湧電流也很大,因為其初始狀態是空白的或者可以理解為復位導通狀態,載入配置連線之後就恢復長長電流 待機電流 電晶體漏電流 電容漏...