拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

半导体良率分析平台的多源数据集成实战:从SECS/GEM到EAP

半导体良率分析平台的多源数据集成实战:从SECS/GEM到EAP

从事半导体制造或者封测这一行的朋友,应该都对“良率”这俩字又爱又恨。它直接跟钱挂钩,跟产能挂钩,跟客户信任挂钩。但真要把良率分析做好,尤其是当产品进入量产爬坡或者遇到异常波动时,你手里得有足够“干净”且“全面”的数据,否则一切分析都是空谈。

我这两年深度参与了公司良率分析平台的数据底座建设,核心工作就是把产线上那些五花八门的设备数据、工艺数据、测试数据给“揉”到一块。今天这篇就专门聊聊,多源数据集成这件事,在半导体良率分析平台里到底是怎么落地的,又踩了哪些坑。这套东西不光是给数据分析师看的,做设备自动化(EAP)、搞SECS/GEM协议对接、以及负责MES维护的兄弟,我建议都花几分钟看看,因为你们每天经手的那些报文和数据,正是整个平台的“口粮”。

1. 为什么良率分析平台必须做多源数据集成

先别急着谈技术架构,我们得先聊聊“为什么”。很多人觉得良率分析不就是看看CP(Circuit Probing,晶圆探针测试)和FT(Final Test,最终测试)的map图吗?哪有那么复杂。如果你只做成品良率的统计报表,那确实不复杂,Excel都能干。但只要你想做一点深度的根因分析,比如:“这批晶圆边缘区域的失效为什么突然变多?”,你会立刻发现,你需要的数据压根就不在同一个地方。

1.1 良率分析的“五马分尸”困局

一条典型的半导体产线,从硅片进厂到最后出货,数据散落在至少五个独立的系统里。

  • 设备数据:来自光刻机、刻蚀机、薄膜沉积设备、清洗机等工艺设备。这些设备每秒钟都在产生海量的实时数据,包括腔体压力、温度、射频功率、气体流量、机械手臂位置等等。这些数据通常通过SECS/GEM协议传给EAP系统,或者存在设备本地的历史库里。
  • 测试数据:这是良率分析的核心,主要来自测试机(比如Teradyne的UltraFlex系列,也就是大家常说的93K)、探针台(Prober)和分选机(Handler)。这里的数据包括每颗Die的测试结果(Bin号)、电压电流参数、良率map图等。注意,测试数据又分CP和FT两种,数据格式和含义完全不同。
  • 制造执行数据:存储在MES(制造执行系统)里,记录了批次(Lot)的加工路径(Route)、在制品(WIP)信息、设备派工情况、操作员信息、工艺配方(Recipe)版本等。
  • 工艺配方数据:通常是设备端Recipe的具体参数设置。有时候MES里只记录了Recipe的ID和版本,但Recipe内部的详细参数只有设备控制器里才有。
  • ** defect检测数据**:来自缺陷检测设备(如KLA的暗场/明场检测设备)的缺陷坐标、缺陷尺寸、缺陷类型(ADC分类结果)等。

这五个系统的数据格式完全不同,时间粒度不同,设备厂商的通信协议也不同。要做良率分析,就得把这五个源头的数据按照“晶圆ID + 设备ID + 加工时间 + 工艺步骤”的维度对齐起来。这就是多源数据集成存在的唯一理由:消除数据孤岛,让数据的关联分析成为可能。

1.2 数据集成解决的两个核心业务问题

数据集成不是目的,解决业务痛点才是目的。在我看来,它主要解决两件事:

第一件事是异常回溯。产线反馈某批货良率突然从97%掉到90%,传统的做法是工艺工程师凭经验猜是哪个步骤出了问题,然后去翻该设备的历史记录。有了多源数据集成的平台,你只需要输入Lot ID,系统自动关联出这批货经过的所有设备、所有工艺参数、所有测试结果,甚至能自动匹配到当时的环境温湿度。分析时间从按“天”计算缩短到按“分钟”计算,这就是集成带来的直接价值。

第二件事是参数相关性挖掘。光刻机的聚焦精度(Focus)和刻蚀机的射频驻波比(VSWR)之间,可能对最终的晶体管阈值电压(Vt)有交互影响。这种跨设备的关联分析,在数据孤岛时代几乎没法做。但把数据都拉到一个平台里,用简单的相关性分析或者机器学习模型,就能找到那些隐藏的“魔鬼组合”。这类分析对于先进工艺的良率爬坡至关重要。

2. 数据集成方案的核心设计与技术选型

现在大家都喜欢谈“数据中台”、“湖仓一体”,但半导体产线里的数据集成,方案选型往往没有那么自由。因为现场环境对数据安全、实时性、稳定性的要求极高,而且在产线里搞平台,最怕“动静太大”影响生产。

2.1 数据流向与分层架构规划

我参与搭建的这套平台,在逻辑上分了四层:采集层、传输层、存储层、应用层。

  • 采集层:这一层负责跟设备打交道。对于支持SECS/GEM协议的设备(绝大部分前道工艺设备和后道测试设备都支持),直接通过EAP系统的接口拿数据。对于没有标准通信接口的老旧设备,或者SECS协议里没定义的数据(比如设备内部日志文件),就得靠驻留agent的方式主动去拉取或者接收文件。
  • 传输层:考虑到产线网络通常和办公网隔离,数据传输不能直接穿透。我们是部署了一套基于消息队列(Kafka)的缓冲机制,在产线DMZ区架设了数据转发服务。数据先落地到产线侧的本地存储,再由转发服务异步上传到分析平台所在的核心数据区。这样做的好处是,即使分析平台升级或者网络抖动,也不会影响产线设备的数据采集,EAP系统和设备不受牵连。
  • 存储层:这是很多人容易搞错的点。我们并没有把所有的数据全塞进一个库,而是采用了“混合存储”策略。设备产生的实时状态数据(比如每100ms一条的RF功率数据),量太大,存进时序数据库(如InfluxDB或TDengine)。测试结果数据(Die级别的Bin信息),结构化程度高且查询频繁,放在关系型数据库(如PostgreSQL)。设备报警日志、Recipe文件等非结构化数据,则存放在对象存储(如MinIO)里。
  • 应用层:这一层就是良率分析平台真正给用户看的界面和功能了。包括良率报表、SPC监控、Map图分析、多变量分析模块等。

这个分层架构的核心思想是“各司其职”,尤其要把实时采集链路和批量分析链路分开。因为实时采集要求低延迟,而批量分析往往需要跑复杂的聚合查询,两者如果混在一起,互相拖后腿,现场会非常难受。

2.2 选型背后的“为什么”

在技术选型上,我有几个比较深的体会,供参考。

消息队列为什么选Kafka?因为我们需要应对“秒级”的数据峰值。比如一台93K测试机在测试小芯片时,每秒可能产生上万条测试结果事件。这种高吞吐场景,Kafka的吞吐能力是其他一些消息中间件很难比的。而且Kafka自带分区和副本机制,数据不容易丢。

时序库为什么单独拎出来,而不直接用关系型数据库?因为良率分析不仅要看“最终结果”,还要看“过程曲线”。比如分析刻蚀机腔体压力数据,我们要看的是升压、稳压、抽真空整个过程中压力值的变化曲线。这种数据每秒产生几十甚至上百个点,一张晶圆加工下来就是几十万条记录。用关系型数据库存这种数据,查询性能会随着数据量增大迅速恶化。时序数据库的压缩算法和预聚合能力,就是为这种场景量身定制的。

这里也顺带提醒一句,别迷信所谓“一套平台搞定所有数据”的商业产品。半导体工厂的数据基因太特殊了,标准化产品往往需要大量二次开发。在选型初期,一定要明确哪些功能是产品自带的,哪些需要我们自己的开发团队去定制,不然后期定制开发的成本会远超预算。

2.3 数据模型的标准化与扩展性

数据集成最怕的就是“脏数据”和“二义性”。没有一个统一的数据模型,集成得越多,可能越乱。所以我们做了一个比较关键的动作,就是建立良率分析数据模型标准。

这个模型的核心是一个事实表(Fact Table),它记录了每一次“测量行为”本身。什么晶圆(Wafer ID)、什么批次(Lot ID)、在什么设备(Equipment ID)、哪个腔室(Chamber ID)、哪个工序(Operation Code)、用的什么Recipe(Recipe ID),以及测试或测量的原始结果值。所有的维表(设备表、产品表、工序表)都围绕这个事实表建立。另外,还有一个关键字段是“时间戳”,但这个时间戳必须以设备服务器时间为基准,而不是MES时间或者平台接收时间。

标准化模型的好处是显而易见的。新增一种设备类型时,只要按照这个模型适配出对应的数据映射关系,开发工作量会显著降低。后续的数据分析工具、报表工具也只需针对这一套模型进行开发,不用像以前那样一个系统配一套开发。

3. 核心环节实现:从SECS/GEM到EAP再到平台

这里重点说一说数据链路中最关键、也最容易出问题的一段:从设备通过SECS/GEM协议产生数据,到EAP系统处理,再到数据集成平台落库的过程。

3.1 SECS/GEM协议对接的实战要点

在半导体设备通信里,SECS/GEM是绕不开的协议族。包括SECS-I(基于RS-232串口)和HSMS(基于TCP/IP),以及定义了数据项和消息的SECS-II,还有定义设备行为状态的GEM标准(SEMI E30)。虽然现在新设备都支持HSMS了,但工厂里总有那么几台老设备还是串口通信,或者串口转网口的转换器。

协议对接里最重要的事,并不是把报文收发通就算完,而是要保证业务逻辑的完整性。我举个例子,EAP系统要判断一张晶圆在当前设备上的加工是否结束,不能只看设备的“Process End”消息,还要结合Equipment Constant(设备常数)里的状态值来确认。不同设备厂商对GEM状态机的实现千差万别,有的设备把“Processing”状态细分为好几个子状态,有的则没有。

所以在做SECS/GEM对接时,不能简单套用模板,必须逐个设备地去核对状态模型。我建议搞一个“设备兼容性清单”表格,记录每种设备厂商/型号支持哪些标准事件ID(CEID)、哪些状态变量(SVID)、哪些数据变量(DVID),这些对我们的集成平台来说,就是元数据(Metadata)。有了这个清单,后面的开发调试能少走很多弯路。

3.2 EAP系统脚本部署的关键逻辑

EAP(Equipment Automation Program)是连接设备和上层系统的“神经中枢”。在集成项目里,EAP不仅要处理SECS消息,还要决定数据往哪儿转发。

以测试设备为例。当探针台在测试一颗Die并产生结果后,测试机通过SECS/GEM的Event消息(比如CEID=1000代表测试完成)把结果发给EAP。EAP收到这个消息后,做的第一件事不是转发,而是校验上下文。它会检查这条消息里携带的Wafer ID是否和当前正在执行的Lot ID匹配,检查产品的加工步骤是否和MES派工一致。只有校验通过的消息,才会被转换成标准的数据格式,再发送给Kafka,最终写入时序库和关系库。那些校验失败的数据,会被标记为异常,进入专门的“悬挂队列”等待人工处理。

这里有个非常容易忽略的细节:EAP脚本的状态处理,必须考虑设备复机(Recovery)的场景。比如设备在加工中途突然报警停机,操作员进行处理后重新开始加工,此时EAP的状态机必须能正确“恢复”,如果恢复逻辑没做好,可能出现设备已经重新开始加工了,但EAP还认为设备在“等待搬运”,导致数据丢失或重复。

3.3 93K测试机数据的采集与解析

说到93K(Teradyne UltraFlex),用过的人都知道,它的数据文件格式和“市面上”常见的测试数据格式不太一样。除了通过SECS/GEM与EAP联动之外,93K还会生成大量的测试日志文件(如 .dat 或 .txt 格式),这些文件包含每个测试项的详细测量值(比如某个引脚的漏电流值、输出高电平电压值)。

我们采集93K数据的方案是双轨并行:轨道一,走SECS/GEM事件,实时拿到每颗Die的Bin号和Map图信息;轨道二,通过文件采集器定时扫描测试机指定的输出目录,把详细的测试参数文件抓取到平台,解析后入库。这样既保证了map图的实时性,也保证了分析参数时的完整精度。

解析93K的数据文件有一点要特别小心:文件内的记录顺序并不等于测试顺序。因为测试机是并行测试多个Site的,文件里的数据是按照测试资源(Site)分组排序的。如果你按行读取后直接当成时间序列去分析,很可能会得出完全错误的结论。正确的做法是,在解析文件时,先按“Site + TestName + Instance”这三个维度对数据进行分组,再按内部的Sequence号排序,这样得到的数据才是准确的。

4. 常见问题与排查技巧实录

多源数据集成平台的上线,从来不是一蹴而就的。这个过程中,我们遇到的典型问题可以说是不胜枚举。这里挑几个发生率最高、排查起来最费劲的问题,给大家做个交流。

4.1 设备数据“幽灵重复”问题

有一次,我们发现某台刻蚀机的腔体压力数据在凌晨3点左右出现了约5分钟的数据重复,也就是说同一个时间戳的数据出现了两条一模一样的记录。起初以为是采集程序bug,排查了很久,最后发现是设备端的SECS通信模块在凌晨做了一次“重连”。重连时,设备会重新发送缓存的最近几笔事件数据,以保证服务器端状态同步。而我们的EAP脚本没有识别出这是重复事件,简单地全量转发到了Kafka。

排查思路与解法:面对这种情况,单纯靠时间戳去重往往不够,因为设备重启后时间戳也可能重置。比较好用的方式是在采集端和设备端之间建立幂等机制。我们在数据模型里加了一个“全局唯一ID”,由EAP根据设备ID和事件序列号(SECS报文头里的SYS字节)生成。当存储层检测到相同的全局唯一ID重复出现时,直接忽略。另外,通过设置一套“设备不同步时间补偿参数”,也可以解决部分由于设备时钟偏移导致的时序错乱。

4.2 多设备间时间不同步的噩梦

如果分析时发现一张晶圆的工艺配方和测试结果对不上,且时间顺序明显乱序,大概率是设备时间没同步。产线里几十台设备,不可能每台都去手动校时。有的设备工程师图省事,关了设备后重启,时间返回到了出厂设置,于是整个时间段的数据时间轴就乱了。

排查思路与解法:我们最终是靠“三级校时”解决的。第一级,在网络层面启用NTP服务器,让所有设备都同步到同一个时间源。第二级,在设备接入平台时,采集软件会先获取设备当前时间和平台时间对比,偏差超过5秒就会发起告警,并在数据中打上时间偏差标记。第三级,在数据分析层,我们允许特定场景(如缺陷分析)使用“设备加工步骤序号”而不是绝对时间进行数据对齐。这样即使绝对时间有偏差,步骤之间的先后关系依然不会错。

4.3 Recipe版本混乱导致的数据归因错误

有一次工艺工程师说,某批次产品在光刻工序后,关键尺寸(CD)测量值偏大。平台自动关联了那台光刻机的Recipe版本,发现用的是老的Recipe V2.3。但MES显示施工单上要求用的是新的V2.5。这意味着设备工程师现场改了Recipe,但MES没更新,导致数据分析归因时匹配到了错误的信息。

排查思路与解法:这是典型的“数据源之间字段不一致”问题。MES里记录的是“工艺要求的Recipe”,而设备实际执行的是“本地加载的Recipe”。要解决这个问题,必须把“计划要求”和“实际执行”两层数据独立采集、独立存储、再在分析层做对比。我们在EAP脚本中增加了一个逻辑:当MES下达批次的Recipe要求后,EAP在设备启动加工前,会回读设备当前的Recipe名称和修改时间,如果不匹配就禁止启动加工或发送告警。并且平台里保存的Recipe数据,是以“设备端回读的实测值为准”,而不是MES的登记值。

5. 一些压箱底的避坑建议

如果前面讲的都是“术”的层面,那最后这部分算是“道”的经验。多源数据集成项目,到后期往往拼的不是技术,而是对产线现场规则的理解和对不确定性的容忍度。

别忽视数据字典的维护。设备厂商的技术支持提供的SECS数据字典,往往只有简单的变量名和描述。但真正到了使用的时候,你会发现同一个变量名在不同设备型号下的物理含义可能不同。比如“RF_POWER”,在等离子体刻蚀机里可能是“下电极射频功率”,在PECVD设备里可能就是“射频源功率”。这份数据字典,最好由项目组自己结合工艺知识重新梳理一遍,形成企业的标准数据字典,维护好它是平台能够长期发挥作用的生命线。

数据质量监控必须前置。不要等业务用户发现报表异常了,才去检查是不是数据采集的问题。我们在平台上建了一个数据“健康度看板”,实时统计每分钟从每条链路收到的数据条数、时间戳延迟、重复率、空值率。任何一个指标远超基线,系统自动推送告警到值班群。这样能省掉后续大量“背锅式”排查时间。

集成平台与产线系统解耦是底线。这一点我非常坚持。集成平台就是用来“吸”数据的,它不应该反向依赖产线系统的实时响应。哪怕分析平台宕机了,产线上的EAP、MES也应该正常流转,只是历史数据暂时无法同步而已。这靠的就是前文提到的“传送带”架构:产线数据先把数据写到本地缓冲,再由单向的数据搬运服务搬到平台。任何时刻都不要开“双向通道”,否则一个边缘系统的变更就可能引发生产事故。

说到底,良率分析平台的多源数据集成,表面上看是技术问题,实质上考验的是对半导体制造全流程的理解深度。它能走多远,不取决于用了多贵的大数据组件,而取决于你对产线上每一个数据来源的“脾气”摸得有多透。把基础打牢,后续分析才能有恃无恐。

返回列表