神经网络MOSFET模型泛化能力提升:数据准备与物理约束实战

发布时间:2026/10/5 8:24:00
神经网络MOSFET模型泛化能力提升:数据准备与物理约束实战 简介面向半导体器件建模与机器学习交叉领域论文提出一种具备良好泛化能力的神经网络MOSFET模型。该模型对超阈值与亚阈值区域分段建模并采用自适应遗传算法优化泛化能力使模型对训练样本集边界外的数据仍有较高精度可准确描述器件的直流特性与温度特性弥补传统集约模型在预测性上的不足。全文共1个PDF文件大小约1.02MB包含论文的完整内容目前已有140人学习/下载。读者可从中把握神经网络器件建模的关键技术如何划分工作区并设计子网络如何以自适应遗传算法自动调整参数以改善预测能力以及如何在Verilog-A平台整合分段模型供电路仿真器直接调用。这些内容对从事器件建模、AI辅助EDA开发的工程师与相关专业学生具有参考价值。1. 泛化能力才是神经网络MOSFET模型的生死线一个神经网络MOSFET模型想在工程上真正被用起来泛化能力是最卡的考核项。表面上看把VGS、VDS、VBS、温度作为输入、把漏极电流ID作为输出的回归网络只要训练数据足够多拟合精度总能调上去但实际模型要过的三关每一关都和泛化直接相关第一输入空间中没采过样的偏置区域不能出现突兀抖动第二数据范围边缘的预测必须保持合理物理趋势而不是指数爆炸第三换了温度、换了器件宽长比、甚至换了一组工艺角数据模型是否还能直接迁移。这三关过不去“拟合精度高”就只是一句漂亮话。本文按我在建模和仿真验证里落地这类方案的实践经验来写把数据准备、网络结构、物理约束、验证流程讲透CMOS设计工程师和PDK建模人员可以直接照着裁剪。2. 神经网络为什么适合学MOSFET先看懂电流的非线性脾气2.1 用神经网络替代紧凑模型的动机参数自由度与开发节奏传统SPICE模型走的是“物理方程参数提取”的路线。BSIM4、PSP这类紧凑模型有几十上百个参数提取一套能覆盖工艺角、温度、尺寸的模型参数往往要几个月的测量和拟合工作。而且当器件进入深亚微米之后迁移率退化、DIBL、沟道长度调制、自热效应互相耦合紧凑模型的方程为了追上实测数据不断打补丁方程越写越长参数之间出现相关性提取时经常会陷入局部最优。这时候用神经网络做行为模型本质上是用数据拟合替代物理方程拟合省掉了参数提取这一整套工序。比如给某个特殊器件结构做快速定制模型或者给功率MOSFET做开关行为拟合神经网络的自由度比紧凑模型大得多不用纠结具体某个物理机制该怎么用公式表达只要数据覆盖充分网络就能把I-V曲面学出来。但是要清楚一点神经网络MOSFET模型不是来取代BSIM进量产PDK的它更多是填补两类空档。一类是“等不起参数提取”的快速建模场景比如新工艺早期评估、特殊器件行为验证另一类是在现有紧凑模型覆盖不到的范围做辅助建模比如极低温、辐照退化这类非标准工作条件。知道了这个定位你就不会拿它和BSIM在物理可解释性上硬碰硬而是把精力放在“在数据覆盖范围内把行为学准、在数据覆盖范围外不失控”这件事上。2.2 MOSFET电流的分区结构亚阈值、线性、饱和区不是一个学习难度MOSFET的电流-电压关系有一个非常磨人的特点不同工作区的电流数值跨度可以达到7到8个数量级。亚阈值区栅压低于阈值电压电流按指数规律随VGS上升ID可能只有皮安到微安进入线性区和饱和区电流升到毫安级别此时器件行为由平方律或更复杂的短沟道模型支配。这几个区域不仅数值差得远变化趋势也不同亚阈值区是指数型增长线性区是近似抛物面饱和区又带着沟道长度调制效应缓慢爬升。如果用纯粹的线性尺度去训练网络模型几乎必然把所有注意力放在大电流的线性区和饱和区亚阈值区那点小电流在损失函数里的占比无限趋近于零网络学了跟没学一样。而亚阈值区的行为对低功耗设计、模拟开关的关断漏电又极其重要这正是MOSFET建模最敏感的部分之一。还有反向传输特性也就是VDS变化对阈值电压的反馈短沟道器件里这种耦合效应让I-V曲面出现明显的非对称弯折网络如果只在稀疏网格上采样很容易把曲面的“腰身”学丢。所以做数据准备时第一原则就是按区域分开处理动态范围这比后面调网络结构的影响大得多。2.3 黑盒模型的边界风险插值可信、外推失控神经网络本质是个万能近似器这既是卖点也是隐患。在训练数据覆盖的凸包内部网络通过足够多的隐层节点和充分的训练能把I-V曲面拟合得很好这个区域内的插值行为基本可信。但出了数据范围网络的预测就变成没有物理约束的数学外推了。比如训练数据里VDS最大只到1.8V你现在要它预测2.5V下的电流MLP的激活函数和外推机制会产生什么形状完全取决于网络内部权重可能冲上天也可能翻了正负没有任何物理规律兜底。这不是玄学而是很多神经网络MOSFET模型项目翻车的重灾区。我见过有团队把网络在训练区间内测到误差小于1%结果一放进电路仿真器做瞬态某些节点电压超出了训练范围电流直接算出一个离谱数值仿真直接崩掉。所以后文里所有关于泛化的技术手段本质上都是在做一件事要么把训练数据覆盖范围撑到实际应用范围之外要么给网络套上物理约束或基线模型作为安全带。2.4 网络的输入输出到底该选什么常见的神经网络MOSFET模型输入是四个物理量VGS、VDS、VBS和温度T有特殊需求时还会把沟道宽度W和沟道长度L编进去输出是漏极电流ID。但这里有一个关键选择直接回归ID还是回归log(ID)。前面说了ID跨越多个数量级直接回归的话小电流区域完全失真所以我会选择把输出目标变换到对数域网络学的是“给定偏置下电流的数量级和精细变化”这样相对误差变成了网络的自然损失小电流和大电流在训练过程中得到同等程度的关注。输入侧同样要做好归一化。电压量纲是伏特温度是开尔文量纲不同会造成网络初始梯度失衡。常见做法是把各输入分别做线性归一化到0到1区间温度和电压分开标定尺度。这里我不建议用全局标准化强行把所有输入压缩到同一均值和方差因为MOSFET模型后续要配合电路仿真器的偏置范围使用保留输入空间的物理意义对排查问题更友好。3. 训练数据准备泛化模型的第一个分水岭3.1 数据覆盖范围先决定模型能用在哪再决定怎么采数据拿到一个神经网络MOSFET建模任务我不会上来就写网络结构而是先画一个偏置空间地图。横轴是VDS纵轴是VGS体偏置VBS和温度T作为分层维度。然后问自己一个问题这个模型最终要服务什么电路场景场景里可能出现的最大电压、最小电压、温度范围是多少。这个问题的答案直接决定数据采样的边界而且我会刻意让数据边界比实际应用范围再宽出10%到20%。比如电路里栅压最高1.8V那训练数据我至少采到2.0V。多采的这些边界数据就是给外推失控上的一道保险有了它网络在应用范围边缘至少还是插值而不是外推。数据来源一般是两条路。第一条路是硅片实测用半导体参数分析仪扫I-V曲线数据最真实但成本高、样本量有限而且测量本身带噪声第二条路是TCAD器件仿真可以批量生成不同尺寸、不同温度、不同工艺角的数据覆盖范围广但模型学到的规律受限于TCAD校准的准确性。实际项目里通常是两条腿走路用TCAD数据做主体训练集用实测数据做验证和修正。这一步没有捷径采样的网格密度直接决定模型能学到多少细节。3.2 电压归一化与电流对数化先处理数量级再谈训练下面这段代码是我处理数据时的标准动作。假设从测量或TCAD导出的数据已经整理成一个CSV每一行是一个偏置点包含VGS、VDS、VBS、温度T和对应的漏极电流ID。import numpy as np import pandas as pd df pd.read_csv(mosfet_iv_data.csv) # 期望列名: vgs, vds, vbs, temp, id_value # 1) 电流做 log10 变换同时加一个下限保护避免 log(0) 或负电流 df[log_id] np.log10(df[id_value].clip(lower1e-15)) # 2) 电压和温度做线性归一化范围根据实际应用场景预留 10%-20% 余量 vgs_min, vgs_max -0.4, 2.0 # 实际使用上限 1.8V这里扩到 2.0V vds_min, vds_max 0.0, 2.0 # 实际使用上限 1.8V vbs_min, vbs_max -1.0, 0.0 temp_min, temp_max -40.0, 180.0 df[vgs_n] (df[vgs] - vgs_min) / (vgs_max - vgs_min) df[vds_n] (df[vds] - vds_min) / (vds_max - vds_min) df[vbs_n] (df[vbs] - vbs_min) / (vbs_max - vbs_min) df[temp_n] (df[temp] - temp_min) / (temp_max - temp_min) # 3) 打上区域标签后面分层采样会用到 # 简单地按 VGS 和 VDS 的位置划分三个区 conditions [ (df[vgs] 0.4), # 亚阈值区 ((df[vgs] 0.4) (df[vds] 0.3)), # 线性区 ((df[vgs] 0.4) (df[vds] 0.3)) # 饱和区 ] region_labels [subthreshold, linear, saturation] df[region] np.select(conditions, region_labels, defaultsaturation) print(df.groupby(region).size())代码的逻辑分三块。第一步的clip是必须要做的测量数据在小电流区域往往有抖动偶尔会出现负电流读数直接取对数会产生NaNclip到1e-15相当于把这些读数压到噪声底以下保住数据完整性。第二步的归一化范围我故意比实际使用范围多留了余量这对应前面说的边界扩展原则。第三步的区域划分是为了后面采样时做分层控制不要让亚阈值区数据被大电流区淹没。这一步处理完你会看到亚阈值区的数据点数通常会少一个数量级以上。如果直接用这个数据去训练网络很容易偏向电流大的区域。所以做训练集之前还要加一道工序亚阈值区过采样或者叫区域重采样。我一般会把亚阈值区的样本按比例复制或者用插值补密保证最终训练集里三个区域的比例大致在2:1:1左右。这个比例没有绝对标准但至少不要让最少的区域占比低于15%否则模型基本学不到那个区域的特征。3.3 训练集、验证集、外推集的切分不能用随机划分糊弄很多人在这一步踩了大坑。拿过来数据用随机切分比如80%训练20%验证看起来没问题但MOSFET数据有一个特点同一条I-V扫描曲线上的点是强相关的同一个温度下的所有扫描曲线也强相关。如果随机打乱了切分验证集里会出现大量与训练样本“同源”的数据点验证误差会非常好看可一旦把模型投到没见过的温度点或偏置组合上立即原形毕露。正确的做法是按物理维度分组切分。温度是一个最典型的维度训练集里放27°C、50°C、125°C的数据验证集放85°C的数据这样验证集里的温度点是训练时完全没见过的测出来的才是真正的场景泛化能力。同样尺寸参数如果进了输入空间也要按不同W和L分组切分而不是让同一个器件的不同偏置点同时出现在训练集和验证集里。用sklearn的GroupShuffleSplit可以实现这种切分group参数传温度编号或者器件编号。这个细节太容易被跳过但恰恰是决定模型能不能用的关键一步。3.4 偏置空间的采样密度陷阱继续补一个数据采样中容易翻车的细节VGS和VDS两个方向上的步进选择。在饱和区I-V曲面变化相对平缓VDS方向可以粗采200mV一档足够但在VDS接近0的线性区电流随VDS的变化非常陡尤其是VGS比较高的时候200mV一档会把线性区的曲面形状完全学丢模型出来的跨导和输出电导曲线全是锯齿。我一般会在VDS小于0.4V的范围内把步进加密到50mV甚至20mV。VGS方向则在整个范围内保持均匀密采50mV一档因为亚阈值区的斜率对VGS极其敏感采样太疏的话指数斜率会失真。用TCAD仿真生成数据时这些是免费的但用实测数据扫点时就要规划好扫描时间通常的做法是先粗扫全区域找到敏感边界再在边界附近补密。4. 网络结构与训练策略把回归器训练成能用的行为模型4.1 前馈网络是稳态I-V建模的主流CNN和LSTM各有适用边界我见过有人上来就用LSTM神经网络去建模MOSFET静态I-V特性理由是“这样能学到序列关系”。这是个典型的过度设计。MOSFET的直流I-V特性是纯代数映射当前时刻的电流只取决于当前时刻的偏置电压不存在时间记忆前馈神经网络就足够了。具体地说用标准的BP反向传播训练一个三到五层的全连接网络每一层32到64个神经元激活函数选SiLU或ReLU输出层不加激活这就是我常用的结构。为什么用SiLU不用ReLUReLU在0点附近有硬拐角会让I-V曲面的导数在某个隐藏层输出过零处出现细微折痕SiLU处处光滑对导数连续性友好得多。那个“一维卷积神经网络”的思路也不是完全没道理如果把VDS扫描看作一个序列用一维卷积提取相邻工作点之间的局部变化确实能增强模型对I-V曲线平滑性的建模能力。但代价是网络结构复杂了训练数据需求量也更大在建模任务里除非数据量特别大、且你有明确理由相信局部关系重要否则前馈网络仍然是性价比最高的起点。至于LSTM或RNN这类循环结构真正的用武之地是非准静态器件建模比如射频大信号激励下的电荷输运延迟或者功率器件开关瞬态里的电流过冲现象那是动态行为模型领域和标题里这个稳态I-V模型不是一个赛道不能混为一谈。4.2 网络拓扑与训练超参数具体配置和代码import torch import torch.nn as nn class MosfetNN(nn.Module): 输入: [vgs_n, vds_n, vbs_n, temp_n] 归一化到 0~1 输出: log10(ID)单位安培 def __init__(self, n_input4, n_hidden64, n_layer4): super().__init__() layers [] in_dim n_input for _ in range(n_layer): layers.append(nn.Linear(in_dim, n_hidden)) layers.append(nn.SiLU()) layers.append(nn.Dropout(0.02)) # 轻量dropout防过拟合 in_dim n_hidden layers.append(nn.Linear(n_hidden, 1)) self.net nn.Sequential(*layers) def forward(self, x): return self.net(x) model MosfetNN(n_input4, n_hidden64, n_layer4) optimizer torch.optim.AdamW(model.parameters(), lr1e-3, weight_decay1e-5)这个结构里有几个参数值得细说。n_hidden取64是我在多数器件建模任务里的起点如果数据量只有几千条32也够如果数据量几万条可以考虑调成128。n_layer四层是我测试过适合I-V曲面复杂度的深度太浅了学不动VBS和温度带来的交叉耦合效应太深了容易在数据稀疏区域过拟合。Dropout(0.02)只加一个非常小的值它的作用不是常规意义的防止过拟合而是给网络权重一个微小的随机扰动避免几个隐层节点学出一模一样的特征。如果你想控制随机性记得固定随机种子否则模型对比和复现会成为一场灾难。4.3 损失函数相对误差是底线物理约束是加分项训练时损失函数的设计权重超过网络结构的选择。如果直接在log电流域算MSE损失函数等价于对相对误差做L2惩罚这是底线配置。但光有这条网络有可能在拟合精度的迫使下把I-V曲面学出局部褶皱。为了压制这个问题我常年在损失里额外加一项物理约束栅压跨导必须非负输出电导必须非负。实现方式是在训练循环里对预测值做有限差分检查梯度方向把违反物理趋势的部分作为额外损失加回去。def physics_penalty(model, x, h1e-3): x: 归一化输入张量(batch, 4) 在 vgs 方向和 vds 方向分别做中心差分 要求 d(log_id)/d(vgs) 0 且 d(log_id)/d(vds) 0 返回值是违背物理单调性的惩罚标量 # vgs 方向差分 x_gs_p x.clone(); x_gs_p[:, 0] x_gs_p[:, 0] h x_gs_m x.clone(); x_gs_m[:, 0] x_gs_m[:, 0] - h d_gs (model(x_gs_p) - model(x_gs_m)).squeeze() / (2 * h) # vds 方向差分 x_ds_p x.clone(); x_ds_p[:, 1] x_ds_p[:, 1] h x_ds_m x.clone(); x_ds_m[:, 1] x_ds_m[:, 1] - h d_ds (model(x_ds_p) - model(x_ds_m)).squeeze() / (2 * h) # 只惩罚负梯度用 relu 把负值筛出来 pen torch.relu(-d_gs).mean() torch.relu(-d_ds).mean() return pen这段代码在每次前向传播计算损失时额外执行一次。h的取值要小心输入已经归一化到0到1h1e-3对应大约2mV的电压扰动足够计算数值导数又不会因为浮点精度产生噪声。torch.relu(-d_gs)的意思是如果栅压方向的导数本来就大于0这一项就是0完全不影响主损失如果导数小于0就按负值的绝对量惩罚。输出电导方向同理。加上这个惩罚之后模型在偏置空间里学出来的曲面会更加平滑gm和gds曲线不会出现刺突放进电路仿真器之后的收敛性会好非常多。4.4 训练监控不要盯着训练损失看训练过程中我最关注的两个量一个是验证集上的log域MSE另一个是验证集上的最大相对误差。最大相对误差比平均误差更能暴露问题如果某个偏置点电流被预测偏差超过50%哪怕平均误差只有2%这个模型在敏感电路里仍然可能产生明显的系统偏差。每训练50个epoch打印一次这两个指标同时把当前最优模型保存下来。早停策略也很简单验证损失连续200个epoch没有改善就停。不要等训练集损失收敛到极小值再停那是过拟合的经典信号。5. 神经网络MOSFET模型的避坑记录现象、原因、解法5.1 亚阈值区拟合失效小电流区域被“一条直线”吞掉现象训练完成后把预测的log(ID)和实测值叠加到半对数坐标上饱和区和线性区几乎完美重合但亚阈值区预测变成一条斜率很平的直线比实测低了或高了几个数量级。原因这是两个问题叠加的结果。第一数据采集中亚阈值区点数占比过低网络在训练时对这个区域的样本权重天然就小第二损失函数如果用了线性电流域的MSE亚阈值区电流相对大电流来说数值太小损失占比趋近于零网络完全没动力去学这个区域。解决前端的办法是分层采样把亚阈值区数据过采让它在训练集里占到20%到30%损失函数必须在log电流域计算。如果这两个都做了还不行检查一下亚阈值区的VGS采样步长是不是太疏指数斜率对栅压极度敏感50mV一档基本是刚需。5.2 外推失控电压超出训练范围后电流冲上天现象训练时VGS最大到1.8V模型在1.8V以下一切正常。电路仿真里某个节点电压被电容耦合抬到2.2V模型算出来的漏极电流飙升了1000倍直接把仿真器干崩。原因前馈网络在训练数据范围之外的行为完全由权重和激活函数的外推特性决定没有任何物理机制限制电流不能无限增长。模型的“泛化”只在数据覆盖范围内有意义出了边界它就是数学外推不是物理外推。解决把数据采集范围主动扩展到实际应用范围之外10%到20%这是最有效的手段。另一个兜底方案是在网络输出层加软饱和函数或者钳位比如预测值超过某个阈值后强制压缩增长率。但钳位是后处理手段治标不治本优先还是扩大数据覆盖。我还会特意在训练集里加入几个远离正常工作区的边界点比如VDS为0、VGS远大于VTH的点相当于告诉网络“边缘长什么样”。5.3 导数锯齿化ID误差很小但gm和gds不能看现象模型输出的ID曲线拟合得挺漂亮相对误差不到3%但是对VGS求导得到的跨导gm曲线出现周期性锯齿直接导致后续AC小信号仿真结果不可信。原因神经网络的拟合精度通常只约束函数值本身没有约束导数。如果训练数据里带了噪声、或者说loss里没有梯度平滑项网络完全可以在函数值很接近的情况下学出高频抖动的曲面。解决在loss里加前面提到的物理梯度惩罚项同时验证环节不能只看ID误差必须把预测的gm和gds算出来画一遍看是否平滑。还有一招是用中值滤波或者Savitzky-Golay滤波对实测电流数据先做平滑预处理避免把测量噪声当特征学进去。这属于数据处理习惯但确实能显著减少最后的导数毛刺。5.4 验证集切分错误导致泛化虚高现象模型在验证集上表现极好相对误差小于2%但投到另一个温度点的实测数据上误差直接飙到15%。原因我之前就栽在这上面过——随机切分数据时同一个温度条件下的I-V曲线同时出现在训练集和验证集里验证集对于网络来说等于开卷考试。它验证的不是泛化能力只是记忆能力。解决按温度、器件尺寸这类物理维度做分组切分。训练集放27、50、125°C验证集放85°C或者按W和L分。如果温度点足够多就一次性切出两个完全不同维度的验证集一个是温度内插验证一个是温度外推验证。后者能更真实地反映模型的场景泛化能力哪怕它残酷一些也比带着虚高指标上线后翻车强。6. 泛化能力进阶三个落点手段让模型真正可用6.1 残差模型物理基线加神经网络修正想让神经网络在更大范围内保持合理一个非常有效的工程手段是残差建模。先用一个粗糙的物理模型或经验公式算出一个基线电流然后用神经网络去学“真实电流和基线之间的偏差”。由于基线已经消灭了大尺度非线性趋势网络只需要学残差这个较平滑的函数外推时即使网络残差失控整体输出也会被基线拉回合理的物理数量级。我在实际项目中用过一个简单平方律基线很快残差网络做到跨温区和宽宽高比范围内相对误差控制在5%以内而直接用纯黑盒网络则很难同时保住两端。6.2 温度和尺寸的归一化处理让同一个网络适配不同温度和器件尺寸输入空间里除了电压偏置还要放进温度T、宽W和长L。这会带来一个问题W和L的量级和电压完全不同网络需要更多容量去吸收这些维度的影响。常见做法是把ID先按W/L归一化网络学单位宽长比的电流用的时候再把几何因子乘回去。温度维度则放在输入里让网络学规律但温度要采用开尔文的物理坐标避免负摄氏度的截断问题。做完这一步模型才能在“常用器件尺寸典型结温”的范围里谈迁移能力。6.3 验证矩阵用三个维度给模型下结论验证环节才是泛化能力讨论的终点。我每做完一个神经网络MOSFET模型会在交付之前跑一套固定的验证矩阵第一维是偏置空间验证在训练覆盖范围内检查相对误差分布和最大误差点第二维是温度外推验证专门挑没训练过的温度点看偏差第三维是导数验证把gm和gds曲线画出来检查平滑性和单调性。只有三组验证同时通过模型才敢说具备工程意义上的良好泛化能力。这几年做下来我最深的教训是泛化能力不是靠网络结构变复杂或者训练更多轮次换来的它来自数据覆盖的边界设计、损失函数里的物理约束和验证方法是否足够诚实。把这三样做扎实哪怕网络结构朴素一点也能扛住电路仿真器的折腾。希望你在这个方向上少走我走绕过的弯路做出来的模型第一天就能在真实场景里站得住脚。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询