4. 硅光晶圆测试系统架构设计

硅光晶圆测试系统同时面对光、电、运动、温控与数据五类资源,若把所有控制逻辑写在一个进程里,换一台激光源或增加一个探针卡就要改遍全工程。分层架构的核心目的,是把“测试意图”与“硬件细节”解耦:上层只描述测什么、判据是什么,下层负责怎么把电压、波长、位移真正施加到晶圆上。本节按硬件抽象层、设备驱动层、测试执行层、数据层四层展开,并给出可落地的接口与案例。

四层职责与依赖方向

依赖必须单向向下:测试执行层依赖硬件抽象层暴露的接口,硬件抽象层依赖设备驱动层的统一驱动契约,数据层被各层调用但不反向依赖业务逻辑。这样替换硬件时只改驱动与抽象层绑定,测试用例与判据保持稳定。四层之间传递的不是“命令字符串”,而是带单位、带量程、带状态的参数对象,例如 OpticalPower{value: -3.2, unit: "dBm", wavelength: 1310}。

硅光晶圆测试系统四层架构与数据流 测试执行层 Test Execution 用例调度 · 判据引擎 · 重测策略 · 并行站点编排 输入:TestPlan(站点/序列/限值) → 输出:Pass/Fail + 原始记录 硬件抽象层 HAL 统一能力接口:LaserSource / PowerMeter / SMU / Motion / TEC 单位换算 · 量程校验 · 资源锁 · 状态机(Idle/Armed/Active/Error) 设备驱动层 Device Driver SCPI / VISA / TCP / DLL 封装,命令模板与超时重试 示例::SOUR:POW {p}dBm · :READ:POW? · 位移 {x,y}μm 数据层 Data Layer 原始记录 · 校准系数 · 晶圆Map · 判据版本 · 追溯ID 写入:批次/晶圆/Die/站点/时间戳 → 查询:良率与失效分布 记录/追溯 硬件

硬件抽象层:把“能力”而不是“型号”暴露给上层

HAL 的关键是定义能力接口,而不是包装具体仪器。以光功率测量为例,上层只调用 measure_power(channel, wavelength),HAL 内部完成:选择量程、等待稳定、读取、单位归一化为 dBm、附加不确定度。若某台功率计只支持线性单位 W,HAL 负责换算,测试用例无需感知。HAL 还应维护资源锁,避免同一激光源被两个站点同时改写波长。

class LaserSource(ABC):
    @abstractmethod
    def set_wavelength(self, nm: float) -> None: ...
    @abstractmethod
    def set_power_dbm(self, dbm: float) -> None: ...
    @abstractmethod
    def arm(self) -> None: ...   # 进入可发射状态

class PowerMeter(ABC):
    @abstractmethod
    def measure_dbm(self, ch: int, nm: float) -> float: ...

设备驱动层:命令模板与错误恢复

驱动层把 SCPI 命令、超时、重试、连接生命周期封装起来。建议每个驱动实现 connect/close/query/write 四个基础方法,并把仪器返回的错误码翻译成统一异常,例如 DeviceTimeout、OutOfRange。重试策略要区分“可重试”与“不可重试”:通信超时可重试 2 次,量程越界必须立即上报,不能盲目重发。

测试执行层:用例、判据与重测

执行层读取 TestPlan,按站点展开序列。每个测试项包含:激励设置、稳定等待、测量、判据比较、记录。判据建议写成表达式而非硬编码,例如插入损耗 IL = P_in - P_out,判据 IL <= 3.0 dB。重测策略可配置为“同点重测 1 次,仍失败则标记 Fail”。并行站点时,执行层通过 HAL 的资源锁串行化共享激光源,其余站点可并行做电学测量。

数据层:原始记录与追溯

数据层至少保存三类数据:原始测量值(含单位与不确定度)、校准系数(波长相关)、判据版本。每条记录带 lot_id / wafer_id / die_x / die_y / site / timestamp / recipe_version,便于回溯“某片晶圆为何判 Fail”。建议原始数据与判据分离存储,判据更新后可重算历史数据,而不覆盖原始值。

案例:1310 nm 波导插入损耗测试

以某 8 英寸硅光晶圆为例,站点 1 执行波导 IL 测试。流程为:激光源设 1310 nm、0 dBm 并 arm;光开关切到参考支路,功率计读 P_in;切到待测波导,读 P_out;计算 IL。示例参数:P_in = -3.2 dBm,P_out = -6.5 dBm,则 IL = 3.3 dB,若判据为 ≤3.0 dB,该 Die 判 Fail。若 P_out 低于 -20 dBm,先检查耦合对准而非直接判 Fail,这属于执行层的异常分支。

HAL 接口一旦稳定,新增一台激光源只需实现 LaserSource 并注册到资源池,测试用例与判据无需修改,这是分层架构最直接的收益。
不要把校准系数写死在驱动里。校准随波长与时间变化,应放在数据层并由 HAL 在测量时注入,否则换波长后数据不可追溯。

落地时建议先固定 HAL 接口与数据表结构,再补驱动与执行层。接口评审通过后,硬件替换、并行扩展与历史重算都变成局部改动,系统才具备长期可维护性。