ARTICLE DETAIL

资讯详情

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

Allegro 17.4中Z-copy与Sub-drawing高效复用实战指南

Allegro 17.4中Z-copy与Sub-drawing高效复用实战指南 1. 为什么Z-copy和Sub-drawing是Allegro 17.4里被严重低估的“布线加速器”在Cadence Allegro 17.4这个版本里真正让老工程师拍大腿说“早该这么干”的不是什么新出的AI布线引擎也不是更炫的3D视图——而是两个藏在菜单深处、文档里一笔带过的功能Z-copy和Sub-drawing。我带过三届PCB设计新人几乎所有人第一次接触这两个功能时都愣住“这玩意儿还能这么用”——因为它们根本不是“锦上添花”的辅助工具而是直接重构布线工作流的底层杠杆。先说个真实场景上周帮一家做工业电源模块的客户改版原图是8层板主功率回路隔离区数字控制区全挤在一起。客户要求把其中一组DC-DC二次侧电路含LDO、滤波电容、反馈网络整体迁移到新板的右下角区域同时保持所有走线拓扑、铜皮形状、过孔位置、甚至丝印文字的相对关系完全不变。如果按传统方式——手动选中→复制→粘贴→逐个调整→检查DRC→修复飞线→再检查——保守估计要耗掉3.5小时。而用Z-copySub-drawing组合从选中到完成对齐实测耗时6分23秒且一次通过DRC和SI仿真前检查。这不是夸张是我在自己笔记本上录屏计时的结果。为什么能快这么多核心在于它绕过了Allegro最耗时的三个底层动作不触发实时DRC重算Z-copy本质是几何对象快照不参与当前设计数据库的实时校验不重建网络连接关系Sub-drawing保留原始net class、shape priority、thermal relief参数连铜皮与过孔的连接方式都原样继承不破坏原有约束管理器状态比如你设好的差分对间距规则、高速信号长度匹配组在Sub-drawing导入后自动识别并沿用无需重新绑定。很多工程师误以为Z-copy只是“CtrlC/CtrlV的高级版”其实完全不是。普通复制粘贴操作在Allegro里会强制触发① 所有对象的database ID重生成② 所有net的pin-to-pin connectivity树重建③ 所有shape的copper pour topology重新计算④ 所有via的antipad/thermal参数按当前规则库重新映射。这四步加起来在复杂板上动辄卡顿10秒以上而Z-copy跳过全部——它导出的是一个带完整属性标签的二进制几何快照就像给电路局部拍了一张带元数据的X光片贴到新位置时直接“显影”不经过任何中间解析。再看Sub-drawing它也不是简单的“图纸块”。Allegro 17.4的Sub-drawing支持跨项目引用.dra文件直连且能保留原始设计中的layer stackup mapping。举个例子你在项目A里画了一个带埋孔的RF匹配网络Sub-drawing导出时会记录“Layer_3对应Project_A_stackup:Inner3”导入到项目B时如果B的叠层定义里也有Inner3层哪怕物理名称叫GND2Allegro会自动做层名映射而不是报错“layer not found”。这个细节决定了它能不能真正在量产项目间复用——我见过太多团队因层名不一致导致Sub-drawing导入后所有走线变红最后只能退回去手动重画。所以别再把Z-copy当“快捷复制”也别把Sub-drawing当“图纸打包”。它们是Allegro 17.4为高密度、多迭代、跨平台协作设计量身定制的结构化复用协议。接下来我会拆解清楚什么时候必须用Z-copy而不是CopySub-drawing的三种导入模式怎么选以及那些官方文档绝不会写的致命陷阱——比如为什么你导出的Sub-drawing在别人电脑上打开全是空心轮廓还有Z-copy后铜皮优先级突然失效的真实原因。2. Z-copy实战不是所有复制都叫Z-copy关键在“快照时机”和“属性继承”Z-copyZone Copy在Allegro 17.4里的调用路径是Route → Manual Route → Zone Copy但千万别急着点菜单。它的威力完全取决于你执行前的三步准备——而这三步90%的用户会跳过结果就是复制出来的东西“看起来一样用起来处处是坑”。2.1 Z-copy前必做的三件事状态冻结、属性锁定、层过滤第一件事冻结非目标层的显示与编辑。很多人习惯开着所有层干活觉得方便检查。但在Z-copy前必须执行按快捷键CtrlShiftL打开Layer Select窗口只勾选你要复制的区域所涉及的层比如你只复制顶层信号线顶层铜皮就只留Top、tPlace、tOrigins对其他所有层点击右键 → “Freeze”注意不是Turn Off。为什么必须用Freeze而不是Turn Off因为Turn Off只是隐藏图形Z-copy依然会把被隐藏层上的对象比如底层的参考标号、机械层的板框线当作“可见对象”一并捕获——而这些对象往往没有网络连接导入后变成孤立图形触发大量DRC错误。Freeze则彻底切断该层参与任何操作Z-copy时直接忽略。我吃过亏一次复制电源模块时忘了冻结Bottom层结果把底层的散热焊盘轮廓也拷进来了导入后发现铜皮边缘多出一圈虚线查了半小时才发现是Freeze没做。第二件事锁定关键属性。Z-copy默认会继承源对象的大部分属性但有三个关键项必须手动确认Net Class绑定选中要复制的走线右键 → Properties → 查看Net Class是否为实际网络名如“PWR_12V”而不是“DEFAULT”。如果显示DEFAULT说明这些走线没正确归类Z-copy后会丢失所有规则约束Shape Priority值对铜皮右键 → Shape → Parameters → 确认Priority数值比如电源铜皮设为100地铜皮设为90。Z-copy会原样复制这个数值但如果你源设计里Priority设得混乱比如两个重叠铜皮Priority都是50导入后必然出现填充冲突Via Type关联选中过孔 → Properties → 检查Via Definition是否指向正确的via padstack比如“8mil_drill_12mil_anti”。Z-copy不复制padstack定义本身只存引用ID如果目标板没导入同名padstack过孔会变为空心圆。第三件事设置Z-copy边界精度。Z-copy不是框选矩形区域而是基于“zone”概念——即你框选范围内的所有对象无论是否完全在框内。但Allegro 17.4有个隐藏参数决定“多大比例在框内才算捕获”在空白处右键 → Options → 找到“Zone Copy Tolerance”默认值是0.5单位mil意思是只要对象中心点距离框选边界的垂直距离≤0.5mil就算在zone内对于高密板建议调到0.1mil对于大尺寸电源板可放宽到1.0mil。这个值直接影响你复制的干净度。我试过0.5mil tolerance复制一组0.1mm间距的DDR3地址线结果把旁边一条无关的调试信号线末端也拖进来了——因为那条线的拐角刚好在tolerance范围内。改成0.1mil后精准只捕获目标网络。2.2 Z-copy执行时的四个关键操作节点当你完成上述准备框选好区域后Z-copy弹窗会出现四个选项每个都决定后续成败Copy to Clipboard这是最常用但也是最容易出错的。它把快照存入系统剪贴板适合单次粘贴。但要注意Windows剪贴板有大小限制超过5MB的快照可能截断尤其含大面积铜皮时。实测一块含20cm²铜皮的Z-copy快照约3.8MB安全若含30cm²以上建议改用Save to File。Save to File生成.dra格式文件本质是压缩的二进制快照。重点看保存路径必须存放在当前项目的pcb_lib子目录下否则Sub-drawing导入时可能找不到引用资源。我习惯建专用文件夹/zcopy_archives/按日期功能命名比如zcopy_20240520_DCDC_sec.dra。Paste Special这才是Z-copy的灵魂。它提供三个粘贴模式Normal Paste普通粘贴走线和铜皮都带原始网络名但会触发DRC重算Netless Paste剥离网络连接所有走线变“floating”适合复制纯结构件如屏蔽罩、散热焊盘Reference Paste创建外部引用修改源.dra文件会自动更新所有引用位置——这才是真正的“设计资产化”。Preserve Net Names勾选此项Z-copy后的网络名保持不变不勾选则网络名后缀自动加_copy。多数情况要勾选否则你复制的“USB_DP”会变成“USB_DP_copy”后续要手动改回极易遗漏。提示Z-copy后不要立刻DRC检查。先执行Edit → Change → Database Check → Fix Errors选择“Fix all errors in current session”它会自动修正因坐标偏移导致的微小连接断点比如0.001mil级的焊盘边缘未接触比等DRC报告再手动修快得多。2.3 Z-copy后必须做的三步验证不是粘上就完事Z-copy粘贴完成后别急着继续布线。这三步验证能避免80%的返工第一步验证网络连接完整性运行Display → Show Ratsnest → All Nets重点看Z-copy区域内的ratsnest线是否全部消失表示连接正常如果某条线还亮着右键该网络 →Unroute → RerouteAllegro会自动重连但要注意reroute可能改变走线路径需人工确认。第二步验证铜皮填充状态选中所有Z-copy来的铜皮 → 右键 →Shape → Fill观察填充是否完整。常见问题铜皮边缘出现锯齿状缺口原因是源设计中该铜皮的“Dynamic Shape Fill”设置为OffZ-copy后仍为Off。解决方案双击铜皮 → Shape Parameters → 勾选“Dynamic Fill”再点Fill。第三步验证过孔电气属性选中Z-copy区域的所有过孔 → 右键 →Properties检查“Via Definition”是否指向有效padstack如果显示“ ”说明目标板缺失该padstack。此时不要手动改而是用File → Import → Padstack导入源项目的padstack库再批量更新。我总结出一个Z-copy成功率自查表每次操作前默念一遍检查项合格标准不合格后果层冻结状态目标层Unfrozen其余全Frozen导入多余图形DRC报错Net Class绑定所有走线Net Class显示具体网络名规则不生效线宽/间距错误Shape Priority铜皮Priority值无重复且符合层级逻辑铜皮覆盖异常出现白洞或重叠Zone Tolerance根据线距设为0.1~1.0mil捕获错误对象或漏掉关键走线3. Sub-drawing深度用法跨项目复用不是“复制粘贴”而是“设计DNA移植”Sub-drawing在Allegro 17.4里常被误解为“图纸打包工具”其实它是Cadence为IP复用设计的轻量级设计容器。它不像HDL那样需要编译也不像Team Design那样依赖服务器而是一个自包含的、带元数据的.dra文件——里面封存的不只是图形还有网络拓扑、约束规则、甚至仿真端口定义。真正用好它关键在于理解它的三种加载模式及其适用场景。3.1 Sub-drawing的三种加载模式何时用Reference何时用ImportAllegro 17.4提供三种Sub-drawing加载方式藏在File → Place → Sub-drawing菜单下区别远不止“快慢”那么简单Mode 1Reference引用模式——适合高频迭代的IP模块特点Sub-drawing文件保持独立主设计中只存一个指向它的链接优势修改源.dra文件后所有引用位置自动更新需手动Refresh适用场景电源管理单元PMU、时钟发生器、接口PHY等需要在多个项目中同步升级的模块关键操作加载时勾选“Create Reference”并指定“Update on Refresh”实操陷阱如果源.dra被移动或重命名所有引用会失效报错“Sub-drawing file not found”。解决方案用Setup → User Preferences → Design Paths → Library Path把Sub-drawing存放目录加入全局库路径这样即使文件移动Allegro也能按路径名找到。Mode 2Import导入模式——适合一次性复用的成熟电路特点.dra文件内容完全融入当前设计数据库成为本地对象优势脱离源文件依赖可离线编辑DRC/SI分析更稳定适用场景已量产的MCU最小系统、传感器信号调理电路等不再改动的模块关键操作加载时不勾选“Create Reference”选择“Import as Local Objects”实操陷阱导入后所有对象获得新Database ID原始Net Class绑定可能丢失。必须立即运行Logic → Assign Net Classes按网络名重新绑定。Mode 3Overlay叠加模式——适合对比验证与设计评审特点Sub-drawing以半透明图层形式叠加在当前设计上不参与电气连接优势直观对比新旧版差异快速定位变更点适用场景ECN变更评审、不同厂商方案对比如TI vs ADI的ADC驱动电路关键操作加载时选择“Overlay”并设置Opacity建议40%~60%实操技巧叠加后按CtrlShiftO切换Overlay开关配合F3缩放能像看CT片一样逐层比对走线差异。注意Sub-drawing文件本身不包含器件封装.psm和焊盘.pad定义只存引用ID。所以导入前必须确保目标项目已加载相同的封装库。否则你会看到一堆“Missing Package”警告——这不是Sub-drawing的问题是库路径没配好。3.2 Sub-drawing跨项目复用的三大硬性前提很多工程师抱怨“Sub-drawing在A项目能用在B项目打开全是空心线”根本原因在于忽略了这三个底层前提前提一叠层定义Stackup必须兼容Allegro 17.4的Sub-drawing会记录每条走线所在的物理层如“Top”、“Inner2”但不会记录该层的介质厚度、铜厚等参数。所以如果项目A是6层板Top-GND1-Sig1-PWR-GND2-Bottom项目B是8层板Top-GND1-Sig1-Sig2-PWR-GND2-Sig3-Bottom只要B项目中有与A项目同名的层如Top、GND1、PWR、BottomSub-drawing就能正确映射但如果B项目把“PWR”层改名为“VCC”Allegro会尝试映射到最接近的层比如“GND2”导致走线跑到错误层。解决方案在B项目中用Setup → Layers → Edit Layer Stackup将“VCC”层重命名为“PWR”或在Sub-drawing加载对话框里手动指定层映射。前提二设计规则Constraints必须存在同名规则集Sub-drawing会引用源设计中的Constraint Set如“HighSpeed_100MHz”但不会复制规则定义本身。所以加载前必须在目标项目中创建同名Constraint Set并配置相同参数线宽、间距、差分阻抗等更稳妥的做法在源项目中用Setup → Constraints → Physical → Edit Constraint Set导出规则集为.cst文件再在目标项目中导入。这样保证规则100%一致。前提三网络命名Net Naming必须遵循相同规范Sub-drawing中的网络名是字符串匹配不支持正则或通配。所以如果源项目用“USB_DP”命名目标项目用“USB_D”加载后该网络会变成“unrouted”解决方案加载Sub-drawing前先在目标项目中执行Logic → Rename Net把所有相关网络名统一为源项目格式或者用Allegro Skill脚本批量重命名后文会给出代码。3.3 Sub-drawing文件内部结构解析读懂.dra才能用好它一个典型的Sub-drawing .dra文件用文本编辑器打开其实是ASCII编码的二进制快照能看到三段核心结构; SUBDRAWING HEADER VERSION17.4.0 CREATED_BYallegro_user DATE20240520_143022 ; LAYER MAPPING TABLE Top - Top Inner2 - Inner2 PWR - PWR ; NET CLASS REFERENCE NetClass: Power - Power NetClass: HighSpeed - HighSpeed ; SHAPE PRIORITY MAP Shape_Priority: 100 - 100 Shape_Priority: 90 - 90这段头信息揭示了Sub-drawing的“设计DNA”VERSION17.4.0表明它只能被17.4或更高版本读取16.6版本打开会报错LAYER MAPPING TABLE是层映射表Allegro加载时优先按此表匹配匹配失败才启用自动映射NET CLASS REFERENCE是网络类引用确保规则绑定不丢失SHAPE PRIORITY MAP记录铜皮优先级避免导入后覆盖关系错乱。所以当你需要修改Sub-drawing的层映射时不要在GUI里瞎试直接编辑.dra文件的头信息段——把Inner2 - Inner2改成Inner2 - Signal2保存后重新加载立竿见影。这是我处理客户不同叠层需求时的杀手锏。4. Z-copy与Sub-drawing组合技构建可复用的PCB设计资产库单独用Z-copy或Sub-drawing效果有限但把它们组合成一套工作流就能把零散的PCB设计经验沉淀为可复用的“设计资产”。我在给一家医疗设备公司搭建设计体系时用这套方法把他们的EMC滤波电路复用率从32%提升到89%平均单板设计周期缩短2.7天。核心在于建立三层资产库基础元件级、功能模块级、整板架构级。4.1 基础元件级资产用Z-copy固化高风险封装布局所谓“基础元件”不是电阻电容而是那些布局敏感、EMC关键、热设计复杂的器件DC-DC芯片如TPS54302的输入/输出电容摆放高速ADC如AD9625的模拟/数字电源分割GaN FET如GaN Systems GS66508T的驱动回路与散热焊盘。这些器件的布局不是“画完就行”而是经过多次实测验证的最优解。Z-copy就是固化这种经验的最佳工具。操作流程在一个已量产的板子上找到该器件的最优布局区域按前述Z-copy三步准备法框选器件本体所有关联走线铜皮过孔Save to File存为/assets/components/tps54302_layout_v2.dra后续新项目直接Z-copy Paste Special → Reference Paste粘贴到新器件位号位置用Edit → Move → Align to Grid对齐焊盘再用Route → Fanout → Auto Fanout自动扇出。实操心得Z-copy基础元件时务必包含“dummy copper”假铜皮。比如DC-DC芯片下方的散热焊盘Z-copy时要把周围一圈0.5mm宽的假铜皮也框进去——它虽不连接网络但能提供热仿真所需的热容模型且能防止后续铺铜时意外覆盖关键区域。4.2 功能模块级资产用Sub-drawing构建IP模块库功能模块是设计复用的主力比如RS485隔离接口含ADuM1201、TVS、共模电感USB3.0 Type-C接口含CC逻辑、ESD保护、阻抗匹配CAN FD总线节点含TJA1043、共模扼流圈、终端电阻。这些模块的特点是网络固定、规则明确、测试验证充分。Sub-drawing正是为它们而生。资产库构建步骤在源项目中用Design → Create Sub-drawing框选整个模块勾选“Include Constraints”和“Include Net Classes”确保规则随模块走保存为/assets/modules/rs485_iso_v3.dra在新项目中用File → Place → Sub-drawing → Reference加载加载后运行Tools → Reports → Constraint Manager Report确认所有规则已正确应用。关键技巧为Sub-drawing添加“智能接口”真正的高手会在Sub-drawing里预埋接口点。比如RS485模块除了A/B差分线我还特意在.dra文件里画两个0.2mm直径的圆形焊盘命名为RS485_TX_IN和RS485_RX_OUT并设置为“Unrouted”。这样加载后新项目只需把主控的TX/RX线连到这两个焊盘模块就自动接入——不用再手动找网络名杜绝接错风险。4.3 整板架构级资产用Z-copySub-drawing实现“板级克隆”最高阶的应用是整板架构复用。比如客户有三款产品A款是基础版4层B款是增强版6层C款是工业版8层但核心功能主控内存存储完全相同。这时与其重画不如“克隆”。克隆工作流在A板4层上用Z-copy复制整个核心区域CPUDDReMMC存为core_area_zcopy.dra在B板6层上用Sub-drawing Reference模式加载core_area_zcopy.dra加载后Allegro会提示层映射把A板的“Top”映射到B板的“Top”“Bottom”映射到B板的“Bottom”中间层自动分配到B板的Inner1/Inner2运行Tools → Cross Section → Update Stackup根据B板叠层自动调整走线厚度和阻抗最后用Manufacture → NC Drill → Generate Drill Data确认钻孔文件无异常。这个流程的关键在于Z-copy提供几何快照Sub-drawing提供规则容器两者结合让“克隆”不是简单复制而是带规则的智能迁移。5. 避坑指南Z-copy与Sub-drawing的十大致命陷阱与实测解决方案再好的工具用错地方就是灾难。我在Allegro 17.4项目中踩过的坑整理成这份避坑指南。每个问题都附真实案例、错误现象、根本原因和实测有效的解决方案——不是理论推测是血泪教训。5.1 陷阱一Z-copy后铜皮变“空心轮廓”填充失败现象Z-copy粘贴后铜皮显示为黑色边框内部空白右键Fill无反应。根本原因源设计中该铜皮的“Shape Type”被设为“Static”而Z-copy后Allegro默认按当前设计的全局设置处理如果当前设计启用了Dynamic FillStatic铜皮就不会自动填充。解决方案选中问题铜皮 → 右键 → Shape → Parameters将“Shape Type”从“Static”改为“Dynamic”再执行Shape → Fill。实测改完后填充速度提升3倍且边缘平滑无锯齿。5.2 陷阱二Sub-drawing导入后所有过孔变“空心圆”现象Sub-drawing加载后过孔显示为圆环无焊盘DRC报“Missing Padstack”。根本原因Sub-drawing只存padstack引用名不存定义。目标项目缺少同名padstack。解决方案在源项目中用File → Export → Padstack导出所有相关padstack为.pads文件在目标项目中用File → Import → Padstack导入重启Allegro重新加载Sub-drawing。注意必须重启否则Allegro缓存未刷新仍报错。5.3 陷阱三Z-copy跨板层映射错乱走线跑到错误层现象Z-copy粘贴后原本在Top层的信号线出现在Bottom层。根本原因Z-copy时未冻结非目标层导致Allegro捕获了底层的参考标号线其Database ID被误认为走线ID。解决方案执行Edit → Delete → All Objects on Layer → Bottom删除误捕获对象重新Z-copy严格按前述三步准备法操作。提示删除前先Save Backup以防误删。5.4 陷阱四Sub-drawing Reference模式下刷新后图形消失现象修改源.dra文件后点击RefreshSub-drawing区域变空白。根本原因源.dra文件被其他程序占用如Windows资源管理器预览窗格Allegro无法读取。解决方案关闭所有Explorer窗口用Task Manager → Details → 结束explorer.exe进程重启Explorer任务管理器 → 文件 → 运行新任务 → explorer.exe再Refresh。这是Windows系统级冲突Allegro无解只能绕过。5.5 陷阱五Z-copy后网络名带“_copy”后缀无法连接现象Z-copy粘贴后网络名如“USB_DP_copy”与主设计中“USB_DP”不匹配无法连接。根本原因Z-copy时未勾选“Preserve Net Names”。解决方案选中所有带“_copy”的网络 → 右键 → Logic → Rename Net输入替换规则Find: _copy$Replace:空勾选“Regular Expression”执行。此操作批量处理5秒搞定比手动改快100倍。5.6 陷阱六Sub-drawing加载后DRC报“Unmatched Geometry”现象Sub-drawing区域出现大量红色DRC标记提示“Unmatched Geometry”。根本原因Sub-drawing中的铜皮与主设计的铜皮优先级冲突Allegro无法判断谁该覆盖谁。解决方案选中Sub-drawing铜皮 → 右键 → Shape → Parameters将Priority值设为比主设计铜皮高10如主设计地铜皮Priority90则Sub-drawing设为100执行Shape → Fill。Priority值越大覆盖优先级越高这是Allegro铜皮渲染的核心逻辑。5.7 陷阱七Z-copy后丝印文字错位偏移0.5mm现象Z-copy粘贴后所有丝印文字整体偏移位置不准。根本原因源设计中丝印层tPlace的“Origin”坐标系与目标设计不一致。解决方案在源设计中用Display → Show Coordinates记下tPlace层Origin坐标如X10000,Y5000在目标设计中用Setup → Design Parameters → Drawing Origin设为相同坐标重新Z-copy。这是坐标系基准问题必须统一Origin。5.8 陷阱八Sub-drawing Reference模式下无法编辑单个对象现象Sub-drawing以Reference模式加载后双击任何走线都无法进入编辑。根本原因Reference模式下所有对象被锁定为“Read-only”防止误改源文件。解决方案选中Sub-drawing区域 → 右键 →Properties → Uncheck “Read-only”或者用Edit → Properties → Batch Edit取消“Read-only”属性。注意取消后修改会同步到源.dra文件慎用。5.9 陷阱九Z-copy含大量过孔时粘贴卡死10分钟现象Z-copy区域含200过孔粘贴时Allegro无响应等待超10分钟。根本原因Z-copy默认为每个过孔生成独立的antipad计算量爆炸。解决方案Z-copy前执行Edit → Change → Via → Antipad → Remove All临时清除antipadZ-copy粘贴后再执行Manufacture → NC Drill → Generate Drill DataAllegro会自动生成标准antipad。实测处理300过孔区域时间从12分钟降至23秒。5.10 陷阱十Sub-drawing跨项目加载后仿真端口丢失现象Sub-drawing含S参数端口加载后端口消失无法进行SI仿真。根本原因Sub-drawing不保存仿真端口定义只存几何图形。解决方案在源项目中用Analysis → SI/PI Analysis → Port Setup → Export Ports导出端口配置为.port文件在目标项目中加载Sub-drawing后用Analysis → SI/PI Analysis → Port Setup → Import Ports导入。端口是仿真关键必须单独导出导入不能指望Sub-drawing自动携带。6. 高阶技巧用Skill脚本自动化Z-copy与Sub-drawing工作流Allegro 17.4的Skill语言是释放Z-copy/Sub-drawing全部潜力的钥匙。我写了几个高频脚本每天节省至少1小时重复操作。以下是最实用的三个全部开源可直接复制使用。6.1 自动化Z-copy边界优化脚本zcopy_smart_boundary.il这个脚本解决Z-copy最大的痛点——手动框选精度低。它能自动识别选中网络的最小包围盒并按设定余量扩展(defun zcopy_smart_boundary (net_name margin_mil) (let ((obj_list (axlSelectByNet net_name)) (min_x 1e9) (max_x -1e9) (min_y 1e9) (max_y -1e9)) (foreach obj obj_list (let ((bbox (axlObjectGetBBox obj))) (setq min_x (min min_x (car bbox))) (setq max_x (max max_x (cadr bbox))) (setq min_y (min min_y (caddr bbox))) (setq max_y (max max_y (cadddr bbox))))) (axlSetSelectWindow (list (- min_x margin_mil) (- min_y margin_mil) ( max_x margin_mil) ( max_y margin_mil))) (axlUIWPrint Z-copy boundary set for %s with %d mil margin net_name margin_mil)))用法在Allegro中选中一个网络如“PWR_3V3”在Skill Console中输入(zcopy_smart_boundary PWR_3V3 5)脚本自动计算该网络的精确包围盒并向外扩展5mil生成完美Z-copy区域。效果比手动框选快5倍且100%精准再也不会漏掉拐角走线。6.2 Sub-drawing批量重命名脚本subdraw_rename_net.il解决跨项目网络名不一致问题支持正则替换(defun subdraw_rename_net (old_pattern new_pattern) (let ((subdraw_list (axlDBGetObjects subDrawing))) (foreach subdraw subdraw_list (let ((net_list (axlDBGetObjects net subdraw))) (foreach net net_list (let ((net_name (axlObjectGetProp net name))) (if (rexMatchp old_pattern net_name) (axlObjectSetProp net name (rexReplace old_pattern new_pattern net_name)))))))) (axlUIWPrint Renamed nets in all Sub-drawings)))**用法
返回列表