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

更新於 發佈於 閱讀時間約 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來定.




留言
avatar-img
留言分享你的想法!
avatar-img
數位IC設計第一品牌
102會員
27內容數
數位IC設計第一品牌 從0到1用嘴做IC 觀念大權
2024/12/28
到了最後一個階段, 我們做了這麼多CG cell insertion後, 要怎麼知道到底是不是對Design有幫助的呢? 是否有個rule又或是量化的數據來解釋說CG的效果如何 在下面這篇paper中提到了幾種觀測CG cell efficiency的方法 J. Srinivas, M
Thumbnail
2024/12/28
到了最後一個階段, 我們做了這麼多CG cell insertion後, 要怎麼知道到底是不是對Design有幫助的呢? 是否有個rule又或是量化的數據來解釋說CG的效果如何 在下面這篇paper中提到了幾種觀測CG cell efficiency的方法 J. Srinivas, M
Thumbnail
2024/12/11
前面文章提到過clk gating check實際上就是在check gating cell的enable訊號 檢查enable的timing是否能滿足STA的check, 不過不知道各位有沒有發現到, 這條path看起來很單純呀而且我還用上了latch大法, 可能讓訊號走完1整個cycle
Thumbnail
2024/12/11
前面文章提到過clk gating check實際上就是在check gating cell的enable訊號 檢查enable的timing是否能滿足STA的check, 不過不知道各位有沒有發現到, 這條path看起來很單純呀而且我還用上了latch大法, 可能讓訊號走完1整個cycle
Thumbnail
2024/12/02
由於前篇提到說純的logic gate 的CG cell有些先天上的缺點在, 像是enable output 必須在指定的區間內才能trigger, 這也使的這條path上的timing變得更嚴苛, 因此就開發出了一個新的架構來解決上述的問題, 也就是大家常看到的latch based的cl
Thumbnail
2024/12/02
由於前篇提到說純的logic gate 的CG cell有些先天上的缺點在, 像是enable output 必須在指定的區間內才能trigger, 這也使的這條path上的timing變得更嚴苛, 因此就開發出了一個新的架構來解決上述的問題, 也就是大家常看到的latch based的cl
Thumbnail
看更多
你可能也想看
Thumbnail
介紹完了基本的概念後, 這邊來看個例子, 以and gated的CG來說 ,clk_enable 訊號由前一級的reg輸出(1) , 經由Q輸出en後落在clk負緣的時候toggle (2), 下一個cycle的clk即會被鎖在0 (3) 對於or based的來說 clk_en
Thumbnail
介紹完了基本的概念後, 這邊來看個例子, 以and gated的CG來說 ,clk_enable 訊號由前一級的reg輸出(1) , 經由Q輸出en後落在clk負緣的時候toggle (2), 下一個cycle的clk即會被鎖在0 (3) 對於or based的來說 clk_en
Thumbnail
先前文章中提提了幾種low power design常用的手法 [Verilog] 10分鐘看懂IC design的low power design - 1 (原創) 其中最廣為使用的招數就是clock gating 藉由停住當下沒在運作的module clk 及clk network 來達到
Thumbnail
先前文章中提提了幾種low power design常用的手法 [Verilog] 10分鐘看懂IC design的low power design - 1 (原創) 其中最廣為使用的招數就是clock gating 藉由停住當下沒在運作的module clk 及clk network 來達到
Thumbnail
clk skew 和 clk jitter差別是甚麼? clk skew 指的是兩顆reg 因為clk 到達的時間不同 導致雖然後是屬於於同一個cycle的行為 卻會有先到後到的問題 通常成因為 wire length cell delay clock distribution
Thumbnail
clk skew 和 clk jitter差別是甚麼? clk skew 指的是兩顆reg 因為clk 到達的時間不同 導致雖然後是屬於於同一個cycle的行為 卻會有先到後到的問題 通常成因為 wire length cell delay clock distribution
Thumbnail
內轉子馬達的定子繞線加工,雖以馬達設計觀點理當如出一轍,皆屬槽開口向內之定子設計;然就馬達製造領域而言,卻還得再進一步分類。首先是集中繞與分佈繞的繞法差異,會將對應的馬達生產機台分為針嘴式與入線式兩種類型,本文將以集中繞針嘴式無刷馬達製造工藝介紹說明為主。 以針嘴式稱呼此馬達製程,顧名思義就是在定
Thumbnail
內轉子馬達的定子繞線加工,雖以馬達設計觀點理當如出一轍,皆屬槽開口向內之定子設計;然就馬達製造領域而言,卻還得再進一步分類。首先是集中繞與分佈繞的繞法差異,會將對應的馬達生產機台分為針嘴式與入線式兩種類型,本文將以集中繞針嘴式無刷馬達製造工藝介紹說明為主。 以針嘴式稱呼此馬達製程,顧名思義就是在定
Thumbnail
數位IC裡我們關注的都是0或1, 大家都知道電腦是0101在做二進位的運算, 在晶片裡又是怎麼做到的? 實際上我們在設計晶片時,會給他一個VDD跟GND, VDD-GND給的是預期的Driving volatge, 像是5V或9V 以5V為例 0或1物理上就是目前的電壓靠近0V或5
Thumbnail
數位IC裡我們關注的都是0或1, 大家都知道電腦是0101在做二進位的運算, 在晶片裡又是怎麼做到的? 實際上我們在設計晶片時,會給他一個VDD跟GND, VDD-GND給的是預期的Driving volatge, 像是5V或9V 以5V為例 0或1物理上就是目前的電壓靠近0V或5
Thumbnail
本文介紹了抽水馬達和繼電器的工作原理,以及如何與Arduino搭配使用。繼電器的定義、結構、和工作原理,以及抽水馬達的定義、結構、和工作原理都有詳細說明。此外,還介紹了串聯和並聯的關係,並提供了抽水馬達模組的程式碼。
Thumbnail
本文介紹了抽水馬達和繼電器的工作原理,以及如何與Arduino搭配使用。繼電器的定義、結構、和工作原理,以及抽水馬達的定義、結構、和工作原理都有詳細說明。此外,還介紹了串聯和並聯的關係,並提供了抽水馬達模組的程式碼。
Thumbnail
本文摘要出我覺得IC開發流程中最基本的相關知識,幫自己的成長做紀錄,也分享給剛加入半導體/IC產業的小白們,希望這篇文章可以提供幫助。
Thumbnail
本文摘要出我覺得IC開發流程中最基本的相關知識,幫自己的成長做紀錄,也分享給剛加入半導體/IC產業的小白們,希望這篇文章可以提供幫助。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News