[Verilog] 10分鐘由淺入深看懂 clock gating (5) - CG synthesis

更新於 2024/12/16閱讀時間約 4 分鐘

前面文章曾經提到說,

除了我們在寫rtl當下直接撰寫加入的cg cell外,

實際上我們有些clk gating cell是靠tool自己幫忙插的,

[Verilog] 10分鐘由淺入深看懂 clock gating -2

那麼tool是怎麼判斷說哪邊要插gating cell的呢?


這個自動產生clk gating cell的stage位於synthesis階段,

透過enable insert_clock_gating及給予相關設定後來生效function,

所以有時候會發現說,怎麼netlist的內容物和rtl level有些差異,

就是因為在某些coding style下會誘發synthesis tool幫忙做cg的insert,

以提供netlist有更好的power consumption.


我們在撰寫verilog時,經常都會使用到某些condition來作為enable的訊號,

對於always block內如果結束在else if而不是else的話,

tool就會幫忙對這個reg做CG的insertion,

然而相關的condition也會被融入到cg en的條件內.


else if版本 tool將幫忙產生cg

always @ (posedge clk or negedge rst) begin
if (!rst)
reg0 <= 5'b0;
else if (condiction)
reg0 <= input;
end

else版本 不會產生cg

always @ (posedge clk or negedge rst) begin
if (!rst)
reg0 <= 5'b0;
else
reg0 <= input;
end


然而對於cg cell來說,

也是會有一定的area和power的低消,

所以tool中有minimum bits的設定可以使用,

當reg 的bits數小於min bits時則不會做相關的insertion,

才不會因為CG cell的關係導致power consumption比原本來得更大.


此外,大家在實際的netlist中可能會發現,

CG cell除了上述描述到的port之外,

還多了一隻叫TE的port,

以下圖為例

raw-image

TE port 為test enable的輸入,

當ic 切到test mode下時,必須要保證clk不會被normal function切掉,

盡可能使register都是在可觀且可控的條件下做scan test,

因此對於cg的module通常都會開出一隻TE腳位讓user去接上scan_enable或test_mode的訊號,

TE或EN兩者其中一個為1時就會釋放clk給下游的register,

使cg cell接到的reg不會因為normal function的關係導致在scan test時沒有clk使用,

藉由多開出一條TE port來提高dft的coverage,

然而TE port所接的訊號要使用test_mode或是scan_enable亦或是新的control reg出來得訊號則因各個design來定.




數位IC設計第一品牌 從0到1用嘴做IC 觀念大權
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
前面文章提到過clk gating check實際上就是在check gating cell的enable訊號 檢查enable的timing是否能滿足STA的check, 不過不知道各位有沒有發現到, 這條path看起來很單純呀而且我還用上了latch大法, 可能讓訊號走完1整個cycle
由於前篇提到說純的logic gate 的CG cell有些先天上的缺點在, 像是enable output 必須在指定的區間內才能trigger, 這也使的這條path上的timing變得更嚴苛, 因此就開發出了一個新的架構來解決上述的問題, 也就是大家常看到的latch based的cl
介紹完了基本的概念後, 這邊來看個例子, 以and gated的CG來說 ,clk_enable 訊號由前一級的reg輸出(1) , 經由Q輸出en後落在clk負緣的時候toggle (2), 下一個cycle的clk即會被鎖在0 (3) 對於or based的來說 clk_en
先前文章中提提了幾種low power design常用的手法 [Verilog] 10分鐘看懂IC design的low power design - 1 (原創) 其中最廣為使用的招數就是clock gating 藉由停住當下沒在運作的module clk 及clk network 來達到
上篇文章提到說 由於STA的設計上沒辦法去檢查不同clk domain的兩個register之間timing是否可以滿足所需, 因為沒有一個比較的基準點, 所以需要
CDC (Clock Domain Crossing) 屬於當今IC design中非常常見的問題, 雖然增加了Design的難度, 卻因為它所帶來的諸多優勢令人難以放棄, 舉例來說, 假如module A的spec對於performance的需求 遠小於module B, 那麼modul
前面文章提到過clk gating check實際上就是在check gating cell的enable訊號 檢查enable的timing是否能滿足STA的check, 不過不知道各位有沒有發現到, 這條path看起來很單純呀而且我還用上了latch大法, 可能讓訊號走完1整個cycle
由於前篇提到說純的logic gate 的CG cell有些先天上的缺點在, 像是enable output 必須在指定的區間內才能trigger, 這也使的這條path上的timing變得更嚴苛, 因此就開發出了一個新的架構來解決上述的問題, 也就是大家常看到的latch based的cl
介紹完了基本的概念後, 這邊來看個例子, 以and gated的CG來說 ,clk_enable 訊號由前一級的reg輸出(1) , 經由Q輸出en後落在clk負緣的時候toggle (2), 下一個cycle的clk即會被鎖在0 (3) 對於or based的來說 clk_en
先前文章中提提了幾種low power design常用的手法 [Verilog] 10分鐘看懂IC design的low power design - 1 (原創) 其中最廣為使用的招數就是clock gating 藉由停住當下沒在運作的module clk 及clk network 來達到
上篇文章提到說 由於STA的設計上沒辦法去檢查不同clk domain的兩個register之間timing是否可以滿足所需, 因為沒有一個比較的基準點, 所以需要
CDC (Clock Domain Crossing) 屬於當今IC design中非常常見的問題, 雖然增加了Design的難度, 卻因為它所帶來的諸多優勢令人難以放棄, 舉例來說, 假如module A的spec對於performance的需求 遠小於module B, 那麼modul
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
Thumbnail
這篇內容,將會講解什麼是「while迴圈」,以及與「while迴圈」相關的知識。包括while迴圈的簡介、while迴圈、break、continue。
Thumbnail
這篇內容,將會講解什麼是「if else」,以及與「if else」相關的知識。包括if else的簡介、if、if else、else if、套娃式的if。
Thumbnail
這篇內容,將會講解什麼是方法,以及與方法相關的知識。包括定義Method、Method Variable 方法變數、跨區使用Method、使用函式時要注意括號。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
IC設計流程大致如下 每個步驟都是必經過程,走完整個過程後輸出一版real chip |-----------------------| | 定SPEC | --- 決定 Function/clk period/製程liberary .
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
在網頁開發中,時間與日期的處理是重要且基礎的部分,本文將介紹 JavaScript 中的日期的處理方法,並提供範例程式來協助你理解。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
Thumbnail
這篇內容,將會講解什麼是「while迴圈」,以及與「while迴圈」相關的知識。包括while迴圈的簡介、while迴圈、break、continue。
Thumbnail
這篇內容,將會講解什麼是「if else」,以及與「if else」相關的知識。包括if else的簡介、if、if else、else if、套娃式的if。
Thumbnail
這篇內容,將會講解什麼是方法,以及與方法相關的知識。包括定義Method、Method Variable 方法變數、跨區使用Method、使用函式時要注意括號。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
IC設計流程大致如下 每個步驟都是必經過程,走完整個過程後輸出一版real chip |-----------------------| | 定SPEC | --- 決定 Function/clk period/製程liberary .
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
在網頁開發中,時間與日期的處理是重要且基礎的部分,本文將介紹 JavaScript 中的日期的處理方法,並提供範例程式來協助你理解。