那一次板子画好准备投板,板厂工艺打过来电话,说Gerber里看到好几块孤立铜皮,还有一颗电源芯片底部的散热铜皮被切空了。我打开Allegro 17.4的PCB文件一看,问题全出在动态铜皮的参数设置上——孤岛没有按规定清理,热焊盘连接方式也选错了。后来我把整个板子的动态铜皮参数重新过了一遍,才算把投板文件交出去。
这篇文章专门聊Allegro 17.4里铺铜这件事,重点放在动态铜皮的参数设置和孤岛处理。你如果正在用Allegro画PCB,或者刚从其他EDA切过来,对动态铜皮和静态铜皮的差异不太熟,那这篇应该能帮你少走不少弯路。铺铜这件事看起来简单,画个框、填个铜、出个Gerber就完了,但真正决定板子能不能顺利生产、性能稳不稳的,往往是参数面板里那几个不起眼的选项。
1. 铺铜之前,先把动态铜皮和静态铜皮的区别吃透
1.1 动态铜皮的“自动避让”到底是怎么工作的
动态铜皮(Dynamic Copper)在Allegro里的本质是:一块始终在“自我检查”的铜皮。你每改一条走线、每放一个过孔,它都会根据当前所有对象的DRC规则重新计算自己的轮廓,把可能冲突的区域自动让开。同样的网络,走线压过去不会短路,过孔打上去会自动掏出一个环形空隙,板框和Keepout区域也会自动保持安全间距。
这种自动避让是基于Clearance规则实时计算的。你设置走线到铜皮间距是0.2mm,动态铜皮就会在任何一条走线旁边留出0.2mm的空隙;过孔也是同理。换句话说,动态铜皮不是一块“画死”的图形,而是一个“活”的流体,它不断根据周围的障碍物调整自己的边界。
静态铜皮则完全相反。它就像一张贴好的贴纸,你在上面放个过孔,它不会自己让开,必须在Edit菜单里手动修边界,或者用Void工具挖孔。后期布局一改,走线动一下,静态铜皮就可能压到不该碰到的东西,跑完DRC全是短路错误。所以除非你的设计已经冻结、再也不会调整,否则尽量不要在信号层用静态铜皮。
我见过不少从Altium Designer转过来的朋友,习惯性地用静态铜皮画地,结果在Allegro里吃足了苦头。AD的铺铜本身有一点自动避让能力,但Allegro把动态和静态分得很清楚,静态铜皮就是纯手动,不给你任何智能化处理。理解了这点,后面各种奇奇怪怪的问题就都有了解释。
1.2 我看过的铺铜翻车现场,十有八九出在参数而不是画图
很多人在群里问:“为什么我铺的铜没有填满?屏幕上只有一个框,里面是空的。”这种问题百分之九十不是画图操作错了,而是动态铜皮的参数设置不对。最常见的情况是动态铜皮处于未填充状态,或者Fill Style设置成了某种不填充的模式,导致界面上只显示一个轮廓。
另外一类高频翻车是孤岛问题。动态铜皮避让完走线、过孔之后,有些区域被切成了互不相连的小块,其中一部分没有连接任何同网络的引脚,电气上就是死铜。如果Isolated Copper Pour设置不合理,这些小碎铜要么全堆在DRC报告里刷屏,要么被自动删除,但删除时可能误伤了功率器件底部的散热铜皮。
还有一类问题是热焊盘连接方式。很多人全程用Full Contact,也就是焊盘四周全部和铜皮相连,觉得电气连接肯定越好越稳。但在大面积铺铜的板子上,这种设置会让SMT焊接变得很痛苦,芯片底部的散热焊盘连着一大块铜皮,回流焊时热量全被铜皮吸走,焊锡润湿不充分,虚焊率直线上升。
参数面板里每一项都会影响最终铜皮的长相和电气性能。与其在最后关头熬夜修,不如先把参数吃透。下面我就按参数面板的顺序,把关键选项逐个拆开讲。
2. 动态铜皮参数面板逐项拆解:Fill Style、孤岛开关和热焊盘设置
2.1 Dynamic Fill中的Smooth / Rough / Convex怎么选
打开Shape菜单下的Global Dynamic Shape Parameters,第一个要理解的就是Shape Fill标签页里的Dynamic fill,它有Smooth、Rough、Convex三种模式。
Smooth是最重的计算模式,动态铜皮在避让走线和过孔时,会把边界优化成平滑的圆弧,视觉效果最接近最终生产出来的样子。代价是计算量大,板子密度高的时候,每改一次走线,铜皮重新填充都会耗费不少时间。Rough模式下,避让边界以直线切割的方式显示,轮廓看起来比较粗糙,但计算速度非常快,适合设计早期经常调整布局的阶段。Convex介于两者之间,避让边界以凸多边形方式简化,既保留了一定的形状精度,计算负担又没那么大。
我个人的习惯是:设计过程中用Rough,所有布局布线基本定稿之后,投板前把整板切到Smooth,再重新填充一次。为什么要切Smooth?因为最终出Gerber时,铜皮边缘就是你在屏幕上看到的样子。Rough模式下那些生硬的直线切角,生产出来的铜皮也是这个形状。高速板里铜皮边缘的圆滑程度会直接影响阻抗一致性,而普通板子上的尖锐铜皮拐角,在制造时也比较容易出现酸液残留,影响良率。
切换方式很简单:在Global Dynamic Shape Parameters面板里把Fill Style改成Smooth,系统会弹出提示询问是否应用到所有动态铜皮,选择“是”即可。如果没弹出提示,或者铜皮没有自动更新,可以执行一次Shape菜单下的Fill All,强制全部重新填充。
2.2 孤岛处理的核心开关:Isolated Copper Pour
动态铜皮在避让完所有障碍物之后,可能会被分割成好几块互不相连的区域。其中一些区域没有连接任何同网络的引脚或过孔,在电气上和一块废铜差不多,Allegro里管它叫orphan,中文社区一般叫孤岛。
Global Dynamic Shape Parameters的Shape Fill区域里有一个Isolated Copper Pour勾选框,这是孤岛处理的总开关。勾选它,系统就会把孤岛识别出来。配合下方的“Suppress orphans less than”面积阈值,小于阈值的孤岛会被直接忽略,不再生成;大于阈值的孤岛会保留并标记出来,方便你人工确认这块到底能不能删。
这个阈值我一般设在0.5平方毫米左右,具体看板子密度和工艺要求。不要设成0,否则一丁点碎铜都会报出来,DRC窗口能被刷到卡死;也不要设得太大,比如5平方毫米,万一删掉的是电源模块底部的连接铜皮,散热就完了。
这里还要注意一点:Isolated Copper Pour勾选后的自动清理,本质上是“忽略”或者“不生成”孤岛,不是把一块已经存在的铜皮从物理上删掉。如果你在铺铜过程中改了参数,往往需要重新填充一次才能看到效果。而且这个功能在动态铜皮上才有效,静态铜皮的孤岛处理还是得靠手动。
2.3 Common Copper和Isolate Void Comparison有必要打开吗
在参数面板里还有两个选项经常被忽略:Common Copper和Isolate Void Comparison。
Common Copper的作用是,当同一张铺铜区域内有多个同网络的小块铜皮时,让Allegro把它们作为一个整体来处理。说实话,如果不开这个选项,同一个GND网络铺了好几块动态铜皮,系统在DRC检查时可能会把本该属于同一网络的两块铜皮误认为互不相连,导致误报错。打开之后,同网络的所有铜皮会被合并考虑,DRC的错误提示会干净很多。
Isolate Void Comparison则是用来检查动态铜皮内部是否存在与外界不相通的封闭空腔。打个比方,一块大面积铜皮中间出现了一个小洞,但这个洞没有通到铜皮边缘,就形成了一个封闭的“气泡”。这种空腔在制造时容易残留药水,在高压或高频场景下还可能引发局部电场集中。打开这个选项后,系统会自动检测这类封闭空腔并提示你处理。
这两个选项在17.4的界面上位于Shape Fill或Void Controls标签页附近,不同小版本可能略有差异。如果你在界面上找不到,可以按下图思路找:进入Global Dynamic Shape Parameters后,把各个标签页都点开,看到这两个名字勾上就行,它们对设计性能几乎没有负面影响,建议一直开着。
2.4 热风焊盘与散热焊盘的连接方式决定焊接良率
Thermal relief connects这个标签页,很多人从头到尾没进去过。但这里面的设置,直接决定你板子贴片焊接的良率和后期维修拆焊的难度。
标签页里分别对Thru pins(通孔焊盘)、Smd pins(贴片焊盘)、Vias(过孔)三类对象设置与动态铜皮的连接方式。Connect下拉框通常有四个选项:
- Full Contact:焊盘四周全部和铜皮相连,导通阻抗最低,但热量传导也最猛。
- Orthogonal:上下左右四条等宽连线,像十字花焊盘,兼顾电气连接和散热隔离。
- Diagonal:只用四条对角连线,散热隔离效果更好,但载流路径相对弱一些。
- No Connect:焊盘和铜皮电气上完全断开,除非有意做隔离,否则基本不用。
我的推荐组合是:过孔一律用Full Contact,过孔本身面积小,不需要做热隔离,全连接还能增强载流能力;通孔元件焊盘和贴片焊盘一般用Orthogonal;大功率器件下方的散热焊盘,具体看焊接工艺,回流焊工艺成熟的情况下可以用Full Contact,如果手工焊接或维修频繁,建议Diagonal。
很多人全程用Full Contact,觉得电气连接越好越稳,其实在大面积铺铜加SMT焊接的场景下会害死人。芯片下方的GND焊盘连着整片铜皮,回流焊时热量全被铜皮抽走,焊锡很难完全润湿,虚焊率上升。改成Orthogonal或者Diagonal之后,等于故意给热量传导“拆桥”,让焊点能迅速达到焊接温度。这个坑我踩过不止一次,后来每块板子投板前都要专门检查一遍这项设置。
3. 孤岛处理的完整排查链路:发现、误判、清理与验证
3.1 铺完铜之后,用什么方式第一时间发现孤岛
孤岛处理的第一步是发现。不要等板厂打电话来告诉你“哪里有孤岛”,自己在投板前就要主动排查一遍。
最常规的做法是跑DRC。铺完铜、设置好动态参数后,执行一次完整的DRC,然后在Messages窗口里搜“Isolated”或者“Orphan”关键词,正常情况下会列出所有被标记的孤岛坐标。另一种方式是使用Shape菜单下的Check命令,选中某个动态铜皮后,它会针对该铜皮做检查,把孤岛、空隙、连接问题一并在Messages里列出来。
如果你开了Isolated Copper Pour,被识别出来的、超过阈值的孤岛通常会以高亮轮廓显示在屏幕上。这时候打开所有信号层和电源层的显示开关,肉眼扫一遍,重点看那些独立的小块铜皮。还有一种方式是在Display菜单下的Status里查看DRC错误分类统计,如果“Isolated Shape”这一项数量很多,说明孤岛问题比较严重,需要逐个处理。
这里做个简单的小表,方便对照:
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 铜皮只有边框,没有填充 | 动态Fill未开启或处于隐藏状态 | 执行Shape Fill,或检查Fill Style设置 |
| Messages里大量Isolated Shape提示 | 孤岛阈值设置太小,碎铜全被标记 | 调大Suppress orphans less than阈值 |
| 孤岛自动消失了但网络有空洞 | Isolated Copper Pour误删了不该删的区域 | 检查删除区域,用走线或过孔重新缝合 |
| 铜皮边界在Gerber里很粗糙 | 投板前没有切回Smooth模式 | 全局切换Smooth后重新填充 |
3.2 有些孤岛不能直接删,先判断再动手
很多教程会告诉你,勾选Isolated Copper Pour之后,孤岛自动清理,DRC干干净净就完事了。但实际工程里,自动清理可能会好心办坏事。
我第一次用自动孤岛清理时就栽了一个跟头。一块电源板上,MOS管底下有大片铺铜用于散热,结果其中一块散热铜皮和主GND铜皮之间只有一根窄窄的走线连接,被系统判定为孤岛,自动删掉了。板子打样回来后,MOS管温度明显偏高,拿热成像一看,芯片正下方对应的板子背面铜皮区域是空的,热量根本传不过去。
从那以后我养成了一个习惯:清理孤岛之前,先高亮对应网络,看这块孤岛所在的位置。如果它在功率器件下方、天线净空区边缘、连接器固定孔附近,基本都不要直接删。要么把它和主铜皮之间补一条足够宽的连接铜皮,要么放置一个同网络过孔,把它和内层相邻的铜皮缝合起来,让热量和电流有路可走。
判断标准其实很简单:这块铜皮有没有可能参与散热、屏蔽或回流?有,就保;没有,就删。特别是天线馈电区域和高频信号附近的铜皮,它们可能承担着屏蔽和参考地的角色,冒然删掉之后,射频性能可能明显劣化,而且这种问题在电性能测试之前很难发现。
3.3 从自动删除到手动缝合:孤岛清理的三条实操路径
孤岛清理没有一把梭的万能方案,实际工程里通常三条路径结合使用。
第一条是自动路径。在Global Dynamic Shape Parameters里勾选Isolated Copper Pour,设置合理的Suppress orphans阈值,让系统自动不生成小孤岛,或者把超过阈值的大孤岛标记出来。这个方法适合处理那些散落在板子边缘、角落里的碎铜。
第二条是手动删除。对标记出来的孤岛,用Edit菜单下的Delete命令,在Find面板里勾选Shapes,然后逐个点选孤岛删掉。注意删之前确认网络和位置,别把连接铜皮当成孤岛删了。
第三条是保留缝合。如果决定保留某个孤岛,又不想它在DRC里一直报错,就需要把孤岛和主铜皮桥接起来。画一根同网络的走线把孤岛连回主铜皮,或者在孤岛上放一个同网络过孔,让它通过其他层连接。这样孤岛不再是孤岛,DRC自然就安静了。
处理完之后,务必执行Shape菜单下的Fill All重新填充,然后再跑一遍DRC。坐等DRC通过还不够,最好把各层单独显示出来,肉眼扫一遍关键区域,重点看电源网络和地网络的覆盖是否完整。尤其是多层板的内电层,如果参考平面被孤岛和过孔阵列切得支离破碎,信号回流路径会变得很长,EMC表现和信号完整性都会受影响。
4. 投板前最后一遍:铜皮检查清单与高频翻车场景复盘
4.1 投板前必须过一遍的铜皮检查清单
以下清单是我自己在出Gerber之前必查的项目,不按顺序查完就不放心投板。你可以直接复制到自己的checklist里。
| 检查项 | 怎么查 | 常见问题 |
|---|---|---|
| 动态Fill模式是否已是Smooth | Global Dynamic Shape Parameters里查看 | 还是Rough模式,出Gerber边缘粗糙 |
| 孤岛是否已清理或人工确认 | DRC的Isolated Shape项 + Shape → Check | 死铜影响天线、EMC或散热 |
| 电源/地网络覆盖是否完整 | 高亮对应网络,逐层查看 | 中间层电源被切断,电流被迫绕行 |
| 热焊盘连接方式 | Thermal relief connects标签页 | 全连接导致焊接不良或拆焊困难 |
| 铜皮间距规则 | Clearances标签页 | 间距过小,超出板厂工艺能力 |
| 板边安全距离 | 检查Shape到板框的间距 | 铣边时铜皮外露,产生毛刺或短路风险 |
| 禁止铺铜区/Keepout覆盖 | 查看Route Keepout区域 | 天线净空区被铜皮覆盖 |
| 过孔连接方式 | 检查Vias的连接设置 | 大电流过孔连接数量不足 |
每一项检查都有对应的操作入口,在Allegro里做完这些通常只需要十分钟左右,但能避免的返工可能是好几天的量。
还有一个容易被忽略的点:出Gerber前先把板子上所有动态铜皮用Shape → Fill All刷新一次,确保参数修改后的铜皮状态已经是最新的。我见过有人改了Isolated Copper Pour的参数,但没重新填充,Gerber里孤岛原封不动,等于白改。
4.2 场景复盘一:电源模块散热铜皮被切空
有一个很典型的案例。某块电源板,核心降压芯片底部有个大尺寸散热焊盘,PCB下方铺了大片GND铜皮用于散热。结果板子打样回来后,芯片满载工作时温度异常高,红外热像仪看下去,芯片正下方的板子区域温度明显比其他地方低——这说明热量根本没有有效传导过去。
排查后发现,芯片底部散热焊盘周围有几条信号走线穿过,动态铜皮在避让这些走线时,把散热焊盘正下方的铜皮切成了一个孤岛,而这个孤岛与主GND铜皮之间只有一条很窄的走线相连。自动孤岛清理时,这个连接宽度不够,系统把它当成无连接孤岛删掉了。
解决办法是把穿过散热区域的信号走线重新规划,绕到散热焊盘区域之外,让底部铜皮保持足够宽的主连接通道。同时,在芯片散热焊盘周围多打几个GND过孔,让热量可以通过过孔更快传递到内层的完整地平面。处理后温度下降了将近十五度,效果非常明显。
这个案例给我们的教训很直接:功率器件下方的铺铜,绝对不能完全交给自动孤岛清理,必须人工确认这块区域有没有被走线切出隔离带,散热路径是否完整。
4.3 场景复盘二:参考层被过孔阵切成马蜂窝
另一个高频翻车场景是多层板的内层参考平面被过孔阵列切割。
有一块USB 3.0高速板,二十多层板,信号走顶层和第二层,第三层作为完整的GND参考平面。板子打样回来做眼图测试,结果怎么也过不了,信号质量极差。定位过程很痛苦,最后把第三层单独显示出来才发现,整层GND平面被BGA扇出出来的大量过孔打得千疮百孔,过孔之间的铜皮宽度只剩下一点点,GND回流路径被迫绕了很大一个圈子。
这是因为在铺内层GND平面时,把动态铜皮参数里的Clearance规则设置得太激进,过孔和铜皮之间的间距过大,导致过孔之间残留的铜皮非常窄。虽然电压和信号本身没有短路,但参考平面的连续性被破坏了,高速信号的回流电流找不到顺畅的路径,眼图自然就垮了。
处理方法是将该层的过孔到铜皮间距适当改小,并调整部分过孔的布局,让过孔之间保留足够宽的铜皮通道。同时,把Isolated Copper Pour的孤岛阈值调小,避免一些本应保留的连接铜皮被自动删掉。重新填充和出Gerber后,眼图测试恢复正常。从这件事之后,我每块高速板都会特意检查参考平面层的过孔密度和铜皮连续性。
4.4 场景复盘三:射频匹配区域铜皮变形
射频板上的铺铜问题更隐蔽,因为它不会像电源问题那样肉眼可见地发热,而是表现为性能指标的劣化。
某个双频天线匹配电路附近,动态铜皮按照规则,自动避让了好几个匹配元件的焊盘。避让过程中生成了很多不规则的小圆弧和尖角,导致微带线周围的参考铜皮变得七零八落。板子测试时,天线效率始终比仿真结果低不少,回波损耗也偏大。
排查时一开始以为是匹配元件参数有误,换了好几版元件都不对。后来把匹配电路附近的铜皮单独显示出来,发现它已经被动态避让咬得坑坑洼洼,微带线两侧的铜皮宽度忽宽忽窄,参考地的形状完全偏离了仿真模型。
解决办法是在匹配电路区域画一个规整的Route Keepout区域,把铜皮边界人为约束成整齐的矩形。动态铜皮会在这个Keepout边界自动停止,不会再因为避让每一个焊盘而生成乱糟糟的小碎角。铜皮边界规整之后,测试结果和仿真基本吻合了。这个经验也适用于天线净空区、晶振下方、模拟音频区域等对寄生参数敏感的位置——不要完全放任动态铜皮自由发挥,必要时给它画一个“笼子”。
5. 围绕铺铜的效率细节:模板保存、禁止铺铜区和快捷键
5.1 把动态铜皮参数存成模板,新项目直接导入
动态铜皮的参数设置,一旦调好,其实可以复用到后续所有项目。Allegro支持将参数导出为文件,路径通常在File菜单下的Export → Parameters,里面可以勾选Export Dynamic Shape Parameters之类的选项,保存成一个参数文件。新项目建立后,通过Import → Parameters导入,所有孤岛阈值、Fill Style、热焊盘连接方式、Clearance设置就都跟着过来了。
这么做最大的好处是团队统一。如果你在一家公司里负责好几块板子,或者团队有多个人在画PCB,统一一套铺铜参数能减少大量低效沟通。大家用的孤岛阈值、热焊盘连接规则都一样,评审和交接时不用反复解释“为什么你这块板的铜皮和那块板不一样”。
我自己现在每开一个新板子,第一件事就是导入已调好的铺铜参数模板,然后再开始布局布线。参数模板有时会随着工艺改进和踩坑增加做微调,但总体来说省心很多。
5.2 用禁止铺铜区代替手动挖空
在Allegro里,想让某个区域不铺铜,很多人第一反应是在铺好的铜皮上手动挖空。但手动挖空有一个问题:如果后面的布局调整了,或者有人在禁布区域里放了新器件,挖空区域不会自动更新形状。
更好的做法是使用Route Keepout区域。在Route Keepout层画一个Shape,把不想铺铜的区域圈起来,动态铜皮在填充时会自动避开这个区域,而且不需要你手动去和铜皮形状较劲。后期如果禁布范围变了,直接修改Keepout Shape就行,铜皮会自动更新避让结果。
这个技巧在天线净空区、高压隔离区、无线模块下方、对外连接器周围特别常用。我一般在项目初期就把这些禁止铺铜区域全部画好,和板框、结构件约束一起放到布局阶段就确定下来,这样后面铺铜时就不会反复去挖。
5.3 把常用铺铜操作绑成快捷键
Allegro的快捷键设置原本就有,但很多人懒得去配。铺铜相关的操作如果全靠鼠标在菜单里点,一天下来手都点酸了。
在User Preferences或env文件里,可以自定义别名和快捷键。我自己会把动态铜皮添加命令绑定到一个顺手的位置,再把Shape Fill All、全局动态参数面板也绑上快捷键。这样铺铜、刷新、改参数只要按几下键盘就行,效率高不少。如果你刚接触Allegro,也可以先看同事有没有共享的env文件,很多老工程师的env里都积累了几十年的操作习惯,直接拿过来用比自己从零配置快得多。
快捷键的绑定方式在Allegro 17.4里可以通过Setup菜单下的User Preferences打开,并在Search路径里找到env文件位置。把常用的命令别名写进去,重开软件就生效。具体命令名记不清楚也没关系,在命令窗口敲alias命令,系统会列出当前所有别名,照葫芦画瓢往里加就行。
===分割线可删===
我自己在实际项目里养成的一个习惯是,每次铺铜前先把全局动态参数面板打开过一眼,确认Fill Style、Isolated Copper Pour阈值、热焊盘连接方式都符合当前项目的工艺要求,再开始铺。别小看这几分钟,它能在最后关头帮你省下好几个小时的返工时间。铺铜这活儿,参数设对了,后面全是顺风局。