clock gating | clock gating的timing check


定義:

clock gating check是約束的一種,可以用戶顯示設置,也可由工具推斷,目的是保證穿過clock gating cell的clock 沒有glitch 且波形不被削切。下面是一個【反例】左側clock波形被削切,右側有glitch 穿過。由clock gating的結構可知,大部分clock gating check 都可以歸類到AND type clock gating check 或 OR type clock gating check.另類的由XOR跟MUX。

 

 

 

 

AND type clock gating check:

即高電平有效clock gating check, 當enable 信號為"1" 時,門控打開,clock 『流過』gating cell. 當enable 信號為"0" 時,門控關閉,任由輸入clock 呼天喊地,輸出都是一片死寂。

 

 對於AND type clock gating cell, enable 信號必須在clock 為低時翻轉,才能保證輸出clock 沒有glitch 且波形不被削切。

 

 理論上講,enable 信號即可來自上沿觸發的寄存器也可來自下沿觸發的寄存器,但如果是來自上沿觸發的寄存器,那么hold 將會是半cycle check, 會比較難meet. 

 

 而如果enable 信號來自下沿觸發的寄存器,那么hold 是0-cycle check, setup 成了半cycle check。這也是為什么AND type ICG cell 內部通常是一個下沿觸發的寄存器/低電平有效的latch + 一個與門/與非門的原因。

 

 

OR type clock gating check:

與AND type clock gating 相對,即低電平有效clock gating check, 當enable 信號為"0" 時,門控打開,clock 『流過』gating cell. 當enable 信號為"1" 時,門控關閉。

 

 

對於OR type clock gating cell, enable 信號必須在clock 為高時翻轉,才能保證輸出clock 沒有glitch 且波形不被削切。

 

 

理論上講,enable 信號即可來自上沿觸發的寄存器也可來自下沿觸發的寄存器,但如果是來自下沿觸發的寄存器,那么hold 將會是半cycle check, 會比較難meet.

 

 

而如果enable 信號來自上沿觸發的寄存器,那么hold 是0-cycle check, setup 成了半cycle check。這也是為什么OR type ICG cell 內部通常是一個上沿觸發的寄存器/高電平有效的latch + 一個或門/或非門的原因。

 

 

Inferring Clock gating check:

在做STA 分析時,除了到ICG cell 的clock gating check, 通常都會有很多到組合邏輯cell 的clock gating check, 這些clock gating check 大都是工具自己推斷所得。只有搞清楚工具是根據什么原則推斷clock gating check, 再結合實際電路,才能確定哪些clock gating check 是真實的哪些又是多余的。

 

 

clock gating check 是以clock 為參考來約束enable 信號,所以clock 跟enable 信號是工具推斷clock gating check 的基本對象。通常,一個cell 如果滿足如下條件,工具便會對該cell 做clock gating check.

Clock pin:

  • 有clock 傳播到該pin 上;

  • 這個clock 必須是有效clock,所謂有效clock 指clock 穿過這個gating cell 后會傳到寄存器的CK pin 或會驅動ouput/inout port 或做為某個generated clock 的master clock. 除此之外都不算有效clock, 如某個clock 傳過gating cell 后傳播到寄存器的數據端,則該clock 不算有效clock. 

  • 跟gating pin 都會達到該cell 的同一個output, 即clock pin 跟 gating pin 都有到該cell 同一個output pin 的timing arc.

Gating pin:

  • 跟clock pin 都會達到該cell 的同一個output, 即gating pin 跟 clock pin 都有到該cell 同一個output pin 的timing arc. 

  • 必須沒有有效clock 傳播到該pin 上。

 

Other:

  • 目前大部分工具都不能自動推斷出復雜cell 的clock gating check, 如MUX 或XOR.

  • 對於復雜cell 如果要做clock gating check, 用戶可以用命令set_clock_gating_check 設置。

  • 如果用戶用set_clock_gating_check 設置的clock gating check 跟工具推斷出的clock gating check 的類型不一致,工具通常會報警告,並且以用戶的設置做check. 

  • 用set_clock_gating_check 設置的setup/hold 值要比library 中定義的值優先級高。

  • 用命令set_disable_clock_gating_check 可以disable 掉某些不需要做的clock gating check.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM