资讯详情 PCB封装命名规范:三十类器件建库与Python校验实践
📅 2026/10/28 15:21:03
简介这份 PCB 封装命名规范文档面向硬件设计工程师、PCB 布局布线人员及电子类在校学生用于解决元器件封装与焊盘命名各自为政、跨项目复用困难的问题。包内为 1 个 docx 文件压缩包约 1.63MB篇幅完整、层级清晰目录涵盖范围、引用与约束、焊盘命名、PCB 封装命名四大板块焊盘部分细分表贴、通孔、花焊盘与 Shape 命名封装部分按电阻、电位器、电容、电感、磁珠、二极管、晶体谐振器与振荡器、熔断器、发光二极管等器件逐类给出命名示例并延伸到 BGA、CGA、LGA、PGA、CFP、DIP、DFN、QFN 等常见封装形式。读者可据此统一器件库与焊盘库的命名规则减少设计交接与生产沟通中的歧义也可作为团队内部规范模板或新人培训材料。目前已有 805 人学习。1. PCB 封装命名规范一份能直接落进建库流程的命名手册画完原理图开始建库时最容易翻车的不是走线而是封装名。同一颗 0603 电阻有人写 R0603有人写 RESC1608有人写 R_0603_1.6x0.8三个月后自己都对不上 BOM。这份 PCB 封装命名规范 docx 就是解决这个问题的它把焊盘、花焊盘、Shape 到三十多类器件封装全部定了统一命名格式尺寸精度、单位、密度等级、极性标识都有明确规定引用的是 IPC-7351B 的建库思路。适合正在搭公司元件库、接手别人库文件、或者要给 EDA 写命名校验脚本的硬件工程师和建库岗位新手照着抄能少走弯路熟手可以直接拿它当评审 checklist。2. 命名规则的底层约束四个字符、两种单位与一套参数占位在动手抄任何一条命名之前得先接受这套规范的三条硬约束。它们看着琐碎但一旦破例后面所有格式都会连锁失效。这一章把规则的“语法层”拆开讲清楚后面三十多类器件命名其实都是在这套语法上套模板。2.1 只允许四类字符别给自己留后门规范限定名称中只能出现半角数字 0-9、字母 a-z不限大小写、下划线_、中横线-。这意味着空格、括号、点号、斜杠、中文标点全部非法。我一般会把这四类字符写成一个正则进库前先跑一遍import re # 合规字符集数字、字母、下划线、中横线 LEGAL re.compile(r^[0-9a-zA-Z_-]$) def check_chars(name: str) - bool: 返回 True 表示命名只含合法字符 if not LEGAL.match(name): bad sorted(set(re.findall(r[^0-9a-zA-Z_-], name))) print(f[非法字符] {name} - {bad}) return False return True逻辑很直白^...$全串匹配只要出现一个不在集合里的字符就判失败并打印出违规字符方便定位。参数上没有可调空间这四个字符是 IPC-7351B 系命名体系能跨 EDA 工具通用的前提——很多软件对文件名里的空格和点号处理不一致建库阶段图省事用空格最后导出时就会踩坑。注意大小写虽不限但同一套库里建议统一小写或统一大写混用在不同工具的排序和检索里会制造麻烦。2.2 单位与尺寸的后两位小数约定第三个约束是尺寸编码方式这是整套规范里最容易被新人误读的一条采用公制 mm 时数字的后两位表示小数位例如r160_50s15mm中 160 表示 1.6mm、50 表示 0.5mm实际小数位超过两位则四舍五入到两位。整数位长度不限。采用英制 mil 时数字全部是整数没有小数位例如r210_90s6mil中 210 表示 210mil、90 表示 90mil。换算一下就很清楚1.6mm 写成 160是把毫米数乘以 100 取整210mil 就是原值。这里常见的误解是以为公制也有“单位后缀决定一切”实际上后缀只负责声明真正决定数值含义的是这个乘 100 的约定。写个双向转换函数贴在库脚本里比每次心算靠谱def mm_to_code(v_mm: float) - str: 毫米值转命名码乘100四舍五入取整1.6 - 160 return str(int(round(v_mm * 100))) def mil_to_code(v_mil: float) - str: 毫英寸值转命名码直接取整210 - 210 return str(int(round(v_mil))) # r160_50s15mm 焊盘1.6mm x 0.5mm阻焊增量15即0.15mm公制 print(mm_to_code(1.6), mm_to_code(0.5)) # 160 50 print(mil_to_code(210)) # 210round是必须的直接int()截断会让 0.655mm 变成 65 而不是 66两位精度的边界值上会系统性偏小。阻焊增量同理走乘 100 的规则上面15就是 0.15mm。提示这套编码的代价是可读性差sot230p700x180里的 230 不是 2.3mm 引脚间距而是 0.23mm读名字必须带着“后两位是小数”的换算习惯。2.3 大括号参数占位与取值原则规范用{}表示待填参数例如capae{Body Size}x{Height}{Level}mm(mil)填成capae240x310nmm则{Body Size}240、{Height}310、{Level}n单位后缀为 mm。参数取值原则里最值得记的是这几个参数取值规则说明Length / Width典型值无典型值取平均值仅一个值就取该值反映标称尺寸Height取最大值高度影响装配间隙必须留余量Lead Diameter取最大值引脚直径直接决定钻孔Lead Spacing / Pitch取典型值影响焊盘定位Pin Qty含功能引脚与散热盘别漏散热焊盘这套“长宽取典型、高度与孔径取最大”的分工不是随手定的长宽决定贴装面对的焊盘位置典型值才有代表性高度和引脚直径一旦偏小装配阶段就会干涉或插不进孔所以往大取。把所有参数按这个原则取完再编码比看一个名字就动手建模要稳。注意{Pin Qty}包含散热盘这在 QFN、DFN 这类带散热焊盘的封装上特别关键少算一个数量整个命名的尾数就错了。3. 焊盘与花焊盘从表贴到通孔的命名拆解封装是焊盘拼出来的焊盘名先立住封装名才有依据。这一章按表贴焊盘、通孔焊盘、花焊盘、Shape 四层往下走每一层都给格式和可执行例子方便直接套。3.1 表贴焊盘形状字母加长宽加阻焊增量标准表贴焊盘覆盖方形、长方形、圆形、椭圆形四类格式如下长方形/椭圆形{Shape}{W}_{H}s{阻焊增量}{单位}正方形/圆形{Shape}{W}s{阻焊增量}{单位}形状字母是r矩形、c圆形、s方形、b椭圆形s是固定字符表示阻焊solder mask后面紧跟阻焊增量即阻焊尺寸减去焊盘尺寸的差。举 W1.2mm、H0.6mm、阻焊增量 40mil 的例子公制下就是r120_60s...这样的序列。D 形焊盘把首字母换成d其余规则一致。非标准表贴焊盘走另一套smd_{Pack.Name}_{Number}。这里有个容易漏的细节——如果封装只含一个非标准焊盘Number可以省略含两个就要分别编号 1 和 2。规范给的例子是sot230p700x180-4nmm含两个非标准焊盘则命名为smd_sot230p700x180-4nmm_1和smd_sot230p700x180-4nmm_2。命名里的Pack.Name必须和所属封装名严格一致否则后期做库比对时对不上号。3.2 通孔焊盘焊盘形状、钻孔形状与金属化三要素通孔焊盘要同时描述焊盘形状和钻孔形状还分金属孔、非金属孔、带自定义 flash 三种情况。圆形/方形焊盘的分支是带自定义 flash 的金属孔t{焊盘形状}{边长}{钻孔形状}{钻孔直径}p{flash外径}x{flash内径}w{辐宽}s{阻焊增量}{单位}不带自定义 flash 的金属孔t{焊盘形状}{边长}{钻孔形状}{钻孔直径}p非金属孔把p换成n其中t固定表示 through 通孔p表示孔壁上锡的金属孔n表示非金属孔。椭圆形/矩形焊盘要多一组长度和宽度t{焊盘形状}{W1}_{W2}{钻孔形状}{H1}_{H2}p...。规范例子里 W12.2mm、W21.2mm、H11.6mm、H20.6mm命名就要体现这四组数。实操里我会先用一个字典把形状字母固化下来避免中途记混PAD_SHAPE {circle: c, square: s, oblong: b, rectangle: r} DRILL_PLATE {plated: p, non_plated: n} def through_pad(shape, side_mm, drill_shape, drill_mm, platedTrue, unitmm): 生成不带自定义 flash 的通孔焊盘名圆形/方形分支 s PAD_SHAPE[shape] # 焊盘形状 d PAD_SHAPE[drill_shape] # 钻孔形状 pl DRILL_PLATE[plated if plated else non_plated] return ft{s}{mm_to_code(side_mm)}{d}{mm_to_code(drill_mm)}{pl}{unit} # H1.6mm 方形焊盘1mm 圆形金属孔 print(through_pad(square, 1.6, circle, 1.0)) # ts160c100pmm注意函数只覆盖“不带自定义 flash”的分支因为批量建库时绝大多数通孔焊盘用软件默认花焊盘就行只有当默认 flash 不满足电流或工艺要求时才需要写完整分支。注意p/n写错是最常见的低级错误非金属孔被标成金属孔过孔盖油规则会跟着错这类问题在 DRC 阶段不一定报往往等到板厂工程审核才被打回。3.3 花焊盘与 Shape外圈内圈加辐宽和开口角花焊盘thermal relief命名以f打头矩形/椭圆形与方形/圆形两种分支。规范例子给的是 D1.3mm、d1mm、w0.2mm、b90°、H11.6mm、H21mm、W11.9mm、W21.3mm命名要覆盖外圈长宽、用x分隔的内圈长宽、焊盘形状字母c/b/s/r、辐宽、开口方向与水平线的夹角锐角、单位。辐宽和开口角是花焊盘区别于普通焊盘的两个专属参数前者决定导热速度后者决定四个连接桥的朝向波峰焊和手工焊的工艺要求不同开口角要给对。Shape 命名更简单sh_{Pack.Name}_{Number}sh表示特殊形状Pack.Name是适用的封装名Number后缀规则和smd_完全一样——一个 shape 可省多个就按 1、2 编号。键盘按键焊盘、SON 封装散热焊盘这类异形盘都走这条路。提示Shape 和smd_焊盘是配对关系封装里用了几号 shape对应的 smd 焊盘编号要一致否则复制封装到别的库时容易丢关联。4. 器件封装命名从电阻电容到 BGA 的三十类模板这一章是整份文档的主体也是最需要对照 datasheet 执行的部分。先把命名骨架和密度等级讲透再按器件族挑高频类型展开最后给出扩展思路。4.1 封装名三段骨架与密度等级 M/N/L封装命名的通用骨架可以归纳为{前缀}{关键尺寸}{级别}{单位}多参数器件在关键尺寸段用x和-分隔。前缀承担器件族识别尺寸段承担几何参数级别段承担工艺密度。密度等级是这套规范里最容易被忽略但最影响后续复用的设计等级表贴后缀插件后缀含义尺寸倾向低密度MAmost最宽松焊盘最大好焊难密中等密度NBnominal标称通用折中高密度LCleast最紧凑焊盘最小省面积表贴用 M/N/L、插件用 A/B/C规范例子里SOIC127P1041X419_8NMM是表贴中等密度、DIP762W46P254L1918H533Q7_14BMM是插件中等密度。实操中的做法是同一个器件按三个密度各建一份命名只差末位级别字母原理图选型时按板子的密度定位调用。注意级别字母要紧贴单位后缀写成...8Nmm而不是...8N_mm规范里没有这个下划线。4.2 电阻与电容片状器件用 EIA 型号做 Type片状电阻格式是resc_e{Type}_{Body Length}x{Body Width}x{Height}x{Pin Length}{Level}mm(mil)其中e{Type}里的e表示采用英制 EIA 通用尺寸Type 就是 0402、0603、0805 这些熟面孔。规范明确说命名采用英制 Type 而非公制代号这是一处必须统一的约定否则同一个 1608 公制件有人写 0603、有人写 1608检索就乱了。规范附的公英对照表里英制 0805 对应公制 2.0mm×1.2mm所以直接写400x200之类的公制数值配e0805的 Type 是对的。规范给的例子resc_e2010_500x250x65x60nmmType 是 2010实际长 5mm、宽 2.5mm、高 0.65mm、引脚长 0.6mm单位 mm。这里500是 5.00mm、65是 0.65mm、60是 0.60mm全部符合乘 100 的约定。柱状电阻走resmelf{Body Length}x{Body Diameter}{Level}mm如resmelf260x76nmm是长 2.6mm、直径 0.76mm。电容族和电阻结构对仗无极性片状capc_e{Type}_...、有极性片状capcp_e{Type}_...、模制无极性capm...、模制有极性capmp...、铝电解capae{Body Size}x{Height}{Level}mm。前缀里的c片状、p有极性、m模制、mp模制有极性、ae铝电解这套字母缩写要背下来capc和capcp差一个p极性件写成无极性前缀极性标识在库层面就丢了。4.3 排阻阵列与插装件间距 p 与安装方向排阻命名把间距放在最前面rescav{Pitch}p{Body Length}x{Body Width}x{Height}_{Pin Qty}{Level}mm。rescav是引脚凹陷的片状阵列chip array concave另有rescaxe凸出等尺寸、rescaxs凸出同侧尺寸不同、rescaf平滑。例子rescav50p160x100x55_8nmm是间距 0.5mm、长宽高 1.6/1.0/0.55mm、8 引脚、中等密度。电容阵列同构capcav/capcaf/capcax。插装件要区分轴向横装和纵装resadh{Lead Spacing}w{Lead Diameter}l{Body Length}d{Body Diameter}{Level}mmadh是轴向水平、adv是轴向垂直电容在此基础上再加极性前缀cappadh、矩形轴向caparh、径向caprd/caprr/caprb。例子RESADH0800W0052L0600D0150BMM是引脚间距 8mm、引脚直径 0.52mm、体长 6mm、体径 1.5mm 的插件中等密度电阻。轴向和径向的字母组合非常多我的经验是不要背直接在规范里按“安装方向 体形状”两个维度查表查完再核对单位后缀。4.4 BGA/QFN/DFN 与五位尺寸扩展多参数封装的排布逻辑BGA 这类封装参数多命名要容纳球间距、行列数、球径、体尺寸和引脚数。规范在 BGA 命名里用C75P6X8这种段表达球径、间距和行列再跟800X1200X120_56_48表示体尺寸和实际/编号引脚数。QFN/DFN 的核心是{Pitch}p{Body Length}x{Body Width}x{Height}加引脚数SON、SOP、QFP、SOT、TO 同理差异主要在“表达哪些几何量”。BGA 的56_48双数字值得单独讲48 是有编号引脚数、56 是实际引脚数含中间散热球或未编号球两个数字都要写进名字。规范里还有三种特殊情形典型尺寸相同但公差不同的加1/2/3区分如SOIC127P1041X419_8N_1NMM引脚顺序相反的加R如PLCC127P990X990X457_20RNMMdatasheet 最大编号大于实际引脚数的写两段如DIP762W46P254L1918H533Q_4_14BMM。晶体管三极顺序不一致时把极名贴上如SOT95P237X117_BCE_3NMM。非标准器件统一兜底电阻res_{Mfr.Name}_{Part Number}{Level}mm电位器pot_...电容capv_可变/cap_其它。厂家名和型号里的非法字符要删除或换下划线这条和 2.1 的字符约束是同一套逻辑型号带点号的最容易犯规。5. 避坑与排查命名规范落地时最常见的五类翻车规范读起来顺畅真往库里落的时候问题全在细节上。以下五条是我和同事在建库流程里反复遇到的按现象、原因、解决写照着排查能省不少返工。5.1 名称里混进小数点导入时整批报错现象批量导入 EDA 封装库时提示文件名非法或导入成功但名称被截断。原因有人图直观写成R0603_1.6x0.8点号是非法的不同工具对点号处理不一致有的当扩展名分隔符。解决回到 2.1 的规则全部改用乘 100 编码1.6mm写160并在入库脚本里强制跑一遍正则校验不合法直接拒绝入库。5.2 公制数值按原值写尺寸差了 100 倍现象封装名写着r16_8mm实际建出来是 0.16mm×0.08mm 的焊盘肉眼在库编辑器里几乎看不见。原因把公制的“后两位是小数”忘了直接把 1.6 写成 16。解决所有公制数值统一走mm_to_code()转换禁止手工拼串建库脚本里加一条自检焊盘尺寸小于 0.1mm 的直接报错拦截。5.3 密度等级后缀漏写或位置错现象同一器件的三个密度版本导入后分不清或者名称结尾成了...8N_mm、...8NmmM。原因级别字母位置记混或者多加了分隔符。解决固定拼装顺序为“尺寸段 级别字母 单位后缀”中间不加任何分隔符级别字母表贴只认 M/N/L、插件只认 A/B/C写脚本时用白名单校验末段。5.4 极性件丢了极性标识现象电解电容建库后原理图上分不出正负贴片时靠人工看图批量生产极易反贴。原因无极性前缀capc和有极性前缀capcp只差一个字母复制上一条命名改尺寸时忘了改前缀。解决把带极性器件单独列一个清单命名生成时强制要求前缀属于极性白名单且库属性里同步标记 polarity做到名字与属性双重约束。5.5 双数字引脚数只写了一个现象BGA、异形 DIP 封装在网表比对时报引脚数不匹配。原因规范里“实际引脚数 最大编号”或“实际数 编号数”的双数字段只写了一个或者顺序写反。解决按规范固定顺序写先实际后编号如_56_48、_4_14在库导出环节加一条比对封装名里的引脚数与焊盘实际数量必须一致不一致就拦住。6. 把规范变成校验脚本一条命令扫全库的落地技巧文档躺在共享盘里没人看是这类规范最常见的结局。真正让它生效的办法只有一个把规则写成脚本进库、改库、导库三个环节都跑一遍。我一般会写一个轻量校验器读封装名列表逐条过正则和字段规则输出不合规清单CI 里挂上就再也没人能用“我忘了”糊弄过去。核心校验逻辑分四层字符集、单位后缀、尺寸段格式、器件前缀白名单。下面这段可以直接跑输入一个名称列表输出每条的判定结果import re LEGAL re.compile(r^[0-9a-zA-Z_-]$) PREFIX_WHITELIST { resc, resm, resmelf, resadh, resadv, capc, capcp, capm, capmp, capae, indc, indm, indpw, indp, soic, sop, qfp, qfn, dfn, son, bga, cga, lga, pga, dip, sot, to, } def validate(name: str) - list: errs [] if not LEGAL.match(name): errs.append(含非法字符) if not (name.endswith(mm) or name.endswith(mil)): errs.append(缺少 mm/mil 单位后缀) # 表贴级别字母须为 M/N/L插件为 A/B/C body name[:-2] if name.endswith((mm, mil)) else name if not re.search(r[MNLABC]$, body) and not re.search(r_[MNLABC], body): errs.append(级别字母缺失或非法) # 前缀白名单取第一段字母 head re.match(r^[a-z], name) if head and head.group() not in PREFIX_WHITELIST: errs.append(f未知前缀 {head.group()}) return errs for n in [resc_e2010_500x250x65x60nmm, SOIC127P1041X419_8NMM, R0603_1.6x0.8, capc_e0805_200x120x80x40nmm]: print(n, -, validate(n) or OK)这段脚本的判定顺序有讲究先卡字符集因为非法字符会让后面所有正则失配报错信息也会跑偏再卡单位后缀没有后缀的名字无法判断数值语义然后查级别字母最后查前缀白名单。前缀白名单是这套校验里最有价值的一环因为它能挡住“自创缩写”——有人会写resistor_...或者cap_0603这类名字语法上合规但语义上脱离规范只有白名单能识别。参数上可调的是级别字母的检测方式。上面用了两条正则兜底因为实际命名里级别字母可能紧贴单位...8Nmm也可能在引脚数后..._8NMM单纯用$锚定会漏。如果你的库已经统一了拼装规则可以收紧成单一正则减少误报。跑通之后把校验器接进库的提交流程比写一堆制度有效得多。我踩过的坑是校验器只在新建时跑、修改时忘了跑结果有人改了焊盘尺寸却没同步名字库里出现“名字说 0603、实体是 0805”的幽灵封装排查花了大半天。从那以后我每次库变更提交前都强制走一遍全量扫描宁可多等几秒也不留这种黑匣子。把这份规范文档当规则源、把脚本当执行者封装库才算真正被管住。希望帮到你。本文还有配套的精品资源点击获取