Computer Science and Application
Vol.06 No.11(2016), Article ID:19028,10 pages
10.12677/CSA.2016.611085

Class Design of Process Planning in MES for Semiconductor Final Test

Ren Wang1,2, Hua Ye1,2, Haobo Liu1,2

1School of Automation, Southeast University, Nanjing Jiangsu

2Key Laboratory of Measurement and Control of Complex Systems of Engineering of Ministry of Education, Southeast University, Nanjing Jiangsu

Received: Nov. 2nd, 2016; accepted: Nov. 21st, 2016; published: Nov. 24th, 2016

Copyright © 2016 by authors and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY).

http://creativecommons.org/licenses/by/4.0/

ABSTRACT

MES has been widely used in Semiconductor test manufacturers for increasing productivity. The function of process planning has been required because of varied requirements to test process and procedures from customers. Additionally, classes of procedures should be able to be extended easily in MES by developer when it’s necessary. We designed the entity classes according to the requirements of test process and each test procedure, and extendibility has been achieved by applying composite pattern. Test results show that process can be customized and test data can be saved properly, the existed class formation can be extended easily as well. The developed function can be used in MES for final test properly.

Keywords:Semiconductor Final Test, MES, Process Planning Composite Pattern

半导体FT测试MES的流程定制功能的类设计

王仁1,2,叶桦1,2,刘浩波1,2

1东南大学自动化学院,江苏 南京

2东南大学复杂工程系统测量与控制教育部重点实验室,江苏 南京

收稿日期:2016年11月2日;录用日期:2016年11月21日;发布日期:2016年11月24日

摘 要

使用MES提高生产力已经成为半导体测试厂商的常见手段,而客户对FT测试流程及测试步骤的多样化需求要求MES软件必须具有灵活定制测试流程的功能,并在必要时能够由开发人员在MES软件中快速扩展出新种类的测试步骤。本文根据FT测试流程及其中各类测试步骤的业务特点进行了类设计,并使用“组合”设计模式使其具有优良的可扩展性。测试结果表明,基于该类设计的功能实现满足了流程测试步骤灵活制定、测试结果数据保存等功能,并具有十分优良的可扩展性,可较好的应用于半导体FT测试MES软件中。

关键词 :半导体FT测试,MES,流程定制组合设计模式

1. 引言

半导体FT测试(Final Test,也称为FT)是对已制造完成的半导体元件进行结构及电气功能确认,以保证半导体元件符合系统的需求 [1] 。半导体行业是典型的技术密集型科技制造行业,与信息化的企业级应用软件相结合对提高生产效率至关重要,而其复杂多变的测试流程则对应用软件的设计提出了更高的要求。

制造执行系统MES (Manufacture Execution System)是一种以优化整个生产过程为目标,实时收集和处理生产过程中的数据,同时与计划层和控制层保持双向通信并从上、下两层接收相应数据、反馈处理结果和生产指令的企业级应用软件 [2] 。MES是半导体测试行业常见的应用软件,自上世纪八十年代初在美国企业界兴起后已经成为制造业信息化中成熟的系统。MES为控制包括物料、设备、人员、流程指令和设施在内的所有工厂资源,提供了一个统一的平台,对提高企业生产效率、提高产品质量、降低消耗方面具有重要的作用 [3] 。根据客户的需求制定灵活可变的测试流程是半导体测试MES的核心功能之一,一些MES设计者将其称之为PRP (Process Planning)模块 [1] 。

不同的芯片生产者对芯片的测试流程及测试步骤有不同的要求,因此测试厂商的MES应当能够根据芯片生产者的要求在软件系统中建立组装出一条完整的测试流程。在这条测试流程中应当包含客户要求的各个测试步骤及顺序,而各个测试步骤中则应当包含本测试步骤的测试结果以及特定的业务逻辑。如何进行类设计满足上述需求并在必要时能够快速开发扩展出新类别的测试步骤成为MES软件的设计中需要重点解决的问题。

2. 功能需求

2.1. 行业术语定义

为描述方便,特对行业术语解释如下:

Ÿ 来料:指从客户处得到的、未经过测试的封装后芯片;

Ÿ 产品:指经过测试、可以发货返还给客户的芯片;

Ÿ 生产:指质量检测过程,使得来料转变为产品。

Ÿ PE:Process Engineer。流程工程师,负责在系统中为产品制定对应的测试流程。

Ÿ OP:Operator。操作员,负责在测试生产线上工作,并同步在MES中维护相应信息,如保存测试数据、继续下一步测试等。

2.2. 测试流程及测试步骤

一条完整的FT测试流程由许多个测试步骤组成,每个测试步骤应当记录其自身的测试结果数据并具有特定的业务逻辑(如在何种情况下需要继续、暂停测试等等)。有一类特殊的测试步骤称为测试制程,一个测试制程可以包括一个或多个子步骤,是FT测试的核心步骤。

FT测试的测试步骤有如下9类:

Ÿ IQC (Incoming Quality Control):来料质量控制,意为对刚刚进入生产线的来料进行质量检测,一般为整个流程的第一个步骤。

Ÿ Baking:烘烤,意为对来料进行烘烤处理,为接下来的测试步骤做准备。

Ÿ GuTest:机台测试,令机台对标准件进行检测,从而校准机台设置。

Ÿ Test:测试制程,使用测试机台对来料进行检测,是FT测试的核心步骤,可包括多个子测试步骤,子测试步骤统称为FT。测试制程执行后来料转变为未包装的产品。

Ÿ Finish:测试完成站,一般在该步骤对测试后的产品进行装盘。

Ÿ FVI (Final Visual Inspection):最终光检,对产品进行可视化检查。

Ÿ FQC (Final Quality Control):最终质量控制,在装箱前进行最后检查。

Ÿ Packing:装箱,对装盘完成的产品进行装箱。

Ÿ OQC (Output Quality Control):出货品质控制,对装箱后产品进行出货前的检查。

以上9类测试步骤是目前业内较为通用的测试步骤,大多数客户对测试流程的要求可通过对以上各类测试步骤进行重复、排列、组合而建立起来。值得说明的是,半导体行业还处于高速发展阶段,以上提到的9类测试步骤必然无法长期满足日益增长的客户需求,因此能够允许开发人员快速扩展出新的测试步骤类也是重要需求之一。

2.3. 流程定制功能

对于每一批来料,首先由PE针对客户的要求进行流程定制,再由生产线上的OP根据已制定的测试流程依次执行测试步骤对来料进行测试,如图1所示。

例如,某客户向FT测试厂商寄送出一批来料,并要求对该批来料依次进行如下步骤的测试:IQC- > Baking- > Test(FT1- > FT2)- > Finish- > OQC。其中,Test为测试制程,包含两个子测试步骤:FT1、FT2。当测试厂商收到客户的要求后,PE就会根据客户的要求在MES中建立一套包含以上所有测试步骤的测试流程记录表,生产线上的OP就会根据此表依次执行各个步骤,并将测试结果记录在表中,示意图如图2所示。当有另外一个客户向测试厂商提出不同的测试流程要求时,PE会根据客户要求在MES中建立不同的流程步骤与流程记录表,因此OP也会执行不同的操作步骤,得出不同的测试结果数据。多样化的客户需求要求MES必须具有灵活定制测试流程的功能,以及快速开发扩展的能力。

Figure 1. Flowchart: process planning

图1. 流程定制业务流程图

Figure 2. An example of process planning business

图2. 流程定制业务举例示意图

对于PE,MES流程定制功能应满足以下需求:

1. 可选择一个或多个测试步骤加入到测试流程中;

2. 同一类测试步骤可重复添加;

3. 可利用子测试步骤组装出新的测试制程,并可选的加入至测试流程;

4. 可记录流程中的测试步骤顺序,对顺序敏感;

对于OP,应满足以下需求:

1. 可在测试过程中对每个步骤的测试结果数据进行录入和保存;

2. 可执行开始步骤、结束步骤、暂停、返工等相关流程操作。

对于开发人员,类设计应当符合“开放–封闭原则” [4] ,具有优良的扩展性,能够在必要时灵活扩展出新的测试步骤类。

3. 抽象建模与类设计

3.1. UML

UML (Unified Modeling Language,统一建模语言)是面向对象软件的标准化建模语言 [5] 。UML因其简单、统一的特点,而且能表达软件设计中的动态和静态信息,目前已成为可视化建模语言的工业标准。本文将使用UML对抽象建模和类设计的过程进行描述。

3.2. 基于传统方法的抽象建模与类设计

3.2.1. 抽象建模

小节1.3中所描述的流程定制功能需求中主要涉及了三个对象:测试流程、测试步骤以及包含在测试制程中的子测试步骤。首先尝试以传统的树形结构对上述三个对象进行抽象,如图3所示。其中,Process对应测试流程、Node对应普通测试步骤、ComplexNode对应特殊的测试步骤——测试制程、Test对应测试制程中的子测试步骤;Node与ComplexNode为Process的叶子节点、Test为ComplexNode的叶子节点。通过建立这样的树形结构可完整的描述出不同的测试流程。

3.2.2. 流程类与测试步骤基类的设计

由于1.2小节中所述的9类测试步骤拥有共同的属性与操作,因此可抽象出一个基类与流程类建立联系。根据抽象模型以及功能需求可得出流程类与测试步骤基类的设计如图4所示。

其中,Process为测试流程类,包含两个成员变量以及三个方法:lot变量用于与来料批次绑定;nodes变量是Node对象的列表,用于保存当前测试流程所包括的测试步骤及其顺序信息;以String为参数的构造方法通过解析包含流程信息的字符串创建Process对象;endCurrentNode()方法用于结束当前测试步骤,

Figure 3. Abstract model based on tree structure

图3. 基于“树形”结构的抽象模型

Figure 4. Class of process and base class of test step

图4. 流程类与测试步骤基类

即首先找到当前正在进行的测试步骤Node类型实例,然后执行该实例的end()方法;startNextNode()方法用于进入下一个测试步骤,该方法中首先执行endCurrentNode()方法,然后根据步骤列表寻找到下一个步骤的Node类型实例,并执行该实例的start()方法。

Node为测试步骤基类,包含四个成员变量以及四个方法:name变量为当前测试步骤的名称;state变量为当前测试步骤的状态(未开始、已开始、已结束等);result变量为Result类型,用于保存当前测试步骤的测试结果数据(如各个Bin类所包含的数量等);start()方法用于进入当前步骤;end()方法用于结束当前步骤;setResult(Result)、getResult()方法分别用于设置、获取当前步骤的测试结果,是成员变量result的普通get、set方法。

3.2.3. 测试步骤子类及子测试步骤的设计

测试步骤除了共同的属性与操作,还拥有自身特有的属性。如IQC有重量、标记等特殊属性,Baking有烤箱温度、烤箱编号等属性需要存储。因此,各类测试步骤均继承Node基类并建立自己的子类。详细类设计如图5所示:IQC类为IQC测试步骤的抽象,成员变量mark、netWeight存储了重量与标记数据;Baking类为Baking测试步骤的抽象,成员变量ovenNumber与timeLimit记录了烤箱编号以及烘烤时间限制数据;GuTest类为GuTest测试步骤的抽象,由于测试结果的格式不确定,以字符串变量record的形式记录了该测试步骤的测试结果;测试制程类命名为ComplexTest,并持有子测试步骤类Test的列表,用于记录子测试步骤的信息;Test类为子测试步骤Test的抽象,成员变量name、note、result、state、turn分别记录了步骤名称、备注、测试结果、测试状态、步骤顺序等信息;FVI、FQC、OQC较为相似,统一抽象为PassNode类,以字符串的形式记录结果数据;Packing与Finish相似,统一抽象为Finish类,其中createReelcodes()方法为创建Reel盘实例的方法,由于涉及到本文范围以外的类,不再赘述。

Figure 5. Base class of test step and derived classes

图5. 测试步骤基类与各测试步骤子类

如上所述的设计虽然可以满足基本的功能需求,但却不具备灵活的扩展性。例如:要建立单独的Test子测试步骤,就必须先建立ComplexTest测试步骤;要在ComplexTest测试步骤中添加IQC等步骤,或者要求ComplexTest测试步骤中再包含其他测试步骤,就必须修改ComplexTest类代码。上述的一系列问题均可通过“组合”设计模式来解决。

3.3. 基于组合设计模式的改进类设计

3.3.1. “组合”设计模式

设计模式是一种可以被反复使用,经过分类编目的代码设计经验的总结。使用设计模式可以保证代码的可靠性,提高代码的可维护性,使其可重复利用 [6] 。

组合模式允许将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。组合模式的类图如图6所示。其中,Component类为抽象类,Leaf类与Composite类均继承Component类;Leaf类是Component类的叶子节点(即单一元件),Composite类是Component类的根节点(即复合元件)。Composite类回旋持有Component对象列表,将其作为自身的子元件,即可方便的实现树形结构 [7] 。

3.3.2. 抽象建模

基于2.2.1小节所述的基本树形结构,在保持测试流程与测试步骤的一对多关系、测试制程与子测试步骤的一对多关系保持不变的同时,增加两个抽象对象:“叶子(Leaf)”与“组合(Composite)”。其中非测试制程的测试步骤与子测试步骤在树状结构中为叶子节点,因此归属于“叶子”;测试制程由于可以包含更多的子测试步骤,是根节点,因此归属于“组合”。以此为基础建立模型并应用组合设计模式。

3.3.3. 改进的测试步骤类设计

将组合模式应用至测试步骤类的设计中,得到的类设计如图7所示。其中,将Node设计为抽象基类,并创建LeafNode与CompositeNode两个抽象子类。Node抽象基类作为CompositeNode类的元件,使得CompositeNode类可持有Node基类所有的子类,包括所有叶子节点和根节点,ComplexTest类即为测试制程类。这样的类设计与2.2小节中所描述的类设计的显著不同在于:2.2小节中基于传统方法的类设计只能构建出既定的三层树状结构,而本小节中应用组合设计模式的类设计可通过CompositeNode类的不断嵌套构造出无穷多层的树状结构,极大的提高了可扩展性。

图5中所有原本直接继承Node基类的测试步骤类更改为继承LeafNode类,如图8所示。需要说明的是,原本孤立的Test类现在继承了LeafNode基类,因此既可以作为独立的测试步骤被编排入测试流程,也可以作为子测试步骤编排入ComplexTest测试制程。同样,IQC、Baking等步骤也可以方便的组成新的测试步骤,大大提高了类设计的可扩展性。

Figure 6. Class diagram of composite pattern

图6. 组合模式类图

Figure 7. Application of composite pattern on test step classes

图7. 测试步骤类中的组合模式应用

Figure 8. Classes derived from LeafNode class

图8. 继承LeafNode类的测试步骤类

4. 功能运行结果

系统功能采用B/S架构,使用Java Web相关技术 [8] ,以Spring、JPA作为后台开发框架,以MySQL作为数据库具体实现。开发完成后通过JDK工具生成war包,部署在服务器的tomcat容器中运行。

流程组装界面如图9所示。其中流程明细一栏通过点选左右两侧站点的名称以及上下左右的操作按钮来添加、删除站点以及调整站点顺序,点击保存后生成字符串传递给服务器端生成所需要的存储结构。IQC录入以及保存检测站点数据的界面如图10所示,其余站点的界面类似。经测试,流程定制所需各项功能均已完成,运行稳定可靠。

Figure 9. User interface of process assembly

图9. 流程组装界面

Figure 10. User interface of test result data input and save for IQC

图10. IQC检测结果数据的录入及保存界面

5. 结束语

本文聚焦于半导体FT测试MES中流程定制功能的类设计。首先尝试以传统的方法将功能需求抽象为三层树状结构,再将组合设计模式应用于类设计中从而大大提高了可扩展性,充分适应了半导体测试行业迭代速度较快的特点。在Java Web技术的基础上使用Spring、JPA框架对功能进行了实现,取得了良好的效果。

文章引用

王 仁,叶 桦,刘浩波. 半导体FT测试MES的流程定制功能的类设计
Class Design of Process Planning in MES for Semiconductor Final Test[J]. 计算机科学与应用, 2016, 06(11): 705-714. http://dx.doi.org/10.12677/CSA.2016.611085

参考文献 (References)

  1. 1. 李贺明, 卫小松. 半导体企业MES的设计与实现[J]. 制造业自动化, 2015(24): 4-6, 22.

  2. 2. MESA International. MES Ex-plained: A High Level Vision. MESA International White Paper Number 6, 1997.

  3. 3. 何月华. 半导体行业MES的研究与应用[D]: [硕士学位论文]. 上海: 上海交通大学, 2007.

  4. 4. 李杰, 彭月英. 抽象思维与设计模式[J]. 计算机与信息技术, 2011(6): 37-39.

  5. 5. 邵维忠, 梅宏. 统一建模语言UML述评[J]. 计算机研究与发展, 1999(4): 2-11.

  6. 6. 夏丽娟, 余青松. 基于组合设计模式的软件网络演化生长研究[J]. 计算机应用与软件, 2012(7): 133-136.

  7. 7. Riehle, D. (1997) Composite Design Patterns. Proceedings of the 12th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, 218-228. https://doi.org/10.1145/263698.263739

  8. 8. 祁耀斌, 李福太, 陈逢春, 等. J2EE平台上MVC设计模式在开发电子政务系统中的应用[J]. 计算机应用研究, 2004(8): 203-205.

期刊菜单