1. 說明
2. Power Domain
3. Power Switch 與 Isolation
4. Level Shifter
5. Retention Register
6. UPF
7. 2-State / 4-State
8. Debug Flow
9. Combinational / Sequential Logic
10. Power State Sequence
11. Edge Trigger / Level Trigger
12. Clock Gating
在 SoC 中,即使某個 IP 暫時沒有執行工作,只要它仍然供電,電路仍可能消耗動態功耗(Dynamic Power)與漏電功耗(Leakage Power)。動態功耗主要與訊號切換活動、電容負載及電壓、頻率有關;漏電功耗則來自電晶體在非理想關閉狀態下的漏電流。
因此,現代 SoC 常將不同功能區域規劃成可獨立控制的 Power Domain。當某個 IP 不使用時,若電源架構與系統狀態允許,可關閉對應的 switched supply,以降低該區域的漏電與不必要功耗。實際節能效果取決於電源網路、電源開關、狀態保存、隔離與控制流程是否完整。
Power Domain 是一組由電源意圖(Power Intent)定義、受特定供電與控制策略管理的邏輯或實體範圍。它不必與 RTL Module 一一對應:一個 RTL module 可跨越多個 Power Domain,數個 module 也可能被納入同一個 domain。
實際的 domain 邊界、供電集合(supply set)與控制策略,需配合設計階層、實體實作和所使用的 UPF 版本共同檢視。
Power Switch 用來控制 switched Power Domain 的供電。常見架構會保留 Always-On(AON)電源與控制邏輯,讓電源開關及相關控制訊號在目標 domain 關閉時仍可運作。
問題:當 GPU Domain 關閉後,其輸出可能變成未知、不可靠或不再有有效驅動;若 CPU Domain 仍供電,CPU 端該如何處理這些訊號?
解法:Isolation Cell。在跨 domain 的訊號路徑上插入隔離邏輯,當來源 domain 關閉或輸出不可信時,將訊號 clamp 到指定的 0 或 1,避免不確定值傳入仍正常工作的 domain。Isolation 的控制與 clamp value 需依訊號方向、協定與電源狀態定義;實體實作通常會要求 isolation cell 由仍供電的電源支援。
不同 Power Domain 可能使用不同供電電壓。若訊號由一個電壓範圍傳到另一個不相容的電壓範圍,可能需要 Level Shifter 將訊號電位轉換到接收端可接受的範圍。是否需要、轉換方向及使用哪種 cell,需依 source/destination 電壓、library 與實作規則判斷;有些 library cell 也可能整合隔離與電位轉換功能。
Retention Register(或 retention flop)可在主供電關閉期間,透過保留供電或內部保存機制保留指定的狀態值,讓 domain 重新上電後能恢復執行。並非所有 register 都需要 retention;通常只保存喚醒後恢復功能所需的狀態,並需定義 save/restore 控制、供電條件與時序。
UPF(Unified Power Format)是 IEEE 1801 定義的低功耗設計意圖格式,用來以獨立於 RTL 的方式描述設計的 power intent。UPF 可描述 power domain、供電網路/供電集合、power state,以及 isolation、retention、level shifter 等低功耗策略。工具會依 UPF 與設計內容進行檢查、模擬模型建立及實體實作;不同工具與 UPF 版本的支援細節可能不同。
X 表示模擬器目前無法確定該訊號是 0 或 1,可能源自未初始化、衝突驅動、未連接、模擬模型的未知傳播,或 power-aware 模擬中模擬器依 power intent 對斷電區域進行的 corruption modeling。X 不等於實體電路必然輸出某種電壓,也不代表每個斷電訊號在所有模擬設定下都會自動變成 X。
例如 Domain B 斷電後,其中的暫存器狀態可能無法再代表有效資料;power-aware simulation 可依 UPF 與模擬器設定,將相關訊號標記為 X,以協助檢查下游是否正確隔離。若 isolation 應 clamp 到 0 或 1,但隔離後的輸出仍是 X,應檢查 power state、isolation enable 極性與時序、clamp 設定、供電連接、UPF 套用情形及模擬模型。
2-state 模擬通常可減少狀態表示與未知值傳播的成本,因此某些情況下效能較佳;但它無法表示 X/Z,亦可能掩蓋初始化、隔離或斷電行為問題。若驗證目標涉及低功耗狀態與 X-propagation,需選擇符合驗證計畫的 power-aware/4-state 模擬方式。
遇到 Low Power Verification 問題時,可依下列順序縮小範圍;實際流程會依症狀與工具調整:
Customer Report
-> Understand Expected Behavior
-> Reproduce
-> Check Waveform and Logs
-> Check Power State and Supply Connectivity
-> Check UPF / Effective Power Intent
-> Check Isolation, Level Shifter, and Retention Controls
-> Check RTL and Generated Models
-> Identify Root Cause
-> Fix
-> Run Regression
always_comb 使用 blocking assignment(=);時序邏輯通常在 always_ff 使用 non-blocking assignment(<=)。這是常用的 RTL coding guideline,不是單靠 assignment 符號就能判斷邏輯類型。若組合邏輯未對所有路徑賦值,可能推導出 latch;時序邏輯則應依時脈觸發條件描述狀態更新。
以下是常見的簡化順序,實際控制順序須依 UPF、電源控制器設計、library 與系統協定確認。關鍵原則是:斷電前先保存所需狀態並隔離輸出;重新上電後待電源穩定、狀態恢復完成,再解除隔離。
Power OFF:
Save retention state -> Assert isolation -> Turn switched supply off
Power ON:
Turn switched supply on -> Wait for power-good/stable supply
-> Restore retention state -> Deassert isolation
某些設計會將 isolation、reset、clock 與 retention 控制交錯安排;不可只依這個簡化流程取代實際 power sequence 規格。
Edge Trigger:在訊號的上升沿或下降沿發生作用,例如 edge-triggered flip-flop 在指定 clock edge 擷取資料。
Level Sensitive:在控制訊號維持有效電位的期間具有作用,例如 latch 在 enable 有效期間可透明傳遞資料;enable 關閉後才保持狀態。
同步數位電路的 clock 持續切換時,即使部分模組暫時不需更新,clock tree 與相關節點仍可能產生切換功耗。Clock Gating 在允許的時段停止送入該模組的 clock,以減少不必要的切換並降低動態功耗;它不會直接消除漏電功耗。
Integrated Clock Gating(ICG)常使用在 clock low 時透明的 latch 擷取 enable,並在 clock high 時保持 enable 穩定,避免直接用組合邏輯閘切 clock 所造成的 glitch 或窄脈衝。實際設計通常使用 library 提供、經過特性驗證的 ICG cell,並配合 clock-gating checks 與 CTS 流程。
Last updated: