今天我們要介紹的時序分析概念是clock gate。 clock gate cell是用data signal控制clock信號的cell,它被頻繁地用在多周期的時鍾path,可以節省功耗。如下圖所示:
我們經常說的reg2clockgate path的setup和hold檢查,就是指:clock gate上enable信號要比clock信號提前到達一段時間和保持一段時間。
通常,clock gate上的setup會比較難收斂,因為如下圖對於clock gate的timing path,天然會穿在skew k;clock tree必然不balance。在實際設計中,我們一般會盡量將clock gate 單元放在寄存器附近以減小skew。也可以采用set_clock_gating_check,加大對clock gate timing的約束。
常見的clock gating cell有ICG cell(integrated clock gating cell)和clock gating logical cell(and+low latch)。現在一般library庫里都帶有ICG cell了,clock gating logical cell已經不常用了
對於clock gating cell,synthesis前就會插入,本身和CTS沒太大關系,
一般只要確保clock timing check打開的就行,就是如下global變量設成true
timing_enable_clock2clock_clockgating_check
另外,CTS工具會對其做clone,declone操作.
ICG cell Clone: 受相同ICG cell控制的時序單元較多或者分布不均勻時,就會導致ICG cell連線過長,這時可以通過clone ICG cell進行優化
ICG cell De-Clone: 受相同ICG cell控制的時序單元較少,就會導致ICG cell數量過多,設計density增大。這時可以通過De-clone ICG cell進行優化
1、結構圖(鎖存器,與門,D觸發器)
latch或reg:用於同步使能信號,防止出現亞穩態和毛刺。
與門:使能信號無效時,關斷模塊輸入時鍾。
D觸發器:簡化的reg。
2、為什么需要clk gate?
模塊不工作時,clk翻轉浪費功耗。模塊/reg相當於一個DFF,但是en為高時,模塊才工作,clk才有效。不工作時,clk翻轉浪費功耗。
3、如何clk gate?
將一直翻轉的時鍾變為en有效才翻轉的時鍾,即將CLK轉化為CLK_G。
4、基於與門的clk gate(會有右圖所示問題)
5、避免毛刺glicth的clk gate
en信號的source reg用下降沿觸發,en信號從產生到與門之前有半個時鍾周期,可以穩定毛刺。
*5、ICG
作用:采用使能信號EN控制數據是否有效,使能消耗無效時保持輸出。
參考文獻:深入淺出ClockGating - 操作 (基於基本CELL的clock gating形式)
時序分析基本概念介紹--clockgate_簡單同學-CSDN博客_clock gate