在Allegro PCB设计中动态铺铜是处理电源、地网络的常规手段而Z-Copy这个命令在处理不规则板边铜皮时几乎可以说是最顺手的工具。板框一旦带斜角、圆弧、异形缺口手动用Shape去描边不仅效率低还容易在拐角处留下间距隐患。这篇文章我就把实际项目里常用的三种Z-Copy生成板边铜皮的方法完整拆开来讲包括参数怎么设、脚本怎么选、坑在哪里适合正在用Allegro做PCB Layout的工程师参考也适合刚接触动态铺铜的新手快速上手。1. 先在脑子里理清思路Z-Copy凭什么能生成板边铜皮1.1 板边铜皮到底解决什么问题板边铜皮最常见的用途是包地也就是沿着PCB板框内侧铺一圈接地铜皮用来提高整板的地连续性减少边缘辐射。在射频板、高速数字板、电源板上都很常见。除了包地板边铜皮还经常用来做边缘散热通道、结构加固区域、屏蔽罩底脚的接触区以及某些需要大面积铺铜的特殊工艺要求。这些场景有个共同点铜皮的形状必须跟着板边走而板框往往不是规则的矩形。如果用Shape - Polygon手动描点一个带圆弧和倒角的板框可能要花十几分钟而且描出来的边界和板框之间很难保证均匀间距。Z-Copy就是专门解决这个问题的它能把已有的闭合图形边界原样“拷贝”成一块新的铜皮轮廓并且支持动态铺铜属性所以生成之后可以直接参与避让、填充和DRC检查。1.2 Z-Copy复制的是边界不是填铜很多人第一次用Z-Copy时会有疑问我明明点的是板框怎么生成出来只有一个轮廓线这里要理解Z-Copy的工作逻辑。Z-Copy本质上是把源图形的边界曲线复制到目标层然后基于这条边界创建一个新的Shape对象。我们在Options面板里选择Dynamic copper生成的Shape就是动态铜皮但默认状态下它可能只显示轮廓需要填充之后才能看到实体。如果选择Static solid生成的就是静态实心铜皮这个在板边包地场景里反而不太灵活因为后续想调整避让间距、挖空、改网络都要手动操作。所以我个人做板边铜皮时基本都会选Dynamic copper让铜皮保持动态属性后面所有修改都能自动联动。这里有一个关键前提Z-Copy只认闭合图形。板框、Route Keepin、Package Keepin、已有的Shape只要边界是闭合的都可以作为源。如果板框是几段散线拼起来的没有闭合Z-Copy会直接报错或者生成出畸形边界。所以在做Z-Copy之前先确认板框是闭合的这一点很多新手踩过坑。2. 方法一用Z-Copy从板框直接生成板边铜皮2.1 基础操作步骤最直接的方法就是从板框Outline图层拷贝到需要铺铜的信号层。我先说操作流程。在Allegro中调用Z-Copy命令有三种方式菜单栏选择Shape - Copy Shape/Z-Copy或者直接在命令行输入z-copy回车又或者通过自己设置的快捷键。我个人习惯用命令输入因为速度快。命令启动后右侧Options面板会切换为Z-Copy的参数界面。这个时候需要设置几个关键项Copy to Class/Subclass目标铜皮层通常是ETCH/Top或ETCH/Bottom也可以是内层信号层。Shape Type选择Dynamic copper。Size选择Expand或Contract并填写偏移值。Line width设置复制边界的线宽一般填0或5mil。设置好之后鼠标点击板框边界Z-Copy就会沿着板框生成一圈铜皮轮廓。如果板框是闭合的一次点击就能生成完整形状。2.2 偏移量该填多少这里有一个实际项目中经常纠结的问题板边铜皮到底要不要紧贴板边我的经验是除非有特殊工艺要求否则不要把铜皮完全贴着板框边沿。原因有两点。第一板厂铣板时有公差铜皮离板边太近可能导致铣刀切到铜皮引起毛刺或铜皮翘起。第二如果你在铜皮上放置了过孔阵列过孔离板边太近也会有工艺风险。所以通常会让铜皮距离板边有一个安全距离比如20mil到50mil。在Z-Copy中实现这个距离很简单。Options面板里Size选择ContractOffset填写20mil生成的铜皮边界就在板框内部20mil的位置。反过来说如果你在某些特殊场景下希望铜皮比板框大一圈比如做焊盘补偿或者工艺边辅助图形那就选择Expand铜皮会向外扩展。这个偏移是等距偏移也就是说对于圆弧、斜边、倒角都会自动做等距处理不会出现某个地方近某个地方远的情况这是手动描边完全做不到的。2.3 板框不闭合怎么处理我在实际Layout中遇到过很多次板框是散线的情况尤其是从DXF导入的板框经常是一堆Line和Arc拼起来的并没有合并成一个闭合的Shape。这时候直接Z-Copy会失败或者生成出来的铜皮有缺口。处理办法是先把板框转成闭合的Shape。可以在菜单Manufacture - Drafting - Create Shape Based on Lines或者使用compose shape命令将首尾相连的线段和圆弧组合成一个Shape。组合之后再用Z-Copy去拷贝这条板框边界就顺理成章了。如果板框中间有缺口或者线段超出闭合范围compose shape也会失败这个时候需要先使用line编辑工具把断点接上。我的习惯是导入DXF之后第一时间检查板框闭合状态避免后面所有依赖板框的操作都出问题。3. 方法二用Route Keepin做中转生成带内缩距离的板边铜皮3.1 为什么需要中转一次方法一虽然简单但有一个局限它生成的铜皮与板框的间距等于你设置的Contract偏移量比如Contract 20mil铜皮就在板框内20mil。这个距离对于板边包地来说是够用的但有些场景下板边铜皮还需要进一步远离板边比如板边要留出拼板V-Cut区域、要避开工艺边、或者板边区域有其他结构件干涉。这种时候如果仍然直接从板框做一次Z-Copy偏移量会设置得很大比如Contract 100mil。但大偏移量在某些异形板框上可能导致铜皮形状严重变形尤其是在内凹位置等距偏移会产生尖角甚至自相交。解决办法是先用Route Keepin做一个中转。Route Keepin本身就是闭合边界而且它通常是走线区域的约束边界在项目里早晚要建。我们可以让板边铜皮和Route Keepin共用一套逻辑先Z-Copy从板框生成Route Keepin再Z-Copy从Route Keepin生成铜皮。通过两次偏移实现精确的最终位置。3.2 两次Z-Copy的偏移组合实际操作是这样。第一次Z-Copy源是板框目标是Route Keepin层Size选择ContractOffset设为60mil这样Route Keepin就在板框内部60mil的位置。第二次Z-Copy源切换到Route Keepin边界目标是ETCH层的Top或BottomShape Type选择Dynamic copperSize里选择ContractOffset设为20mil。这样生成的铜皮边界距离Route Keepin还有20mil折算下来铜皮离板框总共是80mil。如果只需要40mil那就第一次Contract 60mil第二次Expand 20mil也就是Route Keepin内缩60mil之后铜皮再往外扩20mil最终离板框40mil。这种方式的好处是Route Keepin作为中间约束可以长期保留它本身还能限制走线不超出板边太近的区域。等于一次操作同时完成了走线边界约束和板边铜皮生成后期改板框时只需要调整Route Keepin的偏移铜皮跟着更新就行。3.3 方法二的优先级控制在用Route Keepin做中转生成铜皮之后需要注意Route Keepin本身并不是铜皮层它只是约束层不参与电气连接。真正参与电气连接的是后续在铜皮上指定的网络。还有一个和热词“cadence 铜皮 优先级”相关的点如果板边铜皮和板内的其他动态铜皮重叠必须考虑Shape优先级。比如板内已经有了一个大的GND铜皮板边又生成了另一块GND铜皮两块同网络铜皮重叠时会出现优先级冲突或避让异常。解决方法是选中其中一块Shape右键选择Assign to Net后再通过Shape - Select Shape/Fill或者菜单Shape - Shape Priority设置优先级。高优先级的铜皮会覆盖低优先级铜皮保证填充结果符合预期。我个人的建议是板边铜皮如果和板内主地铜皮是同一网络尽量用Merge Shapes合并成一块不要让它们以重叠状态共存这样后续做DRC和出光绘都更干净。4. 方法三借用已有Shape边界生成局部异形铜皮4.1 从其他层拷贝铜皮第三种方法不如前两种常用但在特定场景下非常高效。那就是直接把已有的铜皮边界作为Z-Copy的源拷贝到目标层。举个例子我在做四层板时内层已经画好了一块大面积GND铜皮形状比较复杂包含多个开槽和禁布区。如果顶层也需要同样形状的铜皮手动重画非常浪费时间。这个时候直接调用Z-Copy点击内层那块铜皮边界Options面板里把Copy to Class/Subclass改成ETCH/TopShape Type选择Dynamic copper一次就能在顶层生成同样形状的铜皮。这个操作同样适用于把某一块局部铜皮从Bottom层复制到Top层或者从信号层复制到电源层。它的核心价值是保证不同层之间的铜皮形状完全一致避免因为人工描点造成层间不匹配。4.2 从禁布区或异形Shape生成铜皮还有一种变体用法以禁布区Shape作为源反向生成铜皮。禁布区在Allegro里通常是BOARD GEOMETRY/Keepout或者Route Keepout层边界也是闭合的。比如板框内部有一个异形的结构件区域不能铺铜。传统做法是先整板铺铜再在这个区域挖空。但挖空操作在异形边界上并不方便。另一个思路是先用Route Keepout把异形区域画出来然后用Z-Copy把这块Keepout边界拷贝到铜皮层生成一块单独的“禁铺铜区域边界”再把这部分从整块铜皮中挖掉或者干脆不给这块铜皮赋网络。实际操作中我更推荐的方式是整板生成板边铜皮时使用方法一或方法二然后对于这个异形禁布区域使用Shape - Manual Void/Cavity去挖空。挖空时可以直接选择Z-Copy生成的异形边界作为挖空形状虽然命令不同但Z-Copy在中间承担了“生成精确边界”的角色。4.3 三种方法怎么选三种方法并不是互相替代的关系而是应用场景不同。方法一适合板框规整、板边铜皮间距要求不高的常规板子方法二适合板框异形、需要精确控制板边铜皮距离并且希望走线约束一并管理的场景方法三适合层间复制、局部异形铜皮、以及禁布区边界的利用。下表是我在实际项目里对这三种方法的选择参考方法适用场景优点注意点方法一从板框直接Z-Copy常规板边包地、板框闭合完整操作最快一步完成板框必须闭合偏移量要设置合理方法二Route Keepin中转异形板框、需要精确控制间距、需要同时管理走线区域间距可控边界清晰便于后期调整两步操作略微繁琐Route Keepin必须闭合方法三已有Shape边界拷贝层间铜皮复制、局部异形铜皮、禁布区边界利用形状一致性高避免重复画图源Shape必须闭合注意不同层网络设置5. 细节决定成败Options面板参数逐项拆解5.1 参数含义与合理设置Z-Copy用不好大部分原因出在Options面板的参数理解上。我用一张表把关键参数和推荐值列出来方便参考。参数项作用推荐设置备注Copy to Class目标铜皮的Class通常选ETCH如果做铺铜一定是ETCH做禁布区可以选其他ClassCopy to Subclass目标铜皮所在层Top/Bottom/内层信号层先选择当前激活的层或者手动切换Shape Type生成铜皮类型Dynamic copper板边铜皮用动态铜皮更灵活Size偏移方向Contract或Expand缩进选Contract外扩选ExpandOffset偏移距离20mil-100mil根据工艺要求和板框情况调整Line width复制边界线宽0mil或5mil0mil最干净避免光绘出现细线Net name指定生成的网络GND或PGND等如果留空生成后手动赋网络Delete source是否删除源图形默认不勾选一般不需要删除源这里重点说Line width。很多工程师忽略这个参数结果生成出来的铜皮边界带着一根粗线出光绘时会出现奇怪的环状结构。我建议在Z-Copy时统一把Line width设为0mil生成之后铜皮边界就是纯粹的Shape边界。如果板框本身线宽比较大Z-Copy会尝试按照源图形的线宽属性来复制边界这时候容易引起后续避让计算的误差。5.2 生成的铜皮为什么只有轮廓热词里有一条“allegro铜皮只有轮廓”这是动态铺铜最常见的现象。Z-Copy生成动态铜皮Shape后如果Allegro的Shape Fill设置为Disabled或者状态还没更新铜皮就只显示一个轮廓边框看起来像是没有铺上。处理方式有三种。第一种在菜单Display - Status里打开Shape Fill将Smooth设置为Disabled改成Enabled然后点击Update to Smooth按钮让数据库重新计算动态铜皮填充。第二种选中铜皮右键选择Fill铜皮会实时填充。第三种如果整板铜皮都需要刷新使用菜单Shape - Select Shape or Void然后右键Update to Smooth也可以。这个现象不是Z-Copy本身的问题而是Allegro的动态铜皮机制决定的。动态铜皮默认是“边界属性”的存储方式实际填充结果需要经过数据库更新才能显示。所以看到铜皮只有轮廓不要急着重画先做一次Update to Smooth。5.3 铜皮间距的优先级与避让“cadence 铜皮 优先级”指的是多个动态Shape在同一层重叠时谁覆盖谁的问题。板边铜皮生成后如果和板内其他铜皮重叠Allegro会根据Shape优先级来决定避让关系和填充结果。设置优先级的方法是选中Shape右键选择Set Shape Priority或者在菜单Shape - Shape Priority中调整。数值越大优先级越高高优先级Shape会覆盖低优先级Shape。板边铜皮和板内GND铜皮如果同网络一般不需要优先级因为合并就好。如果不同网络比如板边铜皮是GND板内有一块5V电源铜皮两者重叠时一定要设置优先级否则会出现避让异常或短路风险。避让间距则是在Constraints - Spacing规则里设置的具体是Shape到Shape、Shape到Line、Shape到Pin的间距。板边铜皮距离走线太近时DRC会报错通过调整Shape to Line的间距值可以解决。但我不建议为了消除DRC而盲目调大间距要考虑电气和安全规则。6. 板边铜皮生成后的合并、挖空与出图检查6.1 同网络铜皮合并Z-Copy生成的板边铜皮可能分成多块。比如板框有多个闭合岛屿或者方法二、方法三生成了多个独立Shape它们如果属于同一网络建议用Edit - Merge Shapes把它们合并成一块。合并操作很简单执行命令后依次点击需要合并的铜皮Allegro会把同网络且间距满足DRC的铜皮融合为一个整体。合并之后整块板边铜皮在避让、填充和光绘输出时都更稳定不会出现两块铜皮之间的细小间距问题。如果两块铜皮之间存在间距违规Merge Shapes会失败。此时需要检查两块铜皮之间的间距是否满足规则或者重新设置Offset间距让它们满足规则后再次合并。6.2 挖空与禁布处理板边铜皮上如果有结构件安装孔、螺钉孔区域需要挖空。Allegro提供了Shape - Manual Void/Cavity可以选择Polygon、Circle、Rect等挖空方式也可以像前面说的用Z-Copy生成一个异形边界再作为挖空形状。挖空操作在板边铜皮上很常见尤其是四个角的螺丝孔。我一直建议先把所有安装孔位置确认好再统一生成板边铜皮和挖空避免后续反复调整。挖空完成后要在数据库更新时一并处理否则动态铜皮填充时会忽略挖空区域。6.3 光绘输出前必须做的事板边铜皮属于动态铜皮出光绘之前一定要确保所有动态Shape都已经填充完成。如果状态Status里Shape Fill不是Smooth出图后铜皮只剩轮廓板厂那边根本没法生产。我习惯在出Gerber前跑一遍Shape - Update to Smooth再打开Database Check确认没有Shape异常。同时检查板边铜皮的网络是否正确赋值特别是方法三从一个已有Shape拷贝过来时Net name参数如果不设置生成的铜皮会是No Net这个在DRC中可能不报错但出图后就是一块没有网络的孤立铜皮。7. 常见问题排查与个人经验技巧7.1 问题速查表问题现象可能原因排查思路解决办法Z-Copy点板框没有反应板框不是闭合Shape用compose shape确认板框是否闭合修复板框首尾相连后重新Z-Copy生成的铜皮只有轮廓没有填充动态Shape Fill未开启检查Display-Status里Shape Fill状态Update to Smooth刷新填充铜皮边界与板框间距不均匀板框包含重复线或线宽过大用DXF打开板框图层检查清理板框重复线段Line width设为0Z-Copy生成的铜皮是No NetNet name参数未设置选中铜皮查看网络属性右键Assign to Net赋网络铜皮与走线间距报错Shape to Line间距规则设置不合理查看DRC具体报错坐标在Constraint Manager中调整Shape to Line间距两块铜皮重叠时填充异常Shape优先级未设置检查重叠区域Shape的优先级设置Shape Priority并重新填充方法二生成的铜皮离板边距离不对两次偏移方向或数值设置有误计算每次Z-Copy的Contract/Expand确认最终Offset Route Keepin偏移 铜皮偏移7.2 几个提高效率的实用技巧关于Z-Copy和板边铜皮我补充几个日常操作中总结的经验。第一把z-copy设置成快捷键。在Allegro的env文件里添加一句alias zc z-copy命令行输入zc就能启动Z-Copy省去每次翻菜单的时间。同样可以把shape priority、update to smooth这类常用操作也加上快捷键板边铜皮处理速度会明显提升。第二板框线宽问题。如果板框线宽不是0Z-Copy生成铜皮后铜皮边界会基于线宽中心线计算可能导致铜皮与板框边缘的实际距离偏移了半个线宽。我在处理从DXF导入的板框时会先把板框线宽改为0或者统一清理成闭合Shape再执行Z-Copy。第三利用Skill脚本批量处理。如果经常需要给不同类型的板子生成板边铜皮可以考虑用Allegro Skill写一个小脚本把Z-Copy参数固化比如目标层、Offset距离、目标网络都写死在脚本里点击运行就自动生成。这个对量产板卡尤其有用省得每次手工核对参数。第四板边铜皮的网络选择。板边包地铜皮一般走GND网络但在某些多层板上我会把板边铜皮连接到整个板子的接地锚点区域而不是让他变成一个孤立的GND孤岛。如果板边铜皮区域和主GND网络没有过孔连接它实际上就是一块没有任何回流路径的孤立铜皮对EMC不会有帮助甚至可能成为辐射天线。所以生成板边铜皮后一定要在铜皮上放置足够数量的接地过孔间距一般按包地间距的λ/20来估算工程上1/4波长间距实际操作中每隔100mil到200mil放一个地孔是比较稳妥的做法。第五铜皮与走线的协调。有人问“AD在铜皮里面走线怎么避让了”这在Allegro里同样存在。板边铜皮如果覆盖了走线区域动态铜皮会自动避让走线但这个避让需要你设置了合理的Shape到Line间距。如果发现走线被铜皮切断先检查规则再检查网络。如果是同一网络可以设置Same Net Spacing让铜皮和走线不避让这个对于处理PCB上大电流主干走线和铺铜的连接非常实用。8. 一个完整的板边铜皮生成实战案例8.1 案例背景与参数设定以一块异形蓝牙主板为例板框带两个圆弧倒角和一个内凹缺口板厚1.6mm四层板顶层和底层需要生成板边包地铜皮铜皮离板边40mil铜皮网络为GND后续要在铜皮上打一圈接地过孔。我的参数设定如下源板框OUTLINE第一次Z-CopyCopy to Class/Subclass Route Keepin/ALLShape Type Dynamic copperSize ContractOffset 60mil第二次Z-CopyCopy to Class/Subclass ETCH/TopShape Type Dynamic copperSize ExpandOffset 20mil最终铜皮离板边距离 60 - 20 40mil底层同理复制到ETCH/Bottom。8.2 实操过程记录先在命令行输入z-copyOptions里选择Route Keepin/ALLContract 60mil点击板框生成内缩60mil的Route Keepin边界。接着再输入z-copy这次Options里Copy to Class/Subclass设为ETCH/TopShape Type选Dynamic copperSize选ExpandOffset填20mil。点击刚才生成的Route Keepin边界顶层板边铜皮轮廓生成。生成之后给铜皮指定网络。选中整块铜皮右键Assign to Net填入GND。然后执行Update to Smooth铜皮填充完成。此时检查DRC发现铜皮与板框间距在圆弧区域正常与内凹缺口处的空气桥也没有问题。接着在板边铜皮上放置地孔阵列。我使用Via Array功能沿着板边铜皮区域放置一排0.6mm/1.0mm的过孔间距150mil。放置时注意避开内凹缺口和螺丝孔位并在对应位置做挖空处理。最后运行Database Check确认没有Shape填充错误和DRC违规再出Gerber。板边铜皮的整个处理时间控制在十分钟以内。8.3 案例中的经验总结这个案例用了方法二因为板框异形明显而且项目需要Route Keepin作为走线边界。如果换一块普通矩形板方法一直接Copy Outline然后Contract 40mil就能搞定连Route Keepin都不用建。如果是从其他层拷贝现有铜皮方法三更合适。我在另一个六层板项目里就是把内层一块已经铺好的异形GND铜皮直接用Z-Copy复制到外层然后修改网络和优先级几分钟完成原本需要半小时的铺铜工作。说到底Z-Copy只是Allegro里一个不起眼的命令但把它和动态铺铜的属性机制、Shape优先级、Route Keepin约束结合起来就能衍生出很多高效的板边处理方法。上面这三种方法不是固定的模板你可以根据板子情况组合使用关键是理解Z-Copy在做什么、生成的对象具备什么属性、后续需要如何处理。把这些想清楚不管板框多不规则板边铜皮都能又快又稳地做出来。