1. 程式人生 > >目前最好用的芯片低功耗方法-Multi-bits register

目前最好用的芯片低功耗方法-Multi-bits register

低功耗 寄存器 soc ic設計

目前芯片功耗問題越來越突出我們到底需要采用什麽樣的方法才能降低功耗,並且對我們的DUT改動最小(人心貪婪吃在碗裏,看著鍋裏) 不過真的有這麽一種方法,不僅可以使的芯片功耗降低,而且對設計的改動幾乎為0。你一定問是什麽大招。不過了解之前稍微有點耐心慢慢道來。


下面是一個SoC動態功耗(dynamic power)的分布圖,圖中可以清楚看到時鐘樹和寄存CK pin上的動態功耗的總和占據動態功耗的51%。納尼居然占比有這麽大。這時候想大家應該知道從哪裏下手。是的,如果能找到一種方法使得時鐘樹動態功耗和寄存CP pin上的動態功耗降低,那我們的目標就達成了

技術分享

其實,無論是DCRCICC都能一種叫做multi-bits register banking(翻譯成中文別扭了)方法。這種方法其實非常容易理解,就是將原來的single bit register根據一些規則等價替換成為multi-bits register. 工程證明,這種方法不僅降低寄存器CK pin的動態功耗,也有效降低時鐘樹上的BUF個數,從而帶來時鐘樹上功耗的節省。


ingle bit(比特) register VS dual bits(雙比特 register


下方圖片就是我們平常所看的single bit registerdual bit register就是將

2個寄存器進行集成變成一個std cell。這中從左邊2個single bit register 替換成1dual bits register過程我們稱之為banking或者mapping

如果它是一個scan flip-flop,那麽dual bit register一個SISE端口。這種端口的減少,可以route congestion減少不少工作量哦。

技術分享

技術分享

時鐘樹上,發現buf的數目急劇下降。就是時鐘樹和寄存器CK pin上動態功耗節省的奧秘

技術分享

可能會問dual bit 還有其他方面的優勢嗎?接下來我們來比比PPApower performance area


AREA

Leakage

CP Internal Power

CP rise CAP

CP fall CAP

Tcq rise

Tcq fall

DE1:MB/SB

2.00

1.86

1.50

0.99

0.99

0.96

1.10

DE2:MB/SB

2.00

1.80

1.48

0.99

0.99

1.00

1.13

上面表格中我們可以得出下面的結論

1. 面積:dual bit single bit2倍,所以在面積沒什麽收益;

2. Leakage powerdual bit 可以節省15%左右

3. CP Internal powerdual bit可以節省25%,這是因為dual bitCP CAP和一個single bit flop相當,也就意味著負載電容減少了一半

4. Timing上,dual bittiming 性能差了10%左右

IC設計,就是不停的tradeoff

技術分享

信息量太大了,讓我歇歇

技術分享

技術分享

Multi-bits register 綜合方法

我們最好利用DCT flow因為DCT flowphysical aware。否則,綜合工具只會同一個BUS的的寄存器進行banking,這樣導致的結果就是banking的比率非常的低。了提高banking的比例,並且同時獲得最好的timing效果,我們一都用DCT flow.

技術分享

整個流程中,我們需要額外提供2個文件,分別是mapping 文件register group 文件

Mapping file

Mapping文件如下所示。我們很少看到4single bit寄存器mapping 成個一個multi-bits寄存器,原因是因為太多的bit,會加劇routecongestion問題

2 {1 dff_2bitA} # 把2single bit register mapping 12-bits register

3 {1 dff_2bitA} # 把3single bit register mapping 13-bits register

4 {1 dff_4bitA} # 把4single bit register mapping 14-bits register

register group file

了需要提供map 文件之外,還需要提供register group 文件,該文件的作用是指導DC工具只對相同類型的寄存器進行mapping,不相同類型的寄存器不做任何mapping替換。否則會導致功能上出錯,如下面的group文件,dffx1 ddf2 dff4 幾種類型的可以banking一起並且mapping成等價的dff_2bit或者dff_4bit. sdffx1 sddf2 sdff4 幾種類型的可以banking一起並且mapping成等價的sdff_2bit或者sdff_4bit. 但是dffx1sdffx1 不能做任何banking否則會導致功能的錯誤

reg_group_1 3 {dffx1 dffx2 dffx4} {dff_2bit dff_4bit}

reg_group_2 3 {sdffx1 sdffx2 sdffx4} {sdff_2bit sdff_4bit}

Multi-bits register SCAN影響

采用multi-bits register 策略後,我們會發現scan path長度(length變得比之前更長了,但是好在後端工具可以做scan-reorder, 這樣scan pathlength還是在一個可以控制的範圍之內。

技術分享

Multi-bits register Congestion的影響

左圖是一個普通的布局布線圖,而右邊是詞啊用multi-bit register策略的布局布線圖可以看到左圖3處的congestion問題紅色圈的都是)而右圖只有一處congestion問題。

技術分享

Multi-bits register 實驗結果

采用multi-bits register 策略後,面積減小2%timing變差了7%寄存器CK pin動態功耗降低24%時鐘樹動態功耗降低15%


Logic Area

(um^2)

Setup WNS

(ns)

Register Clock Dyn

Power

(W)

時鐘樹動態功耗(W

Multibit banking比例

Normal run

442891

0.2020

0.0687

0.0573

0.00%

Multibit banking

431976

0.1872

0.0517

0.0485

93.08%

終於完成了,可以喝咖啡了!!!


更多IC方面行業分享,可以關註E課網



本文出自 “12920961” 博客,請務必保留此出處http://12930961.blog.51cto.com/12920961/1927176

目前最好用的芯片低功耗方法-Multi-bits register