
1. 拼板场景下的Mark点到底在解决什么问题搞过几年PCB设计的兄弟基本都有这个体会单板画完不算完真正要上SMT产线的时候拼板才是那个让人头大的环节。尤其是用Cadence Allegro做拼板跟AD那种复制粘贴就完事的逻辑完全不是一回事。Allegro的拼板思路更偏向于把单板当成一个可复用的模块去管理而Mark点基准点作为SMT贴片机的视觉定位基准在拼板里扮演的角色远比很多人想象的重要。先说清楚Mark点是什么。Mark点学名基准点Fiducial Mark是PCB上专门为SMT贴片机的光学识别系统提供的定位标记。贴片机通过摄像头识别Mark点的中心坐标来校准PCB的实际位置与理论位置的偏差从而保证每个元器件的贴装精度。你可以把它理解成拼板上的坐标系原点——没有它贴片机就是瞎子摸象。那为什么拼板的时候Mark点特别关键因为拼板之后一整块拼板上的单板数量可能是2块、4块甚至更多贴片机需要在整个拼板范围内找到全局基准同时在某些高精度场景下还需要每块单板有局部基准。如果Mark点缺失或者位置不对轻则贴片偏移重则整批板子报废。我见过一个案例某工程师拼板时忘了加Mark点工厂那边直接用板边和过孔凑合定位结果0402的电阻偏了将近0.3mm整批5000片全部返工。这篇文章面向的是已经会用Allegro画单板、但对拼板操作还不够熟练的PCB工程师。不管你是刚入行的新手还是从AD转过来还在适应Allegro逻辑的老手我都会把手动添加Mark点器件这件事从头到尾讲透包括每一步为什么这么做、参数怎么定、哪些坑我亲自踩过。2. 拼板前必须想清楚的几件事2.1 拼板方式的选择V-Cut还是邮票孔在动手加Mark点之前你得先确定拼板方式因为这直接影响Mark点的布局策略。常见的拼板方式有两种V-CutV型槽和邮票孔桥连孔。V-Cut适合外形规则的矩形板板与板之间用V型槽连接掰板的时候沿着槽线折断就行。这种方式的优点是拼板利用率高、成本低缺点是掰板时会有应力对板边附近的元器件不太友好。邮票孔则适合外形不规则或者板边有敏感器件的场景板与板之间通过一排小孔连接掰板时应力更分散。为什么这个选择会影响Mark点因为V-Cut拼板通常整块拼板只需要3个全局Mark点或者2个对角Mark点而邮票孔拼板由于每块单板之间的间距更大、相对位置精度更难保证有时候需要在每块单板上额外加局部Mark点。我个人的经验是如果单板尺寸小于50mm×50mm且拼板数量超过4块建议每块单板都加局部Mark点别省这点空间。2.2 Mark点的行业规范参数Mark点的设计不是随便放个圆就行行业里有一套通用的规范。以下是IPC标准和大多数SMT产线默认接受的参数范围参数项推荐值可接受范围说明Mark点直径1.0mm0.8~1.5mm太小识别不到太大浪费空间阻焊开窗直径2.0mm直径的2倍保证Mark点周围有足够的无阻焊区域Mark点与板边距离≥5.0mm≥3.0mm太靠边贴片机镜头可能够不到周围空旷区域≥2.0mm≥1.0mm不能有走线、铜皮、丝印干扰拼板全局Mark点数量3个2~4个3个可以确定唯一坐标系局部Mark点数量每板2个对角2个用于高精度单板定位这些参数你在Allegro里设置焊盘Pad的时候就要定好。我一般习惯把Mark点的焊盘做成一个独立的Padstack命名为MARK_1R0之类的方便复用。2.3 全局Mark点与局部Mark点的分工全局Mark点放在整块拼板的边角区域一般是在工艺边Breakaway Tab上用来给贴片机做整板定位。局部Mark点放在每块单板的对角位置用来做单板级别的精确定位。什么时候只需要全局Mark点拼板数量少2~3块、单板尺寸大大于100mm×100mm、贴装精度要求一般0603以上封装为主的场景全局Mark点基本够用。什么时候必须加局部Mark点拼板数量多4块以上、单板尺寸小、有细间距器件QFN、BGA、0201封装、或者单板之间的间距较大导致累积误差不可忽略的场景。我之前做过一个通信模块的拼板单板只有35mm×25mm拼了8块只加了全局Mark点结果边缘那几块板的BGA贴装偏移超标后来老老实实每块板加了局部Mark点才解决。3. Allegro里手动添加Mark点器件的完整操作3.1 创建Mark点焊盘Padstack这是整个流程的第一步也是最容易出问题的一步。很多人直接拿普通焊盘改一改就用结果阻焊层设置不对Mark点被阻焊盖住了贴片机根本识别不到。打开Allegro的Padstack Editor或者直接在PCB Editor里通过Tools→Padstack→Modify Design Padstack进入新建一个Padstack。关键参数如下Units选择Millimeter跟大多数板厂的默认单位一致Padstack类型选择Through通孔或者SMD表贴。Mark点一般用表贴的就行不需要打孔Begin LayerRegular Pad设为Circle直径1.0mmSoldermask Top设为Circle直径2.0mm。这一步是关键阻焊开窗必须比焊盘大否则阻焊油墨会覆盖Mark点边缘影响识别Pastemask不需要设置Mark点上不刷锡膏保存为MARK_1R0.pad放在你的库路径下。注意有些工程师会把Mark点做成通孔焊盘觉得这样更结实。但实际上通孔Mark点的孔壁会影响光学识别的对比度除非你的板子特别厚或者有特殊工艺要求否则一律用表贴Mark点。3.2 在原理图中添加Mark点器件这一步是很多教程会跳过的地方。Allegro的拼板流程跟AD不同它更强调从原理图到PCB的完整链路。如果你直接在PCB里画个圆当Mark点虽然也能用但后续做BOM、做网表对比的时候会出问题。正确的做法是在原理图里添加一个Mark点器件。具体操作在原理图库中新建一个Part命名为MARK只有一个引脚Pin引脚类型设为Passive在原理图中放置这个MARK器件连接到GND或者悬空都行取决于你的设计习惯我一般悬空给这个器件指定PCB Footprint为刚才创建的MARK_1R0重新生成网表导入PCB这样在PCB里Mark点就是一个正式的器件有位号比如MK1、MK2后续做拼板复制的时候也能被正确识别。实操心得如果你的原理图里不想加Mark点器件有些公司流程不允许随便改原理图也可以在PCB里通过Place→Manually放置一个Mechanical Symbol。但这种方式在拼板复制时容易出问题因为Mechanical Symbol不会被当作器件处理。我建议还是走原理图这条路规范且不容易出错。3.3 在PCB中放置Mark点并设置参数网表导入之后在PCB Editor里通过Place→Manually选择Advanced Settings勾选Library然后找到你的MARK器件放到板子上。放置位置有讲究全局Mark点放在工艺边的对角位置一般放在板边的中间偏两端局部Mark点放在每块单板的对角距离板边至少3mm所有Mark点周围2mm范围内不能有走线、铜皮、丝印、过孔放好之后选中Mark点在Property Editor里确认它的Layer是Top如果Mark点只在正面的话。如果是双面贴片底面也要放对应的Mark点。3.4 拼板复制时Mark点的处理这是整个流程的核心环节。Allegro的拼板复制一般用两种方式Copy命令或者Create Module。用Copy命令的方式选中单板的所有器件和走线包括Mark点执行Edit→Copy然后在目标位置粘贴。这种方式简单粗暴但有个问题——粘贴出来的Mark点位号会变成MK1_1、MK2_1这种虽然不影响功能但看起来不整洁。用Create Module的方式选中单板所有元素执行Tools→Create Module保存为.mdd文件。然后在拼板时通过Place→Manually放置这个Module。这种方式的好处是位号可以统一管理而且Module可以重复使用。我个人的习惯是用Create Module因为拼板数量多的时候Module方式效率更高而且不容易漏掉元素。踩坑记录有一次拼板的时候我用Copy方式复制单板结果忘了勾选Retain net name选项导致复制出来的Mark点网络名变了DRC报了一堆错误。后来改用Module方式就没这个问题。所以如果你用Copy一定要在Options面板里把Retain net name勾上。4. Mark点布局的实战技巧与参数计算4.1 全局Mark点的最佳位置计算全局Mark点一般放3个呈L形分布。为什么是3个而不是2个因为2个点只能确定一条直线无法确定唯一坐标系镜像翻转无法区分。3个点可以确定唯一的平面坐标系包括原点和旋转角度。具体位置怎么算假设拼板尺寸为W×H工艺边宽度为5mmMark点距离板边5mmMark点1(5, 5)Mark点2(W-5, 5)Mark点3(5, H-5)这样形成一个直角三角形贴片机识别三个点后可以精确计算出整板的偏移和旋转。如果拼板尺寸特别大比如超过300mm建议在第四个角也加一个Mark点总共4个提高识别冗余度。4.2 局部Mark点的间距与精度关系局部Mark点的间距直接影响定位精度。理论上Mark点间距越大角度误差的放大效应越小。举个例子如果Mark点间距为50mm识别误差为0.01mm那么角度误差约为0.01/500.0002rad≈0.011度。如果间距只有20mm同样的识别误差会导致0.029度的角度误差。所以局部Mark点应该尽量放在单板的最远对角。但也不能太靠边因为板边在掰板时可能有毛刺影响识别。我一般把局部Mark点放在距离板边3~5mm的位置。4.3 阻焊开窗与铜皮优先级的冲突处理这是Allegro拼板里一个非常隐蔽的坑。Allegro的铜皮有优先级的概念如果你在Mark点周围铺了铜皮而铜皮的优先级高于阻焊开窗那么阻焊开窗可能会被铜皮覆盖导致Mark点被阻焊盖住。处理方法是在Mark点周围设置禁止铺铜区Copper Keepout或者把Mark点周围的铜皮优先级设为最低。具体操作选中Mark点周围的铜皮在Property Editor里把Shape priority设为0最低然后在Mark点位置放置一个Route Keepout和Package Keepout。实测经验我一般直接在Mark点周围画一个直径3mm的Copper Keepout一劳永逸。虽然会浪费一点铜皮面积但比起Mark点被盖住导致整批板子报废这点代价完全可以接受。5. 常见问题排查与避坑指南5.1 Mark点识别失败的五大原因问题现象可能原因排查方法解决方案贴片机完全找不到Mark点阻焊开窗太小或被覆盖检查Gerber中Soldermask层增大开窗直径至焊盘2倍Mark点识别不稳定周围有走线或铜皮干扰检查Mark点周围2mm范围设置Keepout清除干扰识别到但偏移量大Mark点位置不对称检查Mark点坐标重新按对角原则布局只有部分Mark点被识别拼板复制时漏放检查每块单板用Module方式重新拼板Mark点对比度不足表面处理工艺问题确认板厂表面处理选择沉金或OSP工艺5.2 拼板后DRC报错的典型处理拼板之后跑DRC最常见的报错就是Silkscreen overlap和Copper to edge clearance。Mark点相关的报错一般是Pad to pad clearance因为复制出来的Mark点可能跟旁边的走线或铜皮距离太近。处理思路先确认报错位置是不是Mark点如果是检查Mark点周围是否有不该有的元素。我一般会在拼板前就把单板的DRC清干净拼板后再跑一次全局DRC重点看Mark点区域。5.3 出Gerber时Mark点的层设置检查出Gerber的时候Mark点涉及两个层Top层焊盘和Soldermask Top层开窗。很多人出Gerber时忘了勾选Soldermask层导致板厂做出来的板子Mark点被阻焊盖住。检查方法在Gerber输出设置里确认以下层都已勾选Top或BottomSoldermask_Top或Soldermask_BottomSilkscreen_Top可选用于标记Mark点位号出完Gerber后用CAM工具比如CAM350或者免费的Gerber查看器打开检查一遍确认Mark点的开窗比焊盘大且周围没有阻焊残留。避坑技巧我习惯在出Gerber之前先在Allegro里用3D视图或者Film View检查一遍Mark点的实际效果。Film View可以模拟Gerber的叠加效果能直观看到阻焊开窗是否正常。6. 从单板到拼板的完整检查清单6.1 拼板前的单板检查项在开始拼板之前先确认单板本身没问题Mark点焊盘已创建阻焊开窗为焊盘直径的2倍Mark点器件已从原理图导入位号正确Mark点周围2mm内无走线、铜皮、丝印、过孔单板DRC已清干净无未连接网络单板外形Outline已闭合无缺口6.2 拼板过程中的关键检查点拼板过程中每复制一块单板都要检查Mark点是否被正确复制位号可能变化但焊盘和开窗不能变拼板间距是否符合板厂要求V-Cut一般0mm间距邮票孔一般2~3mm工艺边宽度是否足够一般5~10mm全局Mark点是否放在工艺边上且位置对称6.3 出Gerber前的最终确认出Gerber前最后确认一遍所有Mark点在Gerber中可见开窗正常拼板外形层Outline完整V-Cut或邮票孔位置正确钻孔文件NC Drill与Gerber对齐阻焊层和助焊层没有搞反我个人的习惯是出完Gerber后一定用CAM350打开逐层检查一遍特别是Mark点区域放大到200%看开窗边缘是否清晰。这个习惯帮我避免了好几次批量报废的事故。7. 一些提高效率的Allegro操作技巧7.1 快捷键设置与Mark点操作Allegro的快捷键可以大幅提高拼板效率。我常用的几个F2Zoom Fit快速查看全板F5Zoom In放大检查Mark点细节F6Zoom OutCtrlE移动器件CtrlC/CtrlV复制粘贴你可以在env文件里自定义快捷键比如把alias ~M place manually设成快速放置Mark点。7.2 用Skill脚本批量处理Mark点如果拼板数量特别多比如16块以上手动复制Mark点效率太低。这时候可以用Allegro Skill写个小脚本批量复制Mark点并自动编号。网上有一些开源的Skill脚本可以参考核心逻辑就是遍历单板的所有Mark点器件按偏移量复制到目标位置。提醒Skill脚本虽然方便但一定要在测试板上先验证确认复制出来的Mark点焊盘和开窗都正确。我见过有人用脚本复制后阻焊开窗丢了结果整批板子Mark点被盖住。7.3 复用已有拼板文件的最佳实践如果你经常做类似尺寸的拼板可以建一个模板文件.brd把工艺边、Mark点、V-Cut线都预先画好。下次拼板时直接另存为替换单板Module就行。这样能省掉大量重复劳动。我自己的模板里全局Mark点、工艺边、邮票孔阵列都是现成的拼板时只需要把单板Module放进去调整一下间距10分钟就能搞定一块拼板。8. 关于Mark点表面处理的补充说明Mark点的表面处理直接影响贴片机的识别效果。常见的表面处理方式有沉金ENIGMark点表面平整对比度好是首选方案OSP成本低但Mark点容易氧化识别效果随时间下降喷锡HASL表面不平整Mark点识别效果一般不推荐沉银识别效果好但容易硫化变黑如果你的板子用的是OSP工艺建议在Mark点位置额外做沉金处理有些板厂支持局部沉金或者在拼板时多放几个Mark点做冗余。个人经验我做过一个项目板厂默认用OSPMark点识别率只有80%左右后来改成局部沉金识别率直接到99.9%。虽然每平米贵了几十块钱但比起贴片不良的损失这点成本完全可以接受。9. 拼板Mark点设计的几个进阶思路9.1 不对称Mark点布局的应用标准做法是Mark点对称分布但在某些特殊场景下不对称布局反而更好。比如拼板上有大尺寸连接器或者异形器件导致某个角落无法放Mark点这时候可以把Mark点放在其他位置只要保证3个点不共线就行。9.2 混合拼板中Mark点的处理混合拼板是指一块拼板上有多块不同的单板。这种情况下全局Mark点仍然放在工艺边上但每块单板的局部Mark点需要单独处理。我的做法是每块单板都加局部Mark点且局部Mark点的位置尽量统一比如都放在单板的左上角和右下角这样贴片机的程序更好写。9.3 Mark点与光学定位点的区别最后澄清一个概念Mark点和光学定位点Optical Locator不是一回事。Mark点是给贴片机用的光学定位点是给AOI自动光学检测设备用的。有些工程师会把两者混用结果AOI检测时找不到定位点。正确的做法是Mark点和光学定位点分开设计光学定位点一般放在单板的角落形状可以是十字形或者圆形。这个内容后续还可以这样扩展如果你用的是Allegro 17.4以上版本可以试试用Advanced Padstack功能把Mark点的阻焊开窗和焊盘做成参数化关联改一个参数两边同步更新省得手动改来改去。另外Allegro的3D Canvas功能也可以用来预览Mark点的实际效果比Film View更直观。