大家好,我是數字小熊餅干,一個練習時長兩年半的IC打工人。我在兩年前通過自學跨行社招加入了IC行業。現在我打算將這兩年的工作經驗和當初面試時最常問的一些問題進行總結,并通過匯總成文章的形式進行輸出,相信無論你是在職的還是已經還準備入行,看過之后都會有有一些收獲,如果看完后喜歡的話就請關注我吧~謝謝~
在之前的文章中,我們主要介紹了系統級、RTL級低功耗技術,這些低功耗方法主要依靠架構人員、軟件人員和數字前端人員實現。本期文章讓我們來聊聊門級低功耗優化方法,與之前介紹過的低功耗方法不同的是,門級低功耗方法主要依靠的是EDA工具實現。
一、路徑平衡
芯片中存在大量的組合邏輯,當來自不同路徑的信號輸入至同一個邏輯門時,不同路徑上的信號傳輸延遲導致了不必要的翻轉,這就會導致大量的動態功耗的產生,因此,可以通過插入buffer的方法將不同路徑的輸入信號延遲修正至一致,使不同路徑上的信號同時到達,這樣就不會產生不必要的翻轉。這種方法就是所謂的路徑平衡,如下圖所示:
如上圖所示,通過插入buffer的方式增加了信號B的延遲,使得信號A與B同時到達與門,進而減少了由之前的“毛刺”所帶來的動態功耗。
二、邏輯級優化
邏輯級優化是通過減少冗余邏輯、調整門的大小、重排序操作、引腳的交換/重新分配、重新映射、使用低功耗的標準單元進行設計等方法實現的門級低功耗方法。下面讓我們開始對這些內容進行介紹:
2.1 邏輯門尺寸優化
簡單來說,所謂的邏輯門尺寸優化就是在不同路徑使用不同尺寸的邏輯門。
例如:在時序比較寬裕的非關鍵路徑上可以使用一些較小尺寸的邏輯門,這樣可以減小輸入電容,從而減小前驅的翻轉電流,進而降低了翻轉功耗。但是這樣也會增大信號的轉換時間,對其時序造成一定的影響,因此可以對非關鍵路徑上的邏輯門進行優化,以降低動態功耗。
2.2 引腳重分配
對于邏輯單元庫的標準單元來說,其不同引腳的邏輯功能相同,但其負載電容與信號延時參數可能是不同的,因此可以使用負載電容低的引腳去連接翻轉頻率高的輸入信號,這樣就可以減少翻轉頻率高的信號的負載電容,減少充放電導致的動態功耗。
如上圖所示,從上往下的引腳負載電容依次增大,輸入信號a到d的翻轉頻率依次增大,因此,通過將信號按照d-a的順序分配至各個引腳,可以實現降低功耗的目的,這種方法叫引腳重分配。
2.3 重排序
對于邏輯門來說,其各個輸入信號的翻轉率可能并不相同,因此可以將翻轉頻率大的輸入信號分配至靠近輸出的位置,以減少翻轉率高的輸入信號驅動的邏輯門數量,這種低功耗方法叫做重排序。下面讓我們舉個例子:
圖中的輸入信號b為翻轉頻率較高的信號,因此對信號b進行重排序操作,在排序前,信號b會驅動4個邏輯門(如左圖所示),而排序后,只會驅動2個邏輯門(如右圖所示),這就減少了內部電路的翻轉,從而降低了動態功耗。
2.4 重映射
重映射相當于對邏輯進行優化,將冗余的邏輯門優化為具有相同功能且數量更少的邏輯門。
如上圖所示,在重映射前f=((a & b) & ~(c & d)),使用了兩級的與非門,這顯然是可以優化的,在重映射后,只使用了一級的邏輯門OAI就可以實現相同的功能,顯然降低了系統的動態功耗。
三、 物理級優化
所謂的物理級優化是在布局布線之類的物理實現時,通過降低翻轉和減少負載電容來降低系統的功耗,物理級優化主要有以下幾種方法:
- 使用低功耗的庫;
- 設計低功耗的布局規劃;
- 基于功耗優化的布局規劃;
- 通過布局布線來減少毛刺;
- 在優化布局的試試調整buffer和連線的大小;
- 調整晶體管的大小來減少負載電容;
四、 總結
本篇文章主要討論了芯片設計中的門級低功耗優化技術,與之前的文章里提到的系統級、RTL級低功耗技術相比,門級低功耗優化技術在低功耗設計中的層次較低,對功耗優化的占比也沒有那么的大。不過我們仍需要了解并應用這些低功耗方法,并在不同的芯片設計階段采用這些低功耗優化技術,旨在從多個角度降低芯片的功耗,提高能效比。
以下是該系列的往期鏈接:
ic基礎|功耗篇01:影響芯片實際表現的重要指標——功耗的分類
ic基礎|功耗篇02:系統級低功耗技術
ic基礎|時鐘篇03:低功耗技術之——門控時鐘clock gating及鎖存器latch的避免
ic基礎|功耗篇03:ic設計人員如何在代碼中降低功耗?一文帶你了解行為級以及RTL級低功耗技術
如果你喜歡這篇文章的話,請關注我的公眾號-熊熊的ic車間,里面還有ic設計和ic驗證的學習資料和書籍等著你呢~歡迎您的關注!