4. 批次状态机模型:状态定义、转换规则与触发条件

在Mask光刻版设计流程中,每个设计批次(Lot)的生命周期由一组严格定义的状态构成。状态机模型确保了设计任务的可追溯性、责任清晰性以及流程的不可逆性。本节将详细定义五个核心状态、它们之间的合法转换路径以及触发这些转换的具体条件。

4.1 状态定义与语义

批次状态机包含以下五个基本状态,每个状态对应设计流程中的一个关键里程碑:

状态名称 状态标识 核心语义 责任人
待设计 PENDING 批次已创建,设计需求已录入,等待分配设计资源 项目经理
设计中 IN_DESIGN 设计工程师正在执行版图绘制、OPC修正等任务 设计工程师
设计完成 DESIGN_DONE 设计工作结束,数据已提交,等待进入审核队列 设计工程师
审核中 IN_REVIEW 审核工程师正在对设计数据进行DRC/LVS/DFM检查 审核工程师
审核通过 / 驳回 APPROVED / REJECTED 终态:通过则释放至光刻版制造;驳回则返回设计阶段 审核工程师
设计原则: 状态机采用“显式终态”设计。审核通过(APPROVED)和审核驳回(REJECTED)均为终态,但驳回状态允许通过“重新提交”动作再次进入设计流程,而通过状态则锁定批次,禁止任何修改。

4.2 状态转换规则与触发条件

状态转换必须遵循严格的规则,任何非法跳转都会被系统拒绝。下图展示了完整的转换拓扑结构:

Mask设计批次状态机转换图 待设计 设计中 设计完成 审核中 审核通过 审核驳回 分配任务 提交数据 推入审核队列 检查通过 检查不通过 重新提交 转换规则说明 禁止跳转:待设计→审核通过、设计中→审核驳回、设计完成→审核通过(必须经过审核中状态)

4.3 详细转换条件表

下表列出了所有合法转换的触发条件、前置检查项以及系统动作:

源状态 目标状态 触发条件 前置检查 系统动作
待设计 设计中 项目经理点击“分配任务” 设计工程师已绑定、需求文档已上传 锁定批次、生成设计任务单
设计中 设计完成 设计工程师点击“提交数据” 所有设计文件已签入、版本号递增 触发自动DRC预检查、生成设计快照
设计完成 审核中 审核工程师“领取审核任务” 批次未被锁定、审核资源可用 分配审核工程师、启动审核计时
审核中 审核通过 审核工程师点击“通过” DRC/LVS/DFM检查全部通过、无未处理异常 生成审核报告、释放批次至制造
审核中 审核驳回 审核工程师点击“驳回” 至少一项检查未通过、填写驳回原因 生成问题清单、通知设计工程师
审核驳回 设计中 设计工程师点击“重新提交” 所有驳回问题已修复、版本号+1 清除审核记录、重置审核计数器
关键约束: 审核通过(APPROVED)状态是不可逆终态。一旦批次进入该状态,任何修改操作都会被禁止。如果制造过程中发现设计问题,必须通过“工程变更单(ECO)”流程创建新的批次,而非修改当前批次。

4.4 状态机实现要点

在实际系统中,状态机通常通过数据库状态字段 + 事件驱动架构实现。以下是核心实现逻辑的伪代码示例:

// 批次状态机核心逻辑(伪代码)
class BatchStateMachine {
    // 状态转换映射表
    transitions = {
        'PENDING':       ['IN_DESIGN'],
        'IN_DESIGN':     ['DESIGN_DONE'],
        'DESIGN_DONE':   ['IN_REVIEW'],
        'IN_REVIEW':     ['APPROVED', 'REJECTED'],
        'REJECTED':      ['IN_DESIGN'],
        'APPROVED':      []  // 终态,无合法转换
    };

    function transition(batchId, targetState, userId, reason) {
        currentState = getCurrentState(batchId);

        // 1. 检查转换合法性
        if (targetState not in transitions[currentState]) {
            throw new IllegalTransitionException(
                "非法转换: " + currentState + " -> " + targetState
            );
        }

        // 2. 执行前置检查
        preCheck(currentState, targetState, batchId);

        // 3. 执行状态更新(原子操作)
        updateState(batchId, targetState, userId, reason);

        // 4. 触发后置动作
        postAction(currentState, targetState, batchId);
    }
}

4.5 异常状态处理

在实际运行中,状态机可能遇到以下异常情况,需要设计对应的处理策略:

  • 超时滞留: 批次在“设计中”或“审核中”状态超过预设时限(如72小时),系统自动发送告警通知项目经理。
  • 强制回退: 仅在极端情况下(如设计需求变更),由系统管理员执行强制回退操作,将批次从“设计完成”回退至“待设计”,该操作需双人审批。
  • 并发冲突: 当多个用户同时操作同一批次时,系统采用乐观锁机制,以第一个提交的动作为准,后续操作返回冲突提示。
最佳实践: 建议在状态转换日志中记录完整的操作轨迹,包括操作人、操作时间、源状态、目标状态、操作原因以及关联的文件版本号。这些日志是故障定位时最重要的数据源之一。