
做硬件这些年最让我头疼的封装不是BGA也不是QFN而是看起来不起眼的异形焊盘封装。结构件那边甩过来一张DXF图明明就是一个不规则的金属弹片焊接区可你没法用标准矩形或者圆形焊盘去表达只能老老实实把DXF导进Allegro生成自定义shape焊盘再做成封装。这篇文章我以Allegro 16.6为主把从DXF导图到异形焊盘封装的完整流程、参数设置和踩过的坑都写出来希望能帮到正在被这类封装折磨的同学。如果你只是刚接触Allegro 16.X我也尽量把关键的菜单路径和选项解释透保证照着操作能跑通。1. 为什么需要异形焊盘封装先搞懂场景再动手1.1 哪些场景必须用异形焊盘很多人第一次接触异形焊盘都是从结构件封装的“特殊引脚”开始的。最常见的就是连接器的固定脚、屏蔽罩的接地弹片、天线的接触弹片、大功率模块的散热焊盘以及LED灯珠的碗形/椭圆焊盘。这类焊盘的共同特点是形状不是标准矩形或圆形边界要跟着金属件的轮廓走甚至需要在焊盘内部开出定位槽、避让孔或者留出散热过孔阵列的镂空区。用标准焊盘去硬顶不是不行但会有三个麻烦。一是焊接面积不够机械固定强度不足整机跌落时焊点容易裂。二是接触面不贴合金属件外形导致焊接时焊料分布不均匀出现虚焊或短路。三是阻抗和散热特性不好控制射频或大电流场景下会影响性能。所以只要结构件的焊接区域是不规则形状基本就必须用Allegro里的shape类型焊盘来建。还有一个容易被忽略的场景就是板边或拼板工艺边上的工艺定位焊盘。有时候为了配合夹具或回流焊治具需要在不规则区域开一个特定形状的焊盘这种情况也是异形焊盘封装的标准应用。可以说学会从DXF构建异形焊盘封装不是偶尔用一次的偏门技巧而是每个做硬件或封装库的人迟早要面对的基本功。1.2 设计前的三个概念基础shape焊盘、flash焊盘与正片负片在Allegro里做异形焊盘绕不开三个概念shape焊盘、flash焊盘、正片与负片。先说shape焊盘它指的是用自定义闭合图形作为焊盘的几何形状。这个图形通常来自DXF导入的线框然后在Allegro里通过Compose Shape变成一块闭合的铜皮区域最后在Pad Designer里引用这个图形符号。flash焊盘和它不一样flash是一种带热释放辐条的十字花形符号主要用在负片层比如内电层Power/GND层上。做异形焊盘时如果是通孔焊盘并且内层走负片设计那你还需要给内层单独做flash否则内层的铜皮会整个包住焊盘导致散热过快焊接时很难上锡。正片和负片的概念更基础正片层里看到的就是铜负片层里看到的空白区域才是铜所以负片层的图形含义是反的。Allegro里普通信号层是正片平面层plane既可以是正片也可以是负片。这三个概念缺一个后面都可能出问题。我见过有人只做了正片层的shape焊盘结果内层是负片设计PCB制造出来内层焊盘区域全被挖空了电气连接直接断开。所以建异形焊盘前一定要先确认每一层用正片还是负片再决定是只做shape还是shape加flash一起做。2. DXF源文件准备这步没做好后面全白搭2.1 与结构工程师沟通DXF时的5个确认项异形焊盘封装的源头是DXF图所以DXF文件的质量直接决定后面所有步骤能不能顺利落地。我每次找结构工程师拿图之前都会先确认五件事缺一件后面都可能返工。第一是单位。结构工程师一般习惯用毫米而Allegro 16.X里封装设计经常用mil导入时单位选错整个图形会放大25.4倍或缩小成1/25.4第二天看到图纸上尺寸完全不对再回头查就晚了。第二是原点。DXF文件里的原点定义很关键建议让结构工程师把原点放在器件中心或PCB原点上这样导入后封装坐标可以直接对齐不用再手动挪一大段距离。第三是比例。必须确认图纸是按1:1导出的不要拿一张缩小过的示意图来。第四是图层。结构工程师出图时图纸上通常有各种标注、尺寸线、中心线、文字说明这些元素进入Allegro后都是干扰项。最好让他在CAD里把有效轮廓单独放到一个图层比如叫“PAD_SHAPE”其他标注全部隐藏或分层你只管这个图层。第五是闭合性。DXF里的轮廓必须是闭合的多段线或样条线如果有缺口后面Compose Shape会报错还得回CAD里补线。2.2 DXF图层清理与规范化处理拿到DXF后我自己还会在CAD里再过一道手做一次“净化”。原因是结构工程师交付的文件往往不会那么干净比如轮廓线里可能有重复线段、断点、多余的圆弧顶点甚至还有三维实体转平面后留下的重影。这些杂物进入Allegro后轻则影响闭合检查重则在生成shape时出现自交叉或多边形重叠DRC直接爆红。具体操作很简单先用CAD打开DXF把不需要的标注、文字、图框全部删除或移到其他图层然后选中轮廓线用多段线编辑命令把相邻的线段和圆弧合并成一条完整多段线最后用“对象闭合”检查每个轮廓是否为闭合状态。对于零散的小缺口可以在CAD里用延伸和修剪修干净而不是到Allegro里去补。另外保存DXF的版本也有讲究。Allegro 16.X的DXF导入器对太新的DXF版本支持并不好我一般让结构工程师存成AutoCAD 2000或R12版本的DXF兼容性最稳。太新的版本有时候导入后弧线变成很多小线段精度反而下降。还有一个细节是线宽DXF里的实体线宽尽量设为0这样在Allegro里就能用中心线精确判断轮廓边界不会因为粗线偏移导致焊盘尺寸偏差。3. Allegro 16.X导入DXF的完整操作流程3.1 File - Import - DXF参数设置详解Allegro 16.X导入DXF菜单路径是File - Import - DXF。点开后对话框里的参数每个都要认真看。第一项是选择DXF文件路径这个不用说。第二项是DXF units单位选择必须和CAD里一致毫米就选mmmil就选mils选错了图形尺寸会差出25.4倍。第三项是Scale factor一般保持1.0除非你明确需要缩放。对话框里还有一个“Incremental addition”的选项。勾选后每次导入DXF都会在当前设计中追加图形而不是覆盖之前导入的内容适合想把多个DXF分批次导入的场景不勾选则会把当前设计里之前导入的DXF层内容清掉再导适合反复迭代时保证图层干净。我一般在调试阶段用Incremental定稿后会用非增量方式做一次彻底的导入避免残留旧图形。接下来是图层映射区域。这里有两个选择要么手动逐层指定每个DXF图层导入到Allegro的哪个Class/Subclass要么用之前保存好的Layer conversion file.map文件一键映射。手动指定灵活适合第一次导入时配置map文件适合固定结构团队反复交付时使用只要他们的图层命名不变导入效率会高很多。建议第一次导入时把映射规则存成map文件后面每次都用它。文本和填充的处理也要注意。DXF里的文字可以导入也可以丢弃如果只是做焊盘轮廓我建议把Text conversion设为None避免一堆注释文字混进来。填充图形如果有填充hatchAllegro可以把它转成shape但前提是填充边界足够干净我个人还是倾向于只用轮廓线在Allegro里自己Compose Shape控制更可靠。3.2 图层映射的策略与常见选择图层映射的核心是“把DXF里的有效图形放到Allegro里一个统一、方便后续操作的层上”。我的习惯是建一个专门的子类例如Board Geometry/DXF层或者Manufacturing/DXF层把所有DXF导入的辅助图形都放进去。这样做的原因是这些DXF轮廓本身不是最终的PCB元素它们只是构建封装时的参考基准放在专门的辅助层里后续开shape、画丝印都不容易被误伤关掉显示也很方便。如果DXF文件里有多个图层比如轮廓层、开孔层、定位层则分别映射到Board Geometry/DXF_Outline、Board Geometry/DXF_Hole、Board Geometry/DXF_Location等子类。更工程化的做法是根据后续用途来分直接要变成焊盘铜皮边界的图形映射到Board Geometry/DXF_PAD只是用来定位的基准图形映射到Board Geometry/DXF_REF。这个阶段不要直接把DXF映射到ETCH层更不要直接映射到某个Pin的焊盘层。很多人图省事导入时把DXF线框直接放在ETCH/Top再原地Compose Shape虽然也能生成shape但会让层叠结构变得很乱。ETCH层应该是最终的铜皮结果而不是源头图形所在的层。规范的流程是DXF先进辅助层检查修正完毕后再以这个辅助层图形为模板创建shape symbol。3.3 导入后的必要检查与图形修复DXF导入后不能急着进下一步先花几分钟做检查和修复能省后面几个小时。第一个检查项是尺寸用Dimension - Dimension Environment或直接测量工具量一下导入图形里已知标注的尺寸比如两个定位孔的中心距确认没有发生单位或缩放错误。第二个检查项是位置看看图形原点是否落在设计原点附近如果偏了十万八千里多半是DXF里图形离原点太远需要用Move或Change并结合坐标输入把图形挪回到原点附近再继续。第三个检查项是闭合性。Allegro里可以用右键选择某个闭合区域看边界是否有断点。也可以用Shape - Compose Shape试一下能选出来并生成shape就说明边界是闭合的选不出来就说明有缺口或重叠。常见的修复方法包括用Rectangle/Circle/Polyline重新描一遍轮廓、用Spread或Trim整理重叠线段、把断点通过坐标对齐后合并。第四个检查项是重叠和重复图形。DXF导入后发现有些线段是双层的肉眼看不出来但Compose Shape时会提示“multiple closed shapes”或生成奇怪的shape。我一般用Edit - Delete配合右键Filter只选Lines/Arcs把明显多余的重叠线段删掉。如果想确认是否存在重复线可以把图形放大到几十倍看节点是否重合或者直接先选中一根线Delect键删掉再看那个位置是否还有残留线段。这一步检查工作做得越细后面Pad Designer和Package Symbol阶段就越顺利。实际上异形焊盘封装的大多数报错都源于源图质量问题而不是Allegro操作问题。4. 异形焊盘构建核心操作从图形到SSM符号4.1 新建Shape Symbol的基本流程Allegro里自定义焊盘形状靠的是Shape Symbol后缀.ssm。在Allegro 16.X下新建Shape Symbol的入口是File - New然后在Drawing Type里选择Shape symbol。进入编辑器后第一步是设置画布大小和精度我习惯把Drawing Size设得比实际焊盘大出2到3倍避免后面导入DXF时图形超出图幅。同时把尺寸单位设置为和项目一致推荐用mil精度设为2位小数。创建Shape Symbol时并不需要重新画一遍图形直接把之前准备好的DXF轮廓搬进来即可。最简单的方式是把DXF导入到一个普通的PCB Board文件里整理干净然后用File - Import - DXF的方式把它导入到shape symbol编辑器里或者在新symbol里执行File - Import - DXF导入同一个DXF文件。核心原则是Shape Symbol里只需要保留最终用来生成shape的轮廓线其他参考图形一概不要。进入符号编辑器后先确认导入图形所在的Class/Subclass再开始生成shape。如果你发现导入的轮廓不在当前激活层也没关系后续Compose Shape时会让你选择目标层Allegro会从任何层上选中的闭合图形来生成shape。4.2 用Compose Shape生成闭合焊盘图形生成自定义焊盘形状的核心命令是Shape - Compose Shape。执行后在Options面板里先设置目标Class和Subclass。对于异形焊盘我通常会把shape符号里的图形放在ETCH/Top层或者用自定义的类似层取决于你希望Pad Designer怎样引用。实际上当这个shape被用在Padstack里时Allegro会按照Pad Designer中设置的目标层来引用shape符号对应的图形所以Shape Symbol内部的层选择要尽量简单、一致。设置好目标层后用鼠标点击闭合区域边界上的任意一条线Allegro会自动沿着边界搜索闭合路径高亮显示一整圈。确认边界高亮无误后点击鼠标中键或者按Enter一片闭合的shape就生成了。这里有一个关键细节如果轮廓内部还有小孔洞比如散热焊盘中央的避让孔你可以重复Compose Shape在孔洞边界上也点一次Allegro会把它作为void挖空区域处理这样焊盘就是带孔的异形焊盘。Compose Shape失败时Allegro提示的“Cannot create shape because boundaries are not closed”是家常便饭。这时候不要硬试回到DXF检查边界是否有多余线段、断点、以及边界是否跨出了图幅。也可以用Shape - Manual Compose手动逐段选择边界避开某些有问题的线段。4.3 多块铜皮合并与void处理技巧有些异形焊盘是由多块独立铜皮组合而成的比如左右两支弹片焊盘分开但电气上需要连成一体或者是焊盘主体大铜皮加上两三条延伸连接条。这时如果分别Compose Shape得到的是多块独立shape。在Allegro里可以用Edit - Merge Shapes把相邻且有公共边缘的shape合并成一个shape注意合并的shape必须处于同一层并且至少有一部分公共边。合并完成后如果还要在中间开孔就可以做void。Shape - Manual Void - Polygon或者Shape - Manual Void - Circle都可以常见的是在焊盘中央避开螺丝孔或定位柱。挖孔后的shape仍然是一个完整焊盘电气上不会把内部分成两半只是在制造时没有铜。void处理有一个很容易踩的坑void边界最好不要离shape外边界太近。PCB制造对铜皮的最小桥宽有要求如果挖孔后留下的铜桥宽度小于生产工艺能力比如低于4mil做板时容易出现铜皮脱落或制造公差超限。我一般会量一下最小铜桥宽度至少留到6mil以上并同步检查公司的工艺设计规范。4.4 保存并验证SSM文件Shape Symbol画好后保存时后缀名就是.ssm。保存前记得确认两件事一是图形确实只有一个或几个完整的shape没有残留的线段或短线头二是文件命名要规范建议用“PAD_开头项目标识序号”的方式例如PAD_SSM_BRD1001_V1方便后面在Pad Designer里引用时一眼认出来。保存后还要确认Allegro的搜索路径里能找得到这个文件。Allegro默认是在psmpath指定的目录里搜索shape symbol也搜索.pad、.dra、.psm文件。如果不确定可以在命令行执行show symbol然后输入你的ssm文件名看它能不能被找到。如果提示找不到就要把文件放到psmpath里的目录下或者修改env文件里psmpath参数。验证ssm文件最简单的方法是在一个空白的Allegro Board文件里用Add - Shape选择Solid Shape并输入你的ssm文件名如果能正常放置一个任意大小的shape就说明符号本身可用。这里放出来的尺寸是没意义的因为真正决定尺寸的是DXF图形本身Allegro在引用ssm作为Padstack形状时会自动使用原始图形的几何尺寸。5. 在Pad Designer中创建异形焊盘与封装验证5.1 Pad Designer关键参数设置SSM文件准备好后就该打开Pad Designer了。这个工具在Cadence安装目录的Utilities里或者直接从开始菜单Cadence Release - PCB Editor Utilities - Pad Designer打开。新建Padstack后choose padstack type要看用途如果是表贴焊盘选SMD如果是通孔焊盘选Through。Pad Designer里最核心的是Layers选项卡。默认会有Top、Default internal、Bottom三个主要的物理层每一层都可以设置Geometry类型。以前用标准焊盘时这里一般选Circle或RectangleWidth和Height直接填尺寸现在做异形焊盘要把Geometry类型改成Shape然后在后面的Shape Name里填上你刚刚保存的ssm文件名不带后缀。例如填PAD_SSM_BRD1001_V1Allegro会自动找到该shape符号并用它的实际形状作为这一层的焊盘形状。如果是通孔异形焊盘还要设置Drill/Slot Drill参数包括钻孔直径、镀层属性以及Drill Symbol。如果内层是负片设计还需要再做一个flash符号并把这个flash符号放在Default internal层或对应内层的Flash栏里没有flash的话内层会变成全包围连接焊接时散热过快。一个很容易被忽略的参数是“Single layer mode”这个选项只对SMD焊盘有效勾选后只会显示Top层。对异形焊盘来说我建议不勾选这样Top和Bottom层都能分别指定shape方便做双面都露铜的焊盘。如果只是单面板贴片Top层设为Shape就够了其他层忽略。5.2 创建Package Symbol并放置焊盘焊盘建好后下一步是新建Package Symbol后缀.dra这是把焊盘变成正式封装的关键一步。菜单是File - NewDrawing Type选Package symbol。进入封装编辑器后先把页面的尺寸单位设好再用Layout - Pins放置焊盘。放置焊盘时会弹出Placement List和Quick Placement对话框。在Placement List里左侧选择你的.pad文件名点击Add它会进到右侧列表然后再设置数量、间距或从DXF里的位置信息来放置。对于异形焊盘封装焊盘数量通常不多有时一两个、三四个所以手动放置完全够用。放置时强烈建议以DXF导入的轮廓或基准点为参考。比如你可以把DXF辅助图形导入到封装符号的同名辅助层然后把焊盘的某个基准点对齐到DXF图形的对应位置。这样能保证焊盘相对尺寸和结构件完全匹配。放置完后用Show Element检查每个Pin的位置坐标并对照DXF里的中心距或外形尺寸确认没有偏差。封装里除了Pin之外还要画上Package Geometry下的Place_Bound_Top占位区域、Silkscreen_Top丝印、Assembly_Top装配层以及可选的Outline。这些层虽然不影响电气连接但影响后续PCBA装配和贴片流程缺少占位区域会导致器件发生重叠时DRC不报错。丝印也尽量简洁不要画在焊盘上避免丝印压焊盘导致可制造性检查报警。5.3 关联DRA、PAD与SSM的搜索路径管理异形焊盘封装比较特殊的地方在于它至少涉及三类文件ssm形状符号、pad焊盘文件、dra封装文件。这三个文件互相引用如果搜索路径不对Allegro在保存或放置封装时就会提示找不到对应文件。Allegro的搜索路径在安装目录下的env文件里配置常见的有psmpathPackage Symbol路径、padpathPadstack路径。ssm文件属于symbol的一种所以也归psmpath管。建议为每个项目单独建一个库目录比如D:\LIB\BRD1001\下面再分symbol和pad两个子目录然后把这两个子目录加到env的psmpath和padpath中顺序放在默认路径之前。路径配置好后在Package Symbol里放置焊盘时Allegro会按psmpath和padpath的顺序搜索文件。如果你改了ssm或pad文件但没有保存到对应路径或者路径里有重名文件系统会用旧文件这也是一个隐蔽的问题。我每次改完ssm和pad都会在命令行输入refresh symbols或者重开文件确保读取的是最新版本。保存Package Symbol后还需要执行File - Create Symbol生成.psm文件这个是真正的封装符号后续PCB布局使用的就是psm文件。如果找不到psm多半是Create Symbol时选择了其他类型或者层设置里没有正确的class/subclass。5.4 封装验证与DRC检查封装创建完成不等于可以直接用最后一步是验证。先做Database Check菜单是Tools - Database Check勾选所有选项执行一次。这一步能发现图形对象之间的重复、非法形状、无效符号引用等问题。如果报错根据报错信息逐条处理。接着生成封装报告菜单是Reports可以生成Unconnected Pins、Shape Boundaries、Package Symbol等报告。重点检查Unconnected Pins是否为你预期的数量Shape Boundaries报告里确认每个shape的边界都没有断开。然后还有电气DRC和制造DRC在封装编辑器里可以通过Tools - DRC Update来执行虽然封装级DRC不如PCB级全面但能抓出一部分间距和尺寸问题。更靠谱的验证是把这个封装放置到一个空的PCB设计里跑一次全流程DRC并在3D视图或制造输出里查看焊盘与结构件的配合情况。有条件的话导出DXF或者ODB给结构工程师看让他们在CAD里核对一遍。封装设计本质上是一个跨专业协作的产物多一道交叉验证就少一次打样回来发现问题。6. 常见问题与排查技巧实录6.1 高频问题速查表问题现象常见原因解决办法DXF导入后尺寸差25.4倍单位设置与实际不符导入时确认DXF units与实际CAD单位一致图形位置离原点太远DXF内图形本身远离原点在CAD或Allegro中将图形移动到原点附近Compose Shape提示未闭合边界有断点/重叠/缺口在CAD里合并多段线删除重复线补齐缺口放置焊盘时提示找不到ssmpsmpath未配置或ssm文件未放置将ssm所在目录加入psmpath并确认文件命名焊盘在PCB上不显示Pad Designer中未设Shape类型或层选择错误检查Layers选项卡各层Geometry是否为Shape并填名称DRC报shape间距违规焊盘区域与相邻铜皮间距不足优化焊盘形状或调整周边约束规则负片层内焊盘被挖空缺少flash或内层使用负片且未设flash在Pad Designer内层引用flash符号保存封装后找不到psm未执行Create Symbol执行File - Create Symbol生成psm文件刷新后还是旧图形文件路径重名或缓存清理路径中的旧文件使用refresh symbols钻孔位置与异形轮廓偏移通孔焊盘放置基准点不对以DXF基准点重新对齐焊盘放置坐标这张表是我做异形焊盘封装时最喜欢对的内参每次报错先看表大多数都能定位到源头。6.2 几条来自实战的独家避坑经验第一DXF导入的“原点”一定要较真。我遇到过结构工程师把原点放在器件右上角的焊盘中心而我默认是封装中心结果所有焊盘放置后整体偏移了几十mil。建议一开始就明确约定原点统一在几何中心或第一脚焊盘中心并且在DXF文件里加上原点符号方便确认别等封装建完再发现那时返工成本高得多。第二Shape Symbol和Pad Designer里的尺寸单位要统一。ssm文件用milPad Designer里也是mil如果某个环节用了mm且没有切换形状会被放大或缩小。这个错误很隐蔽因为在Pad Designer里看不出比例问题直到放到PCB上才发现焊盘比结构件大了或小了一圈。养成一个习惯每次保存和引用文件前都确认单位标识。第三养成保留DXF导入底图的习惯。封装完成后不要急着删掉DXF辅助层哪怕已经生成了焊盘。原因是后续做PCB Layout时设计工程师可能需要反复核对结构安装面、干涉区域、开孔位置。把这些DXF图形保留在独立的辅助层并设为不参与Gerber输出是一个很稳的工程习惯。第四异形焊盘和多边形敷铜之间的连接关系要提前跟Layout工程师交代清楚。有些异形焊盘看起来是一整块大铜皮但Pin本身只有一小块实际是依靠铜皮铺出来的连接。如果Layout同事不了解设计意图后续做敷铜时可能会把这块异形铜皮优化掉或修改间距导致焊盘电气属性变化。所以封装建完后最好在封装说明文档里附上DXF来源和特殊要求传递清楚“为什么这样设计”。第五关于allegro导出dxf这个方向虽然本文主角是导入DXF建封装但封装做完后反过来导出DXF去做结构核对同样很重要。封装编辑器里File - Export - DXF选择要导出的层导出的DXF发给结构工程师确认外形和焊盘位置是很多团队沉淀下来的标准动作。这样做的好处是结构端用的坐标系和硬件端完全一致避免了反复口头沟通产生的误差。做异形焊盘封装这件事本质上不是拼操作技巧而是拼流程习惯。只要把DXF源图质量、导入映射、Shape Symbol、Pad Designer、Package Symbol这个链条理顺再配合严格的验证步骤哪怕是0.5mm间距的复杂连接器弹片焊盘也能一次做到位。我做了几年封装库最大体会就是别怕慢封装设计里省掉的每一步检查最后都会在打样或量产时加倍还给你。希望这篇实战流程能帮你少走点弯路。