暫存器傳輸級的低功耗設計方法

2021-08-26 04:29:44 字數 3170 閱讀 6412

除了晶元的速度和面積等,人們對低功耗的期望也越來越高,因而在ic設計中加入低功耗設計非常必要。暫存器傳輸級的低功耗設計對降低整個晶元的功耗作用非常顯著,本文討論的三種暫存器傳輸級低功耗設計方法,經驗證對動態功耗的降低很有效。

自積體電路問世以來,設計者在單個晶元上整合的電晶體的數量呈現出令人驚訝的增長速度。近30年,積體電路的發展一直遵循著「摩爾定律」:整合在晶元上的電晶體的數量每18個月就翻一番,晶元成本也相應下降。

圖1:cmos電路功耗的主要**是動態功耗,

由開關電流和短路電流造成。

在半導體工藝水平不斷進步的同時,以電池供電的手持裝置和膝上電腦也迅速普及,系統的功耗有時已經成為系統設計首要考慮的因素,因此,低功耗設計成為發展移動系統必然要解決的問題。

積體電路的低功耗設計分為系統級、暫存器傳輸級、門級、電路級四個層次,而在這其中,暫存器傳輸級的低功耗設計對優化整個系統功耗的貢獻達到20%-50%,這是非常巨大的比例。因而,在暫存器傳輸級進行低功耗設計是非常值得,也是很有必要的。

積體電路中功耗的**

目前,cmos工藝在積體電路特別是數字ic中應用得很普遍。由於cmos電路在輸入穩定的時候總有乙個管子截止,所以它的靜態功耗在理想情況下應該是零,但這並不代表靜態功耗真的為零,實際上cmos電路的靜態功耗就是指電路中的漏電流(這裡不考慮亞閾值電流)。

cmos電路功耗的主要**是動態功耗,它由兩部分組成:開關電流和短路電流。

所以,整個cmos電路的功耗為:

p=pturn+pleakage+pshort

其中,pturn是開關電流iturn產生的動態功耗;pshort是動態情況下p管和n管同時導通時的短路電流ishort產生的動態功耗;而pleakage 是由擴散區和襯底之間的反向偏置漏電流ileakage產生的靜態功耗。如圖1所示。

圖2a:傳統的設計。圖2b:增加了門控時鐘的設計。

在這三項中pturn大約佔電路功耗的80% ,因而這裡就只考慮開關電流iturn所產生的動態功耗pturn。iturn是這樣產生的:在cmos電路,當輸入為「0」時,pmos導通,電源通過pmos向負載電容充電;而當電路輸入為「1」 時,負載電容又會通過nmos向地放電。iturn就是不斷對負載電容充放電所產生的開關電流。

乙個cmos反相器由開關電流引起的平均動態功耗是:pturn=clvdd2f

其中,cl是負載電容,vdd是電路的電壓,f是時鐘頻率。所以,要想降低電路的功耗就應該降低電路的電壓和頻率。

暫存器傳輸級的低功耗設計

圖3a:最基本的加法器設計。圖3b:採用運算元隔離方法設計的加法器。

暫存器傳輸級的低功耗設計方法有很多種,本文只列舉三種最為常用的設計方法:門時鐘、運算元隔離及儲存器分割槽訪問。

1.門控時鐘

從上面的討論知道,cmos電路的功耗是和頻率有著密切關係的,因此動態的關閉處於空閒狀態的時鐘具有明顯的節電效果。

圖2a是傳統的設計:系統的時鐘直接接到d觸發器的時鐘輸入端,不管什麼情況,只要輸入的clock翻轉,觸發器就會工作,整個系統也一直不斷的執行。而圖2b是增加了門控時鐘的設計:當系統正常工作時,解碼出來的en訊號為高,則觸發器可以正常鎖存資料;當系統處於空閒狀態時,把en訊號清零,這樣,由於給觸發器的clock一直保持零,不會發生翻轉,所以觸發器不會鎖存新的資料,整個系統被掛起,系統將進入低功耗模式。

在電路中加入門控時鐘很容易,可以用verilog直接在描述中加入,也可以通過synopsys的工具powercompile自動加入。通過加入門控時鐘,系統可以有選擇的停止不相關模組的時鐘,以最大程度的節省動態功耗。

2.運算元隔離

這種方法主要是對系統中的算術、邏輯運算模組進行低功耗設計,其主要思想就是:在不進行算術、邏輯運算的時候,使這些模組的輸入保持「0」,不讓運算元進來,輸出結果不會翻轉;而如果進行這方面的運算時,再將它們開啟。

圖4:儲存器分塊訪問例項。

這種方法在很多人看來是理所當然的,認為就應該是這樣設計。然而在實際中,設計者一方面關心模組的功能,另一方面迫於設計時間的壓力,所以很多設計中的細節沒有考慮。如圖3a,乙個加法器的兩個輸入端沒有經過任何邏輯直接進入加法器,系統不管是否需要加法運算,加法器都一直工作著,輸出不斷翻轉著,這對系統的動態功耗是很大的浪費,而且資料匯流排越寬浪費的功耗越多;圖3b 則用運算元隔離的方法進行設計:當系統不需要加法運算的時候,adder_en訊號為「0」,則加法器的兩個輸入端都保持「0」, 其輸出不會發生任何翻轉,不會產生動態功耗,而如果需要進行加法運算時,adder_en變成「1」,加法器正常工作。

當對系統裡所有的算術、邏輯運算單元都用上這種方法必然會對系統的動態功耗有很大的優化,在晶元面積方面,如圖3b所示的,所增加的邏輯僅僅是幾個多路器而已。

3.儲存器分塊訪問

乙個系統裡少不了儲存器,儲存器的功耗在整個系統裡所佔的比例不可忽視。因而降低儲存器的功耗,對於整個晶元系統的功耗優化很有幫助。

這裡提出一種叫做儲存器分塊訪問的方法來降低儲存器的功耗。主要思想是:將系統所需要一定容量的儲存器分成兩塊,然後用高位位址線進行片選解碼。結合下面的例項:

假設乙個系統需要128k的ram,如圖4所示,我們選用兩塊64kb的ram。cpu給出了17位位址線,其中低16位位址線直接提供給兩個ram,最高位位址線接到下面ram的片選端cs,而這根位址線經過乙個反相器接到另乙個ram的片選端。通過這種方法,不管從cpu 出來的什麼樣的位址,則每次只會選中乙個64kb的ram。如果採用單塊128kb的ram,則每次都要選中一塊128kb的ram。眾所周知,一塊64kb ram的功耗要遠小於一塊128kb ram的功耗。這樣從儲存器這一方面,又為系統節省了功耗。

表1:一款sim卡晶元設計優化

前後功耗及晶元面積的對比。

功耗和面積永遠是相矛盾的,如果想要降低系統的功耗,必然要加上一些控制邏輯來進行功耗優化,而這部分邏輯會增加晶元的面積,所以在功耗和面積之間就要有個折衷。上面的三種暫存器傳輸級的低功耗設計,不會增加很多邏輯,因而對晶元面積的影響不大。而經過了這三種低功耗設計,使整個系統動態功耗的改善很明顯。例如,使用功耗**工具powermill對一款sim卡晶元設計進行管級功耗**,這裡採用的是華傑的0.25um的標準單元庫,表1是優化前後功耗及晶元面積的對比。

從表1可以看到,經過低功耗設計後的晶元平均動態電流比優化前降了16%,然而優化前後晶元的面積沒有發生改變,因而,上面的三種設計方法對於降低系統動態功耗是非常有效的。

本文小結

本文首先分析了cmos電路功耗的**,基於這個理論基礎介紹了三種暫存器傳輸級的低功耗設計方法,最後,通過一款手機sim卡晶元的功耗優化並進行**,得出結論:這三種方法對降低系統功耗有很大的幫助,而且幾乎沒有增加晶元的面積。

轉貼 暫存器傳輸級的低功耗設計方法

除了晶元的速度和面積等,人們對低功耗的期望也越來越高,因而在ic設計中加入低功耗設計非常必要。暫存器傳輸級的低功耗設計對降低整個晶元的功耗作用非常顯著,本文討論的三種暫存器傳輸級低功耗設計方法,經驗證對動態功耗的降低很有效。自積體電路問世以來,設計者在單個晶元上整合的電晶體的數量呈現出令人驚訝的增長...

UVM暫存器篇之七 暫存器模型的常規方法(下)

本文 mem與reg的聯絡和差別 uvm暫存器模型也可以用來對儲存建模。uvm mem類可以用來模擬rw 讀寫 ro 唯讀 和wo 只寫 型別的儲存,並且可以配置其模型的資料寬度和位址範圍。而uvm mem不同於uvm reg的地方在於,考慮到物理儲存一旦對映到uvm mem會帶來更大的資源消耗,因...

對暫存器操作的通用方法總結

接觸了一陣子的stm32函式庫,使用起來挺方便的,但是很少有處理器會有函式庫,大部分情況下還是要自己來對暫存器進行操作,所以還是不要生疏了對暫存器的操作。對暫存器的操作有時候要考慮對其不同的位進行先後順序不同的設定,因為這樣可能達不到預期的效果,這個不太好總結,但是對暫存器操作的方法是固定的。在這之...