# Power Issue ###### tags: `Digital IC Design` [回到主頁面](https://hackmd.io/@derek8955/BkK2Nb5Jo/https%3A%2F%2Fhackmd.io%2FdpcBlBL8TlShpQ-wSi9Quw) CMOS功耗可以分成以下兩種: - Static power(又稱作Leakage Power): 由於製程特性導致在CMOS關閉時有小量的漏電流所造成的功率消耗 - Dynamic power: Internal Power + Switching Power - Internal Power: 在CMOS導通瞬間,需要一段轉態時間(Transition Time),在這 過程中可能會同時NMOS與PMOS都導通,進而產生一條短路電流,造成功率消耗 - Switching Power: 切換電流與負載電容充放電所造成的功耗 || |:---:| |Dynamic Power Consumption| || |:---:| |Short Circuit Power| 低功耗的重要性 --- 1. Power上升 -> 溫度上升 -> 安全性下降 2. 耗電過高不利於邊緣設備的硬體限制,如手機, 平板 ...等 Dynamic Power --- - Switching Power(Dominate): ||| |:---:|:---:| |None|由於動態消耗只會在訊號有轉變的時候發生,因此進一步考慮觸發參數| - Short Circuit Power(Internal Power): || |:---:| | | tsc簡單來說就是 MOS 的 Transition time。此外short circuit power 其實也跟toggle rate有關,但公式內沒有表明。 - Resolution: 1. Multi-Voltage || |:---:| 給定不同區塊不同的供給電壓,需要更高性能的模塊再使用較高的電壓。須添加level shifter以切換不同 clock domain 2.Clock Gating: 由於Clock的loading很高,因此關閉訊號不必trigger的地方,關閉後僅會有靜態功耗產生如下圖所示,詳見 [Clock Gating 筆記](https://hackmd.io/@derek8955/SkeOMZKzo) || |:---:| |Clock Gating Power Redunction| 3. Power Gating: 直接關閉區塊電源,但因為此技術會加入一些Gating電路,因此仍會造成部分靜態的功率消耗,僅能減少不能完全消除,如下圖所示。詳細說明待補 || |:---:| |Power Gating Power Redunction| Leakage Power --- CMOS電路中由於會有微電流產生,造成些微的靜態功率消耗有以下幾點: - Sub-threshold Leakage Current(ISUB):當MOS處於關閉狀態時,MOS Drain跟Source之間的漏電流 > 主要由ISUB主導靜態功率消耗 || |:---:| - Gate Leagage(IGATE):由於電流直接從閘極流過氧化物,閘極氧化物隧道效應和熱載子注入所產生的 Gate Leakage Power - Reverse Bias Junction Leakage (IREV): MOS內本身的反向二極體所產生的漏電流,即下圖的Drain junction leakage - Gate Induced Drain Leakage (IGIDL):由 MOSFET 汲極中的High Filed Effect引起從汲極流向基板的電流,而High Filed Effect是由高VDG電壓所導致的。 || |:---:| 隨著製成的演進,CMOS的Subthreshold逐漸下降,使得在越先進的製程靜態功耗甚至超越動態功耗。 - Solution: Multi-Vth,在design中引入不同的CMOS臨界電壓 - Vt下降 -> MOS越容易倒通 -> Subthreshold Current上升 -> 速度變快但更耗Power What we can do in the design level --- - 降低FSM訊號轉態,例如FSM設計時可以用One-Hot Encoding或Gray Code(因為每次切換狀態只會改變其中一個bit) - 降低面積,面積越大功耗肯定越大,例如設計Data Reuse或優化演算法 - 刪除不必要的資料轉態,例如適當停止不必要的Counter計數 - Data Gating:(思考一下下方電路,最終邏輯會相同) ```verilog= // Bad Code assign out = sel?A:A*B; // Good Code assign multin0 = sel & A; assign multin1 = sel & B; assign out = sel? A:multin0*multin1; ``` - 選用Multi-Vth設計,High Vth跑比較慢但功耗相對低; Low Vth跑比較快但功耗相對比較高。因此可以根據Design情形,在非Critical Path 上使用High Vth 的Cell - 依據SPEC,若Performance允許,降低處理頻率、供給電壓 - [CDC](https://hackmd.io/@derek8955/BkK2Nb5Jo/https%3A%2F%2Fhackmd.io%2FBQ8rbz6pSN2wYYt4PcmyKw) & Clock Switch Reference --- https://www.design-reuse.com/articles/52663/multi-voltage-soc-power-design-technique.html https://www.cnblogs.com/-9-8/p/5487239.html https://link.springer.com/book/10.1007/978-0-387-71819-4
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.