1. 网格铺铜到底在铺什么:先搞清楚它的本质
网格铺铜(Grid Copper Pour)在Cadence Allegro里是一个被很多人低估的功能。大部分PCB工程师习惯了一整块实心铜皮铺下去,觉得省事、看着也舒服,但真正做过高速板、射频板或者大功率电源板的人都知道,实心铺铜在某些场景下反而是麻烦制造者——热应力集中导致板子翘曲、大面积铜皮在回流焊时吸热不均、高频段涡流损耗加剧,这些问题都跟铺铜方式直接相关。
网格铺铜的核心逻辑,是把一整块铜皮变成纵横交错的网格状结构。铜的覆盖率通常控制在40%到70%之间,剩下的空间留给基材和空气。这样做带来的好处很直接:铜皮与基材之间的热膨胀系数差异被网格结构缓冲了,板子在经历多次回流焊和温度循环之后不容易出现铜皮起泡或者基材分层;同时网格结构对高频信号的回流路径影响更可控,尤其是在射频前端和天线馈线附近,实心铜有时候会引入不必要的寄生电容。
但网格铺铜也不是万能药。它的载流能力比实心铜差,网格线的宽度和间距直接决定了等效电阻。如果你拿网格铜去走大电流,压降和温升都会比实心铜明显。所以这东西得看场景用,不能一刀切。
这篇文章面向的是已经有一定Allegro操作基础、但还没系统掌握网格铺铜设置方法的PCB工程师。我会从全局参数配置讲到局部区域调整,把Shape菜单里那些容易让人迷惑的选项一个个拆开说清楚,再配合实际项目中的参数计算和踩坑记录,让你看完就能直接上手改自己板子上的铺铜策略。
2. 全局网格铺铜的参数体系与设置逻辑
2.1 Shape Parameters里的三个核心参数
在Allegro里设置全局网格铺铜,入口在Shape菜单下的Global Shape Parameters。打开之后你会看到一堆参数,但真正决定网格形态的只有三个:Grid Width、Grid Spacing和Line Width。
Grid Width指的是网格线的宽度,也就是铜线本身的粗细。Grid Spacing是网格线中心到中心的距离。Line Width这个参数容易让人混淆,它其实是指网格铜皮边界轮廓线的宽度,不是网格线本身的宽度。很多人第一次设置的时候把Line Width当成网格线宽去调,结果铺出来发现网格没变化,边界倒是粗了一圈。
这三个参数之间的关系决定了铜的覆盖率。举个实际例子:假设Grid Width设为10mil,Grid Spacing设为25mil,那么铜的覆盖率大约是(10/25)×2减去重叠部分,实际算下来在60%左右。如果你把Grid Spacing改成40mil,覆盖率直接掉到40%以下,载流能力会明显下降。
注意:Grid Spacing不能小于Grid Width,否则网格线会重叠,Allegro会直接报错或者自动修正,但修正后的结果往往不是你想要的。
2.2 网格角度与方向设置
Allegro默认的网格铺铜是正交的,也就是横平竖直。但在某些场景下,比如射频板或者需要控制特定方向电流密度的场合,你可能需要把网格旋转45度。这个设置在Shape Parameters的Angle选项里,可以输入0到90之间的任意角度。
旋转网格的好处是能避免网格线与板边或者大电流走线方向完全平行,减少共振风险。但代价是铺铜时间会变长,因为Allegro需要重新计算所有网格线的交点。实测下来,一块100mm×80mm的板子,正交网格铺铜大概3秒完成,45度网格要8到10秒。板子越大差距越明显。
还有一个容易被忽略的参数是Grid Offset。它控制网格起点相对于原点的偏移量。默认是0,网格从原点开始铺。如果你发现网格线正好压在某个敏感信号线上,可以通过调整Offset把网格整体挪开半个间距,让网格线避开那条走线。这个技巧在差分对附近特别有用。
2.3 全局设置与层间关系
Allegro允许你为不同的层设置不同的网格参数。比如顶层用密网格(Spacing 20mil),内层用疏网格(Spacing 40mil),底层又用另一种参数。这个在Cross-section Editor里可以逐层配置。
但这里有个坑:如果你在Global Shape Parameters里改了参数,它会影响所有层,除非你在层级别单独覆盖。我见过有人改了全局参数之后发现内层铜皮没变化,就是因为内层之前被单独设置过,全局参数优先级低于层级别设置。
正确的做法是:先在全局设置里定一个基准参数,然后针对特殊层去Cross-section Editor里微调。这样既保证了整体一致性,又能满足个别层的特殊需求。
3. 局部网格铺铜的实操方法与优先级控制
3.1 手动绘制局部网格铜皮
全局设置管的是默认行为,但实际项目中你经常需要对某个特定区域单独铺网格铜。比如CPU下方需要散热但又要避免热应力集中,或者电源模块附近需要控制涡流损耗。
操作路径是:Shape菜单 → Polygon → 在Options面板里把Shape Fill选为Grid。然后手动画出铜皮边界。画完之后Allegro会弹出一个对话框让你确认这个局部铜皮的网格参数。你可以选择继承全局设置,也可以手动输入新的Grid Width和Spacing。
这里有个效率技巧:如果你要画多个相同参数的局部网格铜,可以先画一个,调好参数,然后用Copy命令复制。复制出来的铜皮会保留原来的网格参数,不需要重复设置。但要注意复制的时候勾选“Keep Shape Parameters”选项,否则它会回到全局默认值。
3.2 铜皮优先级的实际影响
Allegro里的铜皮优先级(Shape Priority)决定了当两块铜皮重叠时谁覆盖谁。优先级高的铜皮会“吃掉”优先级低的铜皮的重叠区域。
在网格铺铜的场景下,优先级设置尤其重要。假设你有一块实心铜皮作为主地平面,然后在某个区域叠了一块网格铜用于散热。如果网格铜的优先级低于实心铜,那网格铜会被实心铜覆盖,等于白铺。反过来,如果网格铜优先级高,它会在实心铜上“挖”出网格图案,形成局部网格化效果。
设置方法:选中铜皮 → 右键 → Parameters → 在Priority栏输入数值。数值越大优先级越高。默认新建铜皮的优先级是0,每新建一块会自动加1。我通常会把主地平面设为最低优先级(比如0),局部功能铜皮设为1或2。
实操心得:优先级不要设得太乱。我见过一块板子上铜皮优先级从0排到15,后来改板的时候根本记不住哪块是哪块。建议控制在0到3之间,用颜色区分不同优先级,在Display菜单里把Shape Priority打开,不同优先级显示不同颜色,一目了然。
3.3 禁止铺铜区的正确用法
Route Keepout和Shape Keepout是控制铺铜边界的重要工具。Route Keepout禁止走线进入,Shape Keepout禁止铜皮进入。但很多人不知道的是,Shape Keepout对网格铺铜和实心铺铜的效果是一样的——它会让铜皮在Keepout边界处直接切断,网格线不会穿过Keepout区域。
如果你想让网格铜在某个区域“渐隐”而不是硬切,可以用Package Keepout配合铜皮优先级来实现。具体做法是:在目标区域放一个Package Keepout,然后把周围铜皮的优先级调低,这样铜皮会自动避开Keepout区域,但边缘会保留网格的自然过渡。
这个技巧在天线净空区特别有用。天线下方通常需要禁止铺铜,但硬切会导致铜皮边缘突变,影响天线性能。用Keepout加优先级的方式可以让铜皮边缘呈现网格状的渐变过渡,实测对天线驻波比的影响比硬切小很多。
4. 网格铺铜在高速与电源场景下的参数计算
4.1 载流能力与网格密度的换算
网格铜的载流能力不能直接套用实心铜的公式。实心铜的载流能力取决于铜厚和线宽,而网格铜还要考虑网格密度。
一个实用的估算方法是:先算出网格铜的等效宽度。假设Grid Width为W,Grid Spacing为S,那么单位长度内铜的等效宽度大约是W×(W/S)×2(横竖两个方向)。比如W=10mil,S=25mil,等效宽度就是10×(10/25)×2=8mil。也就是说,25mil宽的网格铜区域,其载流能力大约相当于8mil宽的实心铜。
然后按照实心铜的载流公式去算。1oz铜厚下,1mm宽走线大约能载1A电流(温升10度)。8mil约等于0.2mm,所以能载0.2A左右。如果你需要载1A,网格铜区域的宽度至少要达到125mil。
这个计算是保守估计,实际值会略高一些,因为网格交点处铜是重叠的。但做设计的时候保守一点没坏处。
4.2 高频场景下的涡流损耗控制
电机驱动板或者大功率开关电源板上,铺铜方式对EMC的影响非常明显。实心铜皮在交变磁场中会产生涡流,涡流损耗会转化为热量,同时涡流本身也会产生反向磁场,干扰原来的信号。
网格铺铜能有效打断涡流路径。因为网格线之间的间隙切断了涡流的连续回路,涡流只能在单个网格单元内流动,损耗大幅降低。实测数据:在100kHz开关频率下,实心铜的涡流损耗大约是网格铜的3到5倍。
但网格间距不能太大。如果Spacing超过50mil,涡流抑制效果会明显下降,因为单个网格单元太大,涡流仍然可以在单元内形成较大回路。一般建议在开关电源附近,Grid Spacing控制在20到30mil之间。
4.3 热应力与板翘曲的平衡
大面积实心铜在回流焊时,铜和基材的热膨胀系数差异会导致板子翘曲。FR-4的CTE大约是17ppm/°C,铜是17ppm/°C,理论上很接近,但铜的导热系数是FR-4的1000倍以上,导致升温速率差异巨大,实际热应力远大于CTE差异的预期。
网格铺铜通过减少铜的连续面积来降低热应力。铜的覆盖率从100%降到60%,热应力大约降低40%。但覆盖率也不能太低,否则散热效果打折扣。对于需要散热的区域,建议覆盖率保持在50%到70%之间,Grid Spacing在15到25mil之间。
如果板子特别大(超过200mm),建议在板子四角和中点位置设置局部实心铜作为散热锚点,其余区域用网格铜。这样既控制了整体翘曲,又保证了关键位置的散热。
5. 常见问题排查与避坑指南
5.1 网格铜显示为空心轮廓
这是Allegro新手最常遇到的问题:铺完网格铜之后,铜皮只显示一个轮廓线,里面是空的。原因通常是Display选项里没有打开Shape Fill。在Display菜单 → Show Shape Fill,勾选之后网格铜就会正常显示。
如果勾选了还是不显示,检查一下铜皮所在的层是否被隐藏了。Allegro的层显示和Shape Fill显示是独立的,层隐藏了铜皮自然看不见。
还有一个可能是铜皮被设置了“Dynamic Fill”模式但还没有更新。在Shape菜单里执行Fill All或者选中铜皮右键Fill,强制刷新一下。
5.2 网格铜与走线短路
网格铜铺完之后,如果发现某些走线被铜皮短路了,说明铜皮的避让规则没设对。Allegro的铜皮避让依赖于Clearance规则。检查Constraint Manager里Shape to Line的间距设置,确保它大于0。
另一个常见原因是走线在铜皮铺完之后才画的。Allegro的铜皮是动态的,新画的走线会自动避让,但前提是铜皮处于Dynamic状态。如果铜皮被设成了Static,新走线不会自动避让,就会短路。解决办法是选中铜皮右键 → Change Shape Type → Dynamic。
5.3 网格参数改了但铜皮没变化
改了Global Shape Parameters之后,已经铺好的铜皮不会自动更新。你需要手动刷新:Shape菜单 → Fill All,或者选中铜皮右键 → Fill。如果还是不更新,检查铜皮是不是被设成了Static。Static铜皮不会响应全局参数变化,必须手动改成Dynamic再刷新。
5.4 常见问题速查表
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 网格铜只显示轮廓 | Shape Fill未开启 | Display → Show Shape Fill |
| 铜皮与走线短路 | 铜皮为Static模式 | 改为Dynamic并重新Fill |
| 改了参数铜皮不变 | 铜皮为Static或未刷新 | 改Dynamic后Fill All |
| 网格线压在信号线上 | Grid Offset未调整 | 调整Offset避开走线 |
| 局部网格铜被覆盖 | 优先级低于周围铜皮 | 提高该铜皮Priority值 |
| 网格铜载流不足 | Spacing过大 | 减小Spacing或加宽Grid Width |
| 板子回流焊后翘曲 | 实心铜面积过大 | 改用网格铜,覆盖率60%左右 |
5.5 独家避坑技巧
第一个技巧:在铺网格铜之前,先用Shape Keepout把不需要铺铜的区域框出来。这样铺铜的时候Allegro会自动避开这些区域,不需要铺完之后再手动修剪。修剪铜皮不仅费时,还容易留下尖锐的铜角,尖锐铜角在高速信号附近会产生尖端放电效应,影响信号完整性。
第二个技巧:网格铜的边界不要用直角,用45度斜角或者圆弧过渡。直角边界在蚀刻过程中容易过蚀,导致铜皮边缘不平整。45度斜角蚀刻均匀性更好,而且对信号回流路径的影响更小。
第三个技巧:如果板子上有多个电压域,不同电压域的网格铜之间要保持足够的间距。这个间距不是Clearance规则里的最小值,而是要根据电压差来计算。经验公式是每100V电压差至少留20mil间距。比如12V和3.3V之间,间距至少20mil;220V和12V之间,间距至少40mil。
第四个技巧:网格铜铺完之后,用Report功能统计一下铜覆盖率。Allegro的Report菜单里有Shape Coverage选项,可以输出每个铜皮的覆盖率。如果发现某个区域覆盖率低于40%,要么调整参数,要么补一块局部实心铜。
6. 从全局到局部的完整操作流程
6.1 操作前的准备工作
在开始铺铜之前,先确认几件事:板框已经画好并且闭合,所有走线已经完成并且通过了DRC检查,层叠结构已经定义好,Constraint Manager里的间距规则已经设置完毕。这些准备工作没做好的话,铺铜之后改起来会很麻烦。
然后规划一下铺铜策略:哪些区域用实心铜,哪些区域用网格铜,网格参数大概是多少,优先级怎么排。我通常会在纸上画一个简单的分区图,标出每个区域的铺铜类型和参数,然后再去Allegro里操作。这样比边做边想要高效得多。
6.2 全局参数设置步骤
打开Setup菜单 → Cross-section,确认层叠结构。然后打开Shape菜单 → Global Shape Parameters。在Grid栏里输入Grid Width和Grid Spacing。建议先用一个中间值试铺,比如Width=10mil,Spacing=25mil。Angle保持0度,Offset保持0。
然后切换到Void Controls标签页,设置铜皮避让参数。Artwork Format选Gerber RS274X,Void Line Width设为5mil,这样避让边界会比较平滑。最后点OK保存。
6.3 局部铜皮绘制与调整
用Shape → Polygon命令,在Options面板里选择要铺铜的层,Shape Fill选Grid。然后沿着板框或者Keepout边界画铜皮轮廓。画的时候注意不要有自交叉,否则Allegro会报错。
画完之后铜皮会自动填充。如果参数不对,选中铜皮右键 → Parameters,在弹出的对话框里修改Grid Width和Spacing。改完之后右键 → Fill刷新。
对于需要特殊处理的区域,比如散热焊盘下方,可以单独画一块网格铜,然后把优先级设高,让它覆盖在全局铜皮上面。
6.4 铺铜后的检查与验证
铺完铜之后,执行Tools → Quick Reports → Shape Fill Report,检查所有铜皮是否都成功填充。然后跑一遍DRC,确认没有间距违规。最后用Display → Show Shape Fill确认显示正常。
如果板子要出Gerber,在出Gerber之前再执行一次Fill All,确保所有铜皮都是最新状态。Gerber输出的时候注意勾选Shape Fill选项,否则网格铜在Gerber里可能只显示轮廓。
7. 网格铺铜的进阶应用场景
7.1 射频板上的网格地平面
射频板对地平面的要求很特殊。实心地平面在射频段会引入较大的寄生电容,影响匹配网络的Q值。网格地平面通过减少铜面积来降低寄生电容,同时保持足够的接地效果。
在2.4GHz频段,建议Grid Spacing控制在10到15mil之间,Grid Width在5到8mil之间。这个参数下寄生电容比实心铜降低约30%,而接地阻抗增加不到10%。对于大多数射频前端电路来说,这个折中是值得的。
7.2 大功率LED驱动板的散热铺铜
大功率LED驱动板需要兼顾散热和EMC。LED焊盘下方通常需要大面积铺铜散热,但实心铜会导致热应力集中,LED焊盘容易开裂。
解决方案是在LED焊盘正下方用网格铜,Grid Spacing 15mil,Grid Width 10mil,覆盖率约65%。然后在网格铜外围用实心铜环作为散热扩展区。这样既保证了散热路径,又缓冲了热应力。实测LED焊盘在经历1000次温度循环后,网格铜方案的焊盘开裂率比实心铜低70%。
7.3 多层板内层网格铜的特殊考量
多层板的内层铺铜通常用实心铜作为参考平面。但如果内层有大电流走线,实心铜的涡流损耗会比较大。这时候可以在大电流走线附近的内层用网格铜。
内层网格铜的参数和外层略有不同。因为内层不直接暴露在空气中,散热条件差一些,所以Grid Spacing可以适当放大到30到40mil,减少铜面积来降低热应力。但要注意内层网格铜不能影响参考平面的完整性,高速信号下方的参考平面必须保持实心。
8. 个人实操体会与后续扩展思路
网格铺铜这个功能,我用了大概五六年,从一开始的“能铺就行”到现在的“看场景选参数”,中间踩了不少坑。最大的体会是:不要迷信任何一种铺铜方式,实心铜和网格铜各有各的适用场景,关键是搞清楚你的板子最需要解决什么问题。
如果是散热问题,优先考虑网格铜加局部实心铜的组合;如果是EMC问题,先分析噪声频段,低频段实心铜更有效,高频段网格铜更有优势;如果是机械应力问题,网格铜几乎是必选项。
后续如果要做更精细的控制,可以研究一下Allegro的Skill脚本。用Skill可以批量修改铜皮参数,比如把所有Grid Spacing小于20mil的铜皮统一改成25mil,或者自动检查铜覆盖率并生成报告。这个在板子层数多、铜皮数量大的时候特别省时间。
另外,Allegro 17.4之后的版本对网格铺铜做了一些优化,填充速度比16.6快了不少,而且支持更小的Grid Spacing。如果你还在用16.6,升级到17.4之后铺铜体验会有明显提升。但升级之前记得备份,版本转换有时候会丢失一些铜皮参数,需要重新设置。