
简介PCB封装命名是硬件设计与制造标准化的基础环节。这份docx文档系统梳理了从焊盘到封装的全链路命名规则覆盖表贴焊盘、通孔焊盘、花焊盘三类焊盘以及电阻、电位器、电容、电感、磁珠、二极管、晶振、熔断器等常见元器件并延伸至BGA、CGA、LGA、PGA、CFP、DIP、DFN、QFN等复杂封装类型。文档目录结构清晰先讲焊盘命名再讲封装命名既适合初入硬件设计的新人建立规范意识也可作为工程师日常设计评审和建库时的速查手册。压缩包为单个docx文件大小仅1.63MB便于下载和随时翻阅。目前已吸引799人学习内容来自多年项目经验的书面沉淀能帮助读者减少因命名混乱造成的封装库维护成本与制板沟通差错提升设计一致性和可复用性。1. 为什么“史上最全”的封装命名规范往往是最难用的拿到一份几十页的《PCB封装命名规范.docx》很多人第一反应是佩服整理者第二反应是不知道怎么用。条目太多背不住最终原理图里照样冒出“电容1”“电阻2”这种名字。真正能落地的封装命名规范不应该是一份需要反复查阅的字典而应该像 git 分支名一样简短、可读、能校验。它解决的是物料选型、原理图符号到 PCB 封装的三级对应问题让硬件工程师、库管理员和 layout 工程师拿到一个名字就能猜出器件的外形和引脚。下面我们不讨论那份文档有多“全”而是从一线库管理的角度讲一套能直接抄走的 PCB 封装命名编码方案并给出自动检查手段。2. 封装命名规范的编码结构前缀、主体和后缀怎么定义2.1 三段式结构解决搜索和排序的痛点如果只是把型号贴在封装名里比如“TPS54560DDAR”看起来详细但你在 PCB 库列表里完全无法按类型筛选。所以要按三段切分类型前缀、主体描述、后缀标记。类型前缀决定器件类别主体描述决定封装形态后缀只用来区分极性、散热垫等必需差异。这样同一个系列的器件封装能排序在一起从名字上一眼判断是电阻、电容还是连接器。段位职责允许字符示例前缀器件类别一个字母R C L U J DR电阻C电容L电感UICJ连接器D二极管主体尺寸/引脚数/间距数字、字母0603SOT23-5LQFP64后缀补充差异下划线字母数字_EP底部焊盘_POL极性为什么用 U 表示 IC因为字母 I 容易和数字 1 混淆在投板清单和网表里都可能看错所以很多公司习惯用 U。将前缀控制在单个字母还有一个额外好处在 PCB 库文件目录里按文件名排序时所有电阻、电容、IC 会自然分成几个簇比混在一起好找得多。2.2 尺寸编码0805 不是唯一说法最常见的坑是尺寸换算。工程师说 0805有些 EDA 工具的库里却叫“2012”。因为 0805 是英制尺寸是 0.08 英寸 × 0.05 英寸转换为公制是 2.0 mm × 1.2 mm所以部分供应商和库会用“2012”表示。命名规范里如果不写明采用哪个标准封装名就会五花八门。我一般会在库名中统一使用英制数字作为主体同时把公制尺寸写进封装的自定义属性而不是塞进名字。这样既符合 PCB 行业习惯又避免了“RESC2012”这类混用。尺寸编码通常直接用四位或三位数字前两位代表长度后两位代表宽度单位是 0.01 英寸。比如 0603 就是长度 0.06 英寸、宽度 0.03 英寸。对于长宽不等的 L 型电感比如 0806也可以继续沿用这个规则。如果公司长期做海外订单可能还要在命名里增加“_M”或“_I”区分公制和英制但我不建议写进名字因为这样会让同一个物理封装出现两个库名维护量翻倍。2.3 用正则表达式圈定命名边界规范不能只靠文档要能校验。下面是校验封装名字的基础正则注意它只做结构校验不判断尺寸是否真实存在。import re # 建议封装名规范前缀 主体 可选后缀 # 例如R0603、C0805N、SOT23_5_EP、J_USB_C_16P pattern re.compile( r^(?Pprefix[RCLUJD]) r(?Pbody[A-Z0-9]{2,12}) r(?Psuffix_[A-Z0-9]{1,8})?$, re.IGNORECASE ) def format_name(name: str) - bool: if not pattern.match(name): print(f非法命名: {name}) return False return True说明一下正则没有强制要求主体必须以数字开始因为 SOT23-5 和 TSSOP20 这类名字都是字母开头。如果 EDA 工具不允许短横线就把短横线换成下划线比如 SOT23_5。Altium 中对封装名的字符限制较宽松Cadence Allegro 的 symbol 名不建议使用短横线避免在网表和脚本解析时产生歧义。因此在写检查脚本前先确认你当前工具支持的字符集。3. 按器件类型格式化封装名从 0603 到 BGA-2563.1 阻容感与二极管尺寸为主别把容值写进封装名贴片电阻电容是最常见的命名格式一般为R0603、C0805N。其中 N 表示无极性电容有极性时用C0603_POL。注意不要写容值比如“C_0805_100nF”因为同一封装可以装多种容值封装名一旦混入容值改封装时会牵连一大批原理图绑定。我在库管理时经常看到新人把“22pF”加到封装名里这会导致同一物理封装出现多个名字。电阻的功率等级也不建议放。虽然 0603 的额定功率通常是 1/10 W但封装决定的是焊盘尺寸功率是选型属性不是封装属性。如果你非要区分可以在后缀加功率标识但那已经属于“工艺变体”比如R0603_1.5W_P一般用在电源模块里普通信号链路别这么干。3.2 IC 封装命名封装缩写、引脚数、散热焊盘IC 的封装缩写是行业标准比如 SOT、SOP、TSSOP、QFN、LQFP、BGA。命名要包含封装缩写和引脚数比如TSSOP-20。如果存在底部散热焊盘加_EP比如QFN-32_EP。同一个封装如果因为焊盘尺寸不同而有多个版本再追加数字区分QFN-32_EP_1、QFN-32_EP_2。这些后缀要写在规则文档里并统一由库管理员维护。封装缩写命名示例必须包含的信息常见混用错误SOTSOT23_5引脚数有人写 SOT-23-5有人写 SOT23-5QFNQFN-32_EP引脚数和散热焊盘漏写 _EP导致焊接时散热不良LQFPLQFP64引脚数把间距写进名字如 LQFP64_0.5BGABGA-256引脚数球间距和球阵列尺寸才是关键在原理图库里symbol 封装名必须和 PCB 封装名保持一致Altium 或 Cadence 才能在导入 PCB 时自动匹配。很多团队在这一点上栽跟头原理图里用 “SOIC8”PCB 库里叫 “SOP8”导入后全部变成 unplaced最后只能手动一个个挑回去。这里给一段生成命名示例的代码用来做团队评审时快速列出标准名# 生成封装命名示例供团队评审使用 examples { R: R0603, C: C0805N, U: SOT23_5, J: J_USB_C_16P, } for prefix, ex in examples.items(): print(f{prefix}: {ex})输出结果可以直接贴在文档评审的评论里比文字规则更直观。3.3 连接器与接口封装方向、pin 顺序和外壳地连接器命名最难统一。常见做法是J_接口类型_pin数P例如J_USB_C_16P、J_HDMI_19P。如果连接器有插板方向和立式卧式之分再加_HHorizontal或_VVertical比如J_USB_C_16P_H。接口封装还要额外注意 pin 1 位置和机械外壳接地焊盘这些会直接影响 PCB 布局布线思路尤其是高频接口的地回流路径。一些原厂方案包里经常直接给出一个很长的原始封装名比如带版本号的“SW6206_V3.dra”参考它的封装时一定要先映射到自己的命名规范里再检查焊盘定义。否则后面维护 BOM 和 PCB 库时你会面对一片完全无法解析的名字。4. 让命名规范可执行脚本检查与 EDA 库对接4.1 命名规范不能只靠人肉审核几十条规则背下来不现实。更靠谱的是写一个检查脚本遍历库文件目录挑出不符合规范的命名投板前跑一次。脚本做法不复杂先建立规则字典再做正则匹配。如果有新器件类别更新字典即可。下面是一个覆盖常见规则的示例。import os import re # 规则字典按前缀映射允许的主体格式 class_pat { R: r^[0-9]{4}$, C: r^[0-9]{4}(_POL|_N)?$, U: r^(SOT|SOP|TSSOP|QFN|LQFP|BGA)[-_]?\d{1,4}(_EP)?$, J: r^[A-Z0-9][-_]\d{1,3}P$, } def check_lib(path): issues [] for root, dirs, files in os.walk(path): for f in files: if not f.endswith((.dra, .footprint, .kicad_mod)): continue name os.path.splitext(f)[0] prefix name[0].upper() if prefix not in class_pat: issues.append((name, 未知前缀)) continue body name[1:] if not re.match(class_pat[prefix], body, re.IGNORECASE): issues.append((name, f{prefix}类主体不合格: {body})) return issues for issue in check_lib(./lib): print(issue)这里的逻辑是脚本遍历库目录按文件扩展名拿到封装名根据首字母判断类型。R 和 C 的规则用四位数字匹配尺寸U 的规则覆盖常见 IC 封装缩写J 则要求接口名加数字加 P。注意主体部分没有包含前缀后的第一个字符因为R0603去掉首字母后是0603四位数字可以匹配。输出问题列表后可以导出为报告留档。4.2 规则字典的参数表与常见异常不同 EDA 工具对命名有不同的硬限制下面这张表总结了几个容易踩的坑检查点建议规则常见异常字符集只用字母数字和下划线Altium 里短横线会引发网络名解析问题长度上限不超过 20 个字符Allegro 的 symbol 名过长会被截断前缀R/C/L/U/J 固定出现 CAP、RES 等前缀导致排序混乱主体数字尺寸或引脚数必须为数字把容值、功率混入主体后缀使用下划线开头直接连在主体后无法区分4.3 把脚本挂进投板流程常见做法是把脚本放在版本库的 Git hook 或 CI 流程里在导出 Gerber 前强制跑一遍。如果公司没有 CI至少要在投板申请单里附一份检查结果。我实际项目中会把脚本输出重定向到一个“封装命名检查结果.docx”和 PCB 设计规则检查报告一起归档。这也是标题里那份文档真正该承担的角色它不是让你背规范而是提供一份可执行的检查依据。4.4 与 EDA 工具的联动方式在 Altium 里可以用 DelphiScript 直接遍历库封装名在 Cadence Allegro 里可以用 Skill 脚本批量处理。但最通用的做法是从库文件目录直接扫描因为不管哪个 EDA封装库终究是文件。目录扫描法不依赖工具 API新人拿来就能用。如果你已经有批量重命名的需求可以先从导出库清单开始再配合映射表做批量修改。5. 让规范活下来用 CSV 映射表做批量迁移和命名验证5.1 先备份再批量重命名如果库里已经有一堆不规范的封装名别急着手工改。手工重命名会把原理图里的引用关系破坏掉。更好的办法是生成一份“旧名—新名”映射表先在原理图库和 PCB 库里同时更新再批量替换。操作顺序是导出当前库所有封装名团队评审后确定新名生成 CSV 映射表执行重命名脚本。import csv import os import shutil with open(rename_map.csv, r) as f: mapping {row[old]: row[new] for row in csv.DictReader(f)} for root, dirs, files in os.walk(./pcb_lib): for f in files: base, ext os.path.splitext(f) if base in mapping: old_path os.path.join(root, f) new_path os.path.join(root, mapping[base] ext) shutil.copy2(old_path, new_path) # 先复制确认无误后再删原文件脚本采用“复制到新名”而不是直接改名这样旧封装还保留等投板验证后再统一删除避免一次性改动太大。执行前记得把整个库目录备份一份因为任何封装名的改动都会影响网表对比和 BOM 输出。5.2 用“命名自检表”验证迁移结果迁移完成后把这篇文章前一个章节的检查脚本再跑一遍。重点检查三类错误没有前缀的文件、名字超过 20 字符、同一前缀没有主体数字。一张自检表足够让评审人快速确认迁移是否完整。我们习惯把这张表命名为“封装命名规范检查表.docx”和旧文档并存旧文档只作为历史存档新表作为唯一执行标准。这样团队里不管是新来的应届生还是外包 layout 工程师都能在一个小时内自查是否踩了命名坑。本文还有配套的精品资源点击获取