[Verilog] 10分鐘由淺入深看懂 clock gating (4) - timing check

更新 發佈閱讀 8 分鐘

前面文章提到過clk gating check實際上就是在check gating cell的enable訊號

檢查enable的timing是否能滿足STA的check,

不過不知道各位有沒有發現到,

這條path看起來很單純呀而且我還用上了latch大法,

可能讓訊號走完1整個cycle,為甚麼有時候還是會看到setup time violation?

vocus|新世代的創作平台


在這邊我們先複習一下setup time violation是如何檢查的

[Verilog] STA分析 - setup / hold violation 怎麼workaround

[Verilog] clk skew vs clk jitter

文章內提到

Tcycle + Tskew >= Tclk2Q_max + Tdata_max +Tsetup

vocus|新世代的創作平台


其中的Tskew指的就是clk從source出發後

因為reg0和reg1的placement位置不同導致抵達的reg clk pin上的時間會有落差

vocus|新世代的創作平台


因此可以在拆解的細一點


對於另外一種描述setup check的方式分為 data arrival time 和 date required time

arrival <= required 則meet setup time

arrival time = Tlaunch + Tclk2Q_max + Tdata_max

required time = Tcapture + Tcycle - Tsetup


vocus|新世代的創作平台


arrival <= require :

Tlaunch + Tclk2Q_max + Tdata_max < Tcapture + Tcycle - Tsetup

轉換一下 -> Tcycle + (Tcapture - Tlaunch) > Tclk2Q_max + Tdata_max + Tsetup

又 Tskew = Tcapture - Tlaunch 因此最後可以推回上面原先的公式

Tcycle + Tskew >= Tclk2Q_max + Tdata_max +Tsetup


好啦,那回到原先的問題,為甚麼我的clk gating path看起來很簡單卻還是會碰到Setup time violation,

因為其實上面的圖中是有一些盲點的,

我們直覺地都會認為clk->reg0 的速度一定會快於clk->reg1的速度,

因此skew扣出來都是正的,正的skew下有利於setup time的收斂,

不過因為實際上我們clk gating 的enable訊號組成大部分時候都是靠某些reg的output的結果重新組出來的條件,

所以這種情況下,在CG身上看到的skew是負的

舉個例子

always @ (posedge clk_gated or negedge rst) begin

if (!rst)

reg0 <= 1'b0;

else

reg0 <= in;

end

assign clk_gated = clk & clk_en ;

assign clk_en = (reg0 != in) ;



對於上面的code來說,

假設一下clk & clk_en會產出icg,

reg0的clk_gated是當clk_en ==1的時候才會toggle的,

clk_en 為1的條件則為reg0的output 不等於輸入in,

因此在這個情況下電路大致會長成以下樣貌

vocus|新世代的創作平台


timing check point會在latch的enable上

Tcycle + (Tcapture - Tlaunch) > Tclk2Q_max + Tdata_max + Tsetup

Tcycle 不變為1T

Tcapture = Tclk2icg

Tlaunch = Tclk2icg + Ticg2reg

Tclk2Q_max = latch內鎖住en的耗時被包含在Ticg2reg內

Tdata_max = 後級reg0所打出來的Q output

也就是說這級的timing check不是像先前一樣一級推一級,

而是拉了一個迴授的感覺,由後級往前級推,也因為這個迴授

讓skew變為負值,原本能靠skew偷到多一點的setup margin直接消失,

並且Tdata_max會隨著en組成的複雜度增長,

也因此有時候我們會發現好像clk path上很單純,

但是卻出現了timing violation


想必各位在碰到這邊跳出violation時也十分困擾,

因為他不像一般寫code一樣setup time violation那就多切幾級pipeline就好了,

有時候根本不知道該如何下手,

這邊就提供幾個經驗,

通常最簡單的方式就是研究一下en訊號是否組成太複雜,

clk gating 使用的效率實際上有一些指標可以看,

最簡單的判斷方式就是同一顆gating cell control了多少的reg量,

因為gating cell本身也是會耗power和area因此沒辦法無腦塞,

所以會希望說一顆cell能gating越多reg越好,

不過同時可能就會讓enable的條件變得複雜,

並且從icg出來到各個reg/ck的wire delay十分長,

也間接地拉高了Tdata_max和Ticg2reg,

因此就這個現象最直接的解法就是,

縮小gating cell的fanout,

用以降低en的複雜度同時可以讓cell擺的離reg近一點縮短wire delay


但是有時候看到violation的時機總是有點尷尬在apr才看到,

總是感覺很奇怪,

我明明在synthesis的時候timing都clean了沒有看到任何violation,

apr的時候BE卻跟我說clk gating cell上跳setup violation我該怎辦,

到底是哪個Tool錯了?

冷靜思考一下發現

原來是因為我們在synthesis的時候cell placement的位置都是未知的呀,

clk端也不會長clk tree,

因為這些部分都在apr的階段才會做處理,

所以這時候看到violation也只能硬著頭皮解,

當然最簡單的解法就是看一下是否能把cg cell往timing violation的reg靠近一點,

降低wire delay (降低skew),

不過很有可能牽一髮動全身,換別條path跳出來

所以再好幾天沒睡東瞧瞧西瞧瞧後還是走投無路的情況下

在這邊提供最強的大絕招給各位

讓各位可以從地獄解脫


ECO把clk_en 直接 tie 1 !!!

不要讓clk gating生效了,

也就是說當作沒有這顆clk gating,

當然這樣做也會帶來一些impact,

不過這個impact是屬於power bug不是function bug,

對於function使用上完全沒問題,還可以讓你從地獄解脫,完美


#clock gating check #CG #STA #low power #clock gating check #setup time #hold time #ECO



留言
avatar-img
數位IC設計第一品牌
183會員
30內容數
數位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/16
前面文章曾經提到說, 除了我們在寫rtl當下直接撰寫加入的cg cell外, 實際上我們有些clk gating cell是靠tool自己幫忙插的, [Verilog] 10分鐘由淺入深看懂 clock gating -2 那麼tool是怎麼判斷說哪邊要插gating cell的呢?
Thumbnail
2024/12/16
前面文章曾經提到說, 除了我們在寫rtl當下直接撰寫加入的cg cell外, 實際上我們有些clk gating cell是靠tool自己幫忙插的, [Verilog] 10分鐘由淺入深看懂 clock gating -2 那麼tool是怎麼判斷說哪邊要插gating cell的呢?
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
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
題目敘述 題目會給我們一個定義好的類別和function介面,要求我們實作建構子和ping() function來滿足指定的需求。 RecentCounter類別的建構子 建構子應該初始化來電紀錄,內容為空(零筆資料) int ping(int t) t代表來電時刻,單位是毫秒m
Thumbnail
題目敘述 題目會給我們一個定義好的類別和function介面,要求我們實作建構子和ping() function來滿足指定的需求。 RecentCounter類別的建構子 建構子應該初始化來電紀錄,內容為空(零筆資料) int ping(int t) t代表來電時刻,單位是毫秒m
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
C# 迴圈(C# 教學) – for loop 可以說是程序編寫的基本功. 運用LOOPING可以減少程式碼, 只需透過for內的BLOCK, 就可把程式碼重用, 避免要不停把程序碼重覆. 以下我會介紹迴圈的結構, 運行方式, 如何離開迴圈, 以及迴圈的種類. 2) 迴圈的種類 3) 迴圈的用法
Thumbnail
C# 迴圈(C# 教學) – for loop 可以說是程序編寫的基本功. 運用LOOPING可以減少程式碼, 只需透過for內的BLOCK, 就可把程式碼重用, 避免要不停把程序碼重覆. 以下我會介紹迴圈的結構, 運行方式, 如何離開迴圈, 以及迴圈的種類. 2) 迴圈的種類 3) 迴圈的用法
Thumbnail
這篇文章介紹了如何建立一個時間限制的異步函數,以確保操作在指定時間內完成。 - 知識點包括異步編程、Promise使用、計時器函數和函數引數處理,以及錯誤處理。 - 應用情境包括網頁請求超時控制、前端性能優化和遊戲開發。 - 提高應用程式的可靠性和用戶體驗,確保操作不會花費過長的時間。 - 文章內
Thumbnail
這篇文章介紹了如何建立一個時間限制的異步函數,以確保操作在指定時間內完成。 - 知識點包括異步編程、Promise使用、計時器函數和函數引數處理,以及錯誤處理。 - 應用情境包括網頁請求超時控制、前端性能優化和遊戲開發。 - 提高應用程式的可靠性和用戶體驗,確保操作不會花費過長的時間。 - 文章內
Thumbnail
題目會給定我們兩個點座標,分別是起點和終點。 另外,還有一個參數t,代表時間限制。 從起點出發之後,每一秒鐘,我們必須選擇一個N8 8連通的方向,往鄰居的格子點移動。(題目有特別強調,每一秒必須強制移動到下一個格子點,不能停留在原地) 請問我們能不能在時間限制內,從起點走到終點?
Thumbnail
題目會給定我們兩個點座標,分別是起點和終點。 另外,還有一個參數t,代表時間限制。 從起點出發之後,每一秒鐘,我們必須選擇一個N8 8連通的方向,往鄰居的格子點移動。(題目有特別強調,每一秒必須強制移動到下一個格子點,不能停留在原地) 請問我們能不能在時間限制內,從起點走到終點?
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
在 Kotlin 程式語言中,while 迴圈是用來重複執行區塊內程式碼,只要滿足特定條件就會持續運行,一旦條件不滿足,迴圈就會停止執行。這種特性讓你能夠以更靈活的方式處理程式邏輯,並在滿足特定情況時停止迴圈的執行。
Thumbnail
在 Kotlin 程式語言中,while 迴圈是用來重複執行區塊內程式碼,只要滿足特定條件就會持續運行,一旦條件不滿足,迴圈就會停止執行。這種特性讓你能夠以更靈活的方式處理程式邏輯,並在滿足特定情況時停止迴圈的執行。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
嗨,大家好!今天我們來聊聊什麼是延遲評估模式,它的好處是啥,還有在 Go 裡面是怎麼玩的。
Thumbnail
嗨,大家好!今天我們來聊聊什麼是延遲評估模式,它的好處是啥,還有在 Go 裡面是怎麼玩的。
Thumbnail
題目會給定一個字串s,裡面都是由() [] {}打散交錯而成。 問我們給定的輸入字串s 是不是合法括弧自串,也就是所有的右括弧都在左括弧後面,而且可以兩兩相消。
Thumbnail
題目會給定一個字串s,裡面都是由() [] {}打散交錯而成。 問我們給定的輸入字串s 是不是合法括弧自串,也就是所有的右括弧都在左括弧後面,而且可以兩兩相消。
Thumbnail
給定一個Linked list鏈結串列的Head node, 請判斷這條Linked list是否存在環路(Cycle)? 如果有環路,回傳True。 如果沒有,回傳False。
Thumbnail
給定一個Linked list鏈結串列的Head node, 請判斷這條Linked list是否存在環路(Cycle)? 如果有環路,回傳True。 如果沒有,回傳False。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News