Allegro Z-Copy全面解析:从板框到禁布区的5分钟高效复制
搞PCB设计这些年我几乎每天都要跟板框和禁布区打交道。很多人拿到一块新板子第一件事就是用Allegro手动把板框复制到禁布区层一条线一条线地描既费时间又容易出错。其实Allegro 17.4里自带的Z-Copy功能熟练之后5分钟就能完成板框与禁布区的复制而且精准可靠不会出现线宽、间距不一致的隐患。这篇我就把Z-Copy的用法、参数、应用场景和坑一次性讲清楚新手照着做就能上手老手也可以对照查漏补缺。1. 为什么我用Z-Copy处理板框与禁布区1.1 Z-Copy到底是干什么的Z-Copy直译过来是“Z轴复制”它的本质是把一个已有的闭合图形复制到另一个层面并且可以按你的需要向外扩大或向内缩小一段距离。这个“闭合图形”可以是一块板框、一片铜箔、一个Route Keepin区域也可以是任意一个符合Allegro形状要求的Shape。在17.4版本里Z-Copy的位置在菜单栏的 Edit → Z-Copy命令行直接输入 zcopy 也能调出来。它的出现频率非常高因为PCB设计里大量操作其实都是围绕“边界”展开的板框决定了物理尺寸Route Keepin决定了走线范围Route Keepout决定了禁布区Package Keepin和Package Keepout决定了元件摆放范围。这些边界形状基本都是从板框演变过来的Z-Copy就是专门干这个的。我自己最常用的场景有三个一是把板框外扩5mm做板边的结构避让区二是把板框内缩3mm生成Route Keepin三是把板框原样复制到Board Geometry/Keepout层作为制造端的禁布区。这三个操作如果都用手画至少磨蹭半小时用Z-Copy就是点三下的事。1.2 手动复制和Z-Copy的差距在哪我们容易觉得“板框复制到禁布区”这种操作很简单画个矩形框就行。但真实项目里的板框往往不是规整矩形它有圆弧倒角、有阶梯槽、有异形缺口甚至还有内部挖空区域。这时候手动复制基本就是灾难圆弧要一段段模拟阶梯槽要反复对照原图稍不留神就对不上而且画出来的线多数是散的制造端会报错。更麻烦的是一旦结构改了板框所有基于板框生成的禁布区都要跟着重画一晚上就耗在这上面了。Z-Copy最大的优势是“一次定义精准同步”。它复制的是Shape不是多条散线段所以边界天然闭合、倒角精准后续板框改到哪里重新执行一次Z-Copy覆盖旧区域就行不需要重新描线。这块功能虽然是Allegro的老功能但17.4版本在交互和稳定性上比老版本舒服不少尤其对大板框、多弧线段落的处理更可靠。2. 5分钟起步Z-Copy复制板框与禁布区的完整操作2.1 操作前先确认这几件事不要急着点Z-Copy先把准备工作做好能省掉后面80%的麻烦。第一确认板框所在层和图形是否闭合。绝大多数项目板框放在 Board Geometry/Outline 层但有些团队习惯放在 Manufacturing/Outline 或 Mechanical/Outline。你要清楚自己的板框在哪个Class和Subclass。重点检查板框是否闭合Z-Copy只能作用于闭合的Shape或闭合的线段组合如果板框是断的复制出来的东西也是散的。检查闭合的办法很多最简单的就是用 Shape → Compose Shape 尝试选中板框如果能够组成Shape说明边界完整如果不能就先去把板框修理好。第二确认设计单位。在 Setup → Design Parameter Editor → Design 页面里看 User Units 是Mils还是Millimeter。这事特别重要后面Z-Copy里输入的Offset是直接按当前单位算的单位错了输入5本来是5mm实际变成5mil整个禁布区尺寸就废了。第三确认目标层。你要想清楚复制出来的东西放到哪个Class和Subclass。常碰到的几个目标层我列在后面。2.2 实操流程从板框到Route Keepin下面我以最常见的“板框内缩生成Route Keepin”为例把整套操作拆开讲。在命令行输入 zcopy或者点菜单 Edit → Z-Copy弹出来Z-Copy对话框。看右侧Find面板。Z-Copy默认可以选Shapes也可以选闭合线段。我建议把Find面板里的Shapes、Lines、Arcs这些全选上不然有时候会选不中板框。在Z-Copy对话框里设置参数。先选Size也就是“扩张”还是“收缩”。如果板框是100mm×80mm我要生成一个往里缩5mm的布线区那Size就选 ContractOffset填 5代表的含义是“把板框向内收缩5mm”。如果想生成板边往外扩10mm的结构避让区Size选 ExpandOffset填10。重点设置Class和New Subclass。这一步决定生成的图形放在哪个层面。比如我要做布线约束区就把Class选成 Route KeepinNew Subclass选All。这样生成出来的Shape会在所有走线层生效。点击板框。选中之后Allegro会立刻在目标层生成一个新的Shape。如果你选中的板框是完整的闭合Shape生成过程几乎是瞬间完成的。打开颜色管理器把Route Keepin层的颜色改成与板框区分开的颜色肉眼确认一下生成的区域是否均匀地围着板框走了一圈特别留意圆弧和拐角处。这套流程成手之后30秒一次都算慢的。标题说5分钟搞定其实是把前期准备、单位设置、目标层规划都算进去了真正动手操作非常快。2.3 目标层与Class对照表很多新手卡住不是因为不会点鼠标而是不知道禁布区应该放在哪一层。下面这张表我整理过很多次项目里照着选就行。目标用途ClassSubclass说明板框外形Board GeometryOutline大多数板框默认放在这里制造禁布区Board GeometryKeepout非电气层面的结构避让制造端会参考布线禁布区Route KeepoutAll禁止走线、覆铜、打过孔适用于所有Etch层布线约束区Route KeepinAll强制布线区域只能在Keepin范围内元件禁布区Package KeepoutAll禁止摆放元件元件约束区Package KeepinAll元件只能摆放在Keepin范围内内层负片挖空EtchCAnD或No Etch电源/地平面在负片状态下需要挖空避让这里要特别说明一下Route Keepout和Route Keepin的区别。Keepout是“禁布”里面不能走线、不能覆铜、不能打孔Keepin是“必须在这个范围内布”范围之外的一律不允许布线。实际项目中两个都常用别混。禁布区多用于板边、高压区、结构干涉区约束区多用于整板布线边界让走线自动限制在板内。3. Z-Copy常用场景与参数选择3.1 参数面板逐个拆解Z-Copy对话框里的参数不算多但每个都有讲究。我把17.4版本里常见的选项拉出来逐个讲。SizeExpand是向外扩张Contract是向内收缩。如果你只是想原样复制那选Expand、Offset填0即可。Offset偏移量单位跟随设计单位。这个值可以是正数在实际操作中Offset配合Size使用Size选ExpandOffset就是外扩的距离Size选ContractOffset就是内缩的距离。Offset为0时生成的Shape与源图形完全重合。Class目标层面的Class也就是你想把图形复制到哪一大类。它可以是Route Keepout、Route Keepin、Package Keepout、Package Keepin、Board Geometry等。下拉列表里基本涵盖了所有常用Class。New Subclass具体的小层。同一个Class下面可能有All、Top、Bottom等。如果希望禁布区在所有布线层生效Subclass选All如果只在某一层生效就选对应层名。还有一个容易被忽略的选项是复制时的线宽属性。有些版本允许设置新Shape的Line Width我一般保持默认或设为0避免生成一段段带线宽的粗线影响后续检查。这里提醒一句Z-Copy到底选择“Shape”还是“闭合线段”作为源对象效果略有差别。直接选择Shape生成的是完整的Shape对象适合后续做避让、挖空、覆铜等操作。如果是用闭合线段拼出来的板框Z-Copy也能识别但生成的结果有时候是Polygon而非Smooth Shape在部分版本的DRC检查里可能有点小区别。所以条件允许的话我建议先把板框通过 Shape → Compose Shape 合并成一个真正的Shape再执行Z-Copy。3.2 板框复制与禁布区创建实战组合我举一个实际项目里特别常见的组合一块板框是板厂给的DXF导入的异形板框有6个圆弧倒角、1个半圆槽需要在板边内缩2mm建立Route Keepin再在Route Keepin外侧、板框内侧留出2mm结构禁布区。第一步我会先把DXF导入的线条搞成闭合Shape。选中所有外框线执行 Shape → Compose Shape把外框做成一个ShapeClass和Subclass依旧选 Board Geometry/Outline。第二步用Z-Copy把板框复制到 Route Keepin/All。Size选ContractOffset填2mm。这样生成的Route Keepin就是完美的内缩2mm异形边界圆弧倒角和半圆槽全部保留。第三步再执行一次Z-Copy把板框复制到 Board Geometry/Keepout。Size还是ContractOffset填0mm或者4mm取决于你想让结构禁布区覆盖多大区域。如果做2mm禁布区那就Contract 2mm但要注意这会和Route Keepin重合常规做法是先把Route Keepin做出来再把板框原样复制到Keepout利用Keepout的优先级做避让。实际项目里比较稳妥的做法是板框(Outline) → Route Keepin内缩 → 各层Route Keepout按照结构要求单独挖空。这样逻辑清晰后面检查DRC时也容易定位问题。3.3 配合铜皮与层叠的高级玩法Z-Copy不只是复制板框它还能复制铜皮、复制已有的Keepin区域在某些场景下特别好用。比如多层板设计里内层电源层如果是负片平面我经常要在某些区域把铜挖空给过孔、结构件、高压间距让位。操作方法是先在地层上画好需要避让的区域范围这个范围可以是一块Route Keepout也可以是一块独立的Shape。然后执行Z-Copy把这块区域复制到 Etch/CAnD 层并指定对应网络负片平面就会自动形成开口。这种方式比手动一点点挖空精确得多而且想改范围时重新Z-Copy一次覆盖即可。再比如整板铺铜时某些区域不想铺铜常规做法是在禁布区层(如 Route Keepout/All)画好Keepout再铺铜。但如果你已经有一块现成的Shape比如结构模块的外形可以直接用Z-Copy把它复制成Keepout省去重新画的功夫。这就是Z-Copy的价值它不怕你图形复杂哪怕是一个上千段弧线的异形Shape也能原样复制。说到层叠还有一个思路如果你要在多个信号层同时生成相同的禁布区理论上应该一次操作设Subclass为All但如果你只想在特定几层生成那就分开执行。有些人会写Skill脚本批量做这个属于进阶玩法新手不建议碰先熟悉逐层操作就好。3.4 动态铜皮与静态铜皮对Z-Copy的影响这个点也是很多人踩坑的位置。Z-Copy复制出来的Shape是无属性的它不会自动变成动态铜皮或静态铜皮也不会自动继承网络的电气属性。如果你是把一块铜皮的轮廓复制到禁布区层那它就是一个纯几何Shape只有“限制”作用没有“连接”作用。反过来如果你想把一块铜皮复制到另一层并保持网络需要在复制后重新走网络分配流程或者直接使用其他命令。但如果你复制的源对象本身是动态铜皮并且你目标Class也选的是Etch层某些情况下Allegro会询问是否保留网络。例如在16.x和17.x版本里用Z-Copy把Top层的一块GND铜皮复制到底层如果底层正好也是GND网络复制出来的Shape会自动带GND网络。这个特性很方便但要注意别不小心复制到别的网络层导致网络短路。复制完务必用 Display → Element 查看Shape的网络属性。4. 避坑指南常见问题与排查技巧实录4.1 我踩过的坑第一个坑是板框未闭合导致Z-Copy生成“碎片”。我刚开始用Z-Copy时从DXF导入的板框没做Compose Shape结果执行Z-Copy后生成的不是一个整体而是几十条线段目标层的禁布区东一块西一块DRC报出一堆问题。后来才意识到Z-Copy的复制质量完全取决于源图形的完整性。现在我做Z-Copy前一定会先确认源图形是Shape或者至少是闭合的连续线段。第二个坑是单位不一致导致偏移量差了25.4倍。有一次我在mm单位下画完板框切换到mil单位做Z-Copy看面板还以为是mm结果输入2想内缩2mm实际只内缩了2mil。当时还没发现直到DRC报器件出了Keepin边界才反应过来。所以现在每块新板子开工第一件事就是把单位固定下来中途尽量不切换。第三个坑是Contract和Expand方向搞反。这个说起来低级但压力大时真会犯。想内缩选了Expand结果禁布区跑到了板框外面。我现在的习惯是一旦设置完Size和Offset先在图形上快速瞄一眼目标层有没有出现在正确方向不对就撤销重来别等全板做完了才检查。4.2 问题速查表现象可能原因解决办法复制出来的区域尺寸明显不对设计单位未确认Offset数值单位理解错误打开Design Parameter Editor检查User Units按当前单位重新输入选不中板框板框所在层未激活或Find面板没有勾选对应元素类型打开所有需要的层在Find面板勾选Shapes/Lines/Arcs生成的禁布区不是闭合区域源板框未闭合或线段不连续使用Shape → Compose Shape合并成完整Shape再重新Z-Copy复制结果跑到了错误层面Class或New Subclass选择错误删除生成结果重新选择正确的Class/Subclass圆弧倒角变成多边形复制时线宽或精度设置不当或源图形精度不足保持Line Width为0确认源Shape属性为Smooth而不是StraightZ-Copy命令无法选中任何对象图形被锁定或者当前处于其他编辑模式使用Tools → Database Check清理或解锁对象后重试生成的Keepout对走线不生效目标Class选成了Board Geometry而非Route Keepout删掉后改用Route Keepout/All或根据实际需求选择电气禁布层4.3 让Z-Copy更快的小技巧Z-Copy本身已经很快了但配合一些操作习惯能更快。一是设置快捷键。Allegro 17.4可以在env文件里加一行 alias ZC zcopy之后敲ZC再点回车就能调出Z-Copy省去菜单跳转。我自己的env里还挂了ZCO zcopy方便手指肌肉记忆。二是提前规划好目标层。我通常在开局阶段就把板框、Route Keepin、Route Keepout、Package Keepin这几层的颜色全部配好并且在颜色管理里让这些层保持可见但不显眼。这样Z-Copy之后能第一时间看出结果不用再临时跑去开层。三是配合局部刷新。当你发现上一次生成的禁布区需要改偏移量时不需要删掉旧的再重新来一遍直接再执行一次Z-Copy在相同层生成新的Shape覆盖旧的即可。注意覆盖前要确认旧Shape没有被锁定否则新的和旧的叠在一起DRC会报重复区域错误。四是如果你频繁做“板框→多类禁布区”这套动作可以把常用参数组合保存成一个脚本文件用 script 命令重放。这个属于偏进阶的玩法但对经常做板框版图的人来说确实能把工作量压到极低。5. 关于Z-Copy我还有几句话想说最后分享一下我的实际体会。Z-Copy的功能不复杂但它在整个PCB设计流程里起的作用非常大——它把“边界管理”这件最琐碎的事变成了可复制的标准化操作。我做过不少异形板、电源板、高速板凡是板框后面改过的只要我把禁布区都用Z-Copy生成改动起来都很快结构一变重新执行一次就行不用满板子找散线。我也建议新手不要一上来就追求各种Skill脚本先把Z-Copy本身玩透试着把板框复制到Route Keepin、复制到Route Keepout、复制到Package Keepin再用不同Offset值看看边界变化用异形板框试试圆弧和槽口是否保留。等你什么时候能闭着眼睛把参数设对、不看结果也能预判出禁布区的大致位置你就真正吃透这个功能了。另外补充一点不同版本的Allegro在Z-Copy的UI细节上略有差异但核心逻辑是一样的选源图形、设偏移、选目标层、点击完成。换版本之后先看参数面板不要凭习惯默认选项。希望这篇实战经验能帮你少走一些弯路下一次画板框和禁布区的时候5分钟真的够用。