
CIS芯片测试这活儿外行看着就是拍张照看图像清不清楚真正上手才知道从晶圆上一颗没封装的裸片到手机里能出成片的那颗传感器中间要过的测试关卡多到能把人问住。我带过几个CIS测试相关的项目也跟不少芯片测试工程师聊过发现大家卡的点其实高度重合暗电流到底怎么测才准、坏点判定的阈值怎么定、转换增益那套PTC曲线怎么算、相机调试里那个capture cis开关藏在哪里、ISP的坏点矫正和sensor端的坏点测试到底谁管谁。这些问题的答案散在数据手册、应用笔记和老工程师的脑子里网上很难找到一份能直接抄作业的完整版本。这篇东西就是想把CIS芯片测试这条链路从头到尾捋一遍。我会按测什么—为什么这么测—具体怎么操作—踩过哪些坑的顺序讲尽量给出能直接复现的参数、步骤和判定标准也会解释每个选择背后的逻辑。不管你是刚入行的芯片测试工程师还是做相机调试、模组验证的同行或者是想搞明白自己手机摄像头那些黑点白点从哪来的技术爱好者都能从里面拎出能用的东西。1. CIS芯片测试到底在测什么聊测试之前得先把测试对象说清楚。CIS是CMOS Image Sensor的缩写也就是互补金属氧化物半导体图像传感器它干的事只有一件把打在像素阵列上的光子转换成一个个数字码值输出。听起来简单但这条链路上任何一环出问题最后呈现出来的都是图不对。所以CIS测试的本质不是去测某单个指标好不好而是沿着从光子到码值的完整通路把每一段的性能都量化出来判断它是否落在规格窗口内。我一般把CIS测试分成三条并行的线来看电性能线、噪声线、图像质量线。电性能线关注的是像素能不能正常读出、驱动电压对不对、时序有没有跑通、接口输出是否稳定噪声线关注暗电流、读出噪声、固定图案噪声这些东西它们决定了传感器的下限图像质量线则是把芯片当成一个相机来评估灵敏度、信噪比、动态范围、色彩还原、坏点数量都在这一条线上。三条线各有各的测试项但很多问题会在三条线之间交叉暴露这也是CIS测试比较折磨人的地方。1.1 一条从光子到数字码值的完整链路要理解测试项先得把信号链路拆开。光子穿过微透镜和彩色滤光片打在光电二极管上被转换成电子电子积累在浮动扩散节点FD上被源极跟随器转成电压电压经过列级ADC采样量化变成数字码值再通过MIPI、LVDS或DVP接口送出去。整条链路上光电转换效率、电荷转移效率、转换增益、读出噪声、ADC精度每一个环节都会影响最终输出的质量。这条链路的每一段都有对应的测试项。比如光电转换效率对应量子效率QE和灵敏度电荷转移效率对应残像Image Lag转换增益对应FD节点的电容大小读出噪声对应暗场下的码值波动ADC精度对应输出的量化台阶。测试工程师要做的就是设计各种光照、曝光、温度条件把某一段的贡献单独抠出来。举个最典型的例子想测读出噪声就得在完全无光、极短曝光的条件下采图把暗电流的贡献压到最低剩下的波动才主要是读出噪声。理解了这条链路后面看到的每个测试项你都能对上号而不是死记硬背一堆名词。这也是我一直跟新人强调的别一上来就背测试规范先把信号怎么走一遍搞清楚测试项自然就串起来了。1.2 测试项全景电性能、噪声、图像质量三条线把测试项铺开来看大致是这么一张表。它不是为了让你照单全收而是让你知道每项在测什么、依赖什么条件、结果异常时大概往哪个方向查。测试项归属线关键条件主要反映的问题供电电流/电压电性能常温、固定时序驱动是否正常、有无漏电接口功能电性能标准时序MIPI/LVDS链路是否通暗电流 Dark Current噪声全黑、控温、长曝光像素漏电、工艺缺陷暗信号非均匀性 DSNU噪声全黑、多帧平均暗场下的固定图案噪声读出噪声噪声全黑、短曝光模拟链路噪声水平转换增益 CG电/噪声变曝光PTCFD电容、增益设定满阱容量 FWC电性能变曝光至饱和像素动态上限白点/坏点 Defect图像质量全黑/均匀光像素缺陷数量灵敏度/量子效率图像质量标准光源、定标光电转换能力信噪比 SNR图像质量均匀光多档综合噪声表现动态范围 DR图像质量亮暗结合明暗兼顾能力色彩还原图像质量标准色卡色彩准确度这张表里暗电流、坏点、转换增益、动态范围是最容易出问题、也最容易被误判的四项。后面我会挑这几项重点拆。这里先埋一个伏笔很多坏点其实不是像素真坏了而是测试条件没控好比如温度漂了、光源不均匀、黑电平没校准最后判定出来的坏点全是假阳性。这类坑在后面排查章节会专门讲。2. 测试方案怎么搭从探针台到积分球搞清楚了测什么接下来要解决在哪测、用什么测。CIS测试按阶段分主要就是CP测试和FT测试两大块再往后还有模组级的系统测试。这三者不是简单的先后关系而是各有各的目的和取舍。选错了测试阶段要么成本飙升要么问题漏到后面去返工代价极大。我见过不少团队为了省事把本该在CP阶段卡掉的问题拖到FT甚至模组阶段结果封装好的芯片成批报废损失比多花的那点测试时间大得多。所以方案设计的第一原则是能在越早的阶段暴露的问题就越要往前卡。下面先把CP和FT的分工逻辑讲清楚再讲硬件怎么组合。2.1 CP与FT的分工逻辑CP是Chip Probing晶圆级测试用探针卡直接扎在晶圆的焊盘上一颗颗芯片测过去。这个阶段芯片还没切割、没封装测试速度快、成本相对低但受限于探针接触和晶圆环境能测的项目比较偏电性能和基础功能。CP阶段最典型的测试就是直流参数、基本时序、暗电流和粗略的坏点筛选。它的核心价值是在封装之前把明显不合格的裸片挑出来避免给坏片花封装钱。FT是Final Test封装之后的成品测试。这时候芯片已经是能直接用的器件了可以接完整的光源系统、图像采集板做全面的图像质量评估。灵敏度、信噪比、动态范围、色彩还原这些项目基本都在FT阶段完成。FT的测试条件更接近实际使用所以结果也更有参考价值但成本高、节拍慢不适合做全检的大批量筛选。我的经验是CP阶段重点卡能不能用FT阶段重点卡用得好不好。两边的判定标准要联调好不能出现CP判合格、FT大面积不合格的情况那说明CP的筛选阈值定松了。反过来CP阈值太紧又会造成良率虚低浪费好片。这个平衡点通常要靠前几批数据的分布来反复调。2.2 硬件组合与选型考量一套完整的CIS测试系统核心是四个部分探针台或测试插座、测试机ATE或自研板卡、光源系统、图像采集与分析软件。每一块的选型都直接影响测试结果的可靠性。光源系统是重头戏。要做图像质量测试光源必须足够均匀、足够稳定、色温可控。行业里最常用的是积分球它能把点光源打散成非常均匀的面光源配合标准色温灯常用2856K的A光源或者D65给传感器提供可重复的照明条件。积分球的均匀性一般要求达到95%以上否则测出来的PRNU光响应非均匀性会混入光源自身的不均匀根本没法分清是像素的问题还是光源的问题。测试机方面量产线一般用商用ATE讲究的是多站点并行、节拍快、稳定性高。研发和验证阶段很多团队会用FPGA自研采集板灵活性高能直接抓RAW数据、改时序、调增益调试的时候特别顺手。我个人的偏好是验证阶段一定用能出RAW的方案因为只有拿到原始数据你才能判断问题到底出在sensor还是后面的ISP。这一点在讲capture cis开关的时候还会展开。图像分析软件这块别指望买来就能用。每个项目的测试项、判定标准、报表格式都不一样几乎都要二次开发。我的建议是把数据采集和分析解耦采集端负责在固定条件下把RAW和元数据存下来分析端用Python之类的脚本批量处理这样算法改了不用重新采数据效率高很多。2.3 温度、光照、时序三大控制量CIS测试里有三个量必须死死控住否则数据没法看温度、光照、时序。温度对暗电流的影响是指数级的。硅材料的暗电流大致遵循一个规律工程上常按每升高5到8摄氏度暗电流翻一倍来估算。这意味着温度飘个两三度暗电流就可能差出二三十个百分点。所以暗电流测试一定要在恒温环境下做高低温箱的温度稳定性至少要到正负0.5摄氏度。很多实验室图省事常温下测暗电流结果同一颗芯片今天测和明天测差一大截就是环境温度在捣乱。光照的控制体现在两件事上亮度和均匀性。亮度靠积分球加可调光源来保证均匀性靠积分球本身的质量和传感器的对位精度。传感器如果没放在积分球开口的正中心、有倾斜接收到的光照就不均匀测出来的坏点和PRNU全是假的。时序这块最容易被忽视。CIS的曝光、读出、复位都有严格的时序要求曝光时间和增益设定稍有偏差测出来的灵敏度和噪声就全变了。尤其是做PTC曲线的时候每一档曝光都要精确可控曝光时间的误差会直接传到转换增益的计算结果上。我一般要求曝光时间的精度控制在百分之一以内超过这个量级PTC拟合出来的曲线就开始飘了。3. 核心测试项实操参数怎么测、怎么算前面两章把框架搭好了这一章进入硬核部分几个关键测试项到底怎么测、数据怎么算、判定标准怎么定。我会尽量给出公式和计算过程而不是只丢一个结论。这些内容你在数据手册里往往只能看到定义看不到工程上真正怎么落地所以我会把我实际操作里的处理方式也写进去。3.1 暗电流与DSNU全黑条件下的两件事暗电流测试的条件很明确完全遮光、控温、设定一个足够长的曝光时间。采一帧全黑的RAW图整幅图的平均值减去黑电平基准再除以曝光时间就是暗电流对应的码值速率。如果要换算成物理单位还得用转换增益把码值换成电子数最后归一化到单位面积得到暗电流密度。这里有个细节特别关键遮光一定要彻底。我见过有人用黑布盖镜头结果黑布边缘漏光测出来的暗电流偏高一大截查了半天以为是芯片漏电。正确的做法是用不透光的金属遮光板或者直接在暗室里测。另外传感器周围如果有红外源比如某些设备的指示灯也可能被硅片响应到一定要排查干净。DSNU是暗信号非均匀性测的是全黑条件下各像素之间的固定差异。做法是连续采多帧先对每帧做时域平均压掉随机噪声再计算空间上的标准差除以均值得到相对值。DSNU反映的是像素之间的工艺差异是固定图案噪声的一部分。它和暗电流不一样暗电流是整体有多暗DSNU是暗得均不均匀。实际操作里我可以给你一段分析脚本的骨架直接改改就能用import numpy as np # 读取一帧全黑RAW16位分辨率假设是4000x3000 raw np.fromfile(dark_1s.raw, dtypenp.uint16).reshape(3000, 4000).astype(np.float64) # 黑电平基准一般取光学黑区OB区的均值 ob raw[:, :64] black_level ob.mean() # 有效像素区域 active raw[:, 64:] # 去黑电平 signal active - black_level # 暗电流均值码值 dark_mean signal.mean() # DSNU空间标准差 / 均值 dsnu signal.std() / (signal.mean() 1e-9) print(dark mean (DN):, dark_mean) print(DSNU:, dsnu)这段脚本里有两点要注意。第一黑电平基准一定要用光学黑区来算别用整幅图因为有效像素区可能有漏光。第二算DSNU之前最好先做多帧平均单帧的随机噪声会污染空间标准差。我一般会采16到32帧做平均效果比较稳。3.2 转换增益与满阱容量PTC曲线法转换增益Conversion GainCG是CIS测试里最核心也最容易算错的参数之一。它的物理意义是每个电子被转换后在输出端对应多少电压或者多少码值。单位通常是微伏每电子或者用系统增益K来表示单位是电子每码值。CG越大同样的电荷量对应的信号越大读出噪声折算到电子数就越小。测CG最标准的方法是光子转移曲线也就是PTC。原理是这样的在同一光照下改变曝光时间测一系列不同信号强度下的均值和方差。理想情况下方差和均值满足线性关系这条直线的斜率就是系统增益的倒数。具体来说在码值域里有方差等于均值除以K所以K等于均值除以方差斜率取倒数就得到K。我把计算过程写出来顺手给段脚本import numpy as np # means 和 vars_ 是不同曝光档位下同一区域的平均码值和空间方差 means np.array([320, 680, 1050, 1600, 2200, 2900], dtypenp.float64) vars_ np.array([11.5, 24.1, 36.8, 55.9, 76.4, 100.2], dtypenp.float64) # 线性拟合 variance mean / K offset slope, intercept np.polyfit(means, vars_, 1) K 1.0 / slope print(system gain K (e-/DN):, K) # 满阱容量线性区最大均值对应的电子数 fwc_dn 12000 # 线性饱和点码值需实测 fwc_e fwc_dn * K print(full well capacity (e-):, fwc_e)这里有几个实操要点。第一PTC必须在信号的线性区内做饱和点和暗噪声主导的低端都要剔除。低端信号太小方差估计不准高端接近饱和方差会偏离线性。第二采样区域要选均匀光照的中间区域别选到边缘否则PRNU会影响方差。第三至少取5到6个曝光档位档位之间信号要有明显的跨度拟合出来的斜率才稳。满阱容量FWC是另一个关键参数代表像素能装多少电子直接决定了动态范围的上限。它的测法是把曝光一路加长直到输出码值不再随曝光线性增长那个拐点就是饱和点。饱和点对应的电子数就是FWC。这里要注意区分两个饱和一个是像素自己装满了另一个是ADC先到顶了。如果是ADC先饱和你测到的FWC是被ADC限制的不是真实的阱容量。判定方法是看模拟增益设定如果增益调低后饱和点变高说明之前是被ADC卡住了。3.3 坏点Defect Pixel测试判定阈值怎么定坏点是CIS测试里最有画面感的一项也是最容易产生争议的一项。所谓坏点就是那些输出明显偏离正常的像素分为两类暗场下的亮点叫白点亮场下的暗点叫黑点。白点通常是像素漏电过大黑点通常是像素响应不良或者被遮挡。坏点的测试方法看着简单在均匀光照下采图算出全局均值和标准差把偏离超过某个阈值的像素标记出来。但真正的难点在于阈值怎么定。阈值定太松真坏点漏掉定太紧正常像素被冤枉成坏点良率虚低。行业里通常用偏离均值N倍标准差来判定N一般取5到8。但标准差本身会被坏点拉大所以更严谨的做法是先用中位数绝对偏差MAD来估计正常的离散度再用它做判定。import numpy as np from scipy import ndimage raw np.fromfile(flat_light.raw, dtypenp.uint16).reshape(3000, 4000).astype(np.float64) active raw[:, 64:] med np.median(active) mad np.median(np.abs(active - med)) * 1.4826 # 归一化到标准差 # 白点高于中位数和黑点低于中位数分开判定 hot active med 6 * mad cold active med - 6 * mad print(hot pixels:, hot.sum(), cold pixels:, cold.sum()) # 统计坏点簇单点和成簇的严重程度不同 lbl, n ndimage.label(hot) print(hot clusters:, n)这里必须强调坏点簇的概念。单颗孤立的坏点ISP的坏点矫正算法一般能轻松修掉但如果坏点成片出现比如连成一条线或者一片有几十个那多半是工艺或者电路的系统性问题修起来很吃力这类芯片一般直接判定不合格。所以统计坏点的时候不光要数总数还要看最大簇的大小和分布形态。还有一点容易被忽略坏点的判定要在多个曝光档位下做。有些像素在低照度下正常高照度下才暴露有些则相反。只测一个条件很容易漏判。我一般至少测三档光照暗场、中亮、接近饱和三档下都正常的像素才算真正正常。3.4 SNR、动态范围与色彩还原整机视角的评估前面几项测的是局部SNR、动态范围和色彩还原测的是传感器的综合表现。信噪比的测法是在均匀光照下选一个区域算信号均值同时算时间上的噪声标准差两者相除再取对数就是SNR。要注意这里的噪声必须用多帧的时域标准差不能用单帧的空间标准差否则混进了坏点和PRNU结果偏低。动态范围是满阱容量和读出噪声的比值取对数。它的意义是传感器能同时记录最亮和最暗细节的能力。算法很直接把FWC换成电子数把读出噪声也换成电子数二者相除取20倍对数。但工程上有个坑单帧动态范围和实际成像动态范围是两回事。很多现代传感器用多帧合成或者双转换增益来扩展动态范围这时候手册里的动态范围是合成后的值不是单帧能测出来的。测的时候一定要看清楚规格定义的是哪种。色彩还原一般在FT阶段用标准色卡来做。拍一张标准色卡用标准光源照明然后计算每个色块的色差通常用ΔE来衡量。ΔE越小越好一般成品要求平均ΔE在3以内。这一项对测试环境影响很大光源色温不准、色卡反光、镜头有色差都会让ΔE超标。所以色彩测试前镜头和光源的标定一定要做扎实。4. Capture CIS开关与ISP坏点矫正实操这一章聊两个在调试现场被问得最多的问题。一个是capture cis开关在哪、怎么用另一个是ISP的坏点矫正和sensor端的坏点测试是什么关系。这两个问题看着分开其实绑在一起当图像上出现黑点白点你得先判断问题出在sensor还是ISPcapture cis开关就是那个帮你做判断的工具而ISP坏点矫正则是问题定位后要调的算法。4.1 Capture CIS开关在哪、什么时候用先说capture cis开关是什么。在相机调试工具或者驱动配置里有这么一类开关它的作用是让传感器输出的RAW数据绕过ISP处理直接被采集出来。你把它打开抓到的就是传感器最原始的画面关掉它抓到的就是经过ISP处理的成品图。这个开关在问题定位时价值极高因为它把sensor和ISP这两个环节给隔离开了。至于这个开关在哪要看你用的是哪套平台和工具。常见的几个位置一是相机调试工具或调试APK里一般放在抓图capture相关的配置页面二是驱动层的配置文件里通常在camera相关的dts或者vendor配置文件里有个控制RAW和YUV输出的参数三是在ISP调试工具自身的抓图模块里会有RAW和processed两种采集模式可选。不同平台命名不一样有的叫capture raw有的叫bypass isp有的干脆叫raw dump但意思都是同一个。用它的判断逻辑很简单如果抓RAW图时能看到黑点白点说明是sensor端的坏点得回去查坏点测试和标定如果RAW图干净但成品图上有坏点那说明是ISP坏点矫正没做好或者矫正算法把正常像素改坏了。我在现场基本先做这一步分流能省掉大量排查时间。很多人一上来就怀疑sensor结果查了半天发现是ISP参数配错了白折腾。4.2 ISP坏点矫正DPC的原理与调试ISP里的坏点矫正英文一般叫DPCDefect Pixel Correction。它的基本思路是对每个像素跟它周围的邻居比较如果偏离太远就认为它是坏点用邻居的插值把它替换掉。听起来简单真正调起来有好几个要命的参数。第一个是判定阈值。阈值太大真坏点修不掉太小正常的纹理和边缘会被当成坏点修掉画面变得糊或者出现异常。尤其是拍摄细密纹理的场景比如织物、砖墙阈值设太低会把纹理抹平。所以DPC的阈值一般要求跟场景和增益联动高增益下噪声大阈值要相应放宽。第二个是矫正方式。最简单的做法是用四邻域或者八邻域的中值替换简单可靠但会损失一点细节。更精细的做法会根据周围像素的方向性来插值尽量保留边缘。不同ISP的算法不一样但核心都是判断准和补得自然这两件事。第三个是静态坏点表和动态检测的配合。传感器出厂前会把一批固定的坏点位置写进一次性可编程存储器OTP里ISP启动时读出来这些位置直接按表矫正不参与动态判断。动态检测则负责那些没被标定到的、可能在温度变化后临时出现的坏点。两者配合静态表管大头动态算法兜底。调试DPC最有效的方法是拿一组覆盖各种光照和增益条件的测试图每次只改一个参数看画面里坏点和纹理的变化。我一般会准备一张专门的纹理测试图专门盯边缘细节有没有被误修。别只看纯色背景那个骗人的。4.3 静态坏点OTP标定流程静态坏点标定是连接sensor测试和ISP矫正的关键一环。它的流程大致是在产线上用标准条件采图按判定标准找出所有坏点坐标把这些坐标写入OTP最后让ISP读取使用。这套流程看着直白但每一步都有讲究。采图环节光照条件必须极其稳定因为坏点判定依赖全局统计条件一变判定结果就漂。有的产线会在同一个工位连采多档光照取各档坏点的并集避免漏判。坐标提取环节判定阈值要跟测试规范严格对齐并且要留出一定的余量因为产线环境和实验室环境可能有细微差异。写入OTP环节要注意OTP的容量和地址映射坏点数量超过容量时怎么办、如何压缩存储这些都是要提前规划好的。这里有个很现实的坑OTP写完是烧死的一旦发现判错芯片就废了。所以标定流程上线前一定要用足够大的样本量做验证确认判定阈值在各种边界情况下都稳再正式烧录。我见过因为阈值定太紧一批芯片OTP里写了几百个坏点结果ISP矫正后画面出现大片异常插值整批返工。5. 常见问题与排查技巧实录前面把该讲的原理和操作都讲完了这一章全是实战里攒下来的东西。我整理成一张速查表再加上几条我认为最值钱的经验。这些东西在规范文档里找不到但恰恰是决定你能不能快速定位问题的关键。5.1 问题速查表下面这张表列的是CIS测试和调试中最常遇到的几类现象以及对应的排查方向。遇到问题时先对着这张表过一遍能省很多弯路。现象可能原因排查方向暗电流整体偏高遮光不彻底、温度漂移、曝光时间不准换金属遮光板、复核温度、校准曝光时序坏点数量异常多光源不均匀、黑电平未校准、阈值过紧检查积分球对位、重算黑电平、调判定阈值RAW干净但成片有坏点ISP坏点矫正参数错误查DPC阈值和静态坏点表RAW有坏点但成片正常静态标定和ISP矫正起作用了属正常确认坏点数量在规格内转换增益算出来离谱PTC采样区不均匀、饱和点误判换均匀区域、剔除饱和档位SNR偏低用了单帧空间标准差、区域含坏点改用多帧时域标准差、剔除坏点色彩偏差大光源色温不准、镜头色差、色卡反光标定光源、更换镜头、消除反光同批次结果波动大温度/光照/时序未锁死逐项复现固定条件5.2 几个血泪避坑经验第一条也是最重要的一条测试条件没锁死之前任何数据都别信。我踩过最惨的一个坑是暗电流测试时空调出风口正对着测试台温度忽高忽低测出来的数据前后能差一倍。后来我把测试台挪到恒温区数据立刻就稳了。所以做CIS测试环境控制的重要性不亚于测试本身。第二条坏点判定一定要用鲁棒的统计量。前面提到的用MAD代替标准差就是因为标准差不抗坏点污染。当一幅图里坏点比例稍高标准差会被这些坏点拉大导致判定阈值随之抬高更多坏点被洗白漏掉。这个坑很隐蔽新手特别容易中招。第三条PTC曲线一定要做线性区筛选。我见过有人把饱和点也拿去拟合结果斜率全歪了算出来的转换增益差出一倍。判断饱和点最直接的办法是画均值随曝光的变化曲线看清楚那个拐点拐点之后的档位全部剔除。第四条capture cis开关是排查的神器但别依赖它做最终判定。RAW图是sensor的真相但用户看到的是ISP处理后的成品。真正的问题往往在两者之间的关系上所以RAW和成品图要对照着看不能只看一个。第五条OTP标定的阈值要留余量。产线和实验室环境有差异标定阈值如果和规格卡得死死的到了产线就容易批量超限。我一般会留出百分之十到二十的余量宁可多标一点也别让好芯片被误判。最后分享一个我自己的习惯每次做完一轮测试我会把原始RAW、测试条件、分析脚本和判定结果打包存一份标好日期和环境参数。看起来麻烦但等你几周后要复现某个异常现象或者要对比不同批次的稳定性这些存档能救命。CIS测试这行数据可追溯比什么都重要。