ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

PCB设计必知:孤岛铜的产生、定位与清理指南

PCB设计必知:孤岛铜的产生、定位与清理指南 前阵子改一块四层板的板框原本是规矩的长方形客户临时要求改成L形异形板。我花了半小时把Board Shape和机械层整理好然后Repour全板顶层GND铜皮一刷新边缘瞬间多出几十块悬空的碎铜分布在板框内外的都有。发给制板厂之后工厂工程直接在确认邮件里贴图问我这些铜皮要不要留。这就是孤岛铜也叫Dead Copper、Orphan Copper。说直白点就是一块没有和任何同网络导体相连的铜皮。它在网络列表里可能叫GND也可能干脆是No Net但它没有任何实际作用——不导电、不散热、不屏蔽反而可能在PCB加工过程中造成蚀刻残留、药水残留、铜皮起翘。这篇文章把我在Altium Designer里定位、清理、预防孤岛铜的完整做法聊透按日常改板时遇到的实际顺序来写不绕弯。1. 孤岛铜是怎么“长”出来的三个最容易踩中的生成场景很多朋友一上来就问“孤岛铜怎么删”但我建议先花两分钟搞懂它是怎么来的。孤岛铜绝大多数不是设计者故意画出来的而是灌铜过程中被“切”出来的。想通了这一点后面怎么清理、怎么预防思路就全通了。1.1 灌铜参数变化导致铜皮被重新切碎最典型的情况是这样的板上原本有一片完整的GND铜皮后来你在铜皮上方加了一排过孔或者把某条电源走线加粗了。走线在铜皮中间穿过直接把铜皮区域劈成两个子区域——左边有GND过孔右边一个都没有。Repour的时候AD会根据新的边界重新计算可填充区域右边那块就被判定为“没有连接目标”生成之后就是一块孤岛铜。这里要理解多边形铺铜的生成逻辑它在指定的边界范围内扣掉所有与铜皮网络不同的导体、禁布区域、板框外的部分再根据Clearance间距算出剩余区域。剩余区域还要根据“是否与同网络连接点连通”来判定是否保留。连接点指的就是同网络的Pad、Via、Track。所以任何一次改动只要动了铺铜边界的形状、增加了新的挖空区域、改变了网络连接关系Repour之后就可能爆出一堆孤岛。1.2 板框和Keepout修改后的边缘残留第二种常见来源是板框变化。把Board Shape从矩形改成L形之后原本缩回去的角落区域已经不在板框范围内Repour应该把它裁掉。但这里有个前提铜皮必须是有网络的并且这个网络在板内还有有效的连接点。如果铜皮本身是No NetAD不会自动把它当作“该死铜”处理板外的碎铜就会一直留着你勾不勾Remove Dead Copper它都可能原地不动。Keepout区域也存在类似情况。在铜皮中央放一个圆形禁布区如果这个禁布区把一块区域完全圈住区域内既没有焊盘也没有过孔Repour之后这一小块就会被判定为孤立区域变成典型的孤岛。尤其是异形板、多挖空设计的板子这种Keepout切出来的碎铜数量非常可观。1.3 切铜、分解多边形与网络替换的连带副作用第三类来源比较隐蔽很多人根本没想到。用Slice Polygon切分多边形挖掉特定区域时AD会按切割线生成新的铜皮块。如果只保留其中一部分另一块没有连接目标的铜皮不会自动消失它会作为孤岛残留下来。用Explode Polygon把铜皮分解为自由图元之后铜皮脱离自动灌铜机制。后续Repour All不会重新生成被炸开的铜皮内部的碎铜只会越来越多。把一个铜皮的网络从GND改成AGND如果原来的铜皮上只有GND过孔、没有任何AGND过孔Repour之后这块铜皮就会变成AGND网络的孤岛。这种问题极其隐蔽因为铜皮位置没变、形状没变看起来没有任何异常只有检查网络连接时才暴露。所以我有个习惯遇到孤岛铜先别急着删。看一眼它是哪个网络、从哪次改动之后出现的如果刚做完某个操作就冒出来直接CtrlZ回到改动前可能比手动删几十块碎铜快得多。2. 先定位再动手用DRC和连通性选择把孤岛一块块揪出来定位之前先说一个原则屏幕上的铜皮层层叠叠靠肉眼一格一格扫屏去找孤岛一定会漏。尤其是多层板底层铜皮被上层导线挡住视觉干扰非常大。AD本身提供了两套靠谱的定位思路一个是自动检查一个是手动反选。2.1 DRC中的Un-Routed Copper让规则检查替你报坐标AD的规则系统里有一项专门针对多边形铺铜连通性的检查名称叫Un-Routed Copper中文界面翻译为“未布线铜”或“未连接铜”不同版本翻译有差异。它的作用就是检查多边形铺铜中是否存在没有连接到本网络其他导体的孤立铜区。操作路径不复杂打开Design Rules进入PCB Rules and Constraints Editor。左侧规则树里展开Electrical类目找到Un-Routed Copper。确认这项规则处于启用状态在线检查Online和批量检查Batch都可以勾上。关闭规则编辑器执行Tools Design Rule Check。在DRC对话框里找到Rules To Check按钮进入后只勾选Un-Routed Copper这一项。这一步很关键不然整板几千条间距、线宽报告混在一起你根本找不到孤岛记录。运行检查Messages面板里会列出所有Un-Routed Copper Constraint违规项每条都带坐标。双击报告项可以直接跳转到对应位置。这个坐标通常就是孤岛铜的中心或边缘放大后能看到高亮对象。我实测下来DRC对普通有网络铜皮的孤岛识别非常准基本不会被误报。2.2 Connected Copper的反向筛选选中范围暴露真相DRC能解决的场景很多但偶尔也有拿不准的情况。比如DRC报告了某个坐标跳转过去之后发现那块铜皮好像有连接又好像没有。这时候用Connected Copper功能做一次反向验证就非常有效。操作方法是单击你怀疑的那块铜皮然后执行Edit Select Connected Copper编辑 选择 相连铜皮。AD会从当前选中对象出发把所有与它物理相连的同网络导体全部选中。判断逻辑很简单如果选中范围只有这块铜皮自己没有任何Pad、Via、Track跟着亮那它基本可以断定是孤岛。如果连带选中了走线、过孔、焊盘说明这块铜皮真的连到网络里去了删除前要慎重。这个技巧对单块铜皮的确认非常高效唯一的限制是它一次只能从一个起点触发不适合全板批量扫描。所以我的完整流程是先用DRC把明确的孤岛坐标全拉出来删除后再对任何拿不准的铜皮用Connected Copper复核。2.3 层筛选与相似对象选择多铜皮叠加时减少视觉干扰铜皮高发区域的视觉干扰是个很现实的问题。同一块区域顶层有铜、底层有铜、中间层可能还有电源平面你明明想选中顶层的孤岛鼠标点到下面其他层铜皮的情况经常发生。解决办法是让显示变“干净”一些。双击任意铜皮在属性面板里能看到它的Layer和Net信息。右键选择Find Similar Objects查找相似对象可以按Layer、Net、Object Kind等条件筛选出同一批铜皮然后统一高亮、统一观察。多层板可以在View Configuration面板里关闭非目标层的显示或者按快捷键ShiftS进入单层显示模式只看当前编辑层的铜皮和走线。还有一个小提示不要直接在大面积铜皮上用框选方式圈选删除这样太容易误选和铜皮重叠的其他元素。框选永远是最后手段能点选就点选能用DRC跳转就用DRC跳转。3. 三种清理手段的实测对比直接删、属性选项、批量重灌铜定位完成之后就是清理环节。清理手段根据孤岛数量分三档数量少手动删除数量中等靠Remove Dead Copper选项数量大配合Polygon Manager批量Repour。下面按顺序实测复盘。3.1 手动拾取删除的正确姿势手动删除是基础操作但很多人连“选中铜皮”这个动作都做得不对。Solid实心填充模式下单击铜皮填充区域内部一般会选中整个多边形Hatched网格/栅格模式下单击网格线区域才能选中。如果点到铜皮外边框选中可能是边框线本体Delete之后会留下铜皮残片。选定后确认状态栏显示的是Polygon对象再按Delete删除。如果之前用过Explode Polygon铜皮已经被拆分成多段自由图元Delete只会删掉你点中的那一段需要反复Delete直到删干净。手动删除适合孤岛数量少、位置分散的板子。数量一多人的注意力会疲劳很容易漏掉一两个隐蔽角落。我个人只在小板、双层板或孤岛不超过十块的场景下手动处理。3.2 Remove Dead Copper选项的真实工作逻辑Remove Dead Copper是AD多边形铺铜自带的防孤岛机制中文界面可能显示为“移除死铜”或“删除孤立的铜”。它位于多边形铺铜的设置区域里双击铜皮打开属性面板就能看到。很多人的误区是以为勾上这个选项现存孤岛就会立刻消失。实际上不是。勾选之后必须重新灌铜Repour这块多边形AD才会按照新设置重新生成铜皮自动把死铜剥掉。只勾不Repour选项等于白设。另外这个选项是针对单块多边形的不是全局开关。板子上有十块铜皮你只勾了其中一块那另外九块依然会产生孤岛。我每次新建铺铜时都会确认这个选项勾上了Repour All之前再逐一检查一遍。实测中Remove Dead Copper最可靠的使用场景是大面积铺地平面尤其板上有很多GND过孔和缝合孔的情况。Repour之后所有无法与任何GND过孔连通的小铜岛会被自动清除效果非常稳定。3.3 Polygon Manager与Repour All的批量先后顺序当整板铜皮数量很多或者刚改完板框需要全板刷新时单块Repour显然不现实。这时候用Polygon Manager配合Repour All是标准做法。打开Tools Polygon Pours Polygon Manager面板里会列出当前PCB上的所有多边形铺铜对象包括每块铜皮所在的层、网络、以及当前是否需要重新灌铜的状态。在管理器里可以直接选中某块铜皮跳转到PCB视图也可以调整铜皮之间的优先级。Repour All在多边形菜单里可以找到也可以在任意铜皮上右键进入Polygon Actions子菜单选择Repour All。执行后AD会按铜皮优先级顺序把所有需要更新的多边形重新灌一遍。这里有一个顺序问题必须提醒先把每块铜皮都改成需要的属性勾上Remove Dead Copper、确认网络、确认层级再执行Repour All。不要在Repour All之后又去改其中一块铜皮的属性那样其他铜皮不会跟着更新等于白跑了一遍。另外Repour All是有可能不可完全撤销的。虽然AD有Undo机制但铜皮数量多、网络复杂时撤销后经常出现某些铜皮没有恢复到原状的情况。所以执行Repour All之前一定要保存工程至少可以退回去。4. 勾选Remove Dead Copper也拦不住的漏网之鱼实测中的翻车场景如果你的板子已经勾了Remove Dead Copper也跑了Repour AllDRC Un-Routed Copper也跑了结果板子上还是存在孤岛基本就是下面三种情况。这三种我都在实际项目里遇到过逐个说清楚。4.1 No Net铜皮没有归属网络AD就无法判断死活第一种是最常见的漏网之鱼铜皮的Net属性是No Net。Remove Dead Copper判断死铜的逻辑是一块有网络的铜皮是否连接到了本网络的其他导体如果没有连接就判定为死铜。但No Net铜皮压根没有网络归属等于没有参照物AD无法判断它该不该留。现象就是板框外挂着一块铜皮属性里Net是No NetRemove Dead Copper勾了Repour All跑了DRC也没报告它仍然原地不动。我在板框修改后经常碰到这种改板框之前板内铜皮可能是有网络的板框一缩网络连接点全被切掉Repour时AD生成了一块No Net的独立铜皮后续各种检查都拿它没办法。解决方案只有手动选中删除或者把它手动指定到某个真实网络后再Repour。预防措施也很简单大面积铜皮尽量绑定真实网络不要用No Net铺铜。板外的零碎铜皮在收尾时专门检查一遍。4.2 机械层Keepout很多“切不开”的根源第二种情况跟Keepout设置有关。有些工程师习惯在Mechanical 1层画禁布区域用来表示“这里不要铜皮”。结果Repour之后铜皮照样从那条线下面铺过去或者只切了一部分边缘全是碎铜。原因在于多边形铺铜的裁剪边界只认板框Board Shape、Keepout对象和不同网络的导体。机械层线条在AD里属于普通图元不是灌铜边界AD不会拿它去裁铜皮。你把禁布区画在机械层从视觉效果上好像“挡住了”但灌铜引擎根本不看这一层。正确做法是把禁布区域画在Keepout层或者直接在对象属性里勾选Keepout选项。例如用走线、填充或区域对象在Top Keepout层画一个范围再Repour铜皮才会被真正裁掉。注意Keepout承载层要和你想要裁掉的铜皮层对应想让顶层和底层都不铺铜就用Multi-Layer的Keepout对象。4.3 功能性死铜连通了但存在意义存疑的地铜第三种情况最微妙不是软件能自动判断的。有些铜皮明明连着网络Connected Copper能选中一整片DRC也不报任何错误但从功能设计角度看它就是不该留。我举个例子射频板上一块GND铜皮只连了一个GND过孔但位置紧贴敏感射频走线。从网络连接角度它不是死铜但它的存在相当于给信号路径旁边竖了一根额外的耦合天线对噪声抑制没有任何帮助。这种铜皮属于“功能性死铜”软件无法识别只能靠设计师根据布局和信号走向判断。我的经验是在射频或高频信号附近看到“只连一个过孔、面积又很大”的地铜时要格外敏感。要么给它补足够的地过孔阵列让它真正成为地平面的一部分要么干脆删掉不要留半吊子。低频数字板里这种问题不那么敏感但板子只要走高频信号这块就值得认真对待。5. 进阶玩法写一个小脚本按网络批量清理孤岛如果板子改了很多版每次都能生出一堆孤岛靠手工删除确实折腾。这时候可以考虑写一个小脚本做批量清理。AD的脚本系统不算难我用DelphiScript写过类似的清理工具分享下思路。5.1 脚本解决什么问题脚本的核心任务很简单遍历PCB板上所有多边形对象把“有网络但没有连接到任何同网络导体”的铜皮找出来记录坐标或者直接删除。对几十块铜皮的整板而言这种批量扫描比人眼一个个翻快得多也不会漏掉隐藏在角落的小碎铜。但脚本删除有一个致命问题操作不可完全撤销。如果脚本逻辑有一点瑕疵可能把一些边缘情况误判为孤岛并删除恢复会非常麻烦。所以我的建议是脚本第一阶段只做报告不执行删除。先把疑似孤岛的坐标、所在层、网络名输出到Message面板或导出文本文件人工或DRC复核后再手动清理。跑通几次确认逻辑没问题了再加删除功能。5.2 实现思路与伪代码脚本逻辑大致分五步获取当前PCB板对象。遍历所有Polygon多边形铺铜对象。读取每块多边形的Net属性。如果Net为No Net直接列入可疑列表。如果Net存在查找同网络的所有Pad、Via、Track判断它们是否与这块多边形存在物理连接。如果没有任何连接就判定为孤岛。用DelphiScript风格写出来大概是这个雏形// 伪代码需按具体AD版本调整API var Board : IPCB_Board; Iterator : IPCB_BoardIterator; Poly : IPCB_Polygon; begin Board : PCBServer.GetCurrentPCBBoard; Iterator : Board.BoardIterator_Create; Iterator.AddFilter_ObjectSet(MkSet(ePolygonObject)); Iterator.AddFilter_LayerSet(AllLayers); Iterator.AddFilter_Method(eProcessAll); Poly : Iterator.FirstPCBObject; while Poly nil do begin // 1. 读取 Poly.Net 名称 // 2. 若为 No Net标记为可疑孤岛 // 3. 若网络存在查找同网络Pad/Via/Track // 判断是否与Poly连通 // 4. 无连接则输出坐标到Messages面板 Poly : Iterator.NextPCBObject; end; Board.BoardIterator_Destroy(Iterator); end;这段代码只是思路版本AD不同版本的Scripting API有差异函数名和对象属性会有出入实际使用时到你安装的AD版本安装目录下查一下对应文档。Ad的是否能直接调用物理连接判断不能物理连通性判断逻辑比听起来复杂得多尤其当走线从铜皮内部穿过、或者同一网络存在多块铜皮时需要处理的情况很多。5.3 脚本的适用范围和边界实测下来脚本适合的场景是大批量、规则相对单一的同网络铜皮比如整板的GND铜皮。它的优势是稳定、全面、一次扫完劣势是无法处理“功能性死铜”也没办法判断“这块铜皮连了一个过孔但连得不合理”。所以脚本只能作为DRC的补充不能完全替代人工判断。如果你不想写脚本其实DRC加Connected Copper已经能覆盖90%的场景。脚本更多是给那些每周都要改板、天天跟孤岛搏斗的工程师提供一个省时间的出口。6. 从源头减少孤岛铜铺铜策略和操作习惯聊完清理和坑最后说说怎么少折腾。清理手段再强也不如让孤岛根本不出现。我自己的铺铜阶段基本上固定了一套流程执行下来孤岛数量比早期凭感觉操作时少了太多。6.1 铺铜前固定板框和禁布区板框Board Shape、Keepout、板内挖孔这些边界条件一定要在铺铜开始之前全部确定。不要边铺铜边改板框更不要先铺完一整板铜再去改L形角、加螺丝孔挖空。每一次改边界整板的铜皮网络连接关系都可能被重新洗牌孤岛就会一批批地冒出来。异形板尤其要注意。L形、圆弧下部、不规则缺口这些位置天然就是孤岛的高发区。角落和狭小窄带区域的铜皮Repour后经常因为间距不够变成孤立小块。如果板框还没最终确定可以临时用Keepout把不确定的区域先封掉等板框定型再放开铺铜。6.2 同网络铜皮与Clearance设置多边形铺铜的属性面板里有Net Options区域其中有一个关于覆盖同网络对象的下拉选项准确名称是Pour Over Same Net Objects中文可能是“覆盖同网络对象”。选择覆盖所有同网络对象或覆盖同网络铜皮会让同一网络的多块铜皮尽量合并而不是各自为战。铜皮合并得越好被切出碎岛的概率越低。Clearance间距也不能无脑设太小。间距越小可生成的细窄铜带就越多这些细窄铜带在生产环节更容易被蚀刻分离看起来也像孤岛。很多新手喜欢把铺铜间距压到0.1mm以下追求所谓“高利用率”结果反而制造出一堆细碎铜条。在满足电路板工艺规则的前提下把铺铜间距稍微放宽一点孤岛数量会明显下降。另外如果为了抑制噪声而给大面积铜皮加Via Stitching过孔阵列注意尽量均匀分布。过孔疏密不均会在铜皮内部形成复杂的切割边界Repour时容易把大片铜皮切成零碎小片。6.3 灌铜后的自查流程一个小习惯减少返工我的个人习惯是每完成一次Repour All立刻跑一遍DRC里的Un-Routed Copper。即使当时不准备清理也先看一眼报告数量。数量从几十块变成零心里才有底如果跑了之后数量反而上升说明这次改动引入了新的边界问题趁早回退。出Gerber之前再跑一遍。因为钻孔文件、板框文件在CAM工具里会再次“切割”铜皮有些碎铜只有在CAM视图里才暴露出来。用CAM工具或者AD自带的Output Job打开覆铜层对比一眼确认没有多余的浮铜再下单。最后补一条经验无论用哪种方法清理孤岛都不要在完全没保存的情况下直接按Delete。铜皮操作最忌讳的就是改了一堆才发现想回退但回不去。保存工程、执行操作、验证结果这个顺序任何时候都不要乱。
返回列表