案例研究
硬件可以买,软件得自己写
从两台 MS-DOS PC 用并口线同步,到一台机器一个程序——中间隔了三个沉积系统、二十年时间
Oleksiy Penkov · 浙江大学终身教授· 2026年5月7日
两个场景
杭州,今天。 一片硅衬底上正在沉积 W/B4C 多层膜,腔体所在的房间里没有人。转盘在四个磁控管下方旋转——三台脉冲直流电源接金属靶,两台 RF 电源接介质靶——配方正在加载第 30 个周期里的第 14 个双层。挡板在几百毫秒的窗口里依次开合:靶挡板开、衬底挡板开、钨沉积 7.4 秒、衬底挡板关、转盘转 90°、靶挡板关,下一台电源升到设定值,B4C 沉积 23 秒,再来一遍。整套动作由一个程序统一调度。32 通道的运行数据——压强、电压、电流、气体流量、挡板状态、转盘位置——每秒写一次盘。电源稳定地保持设定值。我在吃午饭。
哈尔科夫,2002 年。 同样的活,不同的世纪。两台 MS-DOS PC 摆在腔体旁边的木台子上,中间一根并口线相连。一台驱动转盘和挡板,另一台管衬底旋转的步进电机和电源。两台机器通过 LPT 口同步——一台发选通脉冲,另一台盯着这个脉冲——因为单台 DOS 机没办法一边用一个并口同时驱动两组步进电机一边还能保住时序。配方写在一段 Turbo Pascal 程序里,界面是 Turbo Vision 经典的青底蓝边菜单。我按下启动,听见步进电机隔着腔体壁咔哒作响,看着屏幕在 80 列文本模式下一行一行刷新,沉积就这么跑下去。
腔体越做越大。电源越做越好。衬底架学会了自己冷却。但软件要回答的核心问题没变过:哪个东西现在动、动多久,与此同时哪个东西是开的。变的是腔体外面那层架构——而我们学到的大部分东西,都是吃了亏才学到的。我们试过把这层架构从供应商那里买回来——一套交钥匙的配方编辑器加一块漂亮的 HMI。我们最后还是自己写了一遍。
故事就在这里。
两台 PC,一根并口线
哈尔科夫那台腔体还在。卧式转盘,2002 年自建,前后改造过两次,但骨架没动过——二十四年过去,这周还在镀样品。不是博物馆陈列品,是现役设备。我对沉积控制软件的全部理解,都是站在它旁边学到的。
当时建腔的预算够买步进电机、电源、真空硬件、外加两台二手 PC。买不起像样的运动控制卡——那种你给它发一句「以速度 Y 转到角度 X」、剩下的脉冲串它自己处理的卡。所以我们用了 2002 年预算紧张时大家都用的办法:直接从 LPT 引脚驱动步进电机。每一个步进脉冲都是软件定时往并口写一位。一台 DOS 机如果什么别的事都不做,勉强能保住一组电机的时序。两组——转盘和衬底旋转——它就顶不住了。脉冲串撞车,时序错位,膜厚就不对——而我们通常要等几天后 XRR 拟合结果回来,才知道出了问题。
于是我们把活分了。一台 PC 管挡板和转盘。另一台管衬底旋转的步进电机和电源。两台机器靠中间那根并口线同步——一台拉高选通线,另一台盯着对应的输入引脚,看到边沿就动。粗糙、确定、便宜。所有同步运动问题的最底层,都是一根线和一个时刻。

哈尔科夫,2002 年。卧式转盘,机柜里两台 MS-DOS PC,一根 LPT 线把它们连在一起。还在跑。
软件叫 DepositionSystem 2——一个 Turbo Pascal 程序,UI 用的是 Turbo Vision 那个文本模式库:IBM-PC 蓝底配青色边框的面板,方向键操作的下拉菜单。它有自己的配方语言:一串平铺的命令,操作员手敲或者从文件加载,从上往下顺序执行。deposit 在某个功率下持续多少秒,move 到某个位置,wait 直到某个条件成立。计时全靠软件定时器,没有硬件辅助。放在 2002 年,这已经是真正能干活的东西了——配方可读、可改、可存,比起一手拧旋钮一手掐表强得多——但它的天花板就是那个时代给的天花板。DOS、单任务、没有抢占式调度,每一毫秒都要靠人手算清楚。
Turbo Vision 那套菜单早就退场了。从 DepositionSystem 2 留下来、被我移植进之后每一代软件的——三种语言、三个平台——是那套配方模型。deposit / move / wait 作为可组合的命令,按顺序执行,底下绑定的硬件可以随时换。这个抽象在 2002 年是对的,今天还是对的。它是今天在杭州运行的那套软件的脊梁。
之后十五年,这是我唯一会建的架构——也没理由觉得别人会用别的方式做沉积控制。
韩国的弯路
2017 年我在韩国新建了一个实验室。新国家、新腔体、新假设:哈尔科夫那台距今十五年了,供应商的自动化总该长大了吧。展会上看是这样。宣传册上是触摸屏、各种认证、漂亮的前面板——一切预示着专业工业设备的视觉信号,而这些是我们当年在哈尔科夫预算下买不起的。我已经准备好不再当那个写软件的人了。
腔体本身很漂亮。立式磁控管布局,针对 Mo/B 多层膜优化——做 6.7 nm BEUV 光学元件用的材料体系。控制系统是一台 Weintek HMI:全彩触摸屏,配方编辑器有命名步骤,一整套都齐了。说实话,触摸屏这件事确实是升级。操作员在凌晨三点不再敲错键盘命令了。交接班变干净了——一个新来的学生看一眼屏幕就知道腔体在做什么,不用先被人带着走一遍 Turbo Pascal 的菜单树。培训成本低了。这是实打实的收益。

韩国,2017 年。立式磁控管,新腔体,以及新一轮的希望——这次终于不用我们自己写软件了。
然后我们开始读配方。配方编辑器只有两个动词。移动衬底。移动挡板。语言就这点。你可以把这两个动词组成序列、给序列起名字、保存——但词汇表就此为止。

那个配方编辑器。移动衬底。移动挡板。语言就这点。
腔体压强是机柜前面板上的一个旋钮。镀膜过程中操作员要站在腔体边手动转旋钮,盯着压强表,靠手把压强稳在某个区间里。不是「设一个目标值由控制器自己保持」。一个旋钮、一只手、一块表。一个 Mo/B 镀膜要四个小时——就是某个人的整个下午。
直流磁控电源也是一样的剧本。功率在每台电源的前面板上设——旋钮加开关,一台一台单独设。配方里没法写电源升降功率。步骤里没法预设功率。如果一片样品要 Mo 靶 220 W、B 靶 180 W,操作员开镀前先把两台电源调好,开镀过程中如果阴极电压漂了就得手动再调。
而且什么都没记下来。零通道的数据日志。没有运行轨迹、没有运行记录,腔体停下来时硬盘上什么都没有。这台 HMI 有触摸屏,没有记忆。
触摸屏自动化了简单的那一半——动作。化学过程,留给操作员。
最难接受的就是这一点。配方引擎从头到尾是供应商的。我们没法扩展配方去驱动电源——编辑器没暴露这个接口。我们没法加一路日志通道。我们没法在下拉菜单允许的范围之外修改任何一个动作步骤。我们能做的就是提需求单,我们也确实提了,其中一些半年后会作为固件升级回来,大多数不会。在自己写了十五年软件之后,让我意外的不是限制本身——而是失去了修复它的能力。键盘帮不上忙。编译器帮不上忙。这台腔体里跑的程序,已经是别人的了。
等到要选下一台腔体的时候,「直接买现成的」这个选项已经从桌上拿掉了。触摸屏的体验保留——这个教训记下了。封闭引擎不要。下一台机器要有触摸屏,触摸屏底下要是我们自己拥有的源码。
我们今天运行的沉积腔
杭州,2021 年。新腔体,从零开始建,这一次我清楚地知道触摸屏底下要装什么——前两台已经把答案告诉我了。
几何结构是常规的,故意常规:四个 150 mm 磁控管围着一个卧式转盘,一支离子刻蚀枪用于衬底清洗和沉积前处理,一个水冷衬底架——五小时的镀膜过程中不会因热漂移,再加一个负载锁——做完一片样品不需要把腔体放气到大气压。本底压强 1×10⁻⁷ Torr。这里没有任何稀奇的东西。稀奇的是挂在腔体侧面那一套。
五路功率通道驱动那些磁控管——三台脉冲直流电源接金属靶,两台 RF 电源接介质靶。每一台都接进了配方总线。从韩国回来后,这是我们写进下一台腔体规格书里的第一条:工作流程里不再有前面板上的旋钮,不再有操作员站在机柜前一边镀膜一边手调设定值。功率是脚本里的一个数,按配方要求的时序在数值之间斜坡变化,整个过程都被记录下来。
软件用 Delphi 完整重写过——已经是第三代、第三种语言,但 2002 年那套配方模型在底下仍然认得出来。deposit / move / wait 回来了,并且长大了。电源升降功率可以脚本化。挡板和转盘的时序可以脚本化。配方可以嵌套配方;没有长度上限,也没有固定的步骤数。操作员看到的是触摸屏,因为韩国那一课关于 UX 的教训确实记住了。和韩国不同的是触摸屏背后那部分:源码我们自己有,引擎我们可以扩展,化学过程需要新动词时配方词汇表就能跟着长。

APS System Control。配方、腔体状态、实时数据——一个屏幕、一个程序。
而且它把所有东西都记下来。32 通道的运行数据——腔体压强、五台电源各自的电压、电流、实际输出功率,每条气路的流量,挡板状态,转盘位置——每秒采样一次,写进一份 Tab 分隔的文本文件。一次镀膜大约 1.5 MB 纯文本。一个程序,一条时间线,一台机器。没有两台 PC 之间用并口线对时。没有供应商的中间件去决定哪些通道值得暴露、哪些不值得。哈尔科夫那台腔体需要两台电脑,是因为单台 DOS 机扛不住时序;韩国那台腔体什么都没记,是因为引擎不归我们扩展。这一台是一台 PC 上一个进程,日志就是这次镀膜的全部。
实际效果是:你加载一个配方,按下开始,然后走人。一个 30 周期 W/B4C 的 X 射线荧光光学多层膜要镀五个小时;操作员排好队就去吃饭。腔体保持设定值,电源保持功率,转盘按时间转动,日志文件以一秒一行的速度增长,一直到配方结束。这套软件就是我们现在以 APS System Control 的名义、由 SWS Vacuum Technology 销售的产品。这台腔体建成以来跑过的每一次镀膜都在硬盘上留下了一份完整的记录——而且我们每一份都留着。
底下垫着的那一层
那 32 通道当初不是为了将来留档而设计的。它们是调试工具——一次镀膜出问题,你打开日志,找出哪一刻什么东西漂了。我们之所以把这些文件留下来,原因很平淡:硬盘便宜,没人有理由删。一次镀膜约 1.5 MB,一个 Tab 分隔的文件接一个,堆在一个谁也没去清理过的文件夹里。头几年里它们就是表面看起来的样子——腔体的诊断废气,偶尔被翻一下,多数时候被忽略。

一次镀膜,32 通道,每秒一次采样。这份从来没打算留下来的产物。
五年以后,一批 W/B4C 系列样品回来了,配方和衬底完全相同,但 XRR 拟合结果就是对不上。我已经按我知道该查的全查了一遍,没看出任何问题。于是我让 Claude——通过我们为实验记录本写的一个 MCP 服务器——去找我没看到的东西。它在沉积日志里发现了 6% 的电源功率偏差。几分钟,而不是几天。这个故事详见另一篇案例研究;这里要说的是——如果腔体本身没在那里,是没办法靠 AI 发现这件事的。那个几秒钟跑完的查询,读的是三年前杭州那台腔体上一段配方引擎按一秒一行写下来的数据。
整条线只有一个方向。沉积控制让腔体成为可能。日志让数据成为可能。实验记录本让数据可被找到。AI 让数据可被询问。每一层都默认下面那一层已经在那里了——而最底下那一层,AI 大会上没人会提的那一层,是一段在两台 MS-DOS PC 上用并口线对时的软件。
有意思的活永远在上面。底下垫着的那一层,是要先写好的。