7.8 KiB
7.8 KiB
TECHNICAL_MANIFEST.md (技術核心清單)
本文件詳述基於開源半導體元件模擬軟體 DEVSIM 進行增量開發與本地擴充的技術棧、公開 API 與模組相依性關係。
1. 本地擴充技術棧 (Extensions Tech Stack)
基於 demsim (DEVSIM) 版本/分支
- DEVSIM 版本:v2.0 (基於
devsim-dev子目錄,主分支 HEAD Commit:09a1e744e640ba028458bb5812898fd53527a7fb) - 本地 C++ 後端修改:
- 修改
EquationHolder.hh、EquationHolder.cc與EquationCommands.cc,在devsim.equation(...)的 Python API 介面中新增並橋接了min_error參數,以便在解連續方程式與電位方程式時,動態覆寫底層 C++ 引擎中硬編碼的收斂下限(預設值為1.0e-10)。
- 修改
本地新增核心依賴套件
devsim:本地重新編譯並打包為獨立 Wheel (devsim-2.10.0-cp39-abi3-linux_x86_64.whl) 的客製化版本。gmsh(v4.15.2):用於 2D/3D 元件基礎網格剖分與自適應細化的 C++ 核心橋接 API。scipy(v1.17.1):於動態細化插值模組中,透過scipy.interpolate.griddata進行舊網格變數(Potential, Electrons, Holes)至新細化網格的空間插值。numpy(v2.4.6):用於執行高效能解析摻雜分佈 (PCAD) 的矩陣及陣列運算。matplotlib(v3.10.9):用於輸出 IV 曲線、二維電位分佈與載流子分佈的視覺化圖表。mkl/tbb/intel-openmp(2026.0.0):提供底層 PARDISO 平行直接稀疏矩陣求解器(OMP_NUM_THREADS = 4)。
2. 本地擴充公共介面 (Public API Manifest)
模組一:解析摻雜配置 (Process-Step Doping / PCAD)
檔案路徑:physics/pcad_physics.py
- 公共介面:
get_implant_params(dopant: str, energy_kev: float) -> Tuple[float, float]:從IMPLANT_DB(Boron, Phosphorus, Arsenic)中,根據注入能量(keV)插值計算離子注入投影射程R_p與標準差 $\Delta R_p$(單位:cm)。get_diffusion_coefficient(dopant: str, temp_c: float) -> float:根據 Arrhenius 公式與DIFFUSION_DB參數,計算該雜質在溫度temp_c(°C)下的熱擴散係數 $D$(單位:$\text{cm}^2/\text{s}$)。
檔案路徑:devices/LDMOS/device_pcad_config.py & devices/Triac_rp/device_pcad_config.py
- 公共介面:
resolve_steps() -> List[dict]:解析製程步驟清單(包含離子注入劑量、能量、熱退火時間、溫度與遮罩範圍),計算出各步驟對應的 Gaussian 分佈峰值濃度(peak)、垂直標準差(vdiff,包含離子注入與熱擴散累計效應)與水平標準差(hdiff,考量側向擴散比例)。apply_pcad_doping_2d(device: str, region: str) -> None:在 DEVSIM 中建立各製程步驟的解析掺雜 node_model(利用 erf/erfc 表達式),並合成 Silicon 區域中的Donors、Acceptors、NetDoping與LogNetDoping模型。get_pcad_doping_val_2d(x: np.ndarray, y: np.ndarray) -> np.ndarray:在 NumPy 陣列層面上,解析並計算二維空間座標點(x, y)處的淨摻雜濃度值(用於背景網格生成)。
模組二:物理模型建構 (Physics Model Generator)
檔案路徑:physics/new_physics.py
- 公共介面:
CreateAroraMobilityLF(device: str, region: str) -> None:建立溫度相依的 Arora 低電場遷移率模型。CreateHFMobility(device: str, region: str, mu_n: str, mu_p: str, Jn: str, Jp: str) -> None:建立飽和漂移速度高電場遷移率模型。CreateAvalancheGeneration(device: str, region: str, Jn: str, Jp: str) -> str:依據 Chynoweth 公式建立二維雪崩電離電阻邊緣模型AvalancheGeneration及其偏微分。CreateBTBTGeneration(device: str, region: str) -> str:依據 Hurkx 帶帶穿隧公式建立BTBTGeneration及其偏微分。
模組三:自適應背景網格生成 (Mesh Generation)
檔案路徑:generate_mesh_2d.py
- 公共介面:
create_ldmos_mesh(mesh_out: str, bgmesh_pos: str) -> None:建立 LDMOS 2D Gmsh 網格,定義閘極、閘氧化層、側邊包封等結構。create_triac_mesh(y_box_max: float, y_medium_max: float, mesh_out: str, bgmesh_pos: str) -> None:建立 TRIAC 2D Gmsh 網格,定義其特定的 via 開孔結構與接觸電極。create_mesh(...):入口函式,根據幾何設定與 background mesh (bgmesh_pos) 進行 Gmsh 基礎網格生成。
檔案路徑:generate_analytical_bgmesh.py
- 公共介面:
generate_analytical_bgmesh() -> None:讀取基礎粗網格,利用摻雜梯度有限差分值計算局部網格長度lc_val,於 PN 接面與 LDMOS 表面通道(考慮 FOX Recession)處進行高密度重劃,並將結果輸出為 Gmsh 背景網格大小場定義檔 (device_bgmesh.pos)。
模組四:動態網格重劃與解耦求解 (Dynamic Refinement & Decoupled Solver)
檔案路徑:dynamic_refine.py
- 公共介面:
setup_physics_for_device(device: str, is_avalanche_enabled: bool, is_btbt_enabled: bool) -> None:在新網格元件上初始化所有物理常數、溶液變數、遷移率、連續方程式及可選的雪崩/BTBT 生成率邊緣模型。solve_decoupled_carriers(device_name: str, opts: dict) -> None:在網格細化後,先關閉方程式間的耦合,單獨求解載子方程以穩定極限空乏區的初值。enforce_contact_boundary_conditions(device_name: str) -> None:插值後,重新強制對歐姆接觸介面施加電中性邊界條件。refine_and_interpolate(device_old: str, v_bias: float, is_avalanche_enabled: bool, is_btbt_enabled: bool, time_log: str, out_dir: str) -> Tuple[str, dict]:高壓動態網格重劃核心。載入細網格,將舊網格的電勢與載子濃度(在 log-space/linear-space 下)插值到新網格;接著執行 Stage 1log_damp解耦鬆弛與 Stage 2positive載子耦合求解,完成收斂重建並返回新元件名稱。
模組五:MOSFET 特性測試與多溫度調度 (MOSFET Characterization & Sweep)
檔案路徑:mos_sweep.py
- 公共介面:
ramp_gate_bias(device: str, target_vgs: float) -> None:將閘極偏壓V_{gs}從 0V 自適應階梯式升壓至目標電壓。sweep_vds(device: str, vgs: float, vds_max: float) -> None:在固定V_{gs}下自適應掃描V_{ds}並儲存 Ids-Vds 數據。
檔案路徑:mos_transfer_single_temp.py
- 公共介面:
robust_solve(max_iters: int) -> None:多溫度轉移特性掃描的雙階段收斂核心。首階段採用阻尼電位更新log_damp,次階段在收斂邊界內採用positive強制正載流子更新,並使用本地 C++ 的min_error改進低溫($-40^\circ\text{C}$)空乏區的數值剛性。
3. 模組相依性 (Dependency Graph)
- 製程摻雜分析與網格生成相依:
generate_analytical_bgmesh.py-> 依賴devices/[dev]/device_pcad_config.py-> 依賴physics/pcad_physics.pygenerate_mesh_2d.py-> 讀取device_config.py與device_bgmesh.pos,呼叫gmshAPIs。
- 動態網格細化與求解相依:
dynamic_refine.py-> 依賴physics/new_physics.py與generate_mesh_2d.py;調用scipy.interpolate進行網格插值;控制devsim的元件變數重建。resume_run.py(高壓掃描接續) -> 依賴dynamic_refine.py的refine_and_interpolate方法以在偏壓增量過程中執行重劃;載入pickleCheckpoint 檔案。
- 多溫度轉移特性掃描相依:
mos_transfer_temp_sweep.py-> 以子進程(Subprocess)模式調用mos_transfer_single_temp.py,以保證 DEVSIM 在單次執行完畢後釋放記憶體,避免 Intel MKL 記憶體洩漏。mos_transfer_single_temp.py-> 依賴physics/new_physics.py,調用devsim客製化 C++ 版本的min_error收斂限控制。