第六届集创赛北方华创赛题-集束性晶圆制造设备的智能调度
第六届集创赛北方华创赛题-集束性晶圆制造设备的智能调度
FrWalker前言
集创赛是国内集成电路领域最大规模高校赛事、中国高等教育学会全国高校竞赛榜单唯一入榜集成电路专业赛事,由工信部人才交流中心主办,所参加赛道由北方华创出题。比赛凑巧拿到国二、华中赛区一等奖,这个比赛奖金不多只有3000,但因此加分保研(至于读研后,就说不清这个保研是幸运还是祸害了)
概述
半导体设备产能的高低直接影响芯片加工厂的效益,而高效稳定的调度系统是保证最优产能的前提,需要满足较高的实时调度要求。其中,半导体晶圆制造设备的调度问题是一个NP-Hard问题,如果用数学规划的方法求解将会十分困难。为了找寻行之有效的调度方案,许多国内外的专家学者已经在该问题上做了大量研究,提出了一些对集束型设备调度的调度优化方法。集束型设备调度优化方法可分为运筹学方法、规则方法、多项式方法、启发式方法和智能优化方法等。总结归纳如图:
本文中采用的方法在提高算法的求解速率、模型的通用性、方案的完备性等均做了探究和解决,结果表明该调度方案是可行、有效的,可供实际生产参考。
问题概述
如图,是一种半导体晶圆的加工设备。
晶圆在其中的加工过程可以抽象为如下过程:
具体的加工要求和各项关于工艺的约束详见官网赛题或附件的技术文档,问题可以总结为含有并行腔、真空腔状态转换、驻留时间约束、加工腔清洗等众多复杂约束条件下的双臂集束型设备调度问题。其目标是在符合约束的情况下,最小化全流程完工时间,并给出详细的晶圆调度方案。包含以下三个任务:
- 确定晶圆加工次序及加工路径
- 确定加工腔的待执行任务数量及任务执行次序
- 规划机械手调度,从而确定加工腔任务执行时间
解决思路
半导体晶圆制造设备的调度问题在众多柔性车间作业调度问题算是最为复杂的一种,为了解决这个问题,比赛中采用了利用模拟退火算法求解最佳加工任务分配方案、在动态执行过程中完善所有约束并求解执行策略的方法。其大致思路如下:首先,随机给出全部晶圆各道工序加工任务的归属加工腔和执行次序。然后在简化约束和平均机械手调度时间的情况下,求解该方案下的近似完工时间,评价该加工任务分配方案的优劣。接着通过轮盘赌选择算子产生新解、模拟退火算法迭代的方式求解加工任务的最佳分配方案。最后基于分析出的模块使用策略和前一时间状态数据辅助求解后一时间状态数据的思路,动态地执行该方案,在符合约束的情况下求解晶圆各工序起止时间、驻留时间等详细的调度数据。
思路如图:
关键步骤(详见技术报告)
可视化建模
需要详细提取各大约束进行步骤分析,将解决方案用甘特图进行可视化。将一片晶圆加工的某一个环节抽象示意如图:
程序中各项属性细化分配如下:
合理情况下,随机进行分工,将所有晶圆放在一起调度的甘特图解如下:
则算法优化的最终目的是压榨甘特图中的空白区域,当所有颜色块(代表某个晶圆加工的某个环节)在符合先后约束的条件下变得紧凑,则设备各模块利用率达到充分,产能相应提高。
算法设计
甘特图所对应的实际结构在程序中为一个多维矩阵,每一个随机解均需在模拟条件下预测其完工时间,寻找出较优的调度方案方能再继续求解机械手的调度方案,这里采用改进的模拟退火算法进行求解。
效果展示
随机初解:
迭代后的优化解:
插入机械手调度即合法化后的最终解:
迭代收敛曲线:
最终的详尽调度方案:
技术文档
部署
代码结构如下,且用多进程和多线程的方式提高了求解效率:
每个.py文件均在顶部进行了参数的说明和作用解释,代码需要的相关环境采取venv方式保存,打开python IDE选择venv目录下的python环境,终端输入命令python main.py即可运行。(若venv过大无法上传附件,代码只用到两个第三方库,pip install matplotlib numpy 两个库即可)