4. MOSFET迁移率退化参数提取
任务说明
本案例基于线性区MOSFET在不同栅压下的跨导数据,提取有效迁移率随垂直电场的变化关系,并拟合SPICE Level 3迁移率退化模型参数(UO、THETA)。核心公式:
- 线性区跨导:gm = (W/L)·Cox·μeff·Vds
- 有效迁移率:μeff = gm / [(W/L)·Cox·Vds]
- 垂直电场近似:Eeff ≈ (Vgs - Vth) / tox
- SPICE模型:μeff = UO / [1 + THETA·(Vgs - Vth)]
数据与依赖
需要numpy和scipy。输入数据为实测的Vgs-gm对(线性区,Vds固定为小值如0.1V)。器件参数:W/L=10,Cox=1.38e-3 F/m²(tox=25nm),Vth=0.7V。
完整实现代码
import numpy as np
from scipy.optimize import curve_fit
# --- 器件参数 ---
W_over_L = 10.0 # 宽长比
Cox = 1.38e-3 # 栅氧电容 F/m^2 (tox=25nm, eps_ox=3.9*8.854e-12)
Vds = 0.1 # 线性区漏源电压 V
Vth = 0.7 # 阈值电压 V
tox = 25e-9 # 栅氧厚度 m
# --- 实测数据:不同Vgs下的线性区跨导gm (S) ---
Vgs_data = np.array([1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0])
gm_data = np.array([1.05e-3, 1.42e-3, 1.70e-3, 1.90e-3,
2.05e-3, 2.16e-3, 2.24e-3, 2.30e-3, 2.35e-3])
# --- 步骤1:从gm提取有效迁移率 ---
mu_eff = gm_data / (W_over_L * Cox * Vds) # m^2/(V·s)
# --- 步骤2:计算垂直有效电场 ---
E_eff = (Vgs_data - Vth) / tox # V/m
# --- 步骤3:定义SPICE迁移率退化模型 ---
def mu_model(Vgs, UO, THETA):
"""SPICE Level 3 迁移率退化模型"""
return UO / (1.0 + THETA * (Vgs - Vth))
# --- 步骤4:拟合提取UO和THETA ---
popt, pcov = curve_fit(mu_model, Vgs_data, mu_eff,
p0=[0.06, 0.1], maxfev=5000)
UO_fit, THETA_fit = popt
perr = np.sqrt(np.diag(pcov))
# --- 步骤5:输出结果 ---
print("=== 有效迁移率提取结果 ===")
print(f"{'Vgs(V)':>8} {'gm(mS)':>10} {'mu_eff(cm2/Vs)':>16} {'E_eff(MV/cm)':>14}")
for v, g, m, e in zip(Vgs_data, gm_data, mu_eff, E_eff):
print(f"{v:8.1f} {g*1e3:10.3f} {m*1e4:16.1f} {e/1e6:14.3f}")
print(f"\n=== SPICE迁移率退化模型拟合 ===")
print(f"UO = {UO_fit*1e4:.1f} cm^2/(V·s) (std: {perr[0]*1e4:.2f})")
print(f"THETA = {THETA_fit:.4f} 1/V (std: {perr[1]:.4f})")
# --- 步骤6:验证拟合质量 ---
mu_pred = mu_model(Vgs_data, UO_fit, THETA_fit)
ss_res = np.sum((mu_eff - mu_pred)**2)
ss_tot = np.sum((mu_eff - np.mean(mu_eff))**2)
r_squared = 1 - ss_res / ss_tot
print(f"R^2 = {r_squared:.6f}")
# --- 步骤7:验证——给定Vgs=3.0V时的预测迁移率 ---
vgs_test = 3.0
mu_test = mu_model(vgs_test, UO_fit, THETA_fit)
print(f"\n验证: Vgs={vgs_test}V 时预测 mu_eff = {mu_test*1e4:.1f} cm^2/(V·s)")
print(f" 实测 mu_eff = {mu_eff[Vgs_data==vgs_test][0]*1e4:.1f} cm^2/(V·s)")
运行方式
pip install numpy scipy
python mobility_extraction.py
验证方法与通过条件
- 运行后输出表格应显示μeff随Vgs增大而单调下降(迁移率退化现象)。
- 拟合R²应大于0.99,表明SPICE模型能良好描述退化趋势。
- UO应在50~800 cm²/(V·s)合理范围,THETA应为正值(典型0.01~1 V⁻¹)。
- 验证点:Vgs=3.0V时模型预测值与实测提取值偏差应小于5%。
关键说明
Eeff采用简化近似(Vgs-Vth)/tox,实际工程中常用更精确的表达式考虑反型层电荷分布。若数据包含体效应,需将Vth替换为Vth(Vsb)。THETA参数直接对应SPICE Level 3模型中的迁移率退化系数,提取后可直接填入模型卡。