# 通用 Memory ATE 入门→精通教程（Web Lab）

> **独立培训材料 · 非爱德万（Advantest）官方**  
> **不含 FutureSuite / TESIM / 客户 ATL**  
> **不做真机时序或电气等价**

本教程与实验场景 **`continuity-march-bin`** 的 `stages[].id` 对齐。  
每个章节的 **`id`** 同时出现在：

| 位置 | 字段 |
|------|------|
| 本教程章节标题旁 | `<!-- chapter:ID -->` |
| `curriculum/curriculum.json` | `chapters[].id` |
| `scenarios/continuity-march-bin.json` | `stages[].id` |
| 测项（如有） | `steps[].id`（与章 id 相同或见章内说明） |

讲师在「同步课堂」推送场景后，按阶段按钮推进；房间状态里的 **`tutorialChapterId`** 与当前 `stages[stageIndex].id` 同步，学员端跟随同一章。

**不做多租户**：房间仅进程内存，重启即清空；单班房间码即可。

---

## 章 1 · 概述与定位 <!-- chapter:intro -->

**labStageId / chapter id：`intro`**  
**对应测项 step：无（概念章）**

### 1.1 「T5」指什么

公开产品线中 **没有单一型号叫「T5」**。业界口语里的「爱德万 T5 / T5xxx」通常指 **T5xxx 系列 Memory 测试系统**（如 T5830、T5833、T5835、T55xx、T52xx 等），软件栈在公开资料中与 **FutureSuite** 绑定。本 Lab **不捆绑、不兼容** 该官方软件，只借用「Memory ATE 流程与程序结构」作为培训对象。

### 1.2 与 SoC 测试机的边界

| 产品线 | 定位 | 典型 DUT | 公开软件栈（概念） |
|--------|------|----------|-------------------|
| T5xxx（Memory） | 存储器量产/工程 | DRAM、NAND/NOR、MCP 等 | FutureSuite |
| V93000 | 高端 SoC / RF 等 | AP、HPC、射频等 | SmarTest |
| T2000 | 模块化 SoC / 模拟等 | 消费 SoC、CIS 等 | 自有工具链 |

培训时 **不要** 把 SmarTest / SoC 流程混进本课。

### 1.3 晶圆测与最终测（简化）

```
晶圆制造 → 晶圆测试（WS / KGD）→ 封装 → 最终测试（FT）→ 出货
```

模拟器只表达「插入 → 测项序列 → 结果/分档」，**不**模拟皮秒时序与真实电气。

### 1.4 本 Lab 边界（必读）

- ✅ 流程、Main/Socket/Pattern 概念、教学 March、假 Fail Map、分档规则、简化冗余  
- ❌ 真机时序、官方二进制、客户图样、产线签核替代  

**课堂动作**：确认页眉免责声明；打开实验台但不运行。  
**自检**：能否用一句话向同事解释「这是流程训练器，不是 TESIM」？

---

## 章 2 · 硬件与软件概念 <!-- chapter:hw_sw -->

**labStageId / chapter id：`hw_sw`**  
**对应测项 step：无（概念章）**

### 2.1 硬件侧（培训高频名词）

- **Test Head / Site**：多 Site 同测是 Memory ATE 的核心产能维度；本 Lab 默认 1 Site，字段可标更多。  
- **PPS**：可编程电源；本 Lab 仅在 Idd 步用「假电流」演示限值比较。  
- **ALPG**：算法图样发生；课堂用 March 教学引擎代替「扫阵列」直觉。  
- **AFM / Fail Bitmap**：故障地址捕获；本 Lab 用 **假热力图** 代替，不可签核。  
- **负载板 / 探针卡 / Socket**：把 Tester 通道接到 DUT；程序里的 Socket 描述引脚与条件 **标签**。

### 2.2 软件工作流（概念，自研 UI）

典型工程站叙事（名称自研，勿与官方 GUI 混淆）：

1. 加载程序包（本 Lab = 选场景 JSON）  
2. 设条件 / 看 Main·Socket·Pattern  
3. 跑测 → 看结果表与 Fail Map  
4. 分档 /（选修）冗余演示  

**课堂动作**：看主场景 Socket 的 `pins`、`sites`、`tCK_label`；记住 **tCK 仅标签**。  
**自检**：ALPG 与 March 步在本课中是什么关系？

---

## 章 3 · Main / Socket / Pattern <!-- chapter:msp -->

**labStageId / chapter id：`msp`**  
**对应测项 step：无（概念章）**

存储测试程序在概念上常拆成三份：

1. **Main** — 测项顺序、停测策略、分档入口（本场景 `MAIN_DEMO_LOT`）。  
2. **Socket** — 引脚列表、Site、时序/电平**标签**（`tCK_label` **仅文档标签**）。  
3. **Pattern** — 算法/图样名（`PAT_MARCH_C_TEACH`，教学 March，**非**厂商私有图样）。

```
Main Program
  ├── Socket Program
  └── Pattern Program
```

**课堂动作**：打开实验台 → 选 `continuity-march-bin` → 只读「程序三件套」卡片，先不要点运行。  
**自检**：能否用一句话说清「谁调度流程、谁描述引脚、谁描述扫阵列方式」？

---

## 章 4 · 接触 / 开短路 <!-- chapter:continuity -->

**labStageId / chapter id：`continuity`**  
**对应测项 step id：`continuity`**

功能测之前通常先做接触（开短路）。本场景 pins 含 DQ0–DQ7、CLK、CS_n；主场景 `injectOpen` 为空表示接触应通过。  
若接触失败且 `stopOnFail: true`，后续 March 可能被跳过，分档常落在 **OS_FAIL**（场景 `os-fail-demo`：DQ3 开路）。

**课堂动作**：运行场景后看「开短路 / 接触」行；对照 `os-fail-demo` 找开路脚。  
**自检**：为什么产线培训强调「先接触、再功能」？

---

## 章 5 · 输入漏电 <!-- chapter:leakage -->

**labStageId / chapter id：`leakage`**  
**对应测项 step id：`leakage`**

漏电步把每脚「测量 µA」与 `limitUa` 比较。可用 `injectHigh` 注入超限脚。  
主场景默认全部低漏电通过；专项场景 `leakage-fail-demo` 演示 **LEAK_FAIL**。

注意：这是 **教学数值比较**，不是真实 SMU/PPS 电气模型。

**课堂动作**：在主场景结果中定位漏电行；再跑 `leakage-fail-demo` 对照 SoftBin。  
**自检**：接触失败与漏电失败在分档 label 上如何区分？

---

## 章 6 · March 功能测 <!-- chapter:march_func -->

**labStageId / chapter id：`march_func`**  
**对应测项 step id：`march_func`**

本 Lab 用 **8×8** 小阵列跑教学级 **March C- 简化变体**：

```
↑(w0); ↑(r0,w1); ↑(r1,w0); ↓(r0,w1); ↓(r1,w0); ↓(r0)
```

主场景注入：

- `(2,3)` stuck0  
- `(5,6)` stuck1  

期望功能测失败（`failCount = 2`），后续若无冗余修复则分档 **FUNC_FAIL**。

**课堂动作**：在测项结果中定位「March 功能测」摘要与失败坐标列表。  
**自检**：Pattern 名与 March 步是什么关系？故障写在场景 JSON 的哪里？

---

## 章 7 · Fail Map <!-- chapter:failmap -->

**labStageId / chapter id：`failmap`**  
**对应测项 step id：`march_func`（同一跑数结果的可视化）**

Fail Map 是 March 失败 cell 的 **假热力图**（红失败 / 绿通过），便于投影仪对照，**不是**产线真实 fail bitmap，也不可用于签核。

**课堂动作**：看右侧画布是否与失败坐标一致；金样 `all-pass-golden` 应全绿。  
**自检**：假热力图能说明什么、不能说明什么？

---

## 章 8 · SoftBin / HardBin <!-- chapter:bin -->

**labStageId / chapter id：`bin`**  
**对应测项 step id：`bin`**

分档规则（教学用）示例：

| when | SoftBin | HardBin | label |
|------|---------|---------|-------|
| all_pass | 1 | 1 | GOOD |
| continuity_fail | 10 | 2 | OS_FAIL |
| leakage_fail | 20 | 2 | LEAK_FAIL |
| func_fail | 30 | 3 | FUNC_FAIL |
| idd_fail | 40 | 2 | IDD_FAIL |
| default | 99 | 4 | OTHER |

`continuity-march-bin` 因 March 失败，期望 **SoftBin=30 / HardBin=3 / FUNC_FAIL**。  
对照 `all-pass-golden` 应得 **GOOD**。

教学上：**SoftBin 更细、HardBin 更粗** —— SoftBin 区分失败原因，HardBin 常映射到较少的物理分选桶。

**课堂动作**：读结果区 SoftBin/HardBin 胶囊；切换金样场景再跑一遍对照。  
**自检**：为何同一 HardBin=2 可能对应 OS_FAIL 与 LEAK_FAIL 等不同 SoftBin？

---

## 章 9 · 冗余修复概念 <!-- chapter:redundancy -->

**labStageId / chapter id：`redundancy`**  
**对应测项 step id：`redundancy`（专项场景；主场景阶段为概念引导）**

晶圆测中，存储阵列常有 **spare 行/列**：用冗余资源覆盖故障坐标，再 **Repair → Retest**。  
本 Lab 提供 **贪心教学求解器**（优先覆盖失败最多的行或列），**不是**产线 MRA/最优算法。

场景 `redundancy-lab`：少量 stuck，配置足够 spare，演示「可修复 → 重测通过 → GOOD」。

**课堂动作**：运行 `redundancy-lab`，读 repair plan（用了哪些 spare 行/列）与重测摘要。  
**自检**：若 spare 不够会怎样？本算法与真实冗余分析差在哪里？

---

## 章 10 · 综合练习 <!-- chapter:mastery -->

**labStageId / chapter id：`mastery`**  
**对应测项 step：综合（多场景）**

把整条链串起来：

1. 分清 Main / Socket / Pattern  
2. 接触 → 漏电 → March →（可选冗余）→ 分档  
3. 会选场景：`os-fail-demo` / `leakage-fail-demo` / `continuity-march-bin` / `all-pass-golden` / `redundancy-lab` / `mastery-mix`  
4. 完成「练习」页本章题目  

**课堂动作**：独立完成练习页 `mastery` 全部题；向同伴口述本工具非目标清单。  
**自检**：你是否仍会把本工具说成「官方 TESIM」？若会，请重读章 1。

---

## 与 Lab 如何保持同步

1. **改教程章节** → 同步改 `curriculum/curriculum.json` 的 `chapters[].id/title` 与 `exercises`。  
2. **改阶段按钮** → 同步改 `scenarios/continuity-march-bin.json` 的 `stages[]`（`id` 必须与 chapter id 一致）。  
3. **改测项** → 改同文件 `steps[].id`，并更新教程中「对应测项 step id」。  
4. 讲师推场景后按阶段推进；API 将 `tutorialChapterId` 设为当前 stage `id`。  
5. **无多租户 / 无持久化**：单进程内存房间。  
6. 设计说明见 `docs/design-enhance.md`。
