PCB MI 工程师(设计制作流程)
定位
负责 把一块板"怎么生产"设计成一份工厂可执行的 MI 制作指示。输入是板子的设计资料(Gerber / 叠构图 / 工艺要求 / 已有 RFQ),输出是结构化的制造指示文档。
本技能不做报价(那是 pcb-quotation-engineer),也不负责工艺知识讲解(那是 pcb-process-engineer)。
本技能产出的是 MI 文档本身:开料表、工艺流程、拼版、叠构、钻咀、BOM。
何时用本技能(触发)
- 用户说"按 MI 格式做 / 出 MI / 出制作指示 / 按 PCB+ 智慧工厂格式 / 按某某厂 MI 格式"。
- 用户上传 MI 样版(PDF/Excel/图片)要求照版式生成。
- 报价/DFM 完成后,需要交付完整 MI 给工厂生产时。
-
问"《制作通知单》17 项字段怎么填 / OSP 板 MI 要注意什么 / 制工具申请单、菲林发放回收与报废怎么走 / 研发板与 CSR 怎么落到 MI"时 → 读
references/工序SOP与MI规则基线.md第十四~二十二节。 -
做 HDI / 盲埋孔 / 厚板(≥2mm)/ 多次压合板 时 → 读
references/高阶HDI与多次压合口径.md。
资料解析依赖
- Gerber / Excellon 钻孔解析:本技能依赖
pcb-quotation-engineer的gerber_extract.py
(通过 Skill 工具调用,或要求用户先跑出 RFQ/layer 数据再传入)。 - 也可接受已提取的数据(层数、板厚、铜厚、钻孔表、外形尺寸)直接生成 MI,不必重复解析。
模板与排版规范(2026-10-16,v2.7.0;用户:「字体偏小、排版有点混乱,整理一下更新模板」)
> 生成 MI 按此定版;字号为 A4 纵向 595×842pt 实测值。整体字号比 v2.5 放大 1~1.3pt。
页面骨架:正文宽 558.8(左 19.1 / 右 577.9);正文顶 215 / 底 762;页眉线 y=196。
页眉(2026-10-16 二次修订)
- 最上方预留 LOGO + 公司名称的位置(不是塞真图):居中一条 300×34pt 虚线预留框(ec=#B7B7B7、ls=(0,(3,3)),y≈12),框内居中灰字「【 公司 LOGO + 公司名称 】预留位」(11.5pt);填了 COMPANY_CN/COMPANY_EN 才显示公司名(15pt bold +英文 7.2 灰),并自动在左侧画 62pt 宽的 LOGO 小虚线位。
- 模板默认留空(便于他人套用);大标题居中在其下方(y≈72)。
- 信息块必须定列对齐(不许用空格凑):三列固定 x = 28.8 / 205 / 388;字体 9.5(≠旧版 8.2 空格填充)。
- 行1:本厂编号: … | 版本: … | 产品分组: …;行2:客户代码: … | 终端客户: … | 客户型号: …;行3:合拼型号: 无 + 右上 PAGE x OF N。
| 元素 | 字号(pt) | 备注 |
|---|---|---|
大标题 MI制作指示(预制作) |
15 bold | 居中 |
| 页眉(本厂编号/客户代码/合拼型号/页码) | 8.2 | 页码写 PAGE x OF N;时间戳 7.2 |
| 右上特性/合规(阻抗板、RoHS) | 9.2 | 已删「正片工艺」「绿油塞孔」 |
| 表头 9×8 开料参数总表 | 7.2 | 行高 [21.0] + [16.6]×8(≈154) |
| 工艺流程表 | 5.9 | 行距 7.0 / pad 2.7 / 表头高 13.5(全表最密处,是唯一的小字;再放大就会变 3 页) |
| 全板管控要点 | 6.5 | 行距 8.3 |
| 叠构图 | 层名·厚度 7.2;规格栏 6.5;表头 8.0;底部块 7.8;注 7.2 | 行高 max(th×126, 19.5),端点行 11 |
| 钻咀表 / BOM 表 | 6.5 | 行距 8.1 / 8.2;表头高 12.5 / 13.5 |
| 表格说明文字(公式块/口径/备注/EQ) | 6.4 | 行距 8.4 |
| 各页小标题(开料拼版图/叠构图/钻咀表/外形图纸/BOM清单) | 10~11 bold |
硬规则
1. 流程表自动分页不留空页:装不下就续页,续页只画有数据的部分——绝不允许出现"只有表头、下面没数据的空续页"(最显乱)。
2. 外形图纸整页大图 + 高分辨率:客户 Panel Drawing 原图按 ≥400 dpi 渲染(本项目 420 dpi),图框高 ≈442pt 铺满页宽;下方接「尺寸标准」表 + 「客户技术要求(原文 copy)」。
3. 文字不压线:所有说明文字与边框线/尺寸箭头留 ≥10pt。
4. 表头底色 #F2F2F2;合计行底色 #FFF2CC。
5. 生成后自检三项:① 全页 pymupdf 扫 /=0;② 无空续页;③ 无斜线(get_drawings() 表格区 |dx|>0.1 且 |dy|>0.1 的线段=0)。
整体流程
1. 版式收集
- 有样版 PDF:用 PyMuPDF 渲染所有页为 PNG,仔细看每页版式(页眉/标题/表格/列宽/合并/页码/签字栏/钻孔标注)。
- 无样版:按 真实量产 MI 单标准版式(页数随层数变,非固定 9 页):
★ 工艺流程 = 连续单表(2026-10-15 修正:取消节点分配)
这是当前唯一口径。旧的「按节点分段」(2026-10-14)与更早的「按层对分段」已全部作废——用户明确要求"把流程之间格子连接起来,取消掉节点分配,把所有管控要点放在 MI 开料图前面"。
- 一张连续的工艺流程参数表,覆盖 开料 → 内层(L2/3、L4/5) → 压合(一次/二次) → 钻孔 → 沉铜 → 电镀 → 绿油塞孔 → 外层线路 → 蚀刻 → AOI → 防焊 → 文字 → 阻抗测试 → 表面处理 → 成型 → 清洗 → 测试 → FQC → FQA → 包装,全局序号 1..N 连续、不重启、不按节点断行、不再每节点独占页、不插小节标题重启序号(六层通孔实测 36 步)。
- 全板管控要点:把所有分散在各段的管控项合并为一张「全板管控要点」表(约 10 行:通孔钻孔 / 绿油塞孔 / 外层线宽线距 / 防焊 / 文字 / 阻抗测试 / 沉锡 / 成型 / 100%电测 / 随货文件),放在开料图之前(P1 末尾紧随工艺流程表),不再依附各工艺段。
- 工程备注(EQ) 仍统一放最后一页(与 BOM 同页),不分散。
| 页序(六层通孔实测 20CH_REV2_Wave,实测 7 页) | 内容 |
|---|---|
| P1 | 表头(9×8 开料参数总表)+ 连续工艺流程参数表(全局 1..N,装不下自动续页,不截断) |
| P2 | 工艺流程参数(续,重复表头)+ 全板管控要点(合并单表,开料图之前) |
| P3 | 开料拼版图(上:开料图 + 开料信息 9 项;下:A 拼版 / B 拼版) |
| P4 | 叠构综合图(4 列:层名 / 压合厚度 / 叠构图 / 规格或残铜率 + 比例色带 + 红色参考线 + 底部"单位+压合厚度+层间偏差"块) |
| P5 | 钻咀表 DRL-1(单独一页) |
| P6 | 外形图纸(单独整页,整幅大图) |
| P7 | BOM 清单(先列用量公式块,单位=每平米耗用)+ 工程备注(EQ 汇总)+ 预制作声明 |
> ★★ 页序硬规则(2026-10-15 二次修正):
> ① 外形图纸必须排在「钻孔图 / 钻咀表」之后("先孔后形");
> ② 钻咀表与外形图纸各占一页(不合并)——用户明确"外形图纸太小看不清,单独作为一个页面,展示整个外形图纸";
> ③ 工艺流程装不下必须自动续页并重复表头,绝不截断(曾把 36 步只印出 13 步,被用户抓到"工艺流程为何没有做完")。
> 落页顺序固定为:… → 开料拼版图 → 叠构综合图 → 钻咀表 → 外形图纸(整页) → BOM 清单。
> ★★ 标题写法(保留):页面大标题写 MI制作指示(预制作);投料后转正式版去掉「(预制作)」。
> ★★ 预制作 MI 特殊处理(2026-10-15 修正):生成器加 PRE_MADE 开关——PRE_MADE=True(预制作)时:① 取消页脚签字栏(制单人/审核/批准三列不画);② 末页(BOM 页)底部加 红框「预制作,仅供参考(正式投料前须完成审核与客户确认)」。正式版 PRE_MADE=False 才恢复页脚三列签字栏。
- 复杂 HDI / 厚板(多次压合):工艺流程仍保持全局连续序号单表,可在同表内用「一次压合 / 二次压合 / 主流程」等小节标题分行区分,但序号不重启;页数随工序列数自然增加(六层一阶 HDI 增至 12+ 页、三十层二阶 24 页)。
- 页眉:左上角留空不放 LOGO;右上 3 个槽位(①工艺 / ②特性 / ③合规)。
- 页脚:
PAGE: x / N每页必带;签字栏仅正式版绘制(见上「预制作 MI 特殊处理」)。
★ 开料拼版图(2026-10-15 修正:必须 SHEET→PNL 与 SET→PNL 两级;查历史版本 v1)
用户 critique:「开料图改错了,去查一下历史版本,按照这个示意图重做」——历史正确版(交付/MI制作指示_... 第 7 页)画的是「大料 SHEET 及其内部的 PNL 排布」,不是「PNL 及其内部 SET」。
- 上格「开料图」= SHEET 尺寸 → PNL 尺寸:画大料 SHEET(86×49" = 1244.6 纬向 × 2184.4 经向)矩形,内排 2列×3行 = 6 个 PNL(PNL 622 在纬向、725 在经向),标 SHEET 双向尺寸箭头,写「1 Sheet(86×49") = 6 PNL(2列×3行);PNL 725×622」。
- ❌ 不要把 PNL 内部 SET 排布画在「开料图」里(那是下一格的事)。
- 下格「拼版图」= SET 尺寸 → PNL 尺寸:画 PNL 725(长边)×622(短边) 矩形,内排 3列×2行 = 6 个 SET(SET 225×292,每 SET 再分 2 PCS 上下拼、拼缝 2mm),标 PNL 双向尺寸箭头,写「1 PNL = 3列×2行 = 6 SET = 12 PCS」。
- 删除底部说明块:用户明确「这个说明不需要」——不要在拼版图下方再堆「1 Panel = 6 SET = 12 PCS;…」那一段文字块。
- B 拼版栏:无 B 拼版时只写「(无 B 拼版)」(2026-10-15 用户"这个去掉" —— 不再写「成品尺寸异常时…」那句)。
- 开料信息栏与表头不得出现 /(见上方禁 / 规则):APNL/SHEET→APNL每SHEET、工艺边 23/18mm→23mm、18mm。
2. 钻咀表生成
- ★★ 两条硬原则(2026-10-16 用户):
1. 钻咀尺寸 = 成品孔径 + 0.05mm(补偿电镀铜:孔铜 25um × 两壁 = 0.05mm)。恒有 钻咀 ≥ 成品——⚠️ 别写反(旧版曾写成 成品 = 钻咀+0.05,方向错了)。
2. 钻咀尺寸只按 0.025mm 档位取值(用户例:0.4 的上下档 = 0.425 / 0.375):钻咀 = round_0.025(成品 + 0.05),档位序列 …0.375 / 0.400 / 0.425 / 0.450…
3. 工装孔(靶孔/丝印孔/层偏孔/切片孔/铆钉孔/型号孔/识别孔…)无成品孔径,只需按 0.025 档取整;刀序接在功能孔之后(功能孔到 T10,则工具孔自 T11 起),不重复刀序。 - 推演:成品 0.25→钻咀 0.30;0.30→0.35;0.40→0.45;1.20→1.25;0.889→0.939→0.95;3.048→3.098→3.10。
- 列(10):刀序|钻咀尺寸|PTH|成品孔径|+/-公差|PCS孔数|SET孔数|PNL孔数|B拼版孔数|备注
- 孔数勾稽(正推,方向不要反):
SET孔数 = PCS孔数 × (PCS/SET) PNL孔数 = SET孔数 × (SET/PNL) # 允许 ±1~2 落点差 末行"合计" = Σ PNL孔数 = 表头「A板孔数」 # 必做校验 - 公差:PTH ±0.076;NPTH ±0.05;槽孔双公差写法
+0.076/-0.076 | +0.1/-0.1(备注列写<刀径>*<槽长>,如0.801*2.3,);激光盲孔 ±0.05 - 备注写实名工装孔,不要用"NPTH+≥2mm 安装孔"这类推断式描述:
靶孔 / 丝印孔 / 层偏孔 / 线路LDI对位孔 / 切片孔 / 铆钉孔 / 型号孔 / 识别孔 / 下刀孔 / 引孔 / 清角孔 / 卸力孔 / 去毛刺孔 / 辅助孔 / 测试孔 / 阻抗测试孔 / 阻抗条定位孔 / 防呆半孔 / 邮票孔 / BGA区域过孔 PTH列取值Y/N(不加/);非电镀工装孔行里"不适用"的格(成品孔径/公差/PCS孔数/SET孔数/B拼版孔数)写—,不写/- 通用工装孔(5 份量产单全中,可作模板默认项):
| 刀径 | PNL孔数 | 备注 |
|---|---|---|
| 3.174 | 4 | 靶孔 |
| 3.175 | 13 | 丝印孔 |
| 1.203 | 5 | 层偏孔 |
| 2.004 | 5 | 线路LDI对位孔 |
| = 最小刀径 | 24 | 切片孔 |
| 5.5 | 8 | 铆钉孔 |
| 0.51 | 139–148 | 型号孔 |
| 0.505 | 1 | 识别孔 | - 仅当确为盲孔板时,才按"NPTH 安装孔 / 治具孔 / 信号孔"那套分类补写
3. 叠构图(用户图样 1:1:5 列 + 比例色带 + 双红压合线 + 底部单位块 + 两次压合注,2026-10-15 三次修正)
- 整页只画一张叠构图,照用户最新图样做(曾两次因"没做成一样的格式/依然不达标"被打回;遇到历史习惯别硬套旧样式)。
- 列序固定 5 列:
层名 | 压合厚度 | 叠构图 | 规格或残铜率 | 备注。列宽实测[52, 56, 140, 272.8, 38](合计 558.8)。「备注」列保留但留空。 - 层名写
LYR-n(铜层)/PP(半固化片)/板材(芯板);首尾各 2 条0.0000端点行(层名留空、画绿色带),不能省。 - 压合厚度 = 该层铜厚(厂内口径:外层写「铜箔/基铜」,不写成品铜):外层 HOZ 基铜
0.0175↔17.5um(不是成品 43um)、内层 1oz0.0350、板材0.3000(不含铜)、PP 写压合后厚度(0.1100/0.0750/0.3800);首尾端点行0.0000。口径依据真实 MI(客户 0818 六层沉锡板):LYR-1/LYR-6 写17.5um 残铜率:100%。 - 叠构图 = 按厚度比例画色带(★核心):行高
h = max(th×scale, 最小行高)(scale≈110、minh≈17、端点行≈10),Rectangle满列宽填色——防焊/端点=绿#548235(顶/底各 2 行)|铜层=金#FFC000|PP=青#00B0F0|芯板=深金/橄榄#BF8F00。芯板与厚 PP 块要明显比铜层高。 - 规格或残铜率:铜层
43um 残铜率:100%(外层)/1oz 残铜率:待CAM(内层);PP 全称(7628 RC42% 0.380 建滔 KB-6160 配套 有卤素 TG≥150 CTI≥175 150米每卷 *1);板材FR-4 0.30mm 1oz(双面) 1245*2184 建滔 KB-6160 不含铜 TG≥150 防CAF 有卤素 黄色 A级。 - 红色参考线(★2026-10-16 用户要求):鲜红色
#FF0000、线宽 3.4pt(=加粗两倍),zorder压在色带之上;数量随压合次数定——一次压合的板只画一条贯穿LYR-1→LYR-6,多次压合板才画两条并加黑虚线框。指示到LYR-1时必须「穿透 L1 层」:线端取 L1 行的上沿(centers[iL1] − heights[iL1]/2),下端取 L6 行下沿,不可只画到行中心。红线上不加文字。 - 底部汇总(对齐用户图样):先画一条粗黑横线(约列宽左 55%),再写:
单位:(mm) 压合厚度 1.5760 压合后厚度 1.5750 +0.1000 -0.1000 0.1850 LYR-1 - LYR-2 +0.0185 -0.0185 mm 0.3800 LYR-3 - LYR-4 +0.0380 -0.0380 mm 0.1850 LYR-5 - LYR-6 +0.0185 -0.0185 mm
(层间行 = 相邻铜层之间的介质厚度,容差 ±10%;跨芯板的层对(如 L2-L3)不列。) - 底部注(★随压合次数):
- 一次压合板(双芯板六层)只写一行:
本板为双芯板(L2/L3 与 L4/L5),一次压合成型;压合态 1.5250mm + 外层电镀 0.0500mm = 成品 1.575mm。 - 多次压合板才写两行:
第一次压合 L2-L5 …/第二次压合 L1-L2 与 L5-L6 …。 - 钻孔层别备注(仅盲孔板,且必做):红底高亮"★第N次"+层别+孔深+关联DRL-N。
★成品铜厚 → 芯板/铜箔的映射(2026-10-02 定案,与报价侧 pcb-quotation-engineer §3.5 口径 1 一致)
- 客户说「N 层 X oz」= 内外层「成品」铜厚,不是芯板基铜。
- 内层成品 1oz ⇒ 芯板取 1oz/1oz(规格写 1/1),不是 H/H(取 H/H 会做成 0.5oz 内层,成品铜不达标)。
- 外层成品 1oz ⇒ 取 HOZ 铜箔 + 电镀加厚,叠构图外层行的规格列写
HOZ 基铜 + 电镀(+10um)→ 成品 1oz。
- Hsinna 四层 1oz 实测叠构(可直接套用的数值形态):
LYR-1/LYR-4 = 0.0450(HOZ + 电镀)、PP = 2116 0.1150 ×1/面、LYR-2/LYR-3 = 0.0350(芯板 1oz 铜)、
板材 = 1.2000 → 合计 1.5900mm。
- ⚠️ 只有客户明确要求"内层 HOZ"时才写 0.0175(HOZ 0.5oz)。
- 同步面(四处一起改,漏一处就不一致):① 叠构图 STACK;② 开料工序的「板材规格」栏
(FR-4 1.20mm 1oz/1oz 41*49)+「基铜」栏(1oz/1oz(1/1));③ BOM 芯板行物料名;
④ 表头「成品铜厚」/「孔铜厚度」与工程备注的板厚描述。
★压合结构取「最省」(2026-10-02 定案,与报价侧 §3.5 口径 2 一致)
- 客户未给叠构图、未指定 PP 规格/张数时,按「达到成品板厚的最少 PP 张数 + 最便宜 PP 型号」反推;
四层标准 PP = 2 张(每侧 1 张),超过才触发 PP 追加费。
- 本例正解:1.2mm 芯板 1/1 + 每侧 2116 单张 = 1.590mm;备选 1.3mm 芯板 + 每侧 1080 单张 = 1.602mm。
- ❌ 照抄"每侧 1080×2" ⇒ PP 共 4 张(超标准 2 张,多算追加费)且叠构偏厚 1.609mm。
- 叠构图下方的「公差表」也要同步:分对厚度(PP) 行写实际型号与张数(本例 2116: 0.115 x1/面),
并加一行 芯板基铜 1oz/1oz(1/1)|外层基铜 HOZ + 电镀 → 成品 1oz。
4. 工艺流程参数 = 连续单表(全局序号,不分段、不重启)⚠️
一张 MI 的工艺流程表是一张连续表格,所有工序按生产先后逐行铺开,全局序号 1..N 连续、不按节点/层对分段、不重启序号、不每节点独占页:
- 列:序号|工序|工艺名称|工艺流程参数(多行键值)|备注
- 行构造:
R(seq, 工序, 工艺名称, [(参数名, 值), ...], 备注),seq 从 1 连续递增到 N(六层通孔实测 36 步)。 - 内层多对芯板(六层 = L2/3、L4/5)只是同表相邻行,不插小节标题、不重启序号;压合(一次)/压合(二次)也是相邻行。
-
全板管控要点合并单表见 §4.1,紧随工艺流程表之后、开料图之前。
-
❌ 不单独设「绿油塞孔」工序(2026-10-15 用户要求:「绿油塞孔不需要单独做一个工序,要求塞孔在防焊工艺备注即可」):绿油塞孔不列为独立工序,其要求(通孔 0.25、0.30、0.40 共 3133 孔每PCS、两面塞+真空塞、饱满无凹陷、100% AOI 检空洞、依 TH_PLUGGING.gdo)并入「防焊」工序的参数与备注;同理删去「塞孔预固 / 塞孔AOI」两个子工序。删工序后全局重新连续编号(
for i,r in enumerate(FLOW_ALL): r[0]=str(i+1))。VCP电镀行备注写「为绿油塞孔提供可靠孔壁;绿油塞孔要求见防焊工序备注」。 -
★ 压合次数别写多(2026-10-15 用户:"这个案子需要压合两次吗"):双芯板六层(L2/L3 芯板 + L4/L5 芯板)→ 一次压合即可——流程只列「棕化 → 预叠 → 压合 → 裁磨」,不要拆成「压合(一次)/压合(二次)」;叠构图也只画一条红线、注只写一行。只有「单芯板 + L2/L5 为内层铜箔」的 foil build,或 HDI 顺序层压、厚板(≥~2mm) 才需要两次。
- 判据:数叠构里
板材出现几次——2 次 = 双芯板 = 一次压合;1 次且 L2/L5 是铜箔 = foil build = 两次压合;HDI 盲孔 = 按压合次序。 - ⚠️ 曾把"1 芯板样例(图2)"的两次压合照搬到"双芯板本板"上,被用户当场质疑。真实 MI(客户 0818 六层沉锡板,双芯板)只有一次压合、无任何"压合次数"注。
4.1 全板管控要点(合并单表,放在开料图之前)
- 列:
管控项 | 管控要求(两列,宽 ≈ 110 + 448.8),约 10 行。 - 固定行(六层通孔实测):★通孔钻孔 / ★绿油塞孔 / ★外层线宽线距 / ★防焊 / ★文字 / ★阻抗测试 / ★沉锡 / ★成型 / ★100% 电测 / ★随货文件。
- ⚠️ 不再把管控点拆散塞进各工艺段备注——统一收口到这一张表,便于审核一眼看全。
⚠️ 复杂 HDI / 多次压合板(保留原分段信息为参考):仍保持全局连续序号,但可在同表内用小节标题区分压合次序:
- 内层对 _2/3、_4/5 等相邻行;一次压合 _2/5、二次压合 _1/6 相邻行;主流程段无后缀。
- 多次压合工序名带前缀:次外层棕化 / 次外层预叠 / 次外层压合 / 次外层填孔电镀 / 次外层线路 / 次外层蚀刻 / 次外层AOI;同名重复加后缀:水平沉铜二、VCP电镀二、二次FQC。
- HDI 盲孔板:钻孔按层别拆行并标红底 ★(激光 L1→L2 等);常规多层板合并为一行。
- 双层板无压合段(芯板直接进钻孔),单/双面板压合费为 0。
- 每次报客户前 verify:openpyxl.load_workbook() 不报错 + 关键字段抽检。
5. 开料拼版图
5.1 开料信息栏:固定 9 项,字段名与顺序不可动(2026-10-14 修正,旧版只写 7 项是漏的)
| # | 字段 | 取值示例 |
|---|---|---|
| 1 | SHEET尺寸: |
1244.6*2184.4 mm |
| 2 | SET 尺寸: |
225.00*292.00mm(两个空格,厂内版式如此) |
| 3 | APNL 尺寸: |
725.00*622.00 mm(六层+ 必须 ∈ [620,725]×[520,625],且经 pcb-cut-engineer 反推;此示例为 20CH_REV2 实测值) |
| 4 | BPNL 尺寸: |
无 B 拼版写 0.00*0.00 mm |
| 5 | APNL/SHEET: |
1 SHEET= 6 PNL= 36 SET= 72 PCS |
| 6 | BPNL/SHEET: |
1 SHEET= 0 PNL= 0 SET= 0 PCS |
| 7 | 交货利用率: |
87.00%(SET 面积口径,见 §5.2) |
| 8 | 拼版备注: |
经纬单方向(六层+);PNL 3列x2行=6 SET;SET间刀缝2mm;工艺边23/18mm |
| 9 | 大料利用率: |
99.52%(PNL 覆盖口径) |
⚠️ 无 BPNL 时 4/6 项写 0.00*0.00 / 0 PNL= 0 SET= 0 PCS(不是留空、不是 /),与表头「开料参数总表」9×8=36 格的 BPNL 四格保持一致。
5.2 ★ 交货利用率必须用 SET 面积,不能用 PCS 面积(2026-10-14 修正的错漏)
交货面积 = SET尺寸的长 × 宽(m²) ← 表头「交货面积」就是这个值
交货利用率 = 交货面积 × (大料PCS数 ÷ PCS/SET) ÷ 大料面积
= SET面积 × 大料SET数 ÷ 大料面积
大料利用率 = 大料上 PNL 总面积 ÷ 大料面积
- ❌ 已犯错误:用
PCS面积 × PCS数 ÷ 大料面积,比正确值低约 5 个百分点
(实测:SET 0.0697880㎡ 口径 = 89.84%,PCS 0.032625㎡ 口径 = 84.00%,同一张图)。 - 校验:交货利用率 ≤ 大料利用率,且两者差 = 工艺边 + 拼缝损耗占比(通常 3~8 个点)。
5.3 开料图画法(2026-10-15 三次修正:SHEET 画「横向」;文字不写在线上)
- 上格「开料图」= SHEET → PNL(★SHEET 必须横向/landscape):画大料 SHEET 全框(红框),长边 2184.4 在宽向、短边 1244.6 在高向(
sh_h = sh_w × SHEET_W/SHEET_H ≈ 0.57·sh_w),内部排 3列×2行 = 6 PNL(PNL 725 宽向 × 622 高向);标 SHEET 双向尺寸箭头(底=2184.4 经向、左=1244.6 纬向)+ 「1 Sheet(86×49") = 6 PNL(3列×2行);PNL 725×622」。 - ❌ 别画成竖向(用户:"这个改成横向");也别把缩放写反(
sh_h = sh_w×SHEET_H/SHEET_W会画成竖高、溢出到下格压住文字——2026-10-15 实际踩到)。 - 下格「拼版图」= SET → PNL:画 PNL 全框(725 长边 × 622 短边),内部排 3列×2行 = 6 SET,每 SET 再分 2 PCS(上下拼、拼缝 2mm);标 PNL 双向尺寸箭头 + 「1 PNL = 3列×2行 = 6 SET = 12 PCS」。
- PNL / SET 尺寸口径取自
pcb-cut-engineer反推值且在限值内(六层+ ≤ 725×625)。 - 经纬向标注写图形外侧,不得压在网格上;六层+ 标「经纬单方向拼版」。
- ★ 文字不要写在线上(2026-10-15 用户:"字迹和位置调整可辨认,不要写在线上"):所有说明文字(
1 Sheet…/工艺边…/1 PNL…/SET…/1 大料…)必须落在图形框内纯空白区,与任何边框线/尺寸箭头留 ≥10pt 间距;图形画完在下方留 40~50pt 给文字,宁小勿压线。 - ❌ 不另起「说明文字块」(用户:"这个说明不需要");也不写「成品尺寸异常时…」那句(用户:"这个去掉")。
B拼版无则只写「(无 B 拼版)」。- 页眉(用户"这几个字去掉"):右上不再画「正片工艺」与「绿油塞孔」,只留「阻抗板」与「RoHS」。
6. BOM 清单
- ★ 用量口径=「每平米成品耗用」,且必须把利用率算进去(2026-10-15 三次修正,用户:"所有物料的用量要把利用率算进去,而不是算板材的面积,所以逻辑错了,重新做"):
- 基准 = 每 PNL 成品净面积 = 12 PCS × PCS面积 = 12 × 0.032625 = 0.3915 ㎡/PNL("利用率"就体现在这里:成品率 = 0.3915 ÷ PNL面积 0.4509 = 86.8%;对应材料利用率(PCS口径,对大料) 86.40%)。
- 每平米成品耗用 = 该物料每 PNL 用量 ÷ 0.3915(❌ 不再除以大料/板材面积,那是错的逻辑)。
| 物料 | 每平米成品用量算式 | 用量单位 |
|---|---|---|
| 板材(芯板 0.30,六层 2 张每PCS) | 2 × PNL面积 0.4509 ÷ 0.3915 = 2.3037 |㎡每㎡|
| 铜箔(外层HOZ,顶+底 2 张每PNL) | 2 × 0.4509 ÷ 0.3915 = 2.3037 |㎡每㎡|
| PP(7628 中 1 张;2116、1080 外各 2 张) | 张数 × 0.4509 ÷ 幅宽1.245m ÷ 0.3915 = 张数 × 0.9252(7628×1=0.9252;2116×2=1.8504;1080×2=1.8504) |米每㎡|
| 干膜(内层 4 面;外层 2 面) | 面数 × 0.4509 ÷ 0.3915 = 面数 × 1.1519(内层4面=4.6076;外层2面=2.3038) |㎡每㎡| - 同时列出三口径利用率核对式:交货利用率 = SET面积×SET数/大料面积;大料利用率 = PNL总面积/大料面积;材料利用率 = PCS面积×PCS数/大料面积。
- ★★★ 用量口径三次修正(2026-10-16 用户"重新做"):一切以「每平米成品」为基准,单位必须正规带
/ - 基准公式:
一平米成品「单层/单面」耗用 = 1 ÷ 材料利用率。用户例:一张料 1.296㎡ × 利用率 85% = 成品 1.1016㎡ → 每平米成品单层耗用 = 1 ÷ 0.85 = 1.1765 ㎡。本项目利用率 = 材料利用率(PCS 口径) 86.40% → K_LAY = 1.1574 ㎡/㎡。 - 板材、PP、干膜、油墨 按 K_LAY 放大(生产中都在 PNL 上使用),再乘层数/面数与换算。两处例外:
- PP 只算长度、不除幅宽:
用量(米/㎡) = 张数 × K_LAY(7628×1=1.1574;2116×2=1080×2=2.3148)——2026-10-16 用户明确"不计算宽度"。 - 铜箔要单独再乘一个「铜箔自身利用率 85%」,且以 kg 计量:
面积(㎡/㎡) = 层数 × K_LAY ÷ 0.85(例 2×1.1574÷0.85=2.7233);计量厚度 = 成品铜厚 − HOZ(取叠构图/客户制板说明,本项目 43 − 18 = 25um);单位重量 = 厚度(um) × 8.9 ÷ 1000 kg/㎡(1um 铜 ≈ 8.9 g/㎡;25um → 0.2225 kg/㎡);用量 = 面积 × 单位重量→ 0.6059 kg/㎡。
- PP 只算长度、不除幅宽:
- 单位列一律正规写法:
㎡/㎡、米/㎡、kg/㎡、支/㎡(允许含/—— 之前"斜线没解决"指的是画歪的表格横线,不是单位斜杠)。 - 钻嘴 / 锣刀按「开料图」核算:先由开料图取每张大料的 PCS 数(本项目 1 张 = 6 PNL = 36 SET = 72 PCS,成品 2.3490 ㎡/张),再
Σ ceil(该规格每PCS孔数 × 72 ÷ 寿命N)得 支/张,最后 ÷ 2.3490 折算 支/㎡;锣刀见下行「锣程软件实测」规则。 - ★★ 辅助材料耗用系数(2026-10-16 用户口径,取代 mrp-rules 的旧默认值):
| 物料 | 口径 | 算式(本项目实测) |
|---|---|---|
| 内层线路 | 线路油墨 · 涂布工艺(不是干膜),≈ 20 ㎡每kg | 4 面 × PNL面积 ÷ 20 ÷ 成品净面积 = 0.2304 kg/㎡ |
| 外层线路 | 干膜(2 面) | 2 × PNL面积 ÷ 成品净面积 = 2.3037 ㎡/㎡ |
| 阻焊油墨 | 随外层铜厚变化:0.25 kg/㎡(1oz 基准)× 外层成品铜厚 ÷ 35um | 0.25 × 43 ÷ 35 = 0.3071 kg/㎡(双面,含绿油塞孔) |
| 文字油墨 | 常规 200 ㎡每kg | 1 ÷ 200 = 0.0050 kg/㎡ |
| 钻嘴 | Σ ceil(各规格 PNL孔数 ÷ 钻咀寿命 N)(进一法);N 取自公司受控文件 XY-WI-DR-01-A2《钻孔作业指导书》附件一《钻孔参数表(普通2-4层板 TG≤150 <1.5OZ)》,按实际钻咀直径最近匹配(圆孔钻咀 0.15~6.50mm,已剔除分刀-原径0.001 与槽刀-页2/3 .001/.002/.003);典型:≤0.95≈1500、1.0~1.95≈1000~1200、2.0~2.5≈800、2.55~2.85≈600、2.9~3.15≈500、3.2~3.45≈400、≥3.5≈300 孔每支 | 本项目 34.5 支/PNL(88.1 支/㎡) |
| 锣刀(成型铣刀) | 每支寿命 15 米(≠ 旧默认 150 米) | 锣程软件实测:解析 CONTOUR.gdo → PCS 0.887m ×2 = SET 1.774m ÷ 0.0657㎡ = 27.00 米/㎡ ÷ 15 = 1.8001 支/㎡ | - ❌ 沉铜/电镀药水、表面处理药水一律不进 BOM(属制程消耗,不属材料清单范畴)——2026-10-16 用户明确要求删除。
- ★ 锣程计算(2026-10-16 用户口径:用软件计算,不写「待CAM计算」):软件解析客户外形 Gerber(CONTOUR.gdo)实算——单板锣程 = 全部 D01 轨迹长度(G01 直线累加;G02/G03 圆弧按弦长反解夹角 θ=2·asin(弦/2r),半径取两端均值;⚠️ Proteus 系文件圆心 = 终点 + I/J(非标准起点+I/J),须双端半径互验)。出货是 SET 按 SET 计、是 PCS 按 PCS 计:每平米锣程 = 单元锣程 ÷ 单元面积;锣刀用量 = 米/㎡ ÷ 15m/支(不再按张进一)。本案:PCS 0.887m ×2 = SET 1.774m ÷ 0.0657㎡ = 27.00 米/㎡ → 1.8001 支/㎡。三处落点(2026-10-16 18:20 用户):① 页眉「锣程」格写 PNL 口径
10.644m/PNL(= 6 SET × 1.774m;该格可用宽仅 ~83pt,写长会撞「拼版方式」标签);② SET 锣程写入外形图纸页「尺寸标准」表:行SET锣程(软件实测) | 1.774 m | —;③ 每平米锣程仅用于计算锣刀用量,备注在 BOM 成型行物料名称规格:锣刀(锣程 27.00 米/㎡ ÷ 15m/支)。 - ❌ 已犯过错:旧版 BOM 用量单位/算式错漏(误用 PNL 面积 2.50435、PP/干膜数错、按板材面积算而不含利用率)——凡用量必先公式后填数。
- ★ 物料名称规格描述规范(2026-10-16 用户要求:表述必须齐全):
| 物料 | 必带字段 | 无要求时的默认 |
|---|---|---|
| 板材 | 品牌 + 厚度 + 铜厚 + TG值 + 有卤/无卤 + CTI值(+不含铜/防CAF/A级) | TG150 / 有卤 / CTI175 |
| 铜箔 | 厚度(如 HOZ 18um;35um、17um…)+ 尺寸 + 用途 | 按叠构 |
| PP | 型号 + 含胶量 RC% +厚度*N张(如0.380mm*1张;不再写(中层/外层,N张)括注) | RC 待供应商确认 |
| 阻焊油墨 | 颜色+哑光/亮光+「不指定品牌」(如阻焊油墨(绿色哑光,不指定品牌));若客户资料提供了油墨型号,则直接填型号(不再写「不指定品牌」) | 绿色哑光,不指定品牌 |
| 内层线路油墨 / 外层干膜 | 工艺(涂布/干膜)+ 面别(如L2/L3-L4/L5 共 4 面)+ 厚度/面积口径;不写 ≈20 ㎡/kg 之类的耗用参数 | — | - ★ 写法从简(2026-10-16 二次修订,用户给了逐字改法):不写品牌名(用材号代替,如 KB-6160)、不写「板 厚/铜厚」这类缀字、不写 A级;铜箔、油墨只留最关键一项。
- 实例(照抄):
- 板材 →
FR-4 0.30mm不含铜 1OZ/1OZ 1245*2184 KB-6160 TG150 有卤 CTI175 防CAF - 铜箔 →
18um - PP →
PP 7628 含胶量 RC42% 0.380mm*1张 - 内层线路油墨 →
内层线路油墨(涂布工艺,L2/L3-L4/L5 共 4 面) - 阻焊 →
阻焊油墨(绿色哑光,不指定品牌) - 文字 →
文字油墨(白色) - 锣程 →
锣程 27.00 米/㎡(BOM 成型行只备注每平米锣程;钻孔行同理只写平米孔数,不列各孔径+工装孔钻咀)
- 板材 →
- 列:序号|工序|物料代码|物料名称规格|库存|用量|用量单位(7 列,实测列宽
[26, 54, 70, 250.8, 34, 68, 56]) - ❌ 不要再加第 8 列「单位」(2026-10-15 用户:「用量单位和单位是重复的,只需要用量单位即可」)。
- 按工序分组:开料/压合/内层线路/外层线路/沉铜电镀/防焊(含绿油塞孔)/表面处理/钻孔/成型
- ★ 用量单位列(2026-10-16 三次修正:一律「每平米成品」+正规
/写法):
| 物料类别 | 用量单位列 | 换算 |
|---|---|---|
| 板材 / 外层干膜 |㎡/㎡| 层数(面数) × K_LAY(1.1574) |
| 铜箔 |kg/㎡| 面积 = 层数 × K_LAY ÷ 0.85;重量 = 厚度(成品−HOZ) × 8.9 ÷ 1000 |
| PP 半固化片 |米/㎡| 张数 × K_LAY(不除幅宽) |
| 内层线路油墨 / 阻焊 / 文字油墨 |kg/㎡| 面积 ÷ 20㎡kg;0.25kg/㎡@1oz × K_LAY × 铜厚系数;1÷200 × K_LAY |
| 钻嘴 / 锣刀 |支/㎡| 支/张 ÷ 成品㎡每张(2.3490) |
| 物料代码 / 库存 / 实际耗量 |—| 标TBD| - 单位里允许
/(㎡/㎡、米/㎡、kg/㎡、支/㎡)——这是正规写法,与"斜线表格线"无关。 - ❌ BOM 用量公式块不输出(2026-10-16 用户指令「直接隐藏」):顶部「BOM 用量公式 ①~⑩」红字说明块与底部「用量口径=每平米成品耗用…」说明块都不画;公式与系数只留在生成器内部与技能里,MI 页面只保留 BOM 表本体+工程备注+预制作声明。
- 同页下方接「工程备注信息(EQ)」,把所有 EQ 集中列在此页末尾,不分散到各工艺页。
7. 阻抗图纸页(客户有阻抗要求时必出)
三段式,不是只贴客户图——必须把"要求"和"我们设计的取值"对齐写出来:
1. 阻抗要求与设计取值表(7 列):
走线层 | 参考层 | 类型 | 目标阻抗 | 介质厚(mm) | 设计线宽/间距 | 备注
- 行覆盖客户每一项(例:TOP-50Ω 单端 / TOP-90Ω 差分 / TOP-100Ω 差分 / L3-50Ω / L3-100Ω / L4-50Ω / L4-100Ω / BOT-50Ω / BOT-90Ω / BOT-100Ω)
- 类型取值 表面微带 / 带状线 / 偏移带状线;备注写核算值与偏差(如 实算 47.2Ω,-5.6%)
2. 阻抗图纸:客户原始阻抗图(不重画、不美化)
3. 工程问题(EQ):把"算不到的、和客户要求矛盾的"逐条列出
- 出页前必须先跑阻抗核算(见「阻抗 ↔ 叠构联动」节),把所有结论落到 1 与 3 两段
8. 外形图纸页(必出,且必须排在钻孔图/钻咀表之后)
三段式,★第 1 段必须嵌入客户资料里的原图,不能只写文字或自己重画:
- 客户资料的外形图(原图嵌入) ★2026-10-14 用户确认
- 有原图就嵌原图(★2026-10-15 修正:必须嵌整页,不能只裁剪板框):客户 Gerber 目录里的CONTOUR.gdo/ Panel Drawing PDF / 外形 PDF,
用 PyMuPDF 渲染整页(不设clip或clip取整页pg.rect),get_pixmap(dpi=320~340)存 PNG,
再ax.imshow(png, extent=(...), zorder=2)贴进页面——图纸必须完整(含外框、尺寸标注、技术要求全文),不得只截板框导致缺边缺注。图下标注来源文件名。
python doc = fitz.open(PANEL_PDF); pg = doc[0]; r = pg.rect pg.get_pixmap(dpi=340).save(tmp_png) # 整页渲染,不裁剪 ax.imshow(plt.imread(tmp_png), extent=(LM+8, LM+8+W, y+8, y+8+H), zorder=2, aspect="auto")
- ★ 客户技术要求原文 copy(★2026-10-15 用户要求"如果客供资料有技术要求也要 copy 下来放在 MI"):若 Panel Drawing 含NOTES/技术要求段落,逐条照抄原文(含英文)进 MI,不意译、不省略。常见条目:板厚公差(PCB THICKNESS 1.6±10%mm)/ oversize 公差(OVERSIZE SHOULD BE ±0.1mm)/ 板翘扭曲(WARP AND TWIST SHOULD BE ≤0.75%)/ 孔位公差(THE HOLE LOCATION TOLERANCE ±0.1mm)。MI 内以「客户技术要求(Panel Drawing 原文 copy)」块呈现,置于外形图下方、尺寸标准表之前或同段。
- 无原图才实绘:用 matplotlib 实绘 2 个面板 ——- ① 成品(单只 PCS):圆角矩形按真实比例 + 外形长/宽尺寸线(箭头 + 端点短线 + 居中数字),
标出四角圆角的 Gerber 实测值与拼版图要求值(两者不一致时标 ★EQ)。 - ② SET / 连板(交货单元):外框圆角矩形 + 拼版数阵列+ 工艺边虚线框 +
SET 长/宽尺寸线 + "N 列 × M 行 = K PCS" 标注。 - 图下配说明行,写清 成品尺寸 / SET 尺寸与拼版数 / 分板与成型方式。
- ① 成品(单只 PCS):圆角矩形按真实比例 + 外形长/宽尺寸线(箭头 + 端点短线 + 居中数字),
- 尺寸标准表(★2026-10-14 用户确认:必须写全资料里的尺寸标准,不能只写成品尺寸):
- 列:项目 | 标准值 | 公差 | 依据(4 列)
- 行覆盖(按客户资料实际项增减,缺项写「客户未标」):
板厚 / 板厚(拼版图口径) / 外形公差(oversize) / 孔位置公差 / 板翘扭曲 WARP·TWIST /
单板尺寸(标称) / 单板尺寸(Gerber实测) / 拼板 SET / 拼缝(SET内) / 刀缝(SET间) /
圆角 / 安装孔 / 边槽宽 / 层数·板型 / 阻焊·字符 / 表面处理
- ⚠️ 标称值与实测值分行并列(例:单板(标称) 225.00×145.00与单板(Gerber) 218.995×141.000),
两行红底高亮,备注指向 EQ 条目。
- 拼版图技术要求里的每一条尺寸标准都要落表(如「TOLERANCE GRADE NOT NOTED. OVERSIZE SHOULD BE ±0.1mm」
「WARP AND TWIST SHOULD BE ≤0.75%」「THE HOLE LOCATION TOLERANCE ±0.1mm」)。 - 成型要点:4 条左右,写成型方式 / 刀路依据 / 拼版差异风险 / 铣刀与圆角要求。
- 图纸清单:逐张列
DWG-01 …,必须含"全部铜层(GTL/L2/…/GBL)单独出图,黑白、不镜像、不叠加";
本 MI 内页的清单行要标出对应页码(如本 MI P5 页),来源列写本MI/随单附。
8.1 实绘外形图的可复用画法
> 详细画法(圆角矩形、尺寸线、阵列、比例选取、圆角不可见时的处理)已迁至
> references/matplotlib画法.md(2026-10-16 减负)。需要自实绘时才读。
9. 各层 PDF 图纸(硬要求:一层一页、不叠加、不镜像、黑白色)
> 输出器:scripts/layer_drawings.py
- 覆盖目录里所有层,一层独占一页,绝不叠加:线路 6 层(TOP/L2…/BOT)+ 阻焊 2 + 字符 2 + 锡膏 2 + 钻带 4(LS1-2 / LS5-6 / M2-5 / DRL)+ 分孔图 = 17 层实测(六层 HDI)
- 黑白色:只用
color="black",白底黑线,禁灰阶禁彩色(自检:渲染成图后统计|R-G|,|G-B|,|R-B| > 12的像素数必须为 0) - 不镜像:一律按 Gerber 设计坐标 y 向上出图(
ax.set_ylim(cy-h/2, cy+h/2)) - 每页 A4 横向 + 图框 + 底部标题栏(产品型号/层别/源文件/图纸种类/真实比例/单位/颜色/镜像/叠加/PAGE/日期)
- 用法:
python scripts/layer_drawings.py --dir <gerber目录> --model <型号> --out <输出目录> --date YYYYMMDD - 两个必须知道的坑(都踩过):
1. 双坐标系:图框/文字画在页面 axes,图形画在独立的内嵌 axes。塞进同一个ax后一旦set_xlim/set_ylim到数据坐标,图框和标题栏会被挤出可视区(整页只剩板子)。
2. 小孔径要放大到可见:0.1mm 孔在 77mm 板上只有亚像素大小。给孔环设「最小可见半径」(0.85pt / 缩放比),十字标孔中心,并在图上注明"<0.2mm 按最小可见尺寸绘制"。
阻抗 ↔ 叠构联动(有阻抗要求时先算再定叠构)⚠️
流程:客户阻抗要求 → 用 pcb-rfq-engineer/scripts/pcb_calc.py 反算所需线宽/介质厚 → 校验是否 ≥ 客户最小线宽 → 回写叠构与 MI。
六层一阶 HDI 实测(K3_MB,4/4mil 最小线宽,1.6mm 板厚)
| 走线层 | 参考层 | 类型 | 介质厚(mm) | 4mil 下实算 | 结论 |
|---|---|---|---|---|---|
| TOP/BOT | L2/L5 | 表面微带 | 0.075(1080 PP×1) | 50Ω→47.2(-5.6%) / 90Ω差分→82.0 / 100Ω差分→82.0 | 100Ω 差分物理不可达(差分上限 94.4Ω < 100Ω) |
| TOP/BOT | L2/L5 | 表面微带 | 0.220(改 2116 PP×2) | 50Ω→6.0mil 线 / 90Ω→4.8/4 差分 / 100Ω→4/4 直用 97.2Ω(-2.8%) | ✅ 推荐方案,全部 ≥4mil 且落在 ±10% |
| L3/L4 | L2/L5(同芯板另一面) | 偏移/带状线 | 0.465(芯板 0.50 − 2×0.0175) | 4mil → 76~94Ω | 要 50Ω 需 11~19mil 线宽,与客户 4/4mil 严重矛盾 ⇒ 必列 EQ |
- 差分上限硬约束:
Zdiff_max = 2 × Zse(S→∞);S→0 时降到约1.52 × Zse。目标差分阻抗 > 2×单端阻抗 ⇒ 物理不可达,不要再调线宽,直接报 EQ。 - 外层 PP 从 1080(0.075) 换 2116(0.110) 会改叠构:PP 张数/规格变化 ⇒ 板料与压合费需重算,MI 叠构图与 BOM 同步改。
- 叠构总厚复核:
Σ压合厚度必须等于成品板厚(本例 2×芯板0.50 + 外层2116×2(0.22) + 内层7628×2(0.38) = 1.60mm)。
工具选择(避坑)
- xlsxwriter 优于 openpyxl:复杂 MI 多 sheet+合并时 openpyxl 3.1.5 有
_fills混入 Alignment 的 bug。 - 合并:
ws.merge_range(r1,c1,r2,c2,value,format);颜色:wb.add_format({'bg_color':'#D9D9D9'})。
PDF 交付模式(matplotlib,A4 纵向,页数随层数变)
> ⚠️ MI 必须按厂内 PDF 出,禁止用 Excel 代替——用户明确反馈过「MI 格式不对」(我当时给的 Excel 多 sheet
> 无论字段多全都不算 MI)。生成器已实现:scripts/mi_pdf.py(版式常量全为实测值,换项目只改「内容数据」区)。
实测版式常量与各表列宽
> 完整实测值已迁至 references/PDF版式常量.md(2026-10-16 减负)。
> 常量已写死在 scripts/mi_pdf.py;常规跑 MI 不需查,改版式时才对照该文件。
页序(★2026-10-15 二次修正:流程连续单表自动续页;钻咀表与外形图纸各占一页)
通用页序铁律(不得调换):
表头+连续工艺流程(1..N,装不下续页) → [全板管控要点(开料图之前)] → 开料拼版图 → 叠构综合图 →
[阻抗图纸(客户有阻抗要求时必出)] → 钻咀表(= 钻孔图) → 外形图纸(单独整页) → BOM 清单+用量公式+工程备注(EQ)+预制作声明。
> ❌ 已犯错误 1:外形图纸 排在 钻咀表 之前("先孔后形")。
> ❌ 已犯错误 2:工艺流程按「节点 / 层对」分段各占一页,碎页严重。
> ❌ 已犯错误 3(2026-10-15):工艺流程只印出 13/36 步(表太长被页底截断)→ 用户"工艺流程为何没有做完"。
> ❌ 已犯错误 4(2026-10-15):外形图纸 与钻咀表挤在同一页,图太小看不清 → 用户要"单独一页展示整幅"。
> ✅ 现口径:连续单表自动续页并重复表头;全板管控要点合并置于开料图之前;钻咀表、外形图纸各占一页;工程备注统一放 BOM 同页末尾。
常规六层通孔板(实测 20CH_REV2_Wave,实测 7 页):
P1 表头+开料参数总表+连续工艺流程(1..24) → P2 工艺流程(续 25..36)+全板管控要点 → P3 开料拼版图 →
P4 叠构综合图 → P5 钻咀表 → P6 外形图纸(整页) → P7 BOM 清单+用量公式(每平米耗用)+工程备注(8 条 EQ)+预制作声明。
复杂 HDI / 厚板(页数随工序列数自然增加):六层一阶 HDI 12–14 页、三十层二阶 24 页——流程仍为连续单表,仅列数撑多页。
> ⚠️ 旧版"实测页数"(双面 9 / 四层 9 / 六层 10 / 八层 12 / 十二层 10)是按层对分段的旧统计;"节点分段 9 页"、v2.2.0 的"5 页"均已被本版"连续单表 7 页"取代。
实现要点
- 开料参数总表 = 9 行 × 8 列固定死格(36 格 = 4 组 标签|值),不是流式网格。格位与字数无关,实测竖线/列宽/行高见「表头」节。⚠️ 早期按流式网格实现被用户判为「格式不对」。
- 开料拼版图页三段式:开料图(大料分 PNL 块 + 经纬向 + 刀宽4mm + 横料)|开料信息(SHEET/SET/APNL/BPNL 尺寸、APNL/SHEET、BPNL/SHEET、交货利用率、拼版备注、烤板、工具编号)|A拼版 / B拼版(无则
/)。 - 盲孔板叠构图必带「钻孔层别备注」:红底高亮,逐次列
★第N次 钻带名 孔型 层区间 孔深/时机 关联DRL。 - 字体:SimHei
C:/Windows/Fonts/simhei.ttf,dpi=150。⚠️ SimHei 无真粗体(bold 回落 400)——别靠 bold 分层级,用字号 + 灰底。 - 字体坑(2026-10-02 复核修正,旧版写法有误):SimHei 缺
²(U+00B2)、㎜(U+339C)、⇒(U+8658)、⚠(U+26A0)、µ(U+00B5)。
✅→(U+2192) 实测可正常渲染(旧版写"缺箭头 →"是错的,不必再回避)、★(U+2605)、±、∞均可用。
约定:尺寸统一写mm、比较写>=、公差写+/-;禁⇒,一律改用→;µ写u(um);⚠写【】。
兜底:① 生成时 matplotlib 会打UserWarning: Glyph NNNN missing from font(s) SimHei—— 该告警必须处理,不许忽略;
② 出 PDF 后 grep 文本层²|㎜|⇒|⚠|µ,命中即替换。 - 中文折行必须自己算(
ax.text不自动换行):CJK 记 1.0×字号、ASCII 记 0.55×字号,超宽即折。 - 出 PDF 后必做自动版式自检:逐页
page.get_text("blocks")断言 (a) 无块y1>778/x1>582/x0<16;(b) 每页含PAGE: n / N且连续。 - 页眉:左上角彻底留空(不放LOGO/厂名/占位);右上固定 3 个槽位,不适用的槽位留空(不写 None、不省略、不臆造配色)。
| 槽位 | 容量 | 实测取值 |
|---|---|---|
| ①工艺 | 1 行 | 正片工艺 / 负片工艺 |
| ②特性 | 最多 2 行 | 汽车板 · 普通板 · 阻抗板 · 研发板 / 阻抗板+汽车安全件 / 研发板+二阶HDI |
| ③合规 | 1 行 | RoHS / 无卤 |
- ⚠️ 核实版式必须用坐标,不能只看文本流:文本层会把同一槽内的两行拆成两条记录("研发板"+"二阶HDI" 看着像 2 个格子),也会把"汽车安全件"折成两行。方法:
page.get_text('blocks')取(x0, y0)判断归属——这条坑已踩过一次,改版式前先跑坐标。 - LOGO 规则:永远不放 LOGO、不放占位厂名(用户硬要求)。
- Gerber 逐层黑白 PDF:用本技能自带
scripts/layer_drawings.py(自建 RS-274X 解析,不依赖 gerbonara);一层一页、不叠加、不镜像、黑白。详见第 9 节。 - 分孔图:钻带 tokenize by
*;G54Dxx 选刀,X..Y..D03 落孔;按工具直径画圈铺在SET外形框内(机械黑/大NPTH环/激光灰)。 - ⚠️ 本技能所有脚本必须用带依赖的解释器跑:
C:\Users\Administrator\.workbuddy\binaries\python\envs\default\Scripts\python.exe
(matplotlib / PyMuPDF / numpy / openpyxl / xlsxwriter 都在这个 venv 里)。用versions\3.13.12\python.exe会ModuleNotFoundError: matplotlib,
在--dir批量模式下表现为静默 exit 1 且 stdout 全空,极易误判成"代码 bug"——先确认解释器再查代码。
计算口径与硬基线(5 份真实量产单实测归纳)
开料与大料
- 大料尺寸 = 开料工序"板材规格"(英寸)× 25.4,两处必须一致。实测:49"×86" → 1245×2184;49.3"×82" → 1252×2083;49"×82" → 1245×2083;49"×41" → 1245×1041(开半张)
- PNL/大料 = 长宽两方向分别取整后相乘,取"横排/竖排"两种摆法的较大值(实测 2×2=4、3×2=6 均吻合);异形排布会突破公式(实测多 1 个),最终以开料图为准
- ★ PNL 尺寸硬约束(2026-10-15 修正,源自
pcb-cut-engineer)—— PNL 绝不是"整张大料":它是大料内裁出的工作板单元。定 PNL 尺寸前必须先查pcb-cut-engineer的 PNL 限值,不可凭经验拍板: - PNL 限值(长边 × 短边,mm):双面/四层 = [620,1093] × [520,625];六层及以上 = [620,725] × [520,625];
- 六层+ 必须按经纬单方向拼版、不混拼(双面不作经纬要求,多层内层开料方向保持经纬一致);
- 工艺边区间(步进 0.5mm):双面 [10,25] / 四层 [12,25] / 六层+ [14,25];"下限是最低要求,上限是板材够时能做到的最大",并列时取留边更大者;
- 标准大料库(英寸):86×49 / 82×49 / 82×41 / 74×49 / 49×49 / 49×41(详见
pcb-cut-engineer大料库)。 - 落地:跑
pcb-cut-engineer/scripts/cut_calc.py nesting --L <SET长> --W <SET宽> --layers <层数> --set <PCS/SET>取权威 PNL 尺寸、工艺边、X PNL/张、Y PCS/张、利用率,直接回填,不手算。 - ❌ 已犯过错:把 PNL 写成
1211×2068(≈整张大料),远超六层+ 上限 725×625,被判定"开料图做成 PNL 尺寸"不合格——本板正确值为725×622(工艺边 23/18,3×2 SET,6 PNL/张)。 - 开料信息区固定 9 项(2026-10-14 修正,旧版只写 7 项是漏的):SHEET尺寸 / SET尺寸 / APNL尺寸 / BPNL尺寸 / APNL/SHEET / BPNL/SHEET / 交货利用率 / 拼版备注 / 大料利用率;APNL/SHEET 写法为
1 SHEET= N PNL= M SET= K PCS
两个利用率口径,绝不可混用
交货利用率 = SET面积 × 大料SET数 ÷ 大料面积
= 交货面积 × (大料PCS数 ÷ PCS/SET) ÷ 大料面积
大料利用率 = 大料上 PNL 总面积 ÷ 大料面积 # 反映排板紧密度
交货面积 = SET 尺寸的长×宽(换算成 m²),不是 PCS 面积。 实测 4 份全部验算吻合。
纵横比
纵横比 = 压合后板厚 ÷ 最小钻孔孔径(实测 7.87 / 7.54 / 6.02 / 6.00 全中)
压合段备注硬规则
① 内层芯板与 PP 必须同厂家,TG / CTI / 含卤素要求一致,经纬方向一致;② 逐层列残铜率;③ 客户指定叠构不允许更改;④ 替代料仅在原文注明时才可写。
表头「开料参数总表」= 9 行 × 8 列固定网格(4 组「标签|值」,共 36 格)
⚠️ 不是流式排布、也不是 27 格。厂内是固定死格,格子位置不随字数变。实测(六层 HDI 单,PyMuPDF 坐标):
- x 竖线 [18.4, 92.8, 175.6, 230.2, 316.0, 377.2, 444.4, 509.2, 576.2] → 列宽 [74.4, 82.8, 54.6, 85.8, 61.2, 67.2, 64.8, 67.0](合计 558.8)
- 横线 y [212.8, 232.6, 246.3, 262.5, 277.5, 291.3, 307.5, 321.2, 336.2, 353.0] → 行高 [19.8, 13.7, 16.2, 15.0, 13.8, 16.2, 13.7, 15.0, 16.8](合计 ≈140.2)
36 格字段顺序(r1→r9,每行 c1..c8 交替「标签|值」)
| 行 | c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 |
|---|---|---|---|---|---|---|---|---|
| r1 | 大料尺寸 | 1245*2083 mm | PNLA尺寸 | 672.00*598.00 mm | PNLA单元数 | 42 PCS | PNLA内SET数 | 21 SET |
| r2 | 每大料PNLA数 | 6 PNL | PNLB尺寸 | 0.00*0.00 mm | PNLB单元数 | 0 PCS | PNLB内SET数 | 0 SET |
| r3 | 每大料PNLB数 | 0 PNL | 大料PCS数 | 252 PCS | 交货利用率 | 75.91% | 每SET的PCS数 | 2 PCS |
| r4 | 成品板厚 | 1.60 mm | 成品铜厚um | 内35 外35 | 大料利用率 | 92.97% | 孔铜厚度 | 25um |
| r5 | SET尺寸 | 155.61*116.20mm | PCS尺寸 | 102.048*76.553mm | 交货面积 | 0.0180808 | 表面处理 | 化学镍金 |
| r6 | 最小钻咀 | 0.20 | A板孔数 | 79,579 | B板孔数 | — | 表面处理厚度 | 金1" |
| r7 | 板材类型 | FR4 | TG值 | TG150 | CAF等级 | 标准 | 安全等级 | 普通 |
| r8 | 客户物料编码 | K3_MB_V1.2 | (合并留空) | 产品特性 | 阻抗板+HDI | 产品用途 | ||
| r9 | PNL二维码个数 | 1 | 锣程 | 10.644m/PNL | 应用分类 | 阻抗板 |
- 格式细节:尺寸量带
mm(1245*2083 mm),数量带PCS/SET/PNL(42 PCS、21 SET),铜厚写内35 外35 um、孔铜写25um;
无第二拼版时,所有 PNLB 项与「B板孔数」一律写0.00*0.00 mm/0 PCS/0 SET/0 PNL(写/或留空都算格式不对);
r8 的 c3/c4 是合并格留空;r9 的 c7/c8 留空。 - ⚠️ 早期版本按「流式 27 格网格」实现,被用户判定为「格式不对」的主因之一——字段内容对了但排版形态与厂内不一致。必须用 9×8 死格。
- ★ 网格实现硬规则(2026-10-15 二次修正):
1. 先画 9 条竖线贯通全表高、再画横线按行切分——保证所有单元格边线闭合对齐,不得错行、不得出现悬空线。- ★★★ 横线必须是真水平线:
ax.plot([x0, x1], [y, y])(两个 y 相同);顶边单独画[y0, y0]、每行底边画[y0+h, y0+h]。 - ❌ 严禁
ax.plot([x0, x1], [y0, y0 + h])——它画出的是「从左端 y0 斜降到右端 y0+h」的斜线(跨整表宽掉一个行高),看起来就是"格子里的斜线"。这正是用户 2026-10-15 用红线标注、"斜线没解决"反复三轮的根因(旧 header_grid 就错在这行)。改完用pymupdf get_drawings()复核:除尺寸箭头外,表格区不得有任何|dx|>0.1 且 |dy|>0.1的线段。
2. 36 格必须全部填满内容:除厂规r8 c3/c4合并留空、r9 c7/c8留空 外,任何一格不得空白;无值的字段(如 B 拼版不存在)写0.00*0.00 mm/0/—,绝不写/。
3. 实现上禁止用merge制造空白格(旧版merge={(7,3)}导致整块留白被判定"格式不对")。
4. ★★★ 全表彻底禁/(2026-10-15 用户三次 critique:「斜线没解决」):任何单元格的文字里都不允许出现/——不只是"裸占位",连1oz/1oz、+0.08/-0.08、L2/L5、0.25/0.30/0.40、药水/油墨、PAGE: 1 / 7这类含/的标准写法也要改掉。统一替换规则: - 缺项 / 不适用 →
0/0.00*0.00 mm/—(横杠); - 必填未定 →
待CAM计算; - 公差
+0.08/-0.08→±0.08;+/-10%→±10%;+/-0.076→±0.076; - 并列
A/B→A、B(L2/L5→L2、L5;药水/油墨/钻咀/锣刀→药水、油墨、钻咀、锣刀); - 线宽线距
0.15/0.15→线宽0.15 线距0.15(或0.15×0.15); - 单位比
㎡/㎡→㎡每㎡;米/㎡→米每㎡;PCS/大料→PCS每大料;孔/PCS→孔每PCS; - 页码
PAGE: 1 / 7→PAGE 1 OF 7;(续 2/2)→(续 第2页 共2页); - 叠构/规格里的
150米/卷→150米每卷、1oz/1oz→1oz(双面)、WARP/TWIST→WARP、TWIST、IPC-A-600H/class2→IPC-A-600H Class 2。 - 实现校验(必做):生成后跑
pymupdf提取全部页文本,任何 span 含/即判失败(须 0 处才算过;v6 实测 0)。
- ★★★ 横线必须是真水平线:
表面处理分档
| 类型 | 膜厚 | 硬规则 |
|---|---|---|
| 沉锡 | 0.8–1.2 um | 按 IPC-4554;不允许返工;FQC/FQA/包装全程隔无硫纸 |
| OSP | 0.2–0.5 um | 有效期 <6 个月、超 3 个月不得发货;最多返工一次且需重测铜厚 + OSP 厚;可过回流焊 ≥3 次 |
同板长板宽多型号的防呆
备注"此板与 XXX 交货板长、交货板宽一致,注意以板内编号区分"必须在成型 / 测试 / FQC / FQA / 包装每个工序的备注栏重复,不能只在工程备注写一次。
系统导出异常值识别(读数据、复用模板时必查)⚠️
| 现象 | 正确处理 |
|---|---|
最小钻咀 = NaN、纵横比 = Infinity:1 |
源数据未回填;用钻咀表最小刀径 + 压合厚反算补全 |
| 表头「A板孔数」为空,或与钻咀表"合计"不一致 | 以钻咀表末行合计为准回填 |
| SET 尺寸 < PCS 尺寸(尺寸倒挂) | 研发单常见;其利用率改按 PCS 面积算,与常规单口径不符,须人工确认 |
是否指定板料否 却注明替代料 |
非指定 ≠ 可随意换料,替代须留书面依据 |
多次压合与 HDI 盲孔(按需读)
> 完整口径(压合次序与厚度、激光盲孔报表与纵横比、盖帽、填孔电镀与树脂塞孔、减铜工序、正负片混用、ENIG 报值、六层一阶 HDI MI 段序)
> 已迁至 references/高阶HDI与多次压合口径.md(2026-10-16 减负)。
> 做 HDI / 盲埋孔 / 厚板(≥2mm)/ 多次压合板时先读该文件;常规双面~六层通孔板不涉及。
四条必须记住的要点(其余见该文件):
1. 压合次序与厚度:一次 L3–L28(3.94mm)→ 二次 L2–L29(4.27mm)→ 三次 L1–L30(4.60mm),公差多 ±0.15。
2. 硬约束:压合后 L1-L2 与 L2-L3、L30-L29 与 L29-L28 间的 PP 厚度 ≥0.065mm。
3. HDI 阶数用「钻带文件集合」判定,不看客户口头:只有一套镭射(两侧同一循环)=一阶;出现 LS1-2 与 LS2-3 同侧两段=二阶。埋孔 VIA2-5 存在 ⇒ L2–L5 是第一次压合形成的芯板组。
4. 6 层一阶 HDI 叠构解:2×芯板 0.50(H/H) + 外 1080PP×2 + 内 7628PP×2 = 1.60mm;镭射盲孔介质层厚必须 ≤0.10mm。
板材–叠构对应(行业公开型号示例)
生益 S1000H(TG≥150) / S1000-2M(TG≥170) / S7040G(TG≥170,无卤);建滔 KB-6160(TG≥130);德凯 DK-C150(TG≥150) + DK-P150 配套 PP。
配套 PP 常见规格:7628(RC44/48%)、3313(RC60%)、1506(RC45%)、1080/1078(RC68%)、106(RC77%)、1067(RC71%)、2116(RC57%)。
参数按板类分档对照表(双面/四层/六层/八层/十二层的板厚、铜厚、纵横比、阻焊前处理、检验等级)→ 详见 references/mi/ 提炼文档第九节。
关键排除规则(数据真实性)
★品质红线优先(源自公司受控体系文件,2026-09-27 接线)
做任何 MI 之前先过四条红线,缺项即停(完整口径见 references/工序SOP与MI规则基线.md §十二):
- ★1 一致性:客户 GERBER 的料号、版本、日期必须与订单和技术要求一致。
- ★2 材料一致性:板料(品牌)/ 无卤 / CAF / 铜厚 / TG / CTI / CTE / DK / DF / 成品板厚 / UL 必须与客户要求一致。
- ★3 外观一致性:防焊 / 字符厂商(品牌)、颜色必须与客户要求一致。
- ★4 指定性:表面处理及材料型号是否客户指定。
- 红线项须由「制作 / 审核 / QAE」三方签核,缺一方签名即未闭环。
- 资料冲突三条:①客户同时给 Gerber 与 Gerber 图纸 → 以客户 Gerber 为准;②Gerber 与图纸不一致 → 提出 EQ 与客户确认;③更改客户资料或客供要求与 Gerber 不一致 → 须发 EQ 确认并归档回复。
-
汽车产品:须咨询终端客户(直接客户的客户)的标准或特殊要求;MI 封页加汽车标示、产品分组栏加「汽车产品」。
-
激光钻孔不计入"钻嘴"耗量:CO2 激光为能量钻孔,非易耗件,勿编"支/㎡板"假数据。
- 沉金/ENIG 表若附件缺:保留 TBD+单位"—"+来源写"附件缺沉金表(仅OSP)",勿从OSP假算沉金。
- 干膜按"米"卷长折算:附件单位"米"是卷材走长,按"米/㎡板"换算,备注"按卷材长度计"。
★MI 制单与管理红线(2026-09-27 第二批追加,完整口径见 工序SOP与MI规则基线.md §十四~§二十二)
- 《制作通知单》17 项逐项对照:成品铜厚须内层 / 外层分列;拼板尺寸 / 交货拼板(PCS) / 层数 / 成品板厚 / 孔铜厚度 / 成型方式 / 防焊前处理 / 是否张力要求 + 达因值 / CAF 等级 + 安全等级 / 阻焊油墨型号 / 过孔要求等缺项一律提 EQ,不得留空默认。
- OSP 板 MI 四要素:①注明表面处理为 OSP;②OSP 前的孔铜厚确认;③OSP 膜厚 0.25–0.4 μm 的检验要求;④不做喷锡、不可二次过炉的工艺限制提示。
- 制工具(F01)必填五要素:本厂型号 · 层名 & 面次(L2/L3… + CS/SS 面)· 工具类型(菲林/网版/LDI/喷墨/钻带/锣带)· 拉伸 A/B 板 X/Y 系数 · 补钻钻咀直径;补钻/补锣属临时资料,须在「其它要求说明」栏写明;临时资料固定存放
\\服务器\工程资料\临时资料文件夹,工具命名由工程部填写。 - 工具发放/回收逐件对账 + 菲林报废双单闭环:发放与回收按 MAP / 线路 / 阻焊 / 文字 / YG / 铝片 / L2 / L3 分类,线路·阻焊·文字下再分 GTL/GBL/GTS/GBS/GTO/GBO;菲林报废须《菲林报废通知单》(工程侧)+《菲林回收报废记录》(菲林房侧)双单双签(含工程通知人签字 + 菲林房确认报废签字)。
- CSR 必须落到 MI:客户 CSR 经评审后写入《客户 CSR 清单》,并在 CAR「系统改善(标准化)」勾选 □更新 MI(工单/流程卡)、□更新作业指导书、□更新 CP、□更新 FMEA;研发板流程卡须印"研发板"字样,转量产须同步研发部版《控制计划》(CP)。
- 扫码测量资料依 MI 图纸制作:全尺寸测量机的扫描资料「依照 MI 图纸制作并保存」,调取资料前须再次核对程序名称、版本号与后缀名与流程卡要求一致。
资源索引
- 依赖:
pcb-quotation-engineer的gerber_extract.py(Gerber/Excellon 解析) - MI 制作规则基线(2026-09-24 新增,2026-09-27 分两批追加):
references/工序SOP与MI规则基线.md
→ 客户资料检查表 ★品质红线 4 条(须制作/审核/QAE 三方签核)、冲突处理三条规则、汽车板附加要求(含终端客户咨询)、CAM 补偿按机种取值表(跨机种禁止套用)、制作通用四原则(刮铜 0.2mm/螺丝孔 0.3mm)、阻焊/字符口径、开料与工单口径、工艺代码对照表、内层设计注意。做 MI 前先过这份红线清单。
→ 第二批追加 §十四~§二十二:《制作通知单》与流程卡字段全集、流程卡工序参数样板、OSP 板 MI 专项要点、研发板与 CSR→MI 转化通道、制工具/菲林/工装管理口径(F01 必填项·发放回收对账颗粒度·菲林报废双单闭环·临时资料存放)、量化基线汇总、高频缺项自查清单、审核追问→证据、使用注意与分工。 - 真实量产 MI 单范本(6 份:双面 / 四层 / 六层 / 八层 / 十二层 / 三十层二阶HDI):
references/mi/
→ 要照版式生成、核对某道工序的标准参数写法、查工装孔清单时读这里 - 版式与参数口径提炼(优先读)
references/mi/2026-09-15_提炼_真实MI版式与参数口径(5份实战归纳).md
→ 常规多层板:分叠构分段 / 钻咀勾稽 / 双利用率公式 / 参数按板类分档 / 异常值识别references/mi/2026-09-15_提炼_三十层二阶HDI板参数口径.md
→ 高阶 HDI:3 次压合 / 层区间段标题 / 正片工艺 / 盖帽 / 镭射表命名 / 减铜 / 与常规板对照- 资料索引:
references/_INDEX.md - MI 生成器(唯一入口):
scripts/mi_pdf.py(matplotlib + SimHei,出 A4 纵向 PDF,版式常量为实测值)
→ MI 交付一律用该生成器出 PDF,禁止用 Excel 多 sheet 顶替;用法python scripts/mi_pdf.py --out <目录>
→ 出完必须跑版式自检(见「PDF 交付模式」末条),越界归零才算交付
→ ⚠️ 脚本「内容数据区」写死读某个历史工作区的_quote_result.json绝对路径——换项目必改。
新项目建议按项目另存一份生成器(如<项目>/mi_<客户>.py)并把数据路径参数化,不要去改原脚本。
→ ⚠️ 输出文件被占用:目标 PDF 若被预览/Excel/WPS 句柄持有,PdfPages.savefig最后一次落盘会
PermissionError(读得到、写不了)。不要重试,直接将输出名改为<名>_RevC.pdf版本化交付。 - 各层图纸输出器:
scripts/layer_drawings.py(一层一页 / 不叠加 / 不镜像 / 黑白色)
→ 用法python scripts/layer_drawings.py --dir <gerber目录> --model <型号> --out <输出目录> --date YYYYMMDD
→ 自建 RS-274X 与 Excellon 解析,不依赖 gerbonara;--drl-zeros trail(默认,PADS/Altium)|lead
→ 抽检命令:pymupdf渲染后断言每页含PAGE: n / N且无彩色像素(|R-G|,|G-B|,|R-B| > 12计数为 0) - 早期 Excel 版脚本(
gen_xxx_mi.py/_build_mi_v2.py,xlsxwriter)仅作数据整理中间件,不可直接交付 - 中间结果:
drill_data.json(drl 孔数/apertures/panel_total)
⚠️ 钻带坐标格式踩坑(PADS 导出,必读)
PADS 的 Gerber 头部:%FSLAX35Y35*% → 3 整数 5 小数、前导零省略 → 直接 /1e5 正确
PADS 的 Excellon :T1C.1F0S0 + X255502Y256205 → ❌ 不是前导零省略!
Excellon 是「尾零省略」:整数位固定 3 位,整数部分写满后省掉小数末尾的零。解码必须用
int(s) * 10 ** (3 - len(s))。同一份钻带里数字长度会从 1 位混到 6 位(X2691 与 X255502 并存)。
- ❌ int(s)/1000 → X2691 变 2.691(错 100 倍),bbox 从 255~357 膨胀成 0~357(跨整板)
- ✅ int(s)*10**(3-len(s)) → X2691 变 269.1,bbox 回收成 255~357,与 Gerber 板框吻合
- 一票判据:算完钻带 bbox,若明显大于 Gerber 板框(本例 331×357)就是解错格式了;钻带 bbox 必须落在板框内且比板框略小(本例 75~76 × 100~102)。
⚠️ matplotlib 输出图纸的两个通用坑
- 图框与图形必须分两个 axes:同一
ax里先按页面坐标画图框、再set_xlim/set_ylim到数据坐标 ⇒ 图框和标题栏被挤出可视区(整页只剩板子)。正确做法:页面 axes(add_axes([0,0,1,1]))+ 内嵌数据 axes(按页面 pt 位置换算成 figure 分数坐标)。 - 比例要反算:
缩放比 k = pt_per_mm / (72/25.4),k>1写k : 1(放大 k 倍),k<1写1 : 1/k(缩小 1/k 倍)。别直接写"1:1"。72/25.4 = 2.8346 pt/mm是 1:1 基准。
变更日志
> 历史版本记录已迁至 references/CHANGELOG.md(2026-10-16 减负)。
> 现行口径以本文件与 references/工序SOP与MI规则基线.md 为准。
免责声明
- 本技能为通用工艺经验整理版,已去除企业内部客户名称、机种代号及受控文件原文,仅保留可公开的工艺规则与实战踩坑经验。
- 文中钻孔参数表、钻咀寿命、锣程、叠构阻抗等数据仅供初步设计参考;正式生产前请结合贵厂受控文件(WI/SOP)复核关键参数。
- 因工艺差异、参数疏漏或解读偏差导致的生产问题,本技能不承担责任;最终以工厂受控文件与工艺评审结论为准。