憶往昔--集成門控時鍾技術的前世--分離門控時鍾技術


本文轉自:自己的微信公眾號《集成電路設計及EDA教程》

《憶往昔--集成門控時鍾技術的前世--分離門控時鍾技術

多種門控時鍾實現方案:

Design Compiler中已經集成了可以進行低功耗設計的Power Compiler,它有多種門控時鍾實現方案(分離門控時鍾、集成門控時鍾、多級門控時鍾、層次化門控時鍾)。

 

如何選擇?

首先需要看自己所用的標准單元庫中是否有集成門控時鍾(Integrated Clock Gating, ICG)單元,如果有的話最好選擇使用ICG而不用分離門控時鍾單元,因為它性能不如ICG,且在后端實現中需要一些人為的干預(需要通過設置net weight將Latch和與非門/或非門靠近放置),較麻煩。無論是分離門控時鍾單元還是ICG,他們都可以被用來實現多級以及層次化門控時鍾。

如果標准單元庫中沒有ICG,那么我們只能采用分離門控時鍾技術。

在邏輯綜合階段,我們可以通過set_clock_gating_style命令來設置選擇采用哪種方案,下面將對幾種方式分別做以介紹。

 

1.  分離門控時鍾(Discrete Clock Gating)

Power Compiler在實現CG時,一般會默認采用分離門控時鍾技術。

我們采用分離門控時鍾技術應該只有一種情況,那就是采用的工藝比較特殊(如BiCMOS)或者工藝比較老,標准單元庫中沒有ICG,但是又想降低動態功耗,那只能使用分離門控時鍾技術了。

它有兩種實現方式,即基於鎖存器的CG和不用鎖存器的CG,一般默認情況下軟件會選擇前者。基於鎖存器的CG單元的結構及波形如圖1所示,它由一個鎖存器和一個與門(或者或門、與非門、或非門)構成。不用鎖存器的CG單元的結構如圖2所示,它由一個簡單的與門(或者或門、與非門、或非門)構成。在性能上,前者與后者相比有很大的優勢,這可以在它們相應的波形圖中看出。因為當EN信號不穩定時,不用鎖存器的CG單元會在CG單元的輸出端形成毛刺,從而影響其后的寄存器組,而基於鎖存器的CG單元利用鎖存器來采樣EN信號,達到與CLK同步的效果,所以輸出結果會非常穩定。

圖1 基於鎖存器的CG單元的結構及波形

圖2 不用鎖存器的CG單元的結構及波形

 

分離門控時鍾的邏輯綜合實現:

如果要在設計中實現基於鎖存器的分離門控時鍾,則需要在Design(Power) Compiler進行邏輯綜合前先選擇門控時鍾單元的類型:

采用基於鎖存器的CG單元:

set_clock_gating_style -sequential_cell latch

而不用鎖存器的CG的命令為:

set_clock_gating_style -sequential_cell none

 

同時我們還需要對CG的對象最低位寬和最大扇出進行控制(具體原因見前篇推文),因為分離門控時鍾單元里面含有鎖存器和與門等單元,不像集成門控時鍾單元,它的時序要求信息寫在了lib庫里面,所以還得手動指定setup和hold。

set_clock_gating_style -sequential_cell latch \

-max_fanout 32 \

-minimum_bitwidth 4 \

-setup 3 \

-hold 0.3

老版的DC用insert_clock_gating命令插入門控時鍾單元,之后用compile進行編譯;

新版的DC直接用compile -gate_clcok或者compile_ultra -gate_clock直接在編譯過程中就能實現,更加簡單。

編譯完成后報告實現的效果:

report_clock_gating > ./log/clock_gating.ckgt

生成的報告如圖3所示:

圖3  生成的門控時鍾報告

 

分離門控時鍾技術的優點:

上篇推文:

婦孺皆知的低功耗技術 | 門控時鍾(Clock Gating, CG)技術

介紹過了,這里就不說了,着重說下它的缺點。

 

分離門控時鍾技術的缺點:

一般插入分離門控時鍾單元可能會引起時鍾偏斜(Clock Skew)問題,進而會導致輸出的時鍾信號中有毛刺

如圖4所示,時鍾CLK分兩路:

圖4 分離門控時鍾的Skew問題

 

一路送到比較近的鎖存器時鍾輸入端CLK@A,它去采集使能信號EN,鎖存器在CLK@A為0時透明,為1時鎖存。經過一個鎖存器的延遲(CLK to Q latch delay)到EN1。

另一路時鍾送到較遠的與門一個輸入端B,其時鍾相比於CLK@A而言,有一段延遲,即CLK@B與CLK@A之間有Skew,Skew小於latch的delay。該Skew很可能會產生一些毛刺(毛刺的寬度大約為Skew-Delay)。

 

解決方法有兩種:

1、采用后邊將要介紹的集成門控時鍾技術(ICG);

2、在布局階段設置net weight將與門和鎖存器盡量靠近放置(推文后邊有介紹)。

 

分離門控時鍾后端物理實現要點:

在后端設計中除了前面的布局布線流程之外,還要注意以下幾點:

(注:由於本筆記是本科畢設階段基於Astro工具來做的,因此下面的講解都基於Astro工具,ICC的話應該類似。)

 

1.布局前的准備

在布局階段,需要將插入的CG單元中的鎖存器和與門(或者與非門)盡量靠近放置,這需要完成布局前的准備工作。

首先根據CG Cell的信息編寫gatedclock.nets文件,增大鎖存器和與門之間的連線的netWeight。然后在Astro中加載完.sdc時序約束文件並進行時序分析后、布局階段前,以導入tdf文件的形式導入該gatedclock.nets文件來實現對鎖存器和與門之間間距的約束,后面的布局便會自動按照此文件來將兩者盡量靠近放置。

根據其中一個CG Cell的信息編寫的命令如下:

netWeight "ENL" 255 255

netWeight "dan/clk_gate_dout_reg/net456"255 255

以導入tdf文件的形式導入gatedclock.nets文件后,開始布局操作后邊給出Astro中的布局結果。

 

2.分離門控時鍾單元布局結果

如圖5所示為Astro中布局完畢后的效果。

圖5  Astro中與門和鎖存器靠近放置

 

從圖中兩個單元的FRAM View的位置關系可以看出,Cell名為"dan/clk_gate_dout_reg/main_gate"的AND2HSV2.FRAM的與門和名為"dan/clk_gate_dout_reg/latch"的LALHSV1.FRAM的鎖存器是靠近放置的,成功達到了預期的效果。

 

 3. 時鍾樹綜合(CTS)之前的相關設置:

CTS之前,需要讓時鍾clk穿過鎖存器,而不能讓軟件將鎖存器的clk端視為一個sync pin(時序單元的時鍾端口,這些Pin上的Latency工具都會自動進行Balance)。因為Astro默認會將所有時序單元(如鎖存器和觸發器)和宏單元的時鍾端口視為sync pin,所以需要在CTS之前去除CG單元中latch時鍾端的stop屬性,否則時鍾樹綜合的時候會插入倒向器和緩沖器來平衡電路中的Skew,這會嚴重影響門控時鍾的功能,導致到達CG中與門兩輸入端的信號不滿足建立時間或保持時間的要求,從而會導致輸出端產生毛刺。

這可以用astSetClockNonSop命令來實現。現仍以前面圖中顯示的鎖存器為例講解其相應的設置命令:

astSetClockNonStop "dan/clk_gate_dout_reg/latch"#t

當設計中插入的CG Cell非常多時,可以將這些命令編寫成一個腳本文件,然后以命令load加載進來。

 

4. 后續操作:

后續的操作就是常規的NDR繞時鍾線和non-NDR繞普通信號線,沒什么特殊的,可以參照ICC的流程。

 

結束語:

希望通過分離門控時鍾技術大家能對CTS中門控時鍾單元的stop pin和nonstop有清楚的認識。在最新的集成門控時鍾實現方案中,所有這些問題都變得更加簡單了,基本上不需要任何特殊的設置,EDA軟件都能自動處理。在后續的推文中會介紹。

 

門控時鍾相關推文:

婦孺皆知的低功耗技術 | 門控時鍾(Clock Gating, CG)技術

Memory門控時鍾低功耗 --在Floorplan和Placement階段有何考慮?

效果賊棒 | 門控時鍾低功耗--Auto Bound 與Physical Aware Clock Gating

門控時鍾低功耗--在Placement階段有什么技巧?

 

低功耗相關推文:

輕松的低功耗策略 | Transistor Sizing with Longer Channel Length

千呼萬喚始出來--QQ交流群 | 多種低功耗技術及其在IC后端布局中的應用

潤物細無聲--卻鮮為人知的低功耗設計技術--Stack Effect

與狀態相關的Leakage power(State-dependent leakage power)

 

網易雲課堂視頻課程

 

鏈接:https://study.163.com/course/introduction/1005909004.htm

《Calibre DRC教程-一鍵搞定DRC》

 

《Calibredrv教程-提高流程自動化》

《搭建IC設計的EDA虛擬機/服務器》


免責聲明!

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



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