4. 批次状态机模型:状态定义、转换规则与触发条件
在Mask光刻版设计流程中,每个设计批次(Lot)的生命周期由一组严格定义的状态构成。状态机模型确保了设计任务的可追溯性、责任清晰性以及流程的不可逆性。本节将详细定义五个核心状态、它们之间的合法转换路径以及触发这些转换的具体条件。
4.1 状态定义与语义
批次状态机包含以下五个基本状态,每个状态对应设计流程中的一个关键里程碑:
| 状态名称 | 状态标识 | 核心语义 | 责任人 |
|---|---|---|---|
| 待设计 | PENDING | 批次已创建,设计需求已录入,等待分配设计资源 | 项目经理 |
| 设计中 | IN_DESIGN | 设计工程师正在执行版图绘制、OPC修正等任务 | 设计工程师 |
| 设计完成 | DESIGN_DONE | 设计工作结束,数据已提交,等待进入审核队列 | 设计工程师 |
| 审核中 | IN_REVIEW | 审核工程师正在对设计数据进行DRC/LVS/DFM检查 | 审核工程师 |
| 审核通过 / 驳回 | APPROVED / REJECTED | 终态:通过则释放至光刻版制造;驳回则返回设计阶段 | 审核工程师 |
设计原则: 状态机采用“显式终态”设计。审核通过(APPROVED)和审核驳回(REJECTED)均为终态,但驳回状态允许通过“重新提交”动作再次进入设计流程,而通过状态则锁定批次,禁止任何修改。
4.2 状态转换规则与触发条件
状态转换必须遵循严格的规则,任何非法跳转都会被系统拒绝。下图展示了完整的转换拓扑结构:
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小时),系统自动发送告警通知项目经理。
- 强制回退: 仅在极端情况下(如设计需求变更),由系统管理员执行强制回退操作,将批次从“设计完成”回退至“待设计”,该操作需双人审批。
- 并发冲突: 当多个用户同时操作同一批次时,系统采用乐观锁机制,以第一个提交的动作为准,后续操作返回冲突提示。
最佳实践: 建议在状态转换日志中记录完整的操作轨迹,包括操作人、操作时间、源状态、目标状态、操作原因以及关联的文件版本号。这些日志是故障定位时最重要的数据源之一。