1990s - SoC 系統單晶片設計(System on Chip)#
案件摘要#
1990 年代,製程進步讓「CPU+記憶體+周邊+類比」整顆系統塞進一顆晶片成為可能。但整合帶來新難題:IP 怎麼接、時脈怎麼跨、測試怎麼做、功耗怎麼省。SoC 方法學(AMBA 匯流排、DFT、低功耗設計、完整 EDA 流程)就此誕生。
前因 -- 為什麼會有這個案子#
- 0.35μm → 0.25μm → 0.18μm 世代,單晶片可容納數百萬至千萬閘,系統板(multi-chip board)上的功能逐個被「搬進」晶片。
- 晶片間走線慢、功耗高、成本高:板上匯流排頻寬遠低於晶內走線,整合是經濟與性能的雙重驅動。
- 嵌入式市場(手機、機頂盒、消費電子)爆發,需要「一顆晶片就是一個系統」。
- 設計生產力跟不上電晶體成長(「設計鴻溝」design productivity gap),催生 IP 重複使用(IP reuse)與設計方法學標準化。
線索與推理 -- 數學式、程式、理論#
1. SoC 的誕生與 IP 整合#
SoC = CPU core(ARM7/ARM9、MIPS)+記憶體(SRAM/ROM/DRAM macro)+周邊(UART、USB、GPIO、Timer)+類比(PLL、ADC)於單一 die。
IP(Intellectual Property)分三級: - 硬 IP(hard IP):已驗證 GDSII 佈局,性能確定但不可改。 - 軟 IP(soft IP):RTL 程式碼,可移植但需再驗證。 - 固 IP(firm IP):帶floorplan 的網表,介於兩者之間。
1996 年 VSIA(Virtual Socket Interface Alliance)成立,制定 IP 介面標準——「virtual socket」概念:IP 如插座般插入 SoC。
2. 匯流排架構:AMBA AHB/APB#
ARM 於 1996 年提出 AMBA(Advanced Microcontroller Bus Architecture): - AHB(AHB, Advanced High-performance Bus):高速主幹,接 CPU、DMA、記憶體,支援流水線、多 master、burst 傳輸。 - APB(Advanced Peripheral Bus):低速周邊,經 APB bridge 掛在 AHB 下,簡單無流水線、省電。
分層匯流排的核心思想:把快慢裝置分開,讓慢裝置不拖累快裝置,且慢裝置可跑慢時脈省電。
3. 時脈域交叉(CDC)與重置域#
SoC 有多個時脈域(CPU 200MHz、APB 50MHz、外部介面 33MHz),跨域訊號會違反 setup/hold 造成亞穩態(metastability)。CDC 對策: - 兩級同步器(2-flop synchronizer):MTBF(平均無故障時間)
其中 \(t_r\) 為可用恢復時間、 \(\tau\) 為亞穩態時間常數;兩級 flops 使 MTBF 從毫秒級躍升到數千年。 - 非同步 FIFO(gray code pointer):多位元跨域用格雷碼,每次只翻一個位元,避免讀到混合狀態。 - 重置域:各時脈域需有對應的同步重置釋放(reset synchronizer),確保所有 flops 同時離開重置。
4. DFT:可測試性設計#
晶片做好後「測不到內部節點」是致命案。1990s 標準化三件套: - Scan Chain(掃描鏈):把所有 DFF 換成 scan-FF,串成一條長移位暫存器,測試時可從外部移入/移出狀態,把循序電路問題化成組合電路問題。STUCK-AT 故障模型下,可控性/可觀測性大幅提升。 - ATPG(自動測試圖樣產生):對組合電路用 D 演算法/FAN 演算法自動產生測試向量,故障覆蓋率目標 > 95%。
- BIST(內建自我測試):記憶體與 PLL 用 LFSR(線性回饋移位暫存器)產生圖樣、MISR 壓縮回應,測試不依賴昂貴外部 ATE。
LFSR 多項式範例(x⁸+x⁶+x⁵+x⁴+1):回饋抽頭決定圖樣序列,本質是 GF(2) 上的線性遞迴。
5. 低功耗設計#
動態功耗的物理根源是對負載電容充放電:
其中 \(\alpha\) 為開關活動率。功耗對策三部曲: - Clock gating:閒置模組關時脈,直接把 \(\alpha\) 降為 0。省電比例 = 被關掉的活動率。 - Power domain(電源域):不同模組用不同 VDD,必要時 power gating 整域斷電(漏電流 \(I_{off}\) 也歸零)。 - DVFS(動態電壓頻率調整):降壓降頻,由於 \(P \propto V^2 f\) 且 \(f\) 大致正比於 \(V\) ,降壓的收益是平方級的:
6. EDA 流程:前端→後端→signoff#
- 前端(front-end):規格 → RTL(Verilog/VHDL)→ 功能模擬 → 邏輯合成(synthesis,RTL → gate-level netlist)。
- 後端(back-end):floorplan → placement → CTS(時脈樹合成)→ routing → 實體驗證。
- signoff:static timing analysis(STA,檢查所有路徑 setup/hold)+ DRC/LVS + gate-level 模擬 → tape-out。
時序約束:所有路徑須滿足
7. Python 演示:Clock gating 功耗計算#
def soc_power(blocks, vdd, f):
"""blocks: [(名稱, 電容nF, 活動率, 是否gating)]"""
total = 0
for name, c, alpha, gate in blocks:
eff_alpha = 0.0 if gate else alpha # gating 把活動率歸零
p = eff_alpha * c * vdd**2 * f # mW 級(nF * V² * MHz)
total += p
print(f"{name:10s} alpha={eff_alpha:.2f} P={p:7.2f} mW")
return total
blocks = [("CPU", 20, 0.5, False),
("DSP", 15, 0.4, True), # 閒置 → clock gating
("APB周邊", 5, 0.1, True)] # 閒置 → clock gating
print(f"總功耗 = {soc_power(blocks, 1.8, 200):.2f} mW")
# gating 前約 (0.5*20+0.4*15+0.1*5)*1.8²*200 ≈ 7956 mW
# gating 後只剩 CPU:0.5*20*1.8²*200 ≈ 6480 mW,省約 18%
def dvfs_power(v_old, f_old, v_new, f_new):
return (v_new/v_old)**2 * (f_new/f_old)
print(f"DVFS 1.8V/200MHz -> 1.2V/100MHz 功耗比 = {dvfs_power(1.8,200,1.2,100):.3f}")
# (1.2/1.8)^2 * 0.5 ≈ 0.222 → 功耗降到 22%!
結案 -- 後果與影響#
- SoC 方法學使手機晶片(聯發科、高通)在 2000 年代爆發,AMBA 至今仍是業界標準(AXI、CHI 持續演化)。
- DFT 三件套(scan/ATPG/BIST)成為所有 SoC 的必要投資,測試成本占晶片成本比重被控制在個位數 %。
- 低功耗方法學(clock gating → power domain → DVFS)一路演化到今日的 DVFS+近臨界電壓運算,是行動裝置電池壽命的功臣。
- IP 重複使用+EDA 全流程,成就了 fabless 產業與「設計生產力追上摩爾定律」的十年長跑。
關鍵人物與文獻#
- ARM:AMBA 匯流排規格(1996)、嵌入式 CPU 授權商業模式。
- VSIA(1996):Virtual Socket Interface,IP 標準化先驅。
- IEEE 1149.1(JTAG,1990)、IEEE 1500(嵌入式核心測試):DFT 標準。
- M. Keating 等:《Reuse Methodology Manual for System-on-a-Chip Designs》(1998)。
- A. Chandrakasan、R. Brodersen:《Low Power Digital CMOS Design》—— \(P=CV^2f\) 與低功耗設計理論奠基。