# PCB 布局约定 (PCB Layout Conventions)

当 AI agent（经 `easyeda-agent`）在 EasyEDA Pro 上**自动布局/调整 PCB 元件**时，必须遵循本约定。它是 [`schematic-layout-conventions.md`](./schematic-layout-conventions.md) 的 **PCB 对应物**：原理图管"符号怎么摆、线怎么走"，本文管"封装在铜板上怎么摆"。

本文经过一轮**对抗式审稿**修订，核心结论：

1. **去耦电容的第一杠杆不是"离 IC 多近"，而是它自己的安装回路电感（pad→via→平面）。** 在有完整电源/地平面的 4 层以上板上，横向距离让位给"过孔就在 pad 上、扇出回路最短"。
2. **默认单一完整地平面 + 按摆位分区**，不默认割地（split ground）。割地是隔离/精密 ADC 的专用工具，不是常规做法；乱割平面制造回流断点反而更糟。
3. 所有"硬阈值（must）"都**条件化**于叠层层数 / 制造工艺 / 外壳约束——没有这三者上下文时降级为 should/advisory。
4. 规则之间会**互相打架**（热散开 vs 功能聚拢 vs 开关回路贴紧）。本文给出**唯一的优先级总则**（§1）来裁决，所有规则都服从它。

---

> **本文导航(§)**:0 坐标系/单位/数据模型 · 1 优先级总则(裁决顺序)· 2 机械与连接器(P0)·
> 3 安全间距/隔离(P1)· 4 功能分区/模块化 · 5 电源与去耦 · 6 热设计 · 7 信号完整性/高速(含 §7.7 叠层)·
> 8 DFM(P6)· 9 网格/对齐/丝印(§9.4 丝印)· 10 矛盾统一裁决 · 11 自动布局执行步骤 · 12 边界/开放问题。
> **对应 design-flow 阶段**:§2=P2/P3 · §5=P8 · §6.2/§7=P4 · §7.7=P8 · §9.4=P9。

## 0. 坐标系、单位与数据模型

- **PCB 数据单位 = `1 mil`**（原理图是 `10 mil` / 0.01in，注意区别）。仍然 **y-UP**：+y 在屏幕上向上。
- **层（layer）是一等维度**：每个元件都绑定 `TOP` / `BOTTOM`。**无左右镜像，只有翻面**（`setState_Layer`）。
- 常用网格：SMD/混装板默认 **25 mil**；纯通孔板 **50 mil**；精密区/0402 以下可用 **5 mil** 或元件原生 **0.5 mm（≈19.7 mil）子网格**。
- mil↔mm 速查：`0.3mm≈12mil`、`0.5mm≈20mil`、`1mm≈40mil`、`3mm≈118mil`、`5mm≈197mil`、`10mm≈394mil`。下文 mm 与 mil 混用时以括号给出换算。

### 0.1 agent 实际拥有的数据（所有规则只能基于这些）

| 来源 | 字段 | 用途 |
|---|---|---|
| `pcb.components.list` | `primitiveId, designator, layer, x, y, rotation, bbox, pads` | 位置/尺寸/层/朝向；`pads` 含**每 pad 的 net 与相对偏移、pad 序号**。⚠️ `x/y` = **锚点**（footprint 原点），常非 bbox 中心且偏移随旋转变化（#105）——规划一律用 `pcb list --include-bbox` 返回的 `center`（bbox 几何中心），写入用 `pcb modify --center` 或自行换算 |
| `pcb.layers.list` | `copperLayerCount, currentLayer, layers[]` | **判定叠层**（2 层 vs 4+ 层）——去耦/平面规则的开关 |
| `pcb.nets.list` | `net, length, color` | net 全集；配合 pad→net 做分类 |

### 0.2 agent **没有**的数据（规则必须优雅降级）

- ✅ **板框/outline 可读**：先用 `easyeda pcb outline-get` 读取 segment/arc 数量与
  bbox；需要完整几何时再查 `references/pcb.md` 中的 outline typed actions。只有活体
  outline 确实不可用时，"贴边/边缘 keep-out/角落"规则才降级为 advisory；不要为读板框
  默认转向 `debug.exec_js`。
- ❌ **元件高度 Z**：靠 designator（J/X/Y/电解 C）+ bbox 尺寸**代理**，不是真高度。
- ❌ **铜箔/铺铜/平面分割几何**：靠 net 成员关系 + 块几何**推断**，不是真平面。涉及"平面分割/回流连续性"的检查一律标 advisory。
- ❌ **元件电气值/容值/封装代码**（`pcb.components.list` 不返回 value）：按容值排序之类的规则**不可检测**，除非接 BOM；默认跳过。
- ⚠️ **pin-1/极性 pad**：尽量从 `pads[].designator=='1'` 或 net 角色（cathode/GND/VBUS）推断；推不出时相关检查降为 warning。

### 0.3 分类与检测（单一真源，所有规则共用）

为避免每条规则各写各的正则（参照原理图侧 `orientation.json` 的"单一真源"哲学），统一定义：

```
电源 net   PWR  := /^(VIN|VBUS|VSYS|VBAT|VCC|VDD|AVDD|DVDD|PVDD|VOUT|VO|[+-]?\d+V\d*)$/i
开关 net   SW   := /^(SW|LX|PHASE|VSW|BST|BOOST)\b/i           # 高 dV/dt 节点
地     net   GND  := /^(A?GND|DGND|PGND|GNDA|GNDD|VSS|PE|EGND)$/i
高速/差分  HS   := net 名含 +/- 或 _P/_N/_DP/_DM，或 /USB|HDMI|MIPI|LVDS|DDR|RGMII|SGMII|PCIE|SATA|CLK|XTAL|OSC|TMDS/i
模拟敏感   ANA  := /^(AIN|ADC|DAC|AOUT|VREF|AREF|SENSE|ISNS|MIC)/i 或 pad 接 AGND
射频     RF   := /RF|ANT|FEED/i
全局 net        := GND 族 ∪ PWR 族 ∪ pad 数 > 8 的 net（聚类时排除）

designator 前缀：H/MH=安装孔  J/USB/DC/RJ/CN=连接器  TP=测试点  FID/F=Mark
  U=IC  Q=晶体管/MOSFET  L=电感  R/C/L=无源  D/LED=二极管/LED  X/Y=晶振  BT=电池

HOT（发热源）判定：
  - 稳压器  := U 的 pad 集合同时命中【输入 PWR net】与【另一条输出 PWR net】
  - 功率管  := Q 且某 pad 在 PWR/负载 net
  - 功率电感:= L 且 bbox ≥ 80×80 mil 且在 SW/VOUT net
  - 功率电阻:= R 且 bbox ≥ 100×100 mil（≥1206）在 PWR/分流 net
  - 大电流 LED := D/LED 在前向电流路径
SENSITIVE（怕热）判定：电解/钽 C（大罐 bbox，直径 ≥150 mil）、X/Y 晶振、传感器 IC、BT、精密/sense 电阻、基准
```

---

## 1. 优先级总则（冲突裁决顺序）

多条规则想把**同一个元件**摆到不同位置时，**按下表从高到低裁决，高优先级覆盖低优先级**。这是本文最重要的一节——没有它，规则会互相打架（热散开 vs 聚拢 vs 开关回路贴紧）。

| 级别 | 约束 | 一句话 |
|---|---|---|
| **P0** | 机械/外壳锁定坐标 | 连接器、安装孔、面板件的 XY 由外壳图纸定死，**immovable**，其余一切绕它走 |
| **P1** | 安全间距/隔离（爬电+电气间隙） | HV/LV、隔离屏障两侧的最小距离是法规硬线，压倒一切美观/性能规则 |
| **P2** | EMI 热回路 + 关键去耦贴近 | 开关器输入回路（Cin+开关管）、IC 去耦、晶振——这几个"贴紧"赢过热散开 |
| **P3** | 参考平面/回流连续性 | 高速/敏感件不得摆在平面分割、板内开槽、板边导致回流绕路处 |
| **P4** | 热 keep-out（独立热源 & 怕热件） | 热源彼此散开、电解/晶振/传感器远离热源——**不约束 P2 的开关回路自己那几个陶瓷件** |
| **P5** | 功能分区/模块化 | 按 net 聚簇、模拟/数字/RF 分区、块成不重叠瓦片 |
| **P6** | DFM（朝向一致/极性/扇出空间/测试点） | 同类件统一朝向、BGA 扇出留空、测试点同面同栅距 |
| **P7** | 网格/对齐/丝印 | 吸栅、对齐成行、丝印可读——**纯收尾美化，永远不得违反以上任何一级** |

> **粗放 pass 顺序 ≠ 优先级**：自动布局**先**做 P5 的粗聚簇得到初始排布，**再**用 P2/P4 的细约束在局部覆盖它。也就是"先粗聚拢，后让关键约束就地改写"。执行步骤见 §11。

---

## 2. 机械与连接器优先（P0）

### 2.1 机械固定件先放先锁
- 板边连接器（USB/Type-C/DC jack/RJ45/排针）、安装孔（H/MH）、面板对位的 SW/LED——**第 1 趟就放好并 `lock`**，其后所有 move 把它们当不可动障碍物。
- **绝不**为了给无源件腾地而挪连接器/安装孔。约束单向传播：机械定电气，不反向。
- 有外壳机械图时，**坐标按图纸逐字写入**，跳过下面"角落/贴边"的推断。

### 2.2 边缘连接器贴板框、开口朝外
- 电缆/面板连接器 bbox 最靠板框那条边 ≤ **20 mil（0.5mm）**，等于贴边；**插入面朝板外**（朝离板心的方向），开口与板边之间不得有任何元件。
- 旋转只取 `0/90/180/270`，使引脚行/开口轴指向板外。**pad 仍须全部在板框内**。
- **插头受体连接器**（USB-C/Micro-USB/DC jack/HDMI 等要插入外部插头的）**不止贴边**——**mating 面/壳体前沿须突出板框 ~0.5–1mm**（板框在其正下方内缩让位），否则插头插不到底。焊盘仍全部留板内，**只壳体鼻尖越界**（螺钉端子/排针不属此类，贴边即可）。规则沉淀在块 `placement.orientation`（如 ch340c 块 `J_USB`）。
- 板对板/夹层（mezzanine）连接器是**例外**：故意放板内，不贴边。

### 2.3 安装孔
- **外壳/机械图坐标优先**；无图纸时回退到"靠四角、孔心距板边 ≥ 3mm（118 mil）"。
- keep-out 半径**按实际紧固件参数化**，不是常数：`半径 = max(孔半径+40mil, 头/垫圈半径)`。M3 头/垫圈≈6mm → 半径≈118 mil；金属立柱可能要 7mm。
- keep-out 圆内不得有任何元件 bbox 或 pad。

### 2.4 拔插/维修通道
- 每个插拔连接器开口正前方留 ≥ **200 mil（5mm）**无遮挡走廊（手指+插头+电缆扫掠体）；相邻边缘连接器的插头矩形不得重叠。
- 调试口（JTAG/SWD/tag-connect）、电池座/保险丝也要留维修可达空间——同口连接器的支撑件放它**电缆侧**、同层、贴紧（ESD/TVS/串阻 ≤200 mil，Type-C CC 5.1k ≤150 mil）。

### 2.5 板框默认圆角
- **板框四角默认做圆角**（圆角矩形）——量产/装配友好默认（去毛刺、防划伤、贴合外壳）。有外壳机械图时按图纸。
- 半径受**安装孔**约束：`半径 ≤ 孔外缘距最近板边的距离`，**别切到四角 M3 孔**；无孔约束时取 **2–3mm（~80–120 mil）**。
- **顺序铁律**：圆角必须在**铺铜/布线之前**做——`easyeda pcb outline-round --radius <mil> [--rect x0,y0,x1,y1]`（改 outline 会 strand 已铺的铜）。`--dry-run` 先验多边形，落地后 `pcb snapshot` 目检圆角未切件/孔。
- 与 2.2 配合：插头件（USB-C 等）在**直边段**突出板框，圆角只在四角，不影响连接器突出。

---

## 3. 安全间距与隔离（P1，硬约束）

> **本节在涉及市电/高压/隔离设计时压倒几乎所有其它规则。** 纯低压数字板（全网 < 60V）可跳过。

- **不同电位 net 之间**保持最小电气间隙+爬电距离；隔离屏障（光耦/变压器/数字隔离器）两侧 primary/secondary **物理拉开**：市电常需 **4–8 mm**，跨屏障常配开槽（slot）。
- 检测：从 net 名推电位等级（`/MAINS|AC_?[LN]|HV|\d{2,}V/` 判高压；`PRI/SEC`、`ISO` 判隔离侧）。**推不出电位时**：把跨越明显电压跳变的相邻 pad 距离标 warning，提示人工确认——不要因为推不出就当成可以贴近。
- 隔离器件本体跨在屏障线上，两侧 keep-out 不得被任何对侧电位元件侵入。

---

## 4. 功能分区与模块化（P5）

### 4.1 按 net 拓扑聚簇
- 共享多条**局部 net**（排除全局 net 与 pad 数 > 8 的 net）的元件归一个连续空间簇。目标：每个元件 ≥ 70% 的局部 net 邻居落在 **400 mil** 内；块的填充 bbox 面积 ≤ 成员 bbox 面积和的 **2 倍**（紧凑，不散）。
- 每颗 IC 连同它的支撑无源件（去耦、上拉、串阻）落在 IC bbox **外扩 250 mil 的 halo** 内；晶振+两负载电容作 3 件子簇贴 IC 振荡 pin。

### 4.2 块成不重叠瓦片
- 每个功能块占独立矩形，块矩形之间留 ≥ **50 mil** 水平间隔（gutter），互不重叠。
- 不允许"闯入者"：某元件落在它不属于的块矩形内 = 违规（它的 net 会横穿别人的块、破坏回流）。

### 4.3 模拟/数字/RF 分区
- 模拟簇 vs 数字簇间隔 ≥ **100 mil**；RF vs 数字 ≥ **200 mil**；开关节点/晶振离任何模拟件中心 ≥ **250 mil**。
- 桥接两域的混合信号 IC（ADC/DAC/codec）**跨在边界上**，模拟侧 pin 朝模拟簇、数字侧 pin 朝数字簇。
- RF 簇贴板边（天线/馈线最短出板）——需 outline，拿不到时降级。

### 4.4 电源块上边、功率流成线、敏感轨星形分支
- 电源输入/转换件（连接器、稳压器、大 bulk、电感）成块放板边/角；功率从输入连接器朝板内流。
- **主干**按"输入→转换→负载"单调成线（配合 §7 信号左→右）。
- **但**：给模拟/基准/RF 供电的安静负载**在公共节点处星形分支引出**，绝不让它电气上落在噪声负载（开关器/驱动/MCU）下游的同一段供电铜上。（这是 §10 矛盾④的统一裁决。）

### 4.5 重复子块镜像平铺
- N 个结构相同的子块（多路放大、多相电源、相同连接器排）用**相同内部相对几何 + 等距平铺**（对称处镜像翻面），每路布局一致以等化寄生。仅当检测到 ≥2 个结构同构子块时启用。

> **割地（split ground）默认不做。** 仅当设计**显式**存在 AGND/DGND/PGND 多地 net 时，才让 AGND 件全落模拟区、DGND 件全落数字区，边界落在两块间的 gutter、桥接 IC 跨界。单一 GND 时本规则**不触发**——靠单一完整地平面 + 摆位分区即可。

---

## 5. 电源与去耦（P2 关键）

> **修订要点（审稿）：去耦有效性由电容自身的安装回路电感（pad→via→平面）主导，不是"离 IC 多近"。** 因此**横向距离阈值条件化于叠层**（用 `pcb.layers.list.copperLayerCount` 判定）。

### 5.1 去耦电容贴近 IC 电源 pin —— 按叠层条件化

设 cap 的两 pad 分别在某 IC 的 PWR net 与 GND，则它是该 IC 的去耦电容。

- **2 层 / 无完整平面板（copperLayerCount ≤ 2）**：横向距离主导。cap 中心到该 IC 最近 PWR pad **目标 50–100 mil、硬上限 150 mil**；与 IC **同层**。cap 的 GND pad 旁 100 mil 内要有 GND 过孔/缝合/地铜可回流（回流是回路的另一半）。【severity: must】
- **4 层以上 / 有电源-地平面对（copperLayerCount ≥ 4）**：横向距离**降级为 should**，上限放宽到 **250 mil**。真正要保证的是**电容的扇出过孔就落在自己 pad 上/紧贴 pad**（via-in-pad 或 vias-at-pad），回路 pad→via→平面最短。摆位层面的可控代理：①与 IC 同层或直接放背面 pin 正下方；②**在 cap 两 pad 旁预留打孔的净空**（最近邻不得逼到 cap 非 IC 侧 pad 12 mil 内）；③别为抠掉最后 50 mil 横向距离而把 cap 周围塞满、害得过孔打不下去。**"250 mil + pad 旁能打孔" 胜过 "贴到 30 mil 但 pad 被挤死"。**

### 5.2 数量按 PDN 覆盖，不强求一 pin 一 cap
- **不**硬性要求 `cap 数 ≥ 电源 pin 数`。容量应由 PDN 目标阻抗（负载瞬态、纹波、频段）决定；很多带片上电容的 BGA 远少于 N 个 cap 即可，个别高 di/dt pin 反而要多个。
- agent 只做**覆盖提示**：把"某高电流电源 pin 附近（150/250 mil 内）无任何去耦 cap"作为 hint 浮出，**不**因数量不足判 fail。

### 5.3 容值排序——降级为 advisory（不再 must/should）
- **废弃**"小值最近、大值外推"的反级联老规则：十倍跨度的混合容值会在 cap 之间制造**反谐振阻抗尖峰**。现代 PDN 偏好**更少的不同容值 / 多个相同容值**填阻抗坑。
- 因此：**不要**仅因为 1µF 比 100nF 更靠近 pin 就判违规。每个 cap 自己的安装回路远比它的"排名距离"重要。`pcb.components.list` 也读不到容值，本规则本就基本不可检测，默认跳过；仅在能从 BOM 拿到容值时给"避免相邻容值十倍跨度"的 advisory。

### 5.4 开关稳压器热回路 —— 修正回路定义
> **修订要点：buck 的高 di/dt 热回路是 `Cin → 高边开关 → 低边开关/续流二极管 → 回 Cin`，不含电感。** 电感电流是连续的（低 di/dt）；SW/LX 节点是**高 dV/dt 侵略者**（铜面要小、敏感件躲开），但它**不是**要缩小的 di/dt 回路。

- **输入回路最小化**：Cin（在 VIN+GND 的陶瓷电容）紧贴 IC VIN/GND，≤ **150 mil**、**同层**；把 `{Cin, 高边/低边开关或集成 FET 的 IC, 续流二极管}` 的合并 bbox 压到最小。
- **SW 节点铜面尽量小**：电感贴 SW pin（≤ 200 mil）只为缩短高 dV/dt 铜，不是为缩 di/dt 回路。
- **地**：Cin 与 Cout 的 GND **都接入同一片完整地铺铜、各自回流最短**。**删除**"输入/输出地相距 10–20mm 单点连接"这条——在有完整地平面的 buck 上人为割地制造单点反而有害。不再把"Cin/Cout 地共位置"判违规。
- 近 IC 的紧贴位置用**陶瓷/聚合物**电容（耐热），**不要**放铝电解（见 §6）。

### 5.5 Bulk 电容与电源入口
- bulk/储能 cap 放在电源入口连接器（J）与每个稳压器输出 **500 mil（12mm）**内，在能量扇出到本地去耦之前。
- 电源入口连接器贴板边，其后沿供电 net **依次**串 TVS/保险丝/共模/bulk，再到稳压器。
- 稳压器**物理上落在电源入口与其负载之间**，链路成直线或 L 形：`J(in) → bulk → 稳压器 → 输出 cap → 负载`。

---

## 6. 热设计（P4）

### 6.1 分类先行
按 §0.3 把每个元件打成 `HOT / SENSITIVE / neutral` 标签并缓存；给每个 HOT 件一个正比于 bbox 对角线的"热半径"。后续所有热规则读这两个集合。

### 6.2 热源 keep-out
- HOT（稳压器/功率管）bbox 到 neutral 邻居 edge-to-edge ≥ **120 mil（3mm）**，到 SENSITIVE 邻居 ≥ **200 mil（5mm）**。>0.5W 的大功率件四周留 ~**500 mil** 开阔铜散热。bbox 重叠（gap=0）立即 fail。
- **例外**：稳压器**自己的陶瓷输入/开关回路件**（§5.4 的 Cin/开关/续流）**不受**本 keep-out 约束——它们要贴紧（P2 > P4）。keep-out 只针对**独立**热源与**怕热**件。

### 6.3 怕热件远离热源
- 铝电解/聚合物电容（含泄压阀）离任何 HOT ≥ **200 mil（5mm）**，放上游/冷侧。电解寿命每 +10℃ 减半，烤在稳压器旁会早衰。
- 晶振/振荡器（X/Y）、温度/精密传感器离 HOT ≥ **200 mil**，且不放在稳压器气流下游/热区；优先放最冷象限。

### 6.4 热源彼此散开
- 同层 HOT 件中心距 ≥ **400 mil（10mm）**（板面允许时），避免热场叠加成单一热点。仅当数据手册/回路面积强制紧耦合时才覆盖。

### 6.5 异面（对侧层）热耦合 —— 改为铜介导
> **修订要点：FR4 体导热很差（~0.3 W/mK），"穿过 1–2mm FR4 直烤"被夸大。** 真正的跨板热路是**铜**——热焊盘过孔阵列、共享平面。

- 仅当 HOT 件**有外露热焊盘（exposed pad，从 `pads` 看到大中心 pad）或与对侧件共享铜平面 net**时，才强约束"对侧正下方 SENSITIVE 件需平面错开 ≥ 120 mil"。
- 纯 FR4 体导热（无热焊盘）时，对侧 keep-out 降为 should，不当硬线。
- 热焊盘投影区（projected pad bbox）在**两层**都视为 keep-out：同层邻居与对侧件都不得侵入该铜/过孔区（既丢散热面，又防 via-in-pad 短路）。

### 6.6 朝向与气流
- HOT 件偏板边/安装孔/散热区；高 HOT 件（电解、电感、TO 封装）长轴**顺气流方向**（一般 进风边→出风边，用最外侧两个 J 连接器或板长边推断）。最热的放下游、怕热的放上游冷侧。
- LED 阵列等间距平铺；sense/精密电阻（net 含 SENSE/ISNS）拉出任何热半径——自热会让其阻值漂移。

---

## 7. 信号完整性 / 高速（P2 局部 + P3）

### 7.1 晶振贴 MCU 振荡 pin + 守护 keep-out（P2）
- 晶振（X/Y/Q）与 MCU **同层**，体中心距 MCU 振荡 pin ≤ **300 mil**（理想）、**绝不 > 500 mil**；旋转使两信号 pad 朝 MCU pin（最短直连）。
- 两负载电容在晶振两 pad **150–200 mil** 内、夹在晶振与 MCU 之间、**对称**（两腿等距，差 ≤ 50 mil）。
- 晶振+两负载 cap 子簇外扩 **200 mil** 为 keep-out 守护环：**只有这三件**可在环内，MCU 其它支撑无源件**绕行**。带时钟/开关/高速 net 的侵略者尤其禁止进环。把晶振放在 MCU **朝开阔/板边的那个象限**（让 200 mil 守护环与 250 mil halo 不冲突——见 §10 矛盾⑥）。

### 7.2 源端串阻贴驱动 pin（P2）
- 点对点高速 net 上的串接终端 R 放在**驱动端**（MCU/PHY/时钟源）pin ≤ **250 mil**（理想 <100），**不是**放接收端。源端串接靠源吸收反射，漂向负载就失效。
- 并联/戴维南端接（接 VTT/GND 在负载端的电阻）相反——放**接收端**，别套"贴驱动"。

### 7.3 差分对端点对称（P2）
- 差分对（net 名带 +/-、_P/_N、D+/D-）的 AC 耦合 cap、ESD、共模件成**镜像对**：P/N 两腿等距对齐、到驱动距离差 ≤ 50 mil；驱动 IC 与连接器摆成让对走直、最短、组内长度偏斜小。

### 7.4 等长/总线组聚拢（P2）
- 共 net 前缀的等长总线（DDR_DQ*、RGMII_*、SDIO_*）连同驱动 IC packed 成紧凑块，按 net 序排以减少交叉。

### 7.5 参考平面/回流连续性（P3）—— 新增
> **审稿补充：除去耦外，这是 SI 第二大杠杆，原研究只是隐含。**

- **不得**把高速/敏感件摆在其 net 回流必须**横穿平面分割、板内开槽/挖空、或贴板边（参考面不完整）**的位置。
- agent 看不到真实平面分割，用代理检测：①板框内开槽/cutout（需 outline）；②AGND/DGND 显式边界（net 成员推断）；③高速 net 元件 bbox 距板框 < **100 mil** 且非该接口连接器 → 推内。命中均标 advisory（检测不确定）。

### 7.6 高速件离板边、串扰间距（P3）
- 高速 net 件（时钟、差分、DDR、USB/HDMI/以太网核心）bbox 距板框 ≥ **80–100 mil**；接口**连接器本身**例外（贴边）。
- 别让两条高速总线被迫长距离并行：给每条总线簇独立走廊、错开 driver↔connector 轴（摆位层面的 3W/串扰防御）。
- 敏感模拟件（ADC 输入、VREF、运放、RF）离开关节点/功率电感/开关 FET/晶振 ≥ **300–500 mil**。

### 7.7 叠层约定（4 层默认）—— 新增
- **默认 4 层电源分配**：L1 顶层=信号(+GND 铺铜)、**L2 内层1=内电层(PLANE)=GND**（完整参考平面，回流最关键）、**L3 内层2=信号层=VCC/3V3(网络铺铜)**、L4 底层=信号(+GND 铺铜)。GND 覆盖 ≥2 层（内电层 + 外层铺铜），VCC 放信号层铺铜（电源分布对连续性要求低，且省一层类型约束）。此约定即 `esp32MiniRequire.md` 客户规格的落地映射。
- **GND 走真·内电层**优于「信号层+铺铜」：负片内电层是制造规范表示、参考面最完整。**验证过的 API 配方**（推翻旧「内电层只能 UI 填」结论）：先在信号层铺 GND → `pcb stackup set --plane 15` 翻内电层 → `pcb pour-rebuild`，填充存活、DRC=0。`pcb power-planes`（`--gnd-plane` 默认开）自动完成整套。**顺序不能反**：先翻类型再在 PLANE 层铺铜会掉到 L1 且 netless。
- 两个电源网**别共享同一内层**（会复现 2 层 pour 冲突，互相断对方的 pad）——各给独立内层（需 6+ 层）。
- 天线件（ESP WROOM/WROVER、`ANT*`）需**每一层**都有无铜 keep-out（含内电层 `no-inner-electrical`）——见 §6.2 与 `pcb check antenna-keepout`。

### 7.8 官方开发板对标基准（立创·ESP32S3R8N8，2026-07-07 只读拆解）

拿官方成熟 4 层开发板当「标准答案」量化对标，与 §7.7 互补的**升级项**：

| 维度 | 官方做法 | 我们轮次#3 | 采纳 |
|---|---|---|---|
| 叠层 | L2=GND **PLANE** + L3=VCC **PLANE**（双内电层，层名直接叫 GND/VCC） | VCC 层 SIGNAL+分割 pour | 4 层单主电源时 VCC 也走 PLANE；多电源域才回 SIGNAL 分割 |
| 外层铺铜 | **顶/底按区域铺 +5V/3V3/GND 三网分区 pour**（电源就近大铜） | 顶/底全 GND | 电源密集区（LDO/USB 供电路径）外层铺该电源网局部 pour，其余 GND |
| 线宽分级 | 信号 6 / 电源细 9.5 / 主干 15 / 大电流 20 | 只有 6/10 | 按 net 类分级：信号 6、3V3 支线 10、+5V 主干 15、连接器进线 20 |
| via | 统一 **12/20**（205 颗，GND 缝合 135） | 12/24 | 12/20 密度更高；GND 缝合到「每处铺铜衔接都有」的量级 |
| 双面布线 | 顶 491 / 底 235 段（底层承担 1/3） | 底层只当跳线逃生 | 密板主动用底层布线 |
| USB-C | **A6+B6、A7+B7 都 tie**（正反插都通），CC1/CC2 独立网下拉 | 只接 A6/A7（单取向） | 双取向才是正解：A/B 同名 pad 在 footprint 上相邻，tie 后仍按一路走——**推翻「省 B6/B7」旧结论** |
| 自动下载 | Q1/Q2（SOT-523）DTR→GPIO0、RTS→CHIP_PU | 无（手动 BOOT） | 「插 USB 即烧录」完整落地应含双三极管自动下载 |
| 丝印 | 位号全量 + **功能标注**（BOOT/RST/PWR/PSRAM/G48） | 位号 + LED 极性 | 按键/LED/接口旁加功能名，不只位号 |
| 命名 | `CHIP_PU`（乐鑫官方风格） | EN | 芯片级设计跟乐鑫命名 |
| 精细禁布 | 39 region 分布 4 层（顶18/底11/VCC8/GND2） | 5 个 | 电源域分割、接口净空都用 region 表达 |

**#43 芯片级 N8R8 器件架构参考**（官方 core 图实测）：ESP32-S3 QFN-56 裸片（U3）+
40MHz 主晶振（X1）+ SPI flash SOIC-8（U5：SPICLK/CS0/D/Q/WP/HD+VDD_SPI）+
LDO SOT-23-5（U6）+ Type-C（U2）+ **USB HUB QFN-24（U16，自带晶振 X2）：D4±→S3
原生 USB、D3±→CH343（U24）串口**——原生 USB 与串口调试并存；BOOT 键 + Q1/Q2
自动下载 + 半孔邮票 20P×2 + 测试点。板 810×2044mil。

### 7.9 官方板三流派：地策略选择判据（三板对标，2026-07-07）

再拆「实战派 ESP32-S3」（180件/1532track/4层）与「实战派 ESP32-C3」（248件/2229track/
530via/4层）后，**地/电源层策略收敛为一个判据**：

| 板型 | 地域 | 内层策略 | 分域手段 |
|---|---|---|---|
| N8R8（单 GND） | 1 | **GND PLANE + VCC PLANE** 双内电层 | 无需分域 |
| 实战派 S3（数字+音频） | 2（GND/AU_GND） | **4 层全 SIGNAL** | 每层双地分区 pour；**0402 电阻 R38 单点桥接** AU_GND↔GND |
| 实战派 C3（数字+音频+功放） | 3（GND/AU_GND/PA_GND） | **4 层全 SIGNAL** | 每层三地分区 pour + **每层 6 个 region 划域界**；GND 缝合 via 292/530 |

**判据**：单一 GND 域 → 内电层 PLANE（负片最干净）；**≥2 个地域 → 全 SIGNAL +
逐层分区 pour**（负片 PLANE 无法分域），region 划界、0402 电阻/磁珠单点桥地。
配套约定（实战派两板共有）：
- **模拟电源子域命名**：`AU_3V3` / `ADC_3V3` / `CODEC_3V3`（前缀式，从 3V3 经
  磁珠/RC 滤出）；地域 `AU_GND` / `PA_GND`。
- **线宽是公制圆整**：0.25/0.28/0.3/0.5/0.6mm（9.8/11/11.8/19.7/23.6mil）——
  信号常用 ≥0.25mm（比 JLC 极限 6mil 富余），电源 0.5/0.6mm。
- **内层当布线资源**：实战派 S3 在 L16 布了 145 段——4 层不是「2 信号+2 电源」
  的死格式。
- **GND 缝合 via 量级** = 总 via 的 1/2~2/3（C3: 292/530；S3: 70+37/228）。
- **丝印天花板**：排针每 pin 功能名 + 版本号 + 芯片名（C3 776 条 / S3 560 条），
  开发板交付以此为标杆。
- **多页原理图分工**（实战派 S3：P1 主控 82 件 / P2 外设 100 件 / P3 音频 122 件）
  ——S1 分页原则的官方实例。

### 7.10 官方板对标基准#4：M5Stack StickS3（极密集消费成品，2026-07-23）

拆 M5Stack StickS3(ESP32-S3-PICO，48×24×15mm 掌上机)——**消费成品形态**的量化对标，
补前三块开发板缺的「极密集 + 音频 + 电池」维度。详见 `docs/board-absorption-sticks3.md`。

| 维度 | StickS3 做法 | 采纳 |
|---|---|---|
| USB 架构 | **纯原生 USB 无桥芯片**(S3 内置 USB-Serial，D+/D- 直连 C 口，无 CH340) | USB 第 3 种架构:极密集/成本敏感 S3 消费品整颗省桥;见 `design-decisions §USB接口架构` |
| 自动下载 | **无 DTR/RTS 自动下载管**(原生 USB CDC 软复位进下载) | 原生 USB 免掉双三极管电路——`design-decisions §自动下载`第 3 选项 |
| USB 差分 | 22R 串阻 + SDMM0806 **共模扼流圈**再出连接器 | 原生 USB D± 加共模扼流(比裸走线抗扰强)——见 §7.3 |
| 地策略 | 数字 + 音频双地，**R35 0402 单点桥** AGND↔GND(回流走 LDO 衬底) | 印证 §7.9 判据(≥2 地域→单点桥);音频轨用独立干净 LDO |
| 电源架构 | **PY32L020 单片机当 PMIC** + 多域 L0-L3B(可编程，待机 52µA) | 超低待机产品参考(固件私有，硬件可仿，不做块) |
| 天线 | PICO-1 **SiP 内置 PCB 天线**(免外挂天线/匹配) | 模组内置天线本体侧禁铺铜 keepout;省 §7.1 晶振/天线匹配 |
| D 类功放输出 | SPK± 各 **120R@100MHz 磁珠 + 100pF** EMI | 喇叭线长时输出磁珠+EMI 电容(音频块自带) |
| 密集布局 | 主板 48×24 + **BTB 子板**(IR/SPK 外置)分担板面 | 极密集时用 BTB 子板把非核心外设(红外/喇叭)拆出 |
| 外设丰度 | LCD(ST7789 SPI)/音频(ES8311+AW8737+mic)/IMU(BMI270)/IR | 抽成 11 个 block(补 `audio`/`display` 新类目) |

**StickS3 vs N8R8 的取舍**:N8R8 是开发板→重调试(HUB 双通道 USB + 自动下载 + 半孔邮票);
StickS3 是成品→重集成密度(纯原生 USB + PMIC 省电 + 双板)。**开发板对标看调试完备度，
成品对标看密度/功耗/外设集成**——两类基准各取所需。

---

## 8. 可制造性 DFM（P6）

### 8.1 Courtyard 不重叠（硬）
- 同层任意两件 bbox（当 IPC-7351 courtyard 用）edge-to-edge gap ≥ **12 mil（0.3mm）**；0201/0402 密阵列地板 **8 mil（0.2mm）**。重叠 = 硬 fail。对侧层（top vs bottom）永不碰撞，跳过。

### 8.2 高/大件吸嘴阴影间距
- 小 SMD（0201–0603，bbox 边 ≤ 60 mil）离连接器/电解/罐/屏蔽罩/大 IC（bbox 边 > 150 mil 或 designator J/X/Y）≥ **20 mil（0.5mm）**，离 > 3mm 高件 ~**40 mil（1mm）**。
- 高度无数据，用 designator（J/X/Y/电解 C）+ bbox 尺寸**代理**——已知代理局限。

### 8.3 同类无源件朝向一致
- 同型同封装非极性件（每颗 0402 电阻、每颗 0603 陶瓷 cap）共用**至多两种**正交朝向（0° 横 / 90° 竖），别撒在 0/90/180/270。每个功能块内尽量一种"家用朝向"。

### 8.4 极性/pin-1 朝向一致
- 同类极性件（D/LED 阴极、电解 +、IC pin-1）**全朝同一方向**（通常朝上或朝左）。从 `pads` 推极性向量（pad1 中心−元件中心），统一到家用方向。减少反贴缺陷。

### 8.5 板边净空（分层模型，取最大适用带）
> 这是 §10 矛盾⑤的统一裁决：四个维度的边距收敛成**一个分层带，按部件取最大适用值**，不是四套独立检查。

| 带 | 距板框 | 适用 | severity |
|---|---|---|---|
| 制造硬地板 | **20 mil（0.5mm）** | 任意件本体（pad 必须全在框内，pad 出框=硬 fail） | must |
| 通用默认 | **40 mil（1mm）** | 非连接器件 | should |
| V-cut 带 | **50–75 mil** | 已知 V-score 分板时 | should |
| 高速/高件 | **100–125 mil** | 高速 net 件 ≥100；高/大件 ≥125 | should |

- 边缘连接器**豁免**内推（本体可在框线上），但 pad 仍须在框内。

### 8.6 BGA/细间距扇出空间 —— 新增
- BGA/细间距件（高 pad 密度：pad 数 / bbox 面积超阈）四周留扇出 halo：邻居退后 ~**40–80 mil**，给 dog-bone 过孔与去耦过孔留内层逃逸通道。别为聚簇把 BGA 塞死到不可布线。

### 8.7 测试点可达
- 测试点（TP）集中**同一探测面**（优先底面）、pad ≥ 40 mil、中心距 ≥ **100 mil（2.54mm，标准探针节距）**、绝不 < 50 mil；离任何高件本体/板边 ≥ 20 mil，板边 5mm 内降密度。
- **DFT 覆盖（新增）**：关键 net、各电源轨、边界扫描够不到的 net 应**有探针点**——把"无 TP 的电源轨/关键 net"作 hint 浮出（覆盖才是 DFT 的目的）。

### 8.8 回流/立碑（tombstoning）—— 新增
- 小两 pad 件（0402 及以下 C/R）尽量让两 pad 热质对称：避免一 pad 接大铺铜/热焊盘、另一 pad 接细信号线导致不均匀回流。代理检测：两 pad 一在平面 PWR/GND、一在信号 net → 标 advisory 立碑风险。

### 8.9 Fiducial —— 条件化 severity
> 修订：原研究标 must 与其自身 caveat 矛盾。

- 手焊单板、或 JLCPCB 等自动加拼板 fiducial 的工艺：自放全局 fiducial **非必需**，降为 should/nice。
- **仅**自拼板的贴片量产板配细间距件时才 must：≥3 个非对称 L 形全局 fiducial（1mm 露铜 + 2mm 阻焊开窗）。
- ≤0.4mm 间距/BGA 旁加**局部 fiducial**：always should。
- 检测：FID/F 前缀或"无 net 的单圆露铜 pad"。无此概念时仅作 diagnostic。

### 8.10 分板/V-score（条件，需拼板几何）
- 件本体离 V-score 线 ≥ 0.5–2mm、离 mouse-bite 断点 ≥ 3–5mm、离拼板外框 ≥ 5mm；不得跨切割线。
- 应力敏感件（MLCC 尤甚）长轴**平行**于最近 V-score 线（让分板弯折拉短轴而非扯端头）。无拼板几何时退回 §8.5 板边净空、跳过朝向检查。
- THT/波峰焊板另需长轴/阴影相对波峰行进方向的规则（条件触发，本文从略）。

---

## 9. 网格 / 对齐 / 丝印（P7，纯收尾）

> **铁律：本节全是美化，永不得违反 §2–§8 任何一级。** 功能/信号驱动的位置（如去耦 cap 贴 IC 电源 pin）即使破坏整齐行也保留——function beats cosmetics。

> **本节已被机械化（#153 → #167 `tidy` 维）。** 以前这一节写满了判据却**零消费**——没有任何命令读它，
> 全靠人眼。现在 `easyeda pcb layout-score --only tidy --all` 把 §9.1/§9.2/§9.3/§9.4 的可判部分变成
> **五条子规则 + 0-100 分 + 逐器件归因**。逐条对照见 §9.5，那张表也标清了**哪些仍然只能靠人眼**。
> 跑出来的结论一律是 WARN/INFO：**纯 cosmetic，不该阻塞一块电气正确的板**（#153 原文），
> 所以 tidy 维的 finding 永远不会进 `layout-score` 的 `blocking[]`（那份只从短路/重叠/出板框来）。

### 9.1 吸栅 —— 排除公制/锚定件
> 修订：原 agentCheck 把"任何不在 50mil 栅上的件"判违规会**大量误报且有害**。

- 自由 R/C/L/U **本体原点**吸到栅（默认 25 mil；纯通孔板 50 mil）：`x'=round(x/G)*G`。
- **排除**：①公制间距件（0.5/0.8mm pitch IC、JST/2.0/2.5mm 连接器——其 pad 原生不在 50mil 栅上，硬吸会让 pad 偏离布线）；②机械/外壳锚定/已 lock 的件。
- 仅在"吸栅不会把 pad 推离其原生子栅"时吸本体；允许每件 0.5mm 子栅。

> **裁决：25 mil（本节）与 5 mil（`layout-score --grid` 默认）不矛盾，两者目的不同。**
> - **25 mil 是「该吸到哪」的目标栅** —— 给**执行器** `pcb grid-snap` 用，回答"往哪吸"。
> - **5 mil 是「有没有亚 mil 脏值」的判据** —— 给**审计**（tidy 维）用，回答"有没有漂"。
>
> 拿目标栅当判据没有信息量：#153 实测 BBClaw（69 器件）在 25mil 栅上只有 **3/69** 落格，整块板判全错，
> 报告失去区分度；5mil 栅上 **21/69** 落格，剩下 48 个正是 `C2(635.0015, 1109.998)` 这类
> auto-place / GUI 拖动留下的**亚 mil 漂移**——目视看不出、却让行列对齐永远差一点，而且**可修、修完零副作用**
> （实测 grid-snap 最大位移 1.998mil，`pcb check` findings 25→25 不变）。
> 用 `--grid 25` 可以把判据切回目标栅，但那是在问另一个问题。
> 另注：tidy 维对**公制间距件**的排除口径比本节窄——只排 **≥4 脚**的公制件（`pcb_score_tidy.go`），
> 因为本节顾虑的是「**成排** pad 整体偏离原生子栅」，而 2 脚 0402 / 3 脚 SOT-23 吸栅位移 ≤ 半格没有这个问题，
> 偏偏 C/R/D 又恰恰是最该吸栅的一批。

### 9.2 同类件成行对齐 + 等距
- 同前缀同尺寸的"成排"件（C1..C8 去耦排、R 阵列、排针）共用一条轴（同 Y 成横行或同 X 成竖列，±2 mil 内）、同一旋转。
- 行内中心距恒定（±5 mil），取整栅倍数（100/150/200 mil），体边间隙 ≥ 40 mil（丝印/锡膏不撞）。用 `pcb.align` / `pcb.distribute`。

### 9.3 旋转只取 90° 步进（硬）
- 旋转 ∈ {0,90,180,270}，无任意角。默认 0/90 两态，180/270 仅在 pin-1/极性需要时。

### 9.4 丝印
- designator 文字朝向只取 **0°（左→右）或 90°（下→上）**，禁 180/270 倒读。
- 文字 bbox 距本体 ≤ 50 mil、明确归属、不压 pad/铜/相邻本体或其它丝印；丝印对铜 ≥ 0.2mm、字高 ≥ 32 mil。
- 同类件 designator 放同一相对侧、同偏移。

#### 9.4.1 引脚级/极性丝印（现场辨识用）
- **需现场接线/辨识的引脚必须逐脚标注**，不只在连接器旁写个功能名：电源端子 **+/−**、RS-485 **A/B/G**、UART **RX/TX/GND**、极性件阴极 **K**、电解 **+**、IC pin-1。标注文字对齐到**各自那颗焊盘**。
- **铁律 —— 装配后不被遮住**：引脚级标记必须落在**器件本体/courtyard 之外**（对应焊盘的外侧），使元件/连接器塑料装上后仍看得见。**丝印压在连接器本体投影内 = 装配后被塑料盖住 = 等于没标**（螺钉端子塑料罩、卡座金属壳、按键帽都会盖住其 footprint 内的丝印）。放不下就把标记移到最近的本体外空位。
- **来源在 blocks**：这些 per-pin 标注是 block 的 `silk` map（`{label,pins,note,clearance}`）声明的，随块复用——不要每块板从零手标。agent 读块 `silk` → 在板上按「本体外侧、对齐焊盘」落丝印。板级专有件（不在任何块的接口）就地标，并考虑抽成新块。
- **A/B 类反向警示**：芯片定义与规范相反的总线（如 SP3485 的 A/B 与 Modbus 相反）必须有丝印警示（block `silk.note`），否则现场必接反。

### 9.5 本节的机械化状态（#153 → `layout-score --only tidy`）

`easyeda pcb layout-score --only tidy --all` 把下面五条变成 0-100 子分 + 逐器件归因。
finding 报文自带 `[约定 §N …]` 回指本文件对应小节，所以「报了什么」与「照哪条改」一一对得上。

| 判据（本节） | 子规则 id | 子权重 | 机械化程度 | 阈值/口径 |
|---|---|---|---|---|
| §9.1 吸栅 | `off-grid` | 0.30 | ✅ 全量 | 默认 **5 mil** 判据栅（`--grid` 可改），容差 0.001mil；排除 lock 件、机械件（`H/MH/MK/MARK/FID/LOGO`）、**≥4 脚**公制间距件 |
| §9.3 旋转 90° 步进 | `rotation-inconsistent` | 0.25 | ⚠️ 部分 | 同前缀组 ≥3 件才判；±1° 内吸到 90° 步进（吸浮点噪声，真·自由角会自成一类被抓）。**「180/270 是否有 pin-1/极性理由」判不了** —— 平台不暴露这个语义，只给 0.3 倍轻量提醒（H 的 90/270、SW 的 90/270 多半是结构决定的合法朝向） |
| §9.4 同类件位号放同一相对侧 | `silk-side-inconsistent` | 0.20 | ⚠️ 部分 | 按丝印中心相对本体中心求方位取多数派；丝印压在本体正中（<1mil）判不出方位，不进统计 |
| §9.2 同类件成行对齐 + 等距 | `array-irregular` | 0.15 | ⚠️ 部分 | 同轴 ±2mil、行内中心距恒定 ±5mil（正是本节写的两个数）；相邻步距 >500mil 视为两簇不算同阵列 |
| §9.4 字高统一 | `silk-style-inconsistent` | 0.10 | ✅ 全量 | `fontSize` 离群（±0.5mil 吸序列化噪声），Designator 与自由字符串分开统计 |

**仍然只能靠人眼 / 归其它规则的**：

- **§9.4「文字 bbox 距本体 ≤50mil、不压 pad/铜/相邻本体」** —— 不在 tidy 维；压焊盘那条由
  `pcb check` 的 **silk-over-pad** 管（那是可制造性问题，不是观感问题）。
- **§9.4「designator 朝向只取 0°/90°，禁 180/270 倒读」** —— 由 `pcb check` 的
  **silkscreen-flipped** 管（ERROR/WARN 级），不由 tidy 维重复报。
- **§9.4.1 引脚级/极性丝印、装配后不被遮** —— 需要"零件塑料罩投影"这类三维信息，机械判不了，
  仍是 P9 的人工复核项（顶层铁律 11）。
- **§9.2「体边间隙 ≥40mil」** —— 归 `layout-score` 的 `clearance` 维 / `layout-lint --gate`（装配约束不是观感）。

**只报不修 —— 这一维刻意不假设有执行器**（#153 真机验证的两条硬结论）：

1. `pcb silk-align --side` 是 **soft hint**（语义是碰撞规避：已经不撞的标就不动）。实测 69 件里只动了 10 件，
   **方位分布纹丝不动**（左20/上21/右10/下18 → 完全一样）。所以「统一位号方位」现有 CLI **没有任何路径**，
   tidy 维只负责报。
2. 同一次 `silk-align` 把 `pcb check` 的 **silk-over-pad 从 0 条推到 3 条**，而它自己对这几个还报 `clean:true`。
   → **任何按 tidy 建议动过丝印之后，必须复跑 `pcb check`**。

**顺序**：tidy 属 P7 纯收尾，永远在功能位置定稿之后跑；分数低**不构成返工理由**，只在功能约束已满足、
还有余量时才去优化它。

---

## 10. 矛盾的统一裁决（显式）

审稿发现的跨维度冲突，统一裁决如下（均服从 §1 优先级）：

1. **热散开 vs 功能聚拢 vs 开关回路贴紧**：buck 既"散热"又"贴紧"。裁决：① P2 的 EMI 输入回路 + 关键去耦贴近**赢**——针对 Cin/开关/续流这几件（用耐热陶瓷）；② 热 keep-out 只管**独立**热源与**怕热**件（电解/传感器/晶振），**不**管稳压器自己的陶瓷回路；③ 功能聚簇让位于前两者。把"回路件"登记为热散开的**例外集**。
2. **去耦贴近（同层抵 IC / 背面 pin 正下方）vs 热焊盘过孔区/对侧 keep-out**：热 IC 上二者冲突。裁决：背面贴 pin 的 cap **只能落在热焊盘过孔区投影之外**——若 IC 有外露热焊盘，背面 cap 须偏到非热焊盘的电源 pin。**去耦贴近让位于热焊盘过孔区**，反之不成立。
3. **bulk 近稳压器（≤500mil）vs 电解远稳压器（≥200mil）**：多数 bulk 是电解。裁决：两带重叠（200–500mil 环），把**电解 bulk 放该环、在冷/上游侧**；需要 <200mil 的紧贴输出 cap 用**陶瓷/聚合物**（耐热），不用铝电解。"bulk 近稳压器"规则的近端位置明确指定陶瓷。
4. **敏感轨星形 vs 功率流成线（左→右）**：纯单调串联会把负载菊花链，违反星形。裁决：**主干高电流路径与整体块序**走单调成线；在喂给模拟/基准/RF 的节点处**星形分支**，使安静负载不电气下游于噪声负载。
5. **边距四维不一致**：收敛成 §8.5 一个分层带（硬地板 20 < 默认 40 < V-cut 50–75 < 高速/高件 100–125），**每件取最大适用带**，连接器豁免内推但 pad 在框内。
6. **晶振守护 keep-out（≥200mil）vs IC halo（晶振 ≤300mil、支撑件 250mil halo）**：裁决：**只有晶振+两负载 cap**可进 200mil 守护环，MCU 其它支撑件绕行；把晶振放在 **IC 朝开阔/板边的那个象限**，使 ≤300mil 贴近与 ≥200mil 守护两立。
7. **连接器先锁 vs 信号流/电源上边/RF 上边抢同一周边**：裁决：机械/外壳锁定位置 immovable；功能性的"边偏好"**只在剩余的边上作软目标满足**——永不为信号流挪动已锁连接器。

---

## 11. 自动布局执行步骤（`pcb.components.arrange`）

1. **拉数据 + 分类**：`pcb.components.list`（含 bbox+pads）+ `pcb.layers.list`（取 `copperLayerCount`）+ `pcb.nets.list`。按 §0.3 给每件打 class 标签（anchor/hot/sensitive/IC/passive）+ net 角色，缓存。
2. **P0 锚定**：放好并 `lock` 所有 H/MH/J/面板件（有外壳图按图坐标，否则贴边/角落推断）。其后全程当不可动障碍。
3. **P1 安全**：若检出 HV/隔离，先满足爬电/间隙与隔离拉开，再排别的。
4. **P5 粗聚簇**（先粗后细）：按共享局部 net 建连通图聚簇，每簇成不重叠瓦片；模拟/数字/RF/电源分区，电源块靠输入边、RF 靠边。
5. **P2 关键约束就地改写**：把开关输入回路（Cin+开关，≤150mil 同层）、各 IC 去耦（按 §5.1 叠层条件化）、晶振+负载 cap（≤300mil + 200mil 守护环）贴到位——**局部覆盖**第 4 步的粗排。
6. **P3 回流连续性**：把高速/敏感件挪离平面分割/板内开槽/板边（拿不到 outline 时跳过，标 advisory）。
7. **P4 热**：散开独立热源（≥400mil）、电解/晶振/传感器离热源（≥200mil）、对侧热焊盘区 keep-out——**例外**：不动第 5 步登记的回路陶瓷件。
8. **P6 DFM**：courtyard 不重叠（≥12mil）、高件吸嘴间距、同类朝向/极性统一、BGA 扇出 halo、测试点同面 100mil。
9. **P7 收尾**：`pcb.grid_snap`（排除公制/锚定件）→ `pcb.align`/`pcb.distribute` 对齐成排 → 旋转规整 90° → 丝印可读。
10. **验证**：`pcb.drc.check` + pcb-lint（数据态巡查）；违规按本文定位规则号回修。**改前重取 primitiveId**（无编程 undo），破坏性操作 `NeedsConfirm`，before/after 进审计日志。

---

## 12. 边界、数据缺口与开放问题

- 本文是 **PCB** 约定，与原理图约定（`schematic-layout-conventions.md`）分立；单位 mil（原理图 10mil 栅）、y-up 一致、多了 layer 维与无镜像。
- **所有 mil 阈值在以下数据就绪前都是 aspirational**：①板框 outline 读取动作（贴边/角落/回流/边距规则需要）；②元件高度 Z（高度/外壳碰撞需要，现仅 designator+bbox 代理）；③铺铜/平面分割几何（回流连续性、割地核验需要，现靠 net 推断，标 advisory）；④元件容值/封装（容值排序需要，现跳过或接 BOM）。先建这些数据模型再信任数值阈值。
- 已用 `copperLayerCount` 把去耦阈值条件化（2 层 vs 4+ 层）——这是当前**可直接做对**的关键修订。
- 仍缺的工程维度（条件触发、暂以 advisory 留待补全）：板对板/夹层连接器内置布局、屏蔽罩/EMI 衬垫/机壳缝合 keep-out、大板铜平衡/翘曲、THT/波峰焊朝向阴影、隔离器件爬电的电位自动推断。
- `getCurrentRenderedAreaImage`/snapshot 在后台标签可能返回缓存旧渲染（与原理图侧同病）——"改完截图确认"前先验证它真刷新了，否则用纯数据校验（pcb-lint）或直接看 EasyEDA 界面。

