SPICE Circuit Simulation Engines
Modified Nodal Analysis, BSIM-CMG & Statistical Signoff
เจาะลึกกลไกภายในของโปรแกรมจำลองวงจรอิเล็กทรอนิกส์มาตรฐานระดับโลก: การตั้งสมการเมทริกซ์ Modified Nodal Analysis (MNA), การแก้สมการเชิงอนุพันธ์ด้วยระเบียบวิธีเชิงตัวเลข (Backward Euler, Trapezoidal, Gear 2), เทคนิคการแก้ปัญหา Non-Convergence ของ Newton-Raphson, โครงสร้างแบบจำลองทรานซิสเตอร์ BSIM4/BSIM-CMG และการวิเคราะห์ทางสถิติ Monte Carlo ตามกฎของเพลกรอม (Pelgrom's Law)
01 บทบาทและประวัติศาสตร์ของ SPICE ในวงการเซมิคอนดักเตอร์
SPICE (ย่อมาจาก Simulation Program with Integrated Circuit Emphasis) คือซอฟต์แวร์จำลองพฤติกรรมของวงจรอิเล็กทรอนิกส์ในระดับแอนะล็อกและฟิสิกส์ ที่ได้รับการพัฒนาขึ้นครั้งแรกที่มหาวิทยาลัยแคลิฟอร์เนีย เบิร์กลีย์ (UC Berkeley) ในปี 1973 โดย Larry Nagel ภายใต้การดูแลของศาสตราจารย์ Donald Pederson
ตลอดเวลากว่า 5 ทศวรรษที่ผ่านมา SPICE ได้กลายเป็น "Gold Standard" (มาตรฐานทองคำ) ที่ไม่มีวิศวกรออกแบบวงจรรวมคนใดสามารถข้ามผ่านได้ ไม่ว่าจะเป็นชิปไมโครโพรเซสเซอร์, หน่วยความจำ HBM, วงจรความถี่สูง 5G/6G RF, หรือวงจรสวิตชิ่งไฟฟ้ากำลังสูง เครื่องมือ SPICE ชั้นนำในปัจจุบันประกอบด้วย Cadence Spectre, Synopsys HSPICE / FineSim, Siemens Eldo, และโปรแกรมเปิดเผยรหัสอย่าง Ngspice และ LTspice
เข้าใจ band theory, PN junction, MOSFET I-V characteristics, threshold voltage, carrier transport — พื้นฐานที่ทุก IC designer ต้องรู้
Tools: Cadence Spectre, Synopsys HSPICE, Keysight ADS, LTspice
Related: Device Physics · MOSFET Fundamentals · EDA Tools & PDK
Path: Analog IC Designer, RFIC Engineer, Memory Circuit Designer, PDK Development Engineer
02 กลไก Modified Nodal Analysis (MNA) และการจัดรูปสมการเมทริกซ์
SPICE แปลงแผนผังวงจรไฟฟ้า (Schematic Netlist) ไปเป็นระบบสมการเชิงอนุพันธ์และพีชคณิต (Differential-Algebraic Equations - DAEs) โดยใช้ระเบียบวิธี Modified Nodal Analysis (MNA) ซึ่งต่อยอดมาจาก Nodal Analysis ทั่วไป เพื่อให้สามารถรองรับแหล่งจ่ายแรงดันอิสระ (Independent Voltage Sources) และตัวเหนี่ยวนำ (Inductors) ได้อย่างไร้รอยต่อ:
การเติมค่าลงในเมทริกซ์ทำผ่านกลไก MNA Element Stamps โดยอุปกรณ์แต่ละตัวจะมีรูปแบบการประทับค่าลงในแถวและคอลัมน์ของเมทริกซ์อย่างเป็นระบบ ตัวอย่างเช่น ตัวต้านทาน $R$ ระหว่างโนด $j$ และ $k$ จะประทับค่า Conductance $g = 1/R$ ลงที่ตำแหน่ง $(j, j)$, $(k, k)$ เป็นบวก และ $(j, k)$, $(k, j)$ เป็นลบ
03 ระเบียบวิธีเชิงตัวเลขใน Transient Analysis (Euler, Trapezoidal, Gear)
ในการจำลองแบบตอบสนองเชิงเวลา (.tran) อนุพันธ์ $\frac{d\mathbf{x}}{dt}$ จะถูกแทนที่ด้วยการประมาณค่าผลต่างสืบเนื่อง (Finite Difference Approximations) ณ แต่ละช่วงเวลา (Timestep $h_n = t_n - t_{n-1}$):
| อัลกอริทึมการอินทิเกรต | สมการประมาณค่าอนุพันธ์ ($dx/dt$) | ความแม่นยำ (Order) & ความเสถียร | ข้อดี / ปัญหาที่พบบ่อย |
|---|---|---|---|
| Backward Euler (BE) | $\dot{x}_n = \frac{x_n - x_{n-1}}{h_n}$ | First-Order, L-Stable (เสถียรยิ่งยวด) | เกิดแรงหน่วงเทียม (Artificial Numerical Damping) ทำให้วงจรกรองหรือสัญญาณแกว่งมลายหายไปเร็วกว่าความเป็นจริง |
| Trapezoidal Rule (TRAP) | $\dot{x}_n = \frac{2}{h_n}(x_n - x_{n-1}) - \dot{x}_{n-1}$ | Second-Order, A-Stable (อนุรักษ์พลังงาน) | แม่นยำสูง แต่ไวต่อการเกิดสัญญาณสั่นเทียม (Trapezoidal Ringing) ในวงจรที่มีการสวิตช์ชันจัด |
| Gear 2 (BDF2) | $\dot{x}_n = \frac{2h_n + h_{n-1}}{h_n(h_n + h_{n-1})} x_n - \dots$ | Second-Order, Stiffly Stable | เหมาะสำหรับวงจรที่มีค่าคงที่เวลาต่างกันมาก (Stiff Systems) นิยมใช้ในวงจร Power Electronics และ Digital Gates |
04 อัลกอริทึม Newton-Raphson และการแก้ปัญหาความไม่ลู่เข้า (Non-Convergence)
เนื่องจากอุปกรณ์สารกึ่งตัวนำ (ไดโอด, ทรานซิสเตอร์) มีสมการกระแส-แรงดันแบบไม่เป็นเชิงเส้น (Nonlinear $I$-$V$) ในแต่ละขั้นตอนเวลา SPICE จะต้องแก้ระบบสมการไม่เป็นเชิงเส้น $\mathbf{f}(\mathbf{x}) = \mathbf{0}$ ด้วยการทำซ้ำแบบ Newton-Raphson (NR):
สาเหตุและแนวทางแก้ไขเมื่อ SPICE ฟ้อง "Time step too small" หรือ "No convergence"
- GMIN Stepping: เชื่อมต่อตัวนำขนาดจิ๋ว ($GMIN = 10^{-12}\ \Omega^{-1}$) ขนานเข้ากับรอยต่อ PN ทุกจุดเพื่อป้องกันไม่ให้อนุพันธ์ชันเกินไป และค่อยๆ ปรับลดค่า $GMIN$ ลงจนเป็นศูนย์
- Source Stepping: ปรับลดแรงดันไฟเลี้ยง $V_{DD}$ และแหล่งจ่ายทั้งหมดลงเหลือ $0\text{ V}$ เพื่อหาจุดตั้งต้นที่ลู่เข้าแน่นอน แล้วค่อยๆ เพิ่มขึ้นทีละสเต็ป ($0.1, 0.2, \dots, 1.0$)
- Pseudo-Transient Continuation: ต่อตัวเก็บประจุจำลองขนาดเล็กขนานทุกโนด แปลงปัญหา DC Operating Point ให้กลายเป็น Transient Analysis เพื่อปล่อยให้ประจุไหลเข้าสู่สภาวะสมดุลตามเวลาจริง
05 วิวัฒนาการแบบจำลองทรานซิสเตอร์ (BSIM Family Genealogy)
หัวใจที่ทำให้ผลการจำลองใน SPICE ตรงกับพฤติกรรมของชิปจริงจาก Fab คือ Compact Model ซึ่งเป็นสมการคณิตศาสตร์วิเคราะห์เชิงฟิสิกส์ที่ได้รับการรับรองโดยองค์กร Compact Model Coalition (CMC):
| ชื่อแบบจำลอง (Compact Model) | เทคโนโลยีเป้าหมาย (Target Node) | ฟิสิกส์แกนกลางที่จำลอง (Core Physics) | จำนวนพารามิเตอร์ |
|---|---|---|---|
| Level 1 (Shichman-Hodges) | ยุคบุกเบิก (> 3 μm) | สมการพาราโบลาดั้งเดิม Square-Law, ไม่คิด Velocity Saturation | ~10–15 ตัว |
| BSIM3v3 / BSIM4 | Planar CMOS (180nm – 28nm) | Short-channel effects, DIBL, Gate tunneling leakage, Stress effects | ~400–600 ตัว |
| BSIM-CMG (Common Multi-Gate) | FinFET, GAA Nanosheet, CFET (16nm – Sub-2nm) | Surface Potential Based, ควบคุมเกตรอบทิศ 3D Electrostatics, Quantum Confinement | ~800–1,200 ตัว |
| ASM-HEMT / MVSG | GaN RF & Power Devices | ฟิสิกส์ 2DEG Gas Density, Spontaneous & Piezoelectric Polarization | ~300 ตัว |
06 การวิเคราะห์ทางสถิติ Monte Carlo และขอบเขตการผลิต (PVT Corners)
ในการผลิตชิปจริง พารามิเตอร์ทางกายภาพ (เช่น ความหนาเกตออกไซด์ $t_{ox}$, ความยาวแชนเนล $L$, ความกว้าง $W$, และความเข้มข้นสารเจือ $N_A$) จะมีความคลาดเคลื่อนแบบสุ่มตามการแจกแจงแบบเกาส์เซียน (Gaussian Distribution):
07 เทคโนโลยี FastSPICE และการเร่งความเร็วด้วย Multi-GPU
เมื่อวงจรรวมขยายตัวสู่ระดับหลายสิบล้านทรานซิสเตอร์ (เช่น หน่วยความจำ DRAM/Flash ขนาดใหญ่ หรือชิปประมวลผลทั้งคอร์) การรัน SPICE แบบเต็มรูป (Full SPICE Matrix) จะใช้เวลานานเกินไป อุตสาหกรรมจึงแบ่งการจำลองออกเป็นสองกลุ่ม:
- Golden SPICE (Spectre, HSPICE): คำนวณแมทริกซ์เต็มรูปโดยไม่ตัดทอนรายละเอียด เหมาะสำหรับวงจร Analog/RF ไครติคอล, PLL, และ I/O Transceiver
- FastSPICE (Spectre X, FineSim, NanoSim): ใช้อัลกอริทึมแบ่งวงจรออกเป็นบล็อกย่อยที่มีปฏิสัมพันธ์ต่อกันน้อย (Hierarchical Circuit Partitioning), ข้ามการคำนวณในบล็อกที่ไม่มีการสลับสถานะ (Event-Driven Simulation), และใช้ตารางค่าตารางจำลอง (Table Look-Up) เพื่อเพิ่มความเร็วขึ้น $10\text{–}100$ เท่า
- Multi-GPU Parallel Acceleration: ถ่ายโอนการแยกตัวประกอบเมทริกซ์แบบเบาบาง (Sparse Matrix Factorization: LU Decomposition) ไปยังการ์ดประมวลผลกราฟิก (NVIDIA H100/H200 Tensor Cores) ทำให้สามารถจำลองวงจรขนาดใหญ่พร้อม Parasitic Extraction ระดับล้านตัวต้านทาน-ตัวเก็บประจุได้ภายในไม่กี่ชั่วโมง
08 ไวยากรณ์และการเขียน Netlist มาตรฐาน (SPICE Syntax Example)
ตัวอย่างการเขียน SPICE Netlist สำหรับวงจรขยายเชิงผลต่าง (Differential Pair Amplifier) พร้อมคำสั่งรัน Operating Point, AC Frequency Sweep, และคำสั่งวัดค่าทางวิศวกรรมอัตโนมัติ (Automated Measurement Statements):
* ============================================================================== * CMOS DIFFERENTIAL PAIR OP-AMP SIMULATION (Cadence Spectre / HSPICE Standard) * ============================================================================== .include "tsmc_n28_compact_models.lib" * รวมไลบรารี BSIM4 PDK * --- คำจำกัดความขั้วต่อของอุปกรณ์ (Instances) --- M1 out_n inp v_tail v_tail NMOS_28 W=4u L=100n * Input Pair Transistor Positive M2 out_p inm v_tail v_tail NMOS_28 W=4u L=100n * Input Pair Transistor Negative M3 out_n out_n vdd vdd PMOS_28 W=8u L=150n * Active Current Mirror Load 1 M4 out_p out_n vdd vdd PMOS_28 W=8u L=150n * Active Current Mirror Load 2 M_TAIL v_tail v_bias 0 0 NMOS_28 W=10u L=200n * Tail Current Source * --- แหล่งจ่ายพลังงานและสัญญาณทดสอบ (Sources) --- V_DD vdd 0 DC 1.05 V_BIAS v_bias 0 DC 0.45 V_CM v_cm 0 DC 0.60 V_INP inp v_cm DC 0.0 AC 0.5 0 * Differential Input 0.5V phase 0 V_INM inm v_cm DC 0.0 AC 0.5 180 * Differential Input 0.5V phase 180 C_LOAD out_p 0 100f * Output Load Capacitance 100 fF * --- คำสั่งจำลอง (Analysis Commands) --- .op * คำนวณ DC Operating Point .ac dec 50 100 100G * กวาดความถี่ AC 100 Hz ถึง 100 GHz (50 จุด/ทศวรรษ) * --- คำสั่งวัดค่าอัตโนมัติ (Measurement Statements) --- .measure ac dc_gain_db MAX vdb(out_p) * วัดอัตราขยายสูงสุด (dB) .measure ac ugb_hz WHEN vdb(out_p)=0.0 FALL=1 * วัด Unity-Gain Bandwidth .measure ac phase_deg FIND vp(out_p) WHEN vdb(out_p)=0.0 .measure ac phase_margin PARAM='180 + phase_deg' * คำนวณ Phase Margin .end