一.模拟及数模混合芯片的校准
1.什么是校准?
一般来说,模拟芯片和数模混合芯片都需要进行某些基准参数的校准(Trim),常见的校准参数有参考电压(Vref / Bandgap)、运放 / 比较器的输入失调电压 Vos、时钟 / 频率类参数、电流 / 驱动类参数、ADC/DAC 类参数。
2.为什么需要校准?
因为晶圆的工艺制造有偏差,每一颗芯片的这些参数都不一样,不 Trim 达不到精度要求。具体原因:
- 工艺离散性:电阻、电容、MOS 阈值电压、迁移率,晶圆与晶圆、批次与批次都不一样。
- 温度与电压漂移:模拟电路对 PVT 极其敏感,不校准无法全温区、全电压工作。
- 精度要求越来越高:高精度 ADC/DAC、电源管理、传感器接口、射频前端,精度直接决定产品能不能用。
- 良率:如果不 Trim,良率会非常低,成本爆炸。
3.校准(Trim)方式有哪些?
按实现方式分三大类:
① 激光 Trim(Laser Trim)
- 激光 Trim(Laser Trim)是一种在芯片制造后期,通过激光束精确切断或修改晶圆上特定金属或电阻连接,从而微调电路参数的工艺技术。Laser Trim 所针对的物理结构是铝条(AI)或者薄膜电阻(hin‑Film Resistor)。
- 特点:精度高、一次性、不可改、成本高。
② 熔丝 / 电熔丝 Trim(Fuse / Efuse)
- 熔丝/反熔丝 Trim 是一种通过电学信号(而非激光)永久改变芯片内部连接状态,从而微调电路参数的工艺技术。它属于“电学修调”(Electrical Trim)。一般情况下,可分为:金属熔丝(Metal Fuse) 或 多晶硅熔丝(Poly Fuse),在芯片表面有一层裸露或半裸露的金属/多晶硅细线,通过测试电路去施加电流从而将熔丝烧断,实现Trim。
- eFuse(电熔丝) 或 反熔丝(Anti-fuse) 集成在芯片内部,通常是一个特殊的晶体管结构或电容结构,通过芯片内部的逻辑电路(如寄存器、DAC)产生一个编程电压,击穿介质层(反熔丝)或改变晶体管状态(eFuse),逻辑控制,需要芯片上电工作,通过数字接口(如I2C)写入指令来触发烧断。
- 特点: 一次性可编程、成本低、面积小、广泛用于 Bandgap、Vos、频率校准。
③ 数字可编程 Trim(寄存器控制)
- 数字可编程 Trim(寄存器控制)是一种通过数字逻辑电路(而非物理烧断)来微调芯片参数的修调技术。它利用芯片内部的寄存器(Register)存储修调码(Trim Code),通过控制开关阵列或DAC来动态调整电路参数。修调结果(一串二进制码)存储在芯片内部的非易失性存储器(如Flash、OTP)或易失性寄存器中。
- 特点: 可多次改写、可在线校准、动态校准、现代 ADC/DAC、PMIC、高速接口主流方案、常常配合EFUSE一起使用,相当于在线Trim,通过寄存器找到最佳的Trimcode之后,将其装载至EFUSE上从而实现永久烧录。
二.基本校准参数之带隙基准电压(Vbg)、基准电流(Iref)、偏置电流(Ibias)
在集成电路中,电压基准源是最基础、最重要的模块,用于为芯片中其它电路提供基准电压和基准电流。特别是在高精度ADC/DAC中,高精度电压基准源是设计重点和难点。Bandgap带隙基准源是目前最常用的电路结构。
1.带隙基准源(bandgap)
- 带隙基准源利用双极型晶体管(BJT)的两种温度特性生成稳定电压。BJT的基极-发射极电压VBE具有负温度系数(约-2mV/°C),而两个工作在不同电流密度下的BJT产生的ΔVBE(= (kT/q)·ln(N))具有正温度系数。通过运放负反馈电路,将按比例放大后的ΔVBE与VBE相加:。精心设计比例系数M,使两者的温度系数相互抵消,从而在宽温范围内输出约1.2V的低漂移基准电压。这样即便温度如何变化,芯片始终能产生一个稳定的电压,这就是带隙基准电压,简称Vbg。
2.基准电流源(电流镜)
- 基准电流Iref是通过带隙基准源输出的电压Vbg通过一个电阻Rs产生的;而基准电流源通过电流镜将参考电流 Iref 精确复制到其他支路,为电路提供多路偏置电流,这就是偏置电流Ibias。利用 Rs 和对称支路的负反馈,抑制 PVT 变化对电流的影响,使输出电流稳定,共源共栅结构提升输出阻抗,让电流源对负载电压变化不敏感,更接近理想电流源。
三.基本校准参数之振荡器频率(oscillator frequency)
1.内部振荡器(Oscillator)
在混合信号芯片中,内部振荡器(Oscillator)通常基于 RC 或环形振荡器架构,频率范围主要集中在 32 kHz 至 50 MHz 之间。低频(如 32 kHz)主要用于低功耗待机、RTC 及看门狗等常开模块,以最小化功耗;中高频(如 4–16 MHz,最高可达百 MHz 级)则用于驱动数字逻辑、ADC/DAC 采样及时钟倍频(PLL)的参考源。选择该频段的核心考量是在工艺成本、启动速度、功耗与精度之间取得平衡,RC 振荡器因面积小、功耗低而成为主流,但其频率和稳定性会受 PVT(工艺、电压、温度)变化影响。
2.时钟分频
时钟分发采用多域分层分频架构,而非单一频率全局驱动。主振荡器输出首先进入时钟生成单元,通过整数分频(二进制计数器,如 ÷2/÷4)、分数分频(用于 UART 等精确波特率)及时钟门控技术,生成多个独立的时钟域。例如,将 16 MHz 主频分频为 8 MHz(CPU 核)、4 MHz(外设总线)、1 MHz(ADC 采样)及 32 kHz(休眠域)。这种架构配合跨时钟域(CDC)同步机制,既满足了高速数字逻辑的吞吐需求,又隔离了高频噪声对敏感模拟模块的干扰,是实现低功耗与高可靠性设计的关键。
四.纯模拟参数的Trim(LDO的输出电压)
1.LDO的Trim
我们在选择LDO时,一般会选择它的输出电压,如1.8V、2.5V、3.3V等,那么这些不同输出电压的LDO是怎么生产出来的呢?可以肯定的是,它们肯定不是设计成不同的晶圆去生产,那样太麻烦了。实际上它们来自于同一颗die,在CP阶段,它们就被Trm成不同的电压版本了。LDO的Trim和上面提到的Vbg、Iref等参数不同,对于LDO本身来讲,大多数 LDO 本身“不一定要有独立 Vbg”,但在混合信号芯片里,LDO 几乎一定“借用”芯片里的 Bandgap 作为参考。
2.LDO如何实现Trim
此处我们讲的是单独的LDO器件,我们都知道,LDO的Vout是根据内部的参考电压Vref通过负反馈调节,再通过分压电阻去分到一个我们想要的电压,通常来讲,我们在CP阶段所Trim的就是每颗die的分压电阻,通过将电阻trim成不同的阻值,从而将LDO Trim成不同的电压版本。
3.为什么不用Trim Vref?
在单独的 LDO 芯片中,由于片内通常仅采用二极管、电阻或简易 MOS 堆叠等方式生成一个低成本、温漂较大的“粗略参考电压(Vref)”,而非高精度的带隙基准,因此直接在 Vref 产生电路上进行 Trim 不仅面积与功耗代价高,且无法从根本上改善其固有的温度漂移特性;相比之下,反馈分压电阻本身已作为输出电压设定的必要元件存在,利用其进行 Trim 不仅成本低、对噪声与 PSRR 无负面影响,还能同时补偿 Vref 绝对值偏差与误差放大器的 Offset,从而在量产中以最小的硬件开销最有效地保证了 datasheet 中规定的输出电压精度。
五.校准参数常见的算法
1.查表法(区间代入法)
研发在前期通过少量晶圆的大样本测试,建立了 “目标参数(如 Vout / Freq) vs 测试值 vs Trim Code” 的对应关系,并将其抽象为若干电压/电阻/频率区间或分段函数,量产测试时只需测出当前 DUT 的实际值,落入哪个区间,就直接映射到对应的 Trim Code,从而跳过复杂的逐点拟合或迭代搜索,在保证规格的前提下最大化测试效率与稳定性。代码如下:
if((gb_vfb[i]>=1.700)&&(gb_vfb[i]<1.782)) {t3[i]=0;t2[i]=1;t1[i]=1;t0[i]=1;}
if((gb_vfb[i]>=1.782)&&(gb_vfb[i]<1.815)) {t3[i]=0;t2[i]=1;t1[i]=1;t0[i]=0;}
if((gb_vfb[i]>=1.815)&&(gb_vfb[i]<1.848)) {t3[i]=0;t2[i]=1;t1[i]=0;t0[i]=1;}
if((gb_vfb[i]>=1.848)&&(gb_vfb[i]<1.883)) {t3[i]=0;t2[i]=1;t1[i]=0;t0[i]=0;}
if((gb_vfb[i]>=1.883)&&(gb_vfb[i]<1.918)) {t3[i]=0;t2[i]=0;t1[i]=1;t0[i]=1;}
if((gb_vfb[i]>=1.918)&&(gb_vfb[i]<1.951)) {t3[i]=0;t2[i]=0;t1[i]=1;t0[i]=0;}
if((gb_vfb[i]>=1.951)&&(gb_vfb[i]<1.984)) {t3[i]=0;t2[i]=0;t1[i]=0;t0[i]=1;}
if((gb_vfb[i]>=1.984)&&(gb_vfb[i]<2.016)) {t3[i]=0;t2[i]=0;t1[i]=0;t0[i]=0;}
if((gb_vfb[i]>=2.016)&&(gb_vfb[i]<2.048)) {t3[i]=1;t2[i]=0;t1[i]=0;t0[i]=0;}
if((gb_vfb[i]>=2.048)&&(gb_vfb[i]<2.081)) {t3[i]=1;t2[i]=0;t1[i]=0;t0[i]=1;}
if((gb_vfb[i]>=2.081)&&(gb_vfb[i]<2.114)) {t3[i]=1;t2[i]=0;t1[i]=1;t0[i]=0;}
if((gb_vfb[i]>=2.114)&&(gb_vfb[i]<2.149)) {t3[i]=1;t2[i]=0;t1[i]=1;t0[i]=1;}
if((gb_vfb[i]>=2.149)&&(gb_vfb[i]<2.184)) {t3[i]=1;t2[i]=1;t1[i]=0;t0[i]=0;}
if((gb_vfb[i]>=2.184)&&(gb_vfb[i]<2.217)) {t3[i]=1;t2[i]=1;t1[i]=0;t0[i]=1;}
if((gb_vfb[i]>=2.217)&&(gb_vfb[i]<2.250)) {t3[i]=1;t2[i]=1;t1[i]=1;t0[i]=0;}
if((gb_vfb[i]>=2.250)&&(gb_vfb[i]<2.400)) {t3[i]=1;t2[i]=1;t1[i]=1;t0[i]=1;}
2.公式法
研发通过前期测试数据建立被测参数(如 LDO 输出电压、OSC 频率)与 Trim Code 之间的数学模型(通常为线性方程) ,将 Trim 过程转化为或者其中 A(斜率,LSB 步进) 和 B(截距,零点偏移) :由研发在 CP 前通过统计大量晶圆数据拟合得到;CP 测试时只需测量当前裸片的初测值,代入公式即可直接计算并写入 Trim Code,无需查表或二分搜索,从而在保证精度的同时显著提升测试速度、降低 ATE 资源占用。
3.分段二进制逼近法
通过 1.6V / 0.8V / 0.4V / 0.2V / 0.1V 五级非均匀 Trim 步进,从最大权重开始逐级判断并累加 Trim bit,实现对目标电压的快速、稳定逼近,适用于CP 阶段Trim fuse步长呈 2ⁿ 关系、且希望用最少 bit 覆盖大误差范围的芯片。
for(i=0;i<SITENUM;i++)
{
BEGIN_SINGLE_SITE(i)
f5[i]=0;
f6[i]=0;
f7[i]=0;
f8[i]=0;
f9[i]=0;
Trim_diff[i] = Vout_target - vout_pre_12V[i]; //1.8-1.2=0.6V
STEP = (int) (Trim_diff[i] / min_Vfuse + 0.5);
DEL = 16; //0.1V/0.2V/0.4V/0.8V/1.6V
TEMP1 = STEP;
if(ALL_FLAG[i] == 0)
{
for(j=1; j<6; j++)
{
TEMP2 = TEMP1 - DEL;
if(TEMP2 >= 0)
{
TEMP1=TEMP2;
FLAG=j;
if(FLAG==1) FUSE_T9(); //1.6V
if(FLAG==2) FUSE_T8(); //0.8V
if(FLAG==3) FUSE_T7(); //0.4V ←
if(FLAG==4) FUSE_T6(); //0.2V ←
if(FLAG==5) FUSE_T5(); //0.1V
}
DEL=DEL/2;
}
}
END_SINGLE_SITE()
FUSE9->SetTestResult(i, 0, f9[i]);
FUSE8->SetTestResult(i, 0, f8[i]);
FUSE7->SetTestResult(i, 0, f7[i]);
FUSE6->SetTestResult(i, 0, f6[i]);
FUSE5->SetTestResult(i, 0, f5[i]);
}
4.线性遍历法
从最小 Code 开始,逐个写 → 测 → 判断是否达到目标 → 找到最后一个合格的 Code,也是最普遍的方法,适用于CP 阶段模拟参数“只能靠实测、没有可靠模型”、且 Trim 范围不大、对测试稳定性要求高于测试速度的场景。代码样例如下:
#define VBG_CODE_MAX 16
unsigned char done_flag[STS_SITE_NUM] = {0};
for (STID = 0; STID < STS_SITE_NUM; STID++)
{
trimcode_vbg[STID] = 0;
done_flag[STID] = 0;
}
for (int code = 0; code < VBG_CODE_MAX; code++)
{
for (STID = 0; STID < STS_SITE_NUM; STID++)
{
if (next_status[STID] != 1)
continue;
if (done_flag[STID])
continue;
temp_trimcode_data[STID] = (0x06 + code * 16) & 0xFF;
}
dcm.I2CWriteData(0x50, 0x30, 1, temp_trimcode_data);
delay_ms(1);
m_AD.MeasureVI(100, 10);
for (STID = 0; STID < STS_SITE_NUM; STID++)
{
if (next_status[STID] != 1)
continue;
if (done_flag[STID])
continue;
double vbg_meas = m_AD.GetMeasResult(STID, MVRET);
if (vbg_meas >= VBG_TARGET)
{
trimcode_vbg[STID] = code; //当前 code 就是最终值
done_flag[STID] = 1;
}
}
int all_done = 1;
for (STID = 0; STID < STS_SITE_NUM; STID++)
{
if (!done_flag[STID] && next_status[STID] == 1)
{
all_done = 0;
break;
}
}
if (all_done)
break;
}
for (STID = 0; STID < STS_SITE_NUM; STID++)
{
if (next_status[STID] == 1)
{
VBG_code->SetTestResult(STID, 0, trimcode_vbg[STID]);
}
}
5.最小误差遍历匹配法
我们找code的过程,实际上是把工艺偏差造成的连续分布,离散化成若干个Trim code(档位),有些芯片比中心值低,所以选低档位,有些芯片高,所以选高档位,把code写进芯片就相当于把这个芯片调到了code = x的模式,芯片会自动把它往上或者往下去调到中心值附近。通过遍历整个 Trim Code 候选数组,计算每一个候选值与“理论缩放因子(测试值/目标值)”的偏差,选择偏差最小的那个 Code,因此属于典型的遍历查找(Traversal Search) 中的一种。适用于已有TrimTable、Trim 响应相对稳定、且不希望频繁写码实测,但对精度和非线性有一定要求的模拟芯片。
trimtable_VBG[16] = { 1.316, 1.309, 1.301, 1.294, 1.286, 1.279, 1.271, 1.264, 1.256, 1.249, 1.241, 1.234, 1.227, 1.219, 1.212, 1.204 };//V
unsigned int GetTrimCode(double meas_value, double target_value, double *buf, int length)
{
double delta = 0.0;
double dmin = 999.9;
double temp;
int i;
unsigned int trimcode = 0;
if (meas_value == 0) trimcode = 0;
else
{
delta = (*buf) * target_value / meas_value;
for (i = 0; i<length; i++)
{
temp = abs(delta - *(buf + i));
if (temp < dmin)
{
dmin = temp;
trimcode = i;
}
}
}
return(trimcode);
}
m_AD.Set(FV, 0.0, ACM200_3p6V, ACM200_10UA, ACM200_RELAY_ON);
delay_ms(2);
m_AD.MeasureVI(100, 10);//100 times * 10us =1ms
for (STID = 0; STID < STS_SITE_NUM; STID++)
{
trimcode_vbg[STID] = trimcode_vbg[STID] & 0x0f;
if (next_status[STID] == 1)
{
m_vbg_pre1[STID] = m_AD.GetMeasResult(STID, MVRET);
VBG_pre1->SetTestResult(STID, 0, m_vbg_pre1[STID]);//V
trimcode_vbg[STID] = GetTrimCode(m_vbg_pre1[STID], 1.265, trimtable_VBG, 16);
VBG_code->SetTestResult(STID, 0, trimcode_vbg[STID]);
}
}
//---------------------------------------- trimming ----------------------------------------
for (STID = 0; STID < STS_SITE_NUM; STID++)
{
temp_trimcode_data[STID] = (0x06 + trimcode_vbg[STID] * 16) & 0xff;
}
dcm.I2CWriteData(0x50, 0x30, 1, temp_trimcode_data);
delay_ms(1);
m_AD.MeasureVI(100, 10);//100 times * 10us =1ms
for (STID = 0; STID < STS_SITE_NUM; STID++)
{
if (next_status[STID] == 1)
{
m_vbg_pre2[STID] = m_AD.GetMeasResult(STID, MVRET);
VBG_pre2->SetTestResult(STID, 0, m_vbg_pre2[STID]);//V
}
}
6.二分法查找
二分法(Binary Search Trim)是一种通过不断缩小 Trim Code 的搜索区间来高效逼近目标值的测试方法:它以 Trim 范围为边界,每次取中点 Code 写入并实测,根据“测量值是大于还是小于目标值”将搜索区间减半,循环直至收敛;该方法在保持实测反馈与多 Site 并行安全的同时,将测试复杂度从线性的 O(N) 降至对数级 O(log N),是兼顾测试速度、稳定性与工程鲁棒性的经典 Trim 方案。
void Trim_Search(int sel, int start, int end, double ref, BYTE *trim_b, double *ref_b)
{
//define variable
int left[STS_SITE_NUM], right[STS_SITE_NUM], mid[STS_SITE_NUM];
int step1[STS_SITE_NUM];
float Val[STS_SITE_NUM], Val_COMP[STS_SITE_NUM];
int b = 0, core_mid;
int core[16];
int code[STS_SITE_NUM] = { 0 };
int STID = 0;
for (int i = 0; i<16; i++)
{
core[i] = i;
}
//initialize variavle
for (int i = 0; i<STS_SITE_NUM; i++)
{
left[i] = start;
right[i] = end;
mid[i] = end;
step1[i] = 0;
Val[i] = 0.0;
Val_COMP[i] = ref;
trim_b[i] = 0;
ref_b[i] = 0;
}
// 16=2^4+1
while (b<5)
{
b++;
//------- data init -------
for (STID = 0; STID < STS_SITE_NUM; STID++)
{
core_mid = 0;
mid[STID] = 0;
step1[STID] = 0;//mid[i]=0.5*(start+end);
mid[STID] = (left[STID] + right[STID]) / 2;
core_mid = mid[STID];
step1[STID] = core[core_mid];
code[STID] = step1[STID];
}
//-------- write mid data ----
for (STID = 0; STID < STS_SITE_NUM; STID++)
{
abyDataWritten[STID] = code[STID] * 16;
}
dcm.I2CWriteData(0x50, 0x31, 1, abyDataWritten);
delay_ms(2);
//Get Measure result
const double* results = Dcm_Tmu_Time_Division(0.0, 4.0, 1.0, 1.0, 10, 10);//kHz
for (STID = 0; STID<STS_SITE_NUM; STID++)
{
Val[STID] = 0;
Val[STID] = results[STID];
}
//-------- write mid data ----
for (STID = 0; STID < STS_SITE_NUM; STID++)
{
if (fabs(Val[STID] - ref) < Val_COMP[STID])
{
Val_COMP[STID] = fabs(Val[STID] - ref);
trim_b[STID] = step1[STID];
ref_b[STID] = Val[STID];
}
if (Val[STID]>ref)
{
right[STID] = mid[STID] - 1;
}
else
{
left[STID] = mid[STID] + 1;
}
}
}
}
//Get Measure result
const double* results1 = Dcm_Tmu_Time_Division(4.0, 0.0, 1.0, 1.0, 10, 10); //kHz
for (STID = 0; STID<STS_SITE_NUM; STID++)
{
m_oscbst_pre1[STID] = results1[STID];
}
//get trimcode
Osc31k_Trim_Search(0, 0, 15, 31, trimcode_osc_bst, m_oscbst_pre2);
for (STID = 0; STID < STS_SITE_NUM; STID++)
{
if (next_status[STID] == 1)
{
OSC_BST_code->SetTestResult(STID, 0, trimcode_osc_bst[STID]);
OSC_BST_pre2->SetTestResult(STID, 0, m_oscbst_pre2[STID]); //Khz
}
}
六.Trim的物理实现
1.Laser Trim的物理实现
Laser Trim 的物理实现过程是通过激光烧蚀或激光熔断 对芯片上的特定微结构进行物理改性,从而永久调整电路参数的过程。其核心步骤如下:首先,芯片在测试机上完成电性测量,确定与目标值的偏差;随后,根据 Trim 算法计算出需要调整的物理结构位置并生成对应的坐标文件;接着,使用专业的激光修调机器直接熔断芯片上对应坐标的熔丝(铝条)。
2.金属熔丝和poly fuse的烧断过程
由于金属熔丝的两端通常并未直接引至芯片封装引脚(Pin),而是通过内部开关矩阵或选通电路连接至测试焊盘(Pad),因此熔丝的烧断过程依赖于测试机(ATE)经探针卡向特定 Pad 施加编程电流。在测得芯片电性初值并由 Trim 算法计算出目标熔丝组合后,测试系统通过控制继电器或内部 MOS 选通开关,精准选通对应 Pad 的供电路径,从而仅在目标熔丝上流过足以致其熔断的大电流,实现对指定熔丝的确定性烧断。
3.Efuse的烧录步骤
- 相较之下,Efuse 的烧录流程更为复杂,本质是 “寄存器预载 → 确认 → 物理熔断 → 结果回读” 的闭环过程:首先,我们利用数字可编程 Trim 将算法得出的 Code 写入数字寄存器并测量确认;随后配置相关寄存器并启动芯片,通过改写烧录标志位(0→1)触发高压/大电流脉冲,利用焦耳热或电迁移效应使熔丝发生不可逆物理断路;在完成断电重启后,Efuse 信息自动重载至寄存器,此时通过读取寄存器获取的 Code 已源自物理熔断结果,配合显微镜观测到的金属熔融或断裂形貌,即可确认 Efuse 烧录成功。可能会烧录失败的原因:1.烧录后等待时间过短;2.芯片断电/重启后重载的过程出现问题;3.烧录电压过低/能量不够;4.没有严格遵循烧录步骤;5.芯片时钟配置有误导致烧录失败。
- 以一颗包含 32 根 Efuse 的芯片为例,其内部寄存器通常会映射 32 个对应比特位,且物理布局上这些 Efuse 阵列往往与寄存器位序一一对齐、集中排布,因此在显微镜下可直观观测到熔断位置,所以我们可以根据显微镜下的efuse是否烧断的照片来反推我们的code。当然,除了trimcode以外,我们还可以烧录其他的寄存器配置的某些bit,这样终端客户在使用时就是一个固定不可配的开机配置。下图为efuse烧断和亮斑的图片(亮斑是发生过电迁移的视觉证据,可以作为是否烧断的依据)。
4.反熔丝在OTP上的作用机制
*ps:由于尚未做过OTP的项目,因此此处埋坑,等以后来填。
七.Trim后的数据处理
- Trim 后的数据处理首要原则是 “先清洗,后统计” ,必须严格剔除由探针接触不良、电源塌陷或程序异常导致的离群值(Outliers),并合理排除 Edge Die 的干扰,避免将测试系统误差误判为工艺波动;同时需警惕多 Site 并行测试下的均匀性问题,应先确认 Site 间差异在可控范围内,再进行全片数据统计,防止将 ATE 或 Prober 的不一致性混入工艺 Sigma 计算中。
- 此外,切勿默认 Trim 后的数据服从理想正态分布,应在进行均值、标准差及 Cpk/Ppk 计算前执行正态性检验(如 AD 检验),根据实际分布特征选择合适的统计量;最终需将处理后的数据与 Wafer/Lot ID、时间戳绑定,通过 Wafer Map 与直方图可视化工艺中心偏移与离散度,实现对量产工艺窗口漂移的早期预警与闭环管控。