(1)三工位的加工方式可以同时进行多个硅片加工,因此能够满足高生产率要求;
(2)各个抛光头运动分别控制,这可以避免第二代CMP抛光机的装载平衡问题,可满足单片加工要求;
(3)采用新-代硅片夹持技术凹,夹持稳定,效率高;
(4)具有终点检测装置,在加工过程中不需要通过控制抛光时间来控制抛光过程。
CMP设备的监控系统软件对于抛光机床的加工精度、加工表面质量和生产率影响很大。本文中研究的CMP监控系统软件设计采用了目前软件工程学中主流的面向对象方法,并用C++语言编写,提高软件的执行效率。为提高代码的可重用性和可移植性,按照CMP控制系统的功能进行功能模块划分,并将各个功能模块封装成C++类。控制软件采用了MFC的单文档模式,静态拆分窗口的方法,以解决多视图通讯问题;通过对OpenGL封装类的操作实现采集数据的全程动态显示和CMP机床的动作演示。
2 CMP设备控制软件模块规划及数据封装
CMP控制软件完成的主要功能有:抛光盘、抛光头的运动控制;抛光压力、抛光盘真空度的在线精密测量与控制;抛光垫在线修整控制:修整速度、修整压力、修整时间等修整参数的控制问题;抛光动作、上下片动作、硅片传输等动作的协调控制和安全保护及报警;数据的监测、处理、存储和显示等。
CMP控制软件的功能模块划分如图2所示:
在MFC的单文档模式下,对3个工位功能进行抽象,封装成3个视图类(均派生于CView类)。在视图类基础上对每个工位的功能进行再一次抽象,封装成几个功能模块类,主要有数据存储类(CStorage)、数据显示类(CGraph)和工位动作控制类(CControl)等。
其中CControl类的封装格式如下:
将设备动作(机械手动作、由步进电机带动的上下料托盘的动作等)的演示模块封装成动作演示类CRobotView(派生于CView)。3个工位的工作流程图模块封装成流程演示类CcmpCtrlSysView(派生于CFormView)。将机床控制参数设置状态模块封装成CcmpVie4(派生于CView),至此共有6个视图类。
根据OpenGL的功能封装了两个C++类,分别为定义了视口大小、投影变换等功能CCamera类和封装了OpenGL的环境设置的COpenGLDC类。
另外,本控制软件中还用到了参数设置等若干对话框类。
CMP控制软件类之间的关系如图3所示。
3 多视图类通讯
三工位CMP机床各工位之间的动作有着严格的时序要求,这就要求控制软件的各个模块之间即视图类之间能够完成通讯。从图3可以看出6个视图类都和文档类有着联系,因此可以考虑各视图类通过文档类实现彼此之问的通讯。
在SDI应用程序中,当文档对象首先被构造之后,或用户从File中选择New命令时,框架都会调用虚函数CDocument()::OnNewDocument()。这里是设置文档数据成员初始值最好的地方。本文正是借助这个函数实现多视图的通讯。
结合文档和视图分离的思想,由于跟文档类相连的视图类是不能安全的与除文档类之外的其余的视图类通信的。因此只能让他们都与文档类通信。在文档中设置相应的指针以获得各个视图指针,实例代码如下:
重载文档类的OnNewDocument()虚函数,并在该函数中加入如下代码:
这样,在应用程序启动时可以在文档类中得到所需的视图类指针,以后各视图类通过文档类获得所需通讯视视图的指针。下面就以CcmpView1和CcmpView2视图类之间的通讯来解释视图通讯的过程。以CcmpView1中获得CcmpView2的指针为例。首先在CcmpView1的头文件中声明一个Cc mpView2指针,并加入类CcmpView2的头文件,然后重载CmpView1类的OnInitialU Date()虚函数,在该虚函数中加入CCmpCt rlSysDoc*pDoc=GetDocument ();pView2=pDoc->pView2;从而实现了CcmpView1中获得CcmpView2指针,为后续的通讯奠定了基础。
4 CMP机床参数及设备动作的可视化
为了观察3个工位抛光压力值的大小,控制程序需要动态显示抛光压力曲线。常规数据动态显示方法多采用VC动态贴图技术。经过实验发现动态贴图不能做到将采集到的数据全程动态显示。
CMP机床抛光压力采集周期设为1 ms,其工作时间最长为6 min,这就意味着单工位采集的数据个数最大为36万个,3个工位的数据个数最大为108万个。为了实时显示这些数据,在堆中创建3个2 M字节数组存储采集数据,然后调用函数RenderView()显示数据。显示函数主要包括两部分代码,第一部分是用显示列表技术制作了坐标系而第二部分代码则是用OpenGL的双缓存技术编写压力曲线的绘制。
三工位CMP机床是自动化程度较高的数控设备,一次可以加工两个片盒的硅片,共计50片。控制系统要保证1和2号工位要连续加工17片,3号工位连续加工16片硅片,另外控制任务还有两个机械手的动作协调,抛光完成后将硅片送到清洗位等,可见控制时序是非常复杂的。所以无论是检查控制软件动作的正确性还是加工中观察机床的实际运行情况,增加机床动作演示功能是非常必要的。
用OpenGL封装类制作了机床平面布置图,当某一工位工作时就将该工位的颜色设成工作时的颜色,不工作时颜色不变,从而能够以动画的方式实现动作显示。 OpenGL类的封装格式如下:
控制程序的画面如图4所示。
4 结束语
面向对象设计方法在本控制软件中的使用,提高了软件的可重用性,可扩充性和健壮性。多视图通讯的实现,保证了任意视图中可以获得其他视图的指针,从而使程序简洁、紧凑、高效,动态分配内存,提高程序的执行效率。OpenGL封装类实现了程序的可视化,提高了程序的执行效率。