Shmoo 與電氣驗證:晶片「能不能用」是怎麼被畫出來的
這是《Post-Silicon Validation 入門》的延伸篇。前一篇談整體流程,這篇專注在其中最工程、也最常被面試問到的一段:electrical validation / characterization。
一、為什麼「功能正確」不等於「可以出貨」
功能驗證回答的問題是:這顆晶片會不會算錯?
電氣驗證回答的是另一個問題:這顆晶片在什麼條件下才不會算錯?
這兩件事差很多。同一顆晶片,在 1.0V / 3.0GHz / 25°C 可能完美運作,在 0.85V / 3.0GHz / 95°C 就開始出錯。而你要賣的是一個規格——「這顆 CPU 保證在 0.9V~1.1V、0°C~100°C 下跑到 3.2GHz」——這個規格背後必須有數據支撐,而且必須涵蓋製程變異、老化、以及你賣出去的每一顆晶片。
電氣驗證就是產生這些數據的過程。
二、三個旋鈕:V、F、T
現代數位電路的行為,大致由三個外部參數決定:
電壓(Voltage) 電壓越高,電晶體切換越快,訊號在一個 clock cycle 內跑得越遠。所以升壓通常讓 timing 變好。代價是功耗(動態功耗 ∝ V²·f)與可靠度(電壓越高,元件老化越快)。
頻率(Frequency) 頻率越高,一個 cycle 的時間越短,留給訊號傳播的預算越少。所以降頻讓 timing 變好。代價是效能。
溫度(Temperature) 比較複雜。傳統上溫度越高、載子遷移率越低、電路越慢(所以「熱 = 慢」)。但在低電壓的先進製程下會出現 temperature inversion:溫度升高反而讓電晶體導通更容易,電路變快。所以在某些製程節點,最壞的 timing corner 是低溫而不是高溫——這是很多人會踩到的直覺陷阱。
實務上還有第四、第五個變因:
製程(Process) 同一片晶圓、不同位置的晶片速度就不一樣。業界用 SS / TT / FF(slow-slow / typical / fast-fast,指 NMOS 與 PMOS 的快慢組合)來描述角落。Validation 必須刻意去挑不同 corner 的晶片來測,不能只測手邊那幾顆。
老化(Aging) NBTI、HCI、電遷移等機制會讓電晶體隨使用時間變慢。所以出貨規格必須留 aging margin——今天剛好過的晶片,三年後可能就過不了。
三、Shmoo Plot:把二維空間掃出來
名字的由來
Shmoo 是 1940 年代美國漫畫《Li'l Abner》裡一種形狀圓圓胖胖的虛構生物。早期半導體工程師發現他們畫出來的 pass/fail 邊界圖形狀很像那隻生物,就這麼叫下來了。這是業界少數純粹因為好玩而流傳下來的術語。
基本形式
固定其他條件,選兩個參數當座標軸(最常見是電壓 × 頻率),對每一格條件跑一次測試,記錄 pass 或 fail。
Freq
(GHz)
3.8 | . . . . . . X X
3.6 | . . . . X X X X
3.4 | . . . X X X X X
3.2 | . . X X X X X X
3.0 | . X X X X X X X
2.8 | X X X X X X X X
2.6 | X X X X X X X X
+--------------------------
0.80 .85 .90 .95 1.0 1.05 1.1 1.15 Vcore (V)
X = PASS . = FAIL
這張圖告訴你:這顆晶片在 0.95V 可以跑到 3.2GHz,要跑 3.6GHz 需要 1.05V。那條斜邊就是所謂的 Vmin 曲線(每個頻率下能正常工作的最低電壓)。
怎麼讀 Shmoo
理想形狀:乾淨的單調斜線
. . . . X X
. . . X X X
. . X X X X
. X X X X X
電壓越高能跑越快,邊界平滑。這代表限制因素是一條正常的 critical path,行為符合預期。這是你希望看到的。
異常一:Shmoo Hole(洞)
. . . X X X
. . X . X X ← 中間破了一個洞
. . X X X X
. X X X X X
在某個特定電壓「反而」失敗,但更低與更高的電壓都過。這是很經典的異常訊號,常見成因:
- PLL 在某個分頻設定下 jitter 特別大
- On-chip regulator 或 LDO 在某個負載點不穩定
- 共振:晶片、封裝、PCB 的電源網路(PDN)在某個切換頻率下有 impedance peak,導致瞬間電壓塌陷
- DLL/SerDes 的 lock 範圍邊界
異常二:Hold Violation(左下角壞掉)
. . . X X X
. . X X X X
. X X X X X
X X X . . . ← 低頻高壓反而失敗
正常的 setup violation 是「太快跑不完」;hold violation 是「跑太快,資料在下一級還沒 latch 就被蓋掉」,跟頻率無關但跟電壓正相關。如果你看到高電壓、低頻率的角落失敗,優先懷疑 hold。這種 bug 特別討厭,因為降頻救不了它。
異常三:邊界毛躁(Fuzzy Boundary)
. . . X . X
. . X . X X
. X . X X X
Pass/fail 交錯、不可重複。通常代表這個測試本身是機率性的(marginal path + 雜訊),或者你的測試環境有問題(電源不穩、接觸不良、溫度沒穩定)。先懷疑環境,再懷疑晶片——這是老手的直覺。
掃描維度的變化
除了 V×F,常用的還有:
- Vcore × Vio:核心電壓 vs. I/O 電壓,找跨電壓域的介面問題
- Temperature × Voltage:找溫度反轉點
- Timing shmoo:把某個介面(如 DDR)的 setup/hold 視窗掃出來,這就是 eye diagram 的數位版本
- Vref × Delay:SerDes 接收端的判斷準位 vs. 取樣時間點,畫出來就是眼圖
四、Vmin:整個電氣驗證的核心指標
為什麼 Vmin 這麼重要
功耗大致正比於 V²。如果你能把工作電壓從 1.0V 降到 0.9V,功耗直接掉 19%。對手機、對資料中心,這是天大的事。
所以每一家公司都在拚 Vmin——但你不能盲目降,因為降到某個點晶片就會出錯。Validation 的任務是精確找出這個點,並決定要留多少 guardband(安全餘裕)。
Vmin 是一個分布,不是一個數字
這是最重要的觀念。你手上 10 顆晶片的 Vmin 可能是:
0.82 0.84 0.85 0.85 0.86 0.87 0.88 0.91 0.93 0.98
↑
離群值
你要出貨幾百萬顆。規格必須涵蓋分布的尾巴,而不是平均值。所以實務上會:
- 大量取樣(幾百到幾千顆),畫出 Vmin 分布
- 用統計方法外推到 6-sigma 或目標良率
- 加上 aging margin、量測誤差、電源雜訊 margin
- 得到出貨規格
那顆 0.98V 的離群值不能忽略——要去查它為什麼特別差。可能是製程缺陷,也可能揭露了一個設計弱點。
Vmin 被什麼限制
實務上 Vmin 通常不是被邏輯電路限制,而是被這幾個東西:
- SRAM:cache 的 6T bitcell 在低電壓下讀寫穩定性(read disturb、write margin)會先崩掉。這是絕大多數 CPU 的 Vmin limiter。所以很多設計會給 SRAM 獨立的電壓域,或加 assist circuit。
- 類比 IP:PLL、SerDes、ADC 通常有自己的最低工作電壓
- Level shifter 與跨電壓域介面
- Critical path:純邏輯的 timing,反而常常不是瓶頸
五、實務上怎麼做
測試環境
一次完整的 characterization 需要:
- 可程控電源供應器:能精細調整每一組 power rail(現代 SoC 可能有 10 個以上的電壓域)
- 可程控時脈源 / 內部 PLL 控制:能一格一格調頻率
- Thermal chamber 或 thermal head:把晶片精確控溫在 -40°C ~ 125°C
- 測試內容:從單純的 memory pattern,到會讓功耗飆頂的 power virus
- 自動化框架:整個掃描是幾千到幾萬個測試點,全部要無人自動跑
一張 30×20 的 shmoo,如果每個點跑 10 秒,就是 100 分鐘。如果要掃 5 個溫度、20 顆晶片,那是 160 小時。所以自動化與測試時間優化本身就是這份工作的核心技能。
測試內容的選擇
Shmoo 的形狀完全取決於你跑什麼測試。跑一個輕量的 idle loop,你會得到一張很漂亮的圖;跑 power virus,邊界會往右上退好幾格。
實務上會準備一套分層的 test content:
| 測試類型 | 目的 |
|---|---|
| Structural (scan/BIST) | 找製造缺陷,覆蓋率高,跑得快 |
| Memory pattern | 專打 SRAM Vmin |
| Functional micro-benchmark | 打特定的 critical path |
| Power virus | 最壞的 IR drop 與 di/dt 情境 |
| Real workload | 代表真實使用,但覆蓋率不確定 |
出貨規格必須以最嚴苛的那個為準。
常見陷阱
- 量測點不是晶片內部。你設定電源供應器輸出 1.0V,但經過線材、PCB、封裝、on-die 電阻之後,電晶體看到的可能只有 0.93V。要用 Kelvin sensing 或 on-die voltage monitor 才知道真值。
- 溫度沒穩定就開測。晶片自己會發熱,設定 85°C 不代表 die 溫度是 85°C。要等熱平衡,或用 on-die thermal sensor 讀。
- 測試順序造成的歷史效應。前一個測試把晶片跑到很燙,會影響下一個點的結果。掃描順序要設計過。
- 把環境問題當成晶片問題。接觸電阻、電源 ripple、探針老化——先確認環境,再下結論。老手看到奇怪的 shmoo,第一反應是「換一片板子再測一次」。
六、從 Shmoo 到產品
電氣驗證的數據最後會變成三個東西:
1. 資料表規格(Datasheet) 「工作電壓 0.90V–1.10V,工作溫度 0°C–100°C,最高頻率 3.2GHz」——每一個數字背後都是幾百顆晶片、幾萬個測試點的統計。
2. Binning 規則 量產測試時,每顆晶片會被測出它的能力,然後分級:跑得快的賣高階型號,跑得慢的降頻降價當低階型號賣,太差的丟掉。同一張光罩出來的晶片,最後可能變成三、四個不同售價的產品——這就是 binning,公司毛利很大程度取決於它。
3. DVFS 表(Dynamic Voltage and Frequency Scaling) 現代晶片會即時調整電壓與頻率。那張「3.2GHz 用 1.05V、2.0GHz 用 0.85V」的對應表,就是從 characterization 資料產生的,燒進 firmware 或 fuse 裡。有些高階設計還會做 per-part 的客製化——每顆晶片出廠時燒進屬於自己的 Vmin,把 guardband 榨到極致。
七、小結
- 電氣驗證回答的是「在什麼條件下能用」,不是「功能對不對」
- Shmoo plot 是把 pass/fail 邊界視覺化的基本工具;形狀本身就是診斷資訊
- 乾淨的斜線 = 正常 critical path;洞 = 共振或類比問題;左下角壞 = hold violation;毛躁 = 先查環境
- Vmin 是分布不是數字,出貨規格要涵蓋尾巴
- Vmin 的限制者通常是 SRAM 與類比 IP,不是邏輯
- 最終產出是 datasheet 規格、binning 規則與 DVFS 表——直接影響公司毛利
本文為概念性介紹,數值為示意,各公司實際做法與術語會有差異。