Allegro覆铜Unassigned与Out of Date修复指南
2026/9/24 13:07:12 网站建设 项目流程

画完一整块板子,布线、铺铜、跑DRC都做完了,正准备出Gerber交付,打开Display -> Status一看,Out of Date Shapes 显示12个,Design Checklist里还跳出一个Unassigned Shapes提示。这时候大多数人的第一反应是“完了”,其实大可不必。这两个状态是Allegro里覆铜最常见的“待办事项”,只要搞清楚了它们各自的机制,修复就是几分钟的事。这篇文章我想把Unassigned和Out of Date Shapes从原理到实操完整讲透,顺便把我在实际项目里踩过的坑也一并交代清楚,适合正在用Cadence Allegro做PCB设计、尤其是被覆铜状态报错困扰过的工程师参考。

1. 先搞清楚这两个状态到底在说什么

1.1 Allegro覆铜的两种类型:动态铜与静态铜

Allegro里的覆铜Shape分成两种:动态铜(Dynamic Shape)和静态铜(Static Shape)。这个分类不是随便起的,它决定了Shape在网络分配和自动更新上的行为,也是理解Unassigned和Out of Date的前提。

动态铜是参数化的,它的边界(Boundary)和属性(网络、间距、热风焊盘等)都保存在设计数据库里。你在板上画一个矩形框,告诉它“这里是GND”,剩下的物理填充由Allegro的灌铜引擎实时计算。旁边加一根走线、打过孔、移动器件,动态铜都会自动避让,不需要手动去改。这就是为什么大多数覆铜都建议用动态铜,尤其是电源和地平面,省心。

静态铜就没这么“聪明”了。在Allegro里选中一个Static Shape,它就是一个固定的图形,像一块贴上去的铜皮。周围设计变化了,它不会自动退缩,你需要手动编辑边界、手动打Void(挖空)。RF模块、特殊形状的导热铜块、某些需要精确控制的区域,用静态铜是合理的,但你也要接受它不参与自动更新的现实。

明白了这两种类型,你会发现:Unassigned和Out of Date这两个状态,绝大多数发生在动态铜上。静态铜如果没分配网络,它显示的是静态铜自己的属性;静态铜不需要“更新”,因为它没有可重新计算的参数边缘。

1.2 Unassigned意味着这块铜皮没有“认领人”

Unassigned从字面上理解,就是“未分配”。在Allegro里,一块Shape一定要挂在一个网络上才有意义——它要么是GND,要么是VCC_3V3,要么是某个信号网络。如果Shape的网络属性是空的(NULL),Allegro就叫它Unassigned Shape。

这就像一栋楼里有一间办公室没有分配任何人,物理上它是存在的,但没有任何使用权限。铜皮也一样:Unassigned的铜皮在板上确实是一块导体,但它不会连到任何引脚、任何过孔、任何走线,它在电气上是孤立的。

这里有个隐藏的风险:Unassigned铜皮在DRC(设计规则检查)里通常不会被报错。它不是短路,也不是开路,那些“脚”根本没连上,所以你扫一遍DRC往往是干净的。生产上更麻烦,制造工程师拿到Gerber后,看到一片不符合任何网络逻辑的铜,可能会留着一块悬空铜皮,或者把它并入旁边网络——结果就是板子回来后这块区域的表现和你预期完全不一样,有可能是额外耦合,也有可能是电源阻抗异常。

很多工程师遇到Unassigned的第一反应是“我没画过这个啊”,但Allegro不会凭空产生Unassigned Shape,它一定是被某种操作带进来的。这个我们在第二章详细排查。

1.3 Out of Date意味着铜皮数据过期了

Out of Date字面意思是“过期了”,在Allegro中指的是:这块动态铜的参数边界已经变了,但实际的铜皮填充还没有重新计算。

动态铜工作的方式是:设计者定义边界和规则,灌铜引擎负责计算。如果只是这个Shape边界本身没变,而周围环境变了——比如旁边多了一根走线、加了一组过孔、某个器件换了引脚位置——那么原来算好的那层铜皮就“过期”了。它没有反映最新设计状态。

用生活化的类比:你把一个沙盘里的沙子按城市路网铺好了,突然来了个人在旁边挖了一条水渠,沙盘上的沙子不会自己塌陷进去,你需要重新抹一把沙子。在Allegro里,“抹沙子”就是Update Shapes(重灌铜)。

Out of Date的形状在显示上可能看不出问题,因为旧铜皮还“粘”在原来的位置。可一旦出Gerber,输出的就是这份旧数据。如果恰好有引脚挪进了铜皮区域,旧铜皮会把两个不该连的网络搭在一起,生产出来的板子直接短路,这种问题在实验室里特别难排查,因为你在PCB上看到的铜皮形状和实际Gerber里的铜皮形状不一致。

2. 哪些操作最容易制造出Unassigned覆铜

2.1 手动绘制Shape后忘记赋网络

这是最朴实无华的原因。很多人(包括我早期)喜欢从工具栏选Shape,直接在板上框一个矩形或多边形,画完后急着调位置、改大小,就忘了在Options面板里选Net。画完的Shape默认是Unassigned。

这类Shape通常有一个特征:它的颜色和旁边的有网络铜皮不一样。Allegro里每个网络可以单独设置显示颜色,如果整版都是GND绿色,一块没有网络颜色、呈层默认色的铜皮,就是典型的Unassigned。

2.2 用Z-Copy从板框或走线复制生成Shape

Z-Copy是Allegro里非常常用的功能,用来把板框(Board Outline)或者固定走线轮廓复制成Shape,多用于创建整板地平面或内层电源平面。但Z-Copy有个特点:复制出来的Shape不会继承源对象的网络属性,默认就是Unassigned。

我在做一个四层板项目时,电源平面是用Z-Copy从Outer Layer复制board outline创建的。当时我在Copy to Sublass里选好了层,结果全部创建完成后忘了原来Z-Copy出来的形状是没有Net的。后面做DRC怎么都查不出问题,直到出光绘前检查网络连接性才发现,整片VCC平面是悬空的。那次之后我给自己定了个规矩:Z-Copy创建出来的Shape,第一件事就是Assign Net。

2.3 跨文件复制粘贴、模块复用和版本导入

Allegro支持跨板复制元素。从A板复制一块铜皮到B板,如果B板里没有A板对应的网络名,这块Shape就认不出原来的网络。它找不到归属,就变成Unassigned。

模块复用(Placement Reuse或Module Reuse)是同样的道理。复用的Module里如果带了Shape,而这个Shape引用的网络在新板里不存在,状态就是Unassigned。更隐蔽的情况是,新板里确实有同名网络,但复用时网络编号不同,Allegro不会智能配对,只会把Shape置为Unassigned。

版本导入就更常见了。从旧版本Allegro升级到新版本工程,或者从PADS/AD转换过来的文件,网络信息在中间格式转换时丢了一部分,铜皮就掉了网络。网表层面看引脚连接都对,但Shape这种“附加对象”的映射就比较脆弱。

2.4 网络表更新后网络被删除或改名

这个坑藏得更深。你原本放了一块GND铜皮,后来某个原理图改动,网络表里把GND这块区域改成了AGND,或者干脆删掉了某个网络。Allegro更新网表后,如果旧网络不存在了,原来挂在旧网络上的Shape会变成Unassigned。

所以一个经验法则:每次做完原理图同步、重新导入网表后,都要去检查一遍覆铜状态,而不只是看有没有短路和开路。网络的增删改会直接影响Shape归属,这在多人协作、经常改版的开发流程里尤其普遍。

2.5 第三方工具转换导入时网络映射丢失

PADS转Allegro、AD转Allegro这类转换流程,走的是中间格式(比如GenCAD、DXF再还原),转换时网络名是文本,铜皮是图形。一旦文本和图形之间没有正确配对,Shape就会Unassigned。

用转换工具的人如果对目标网络命名规则不熟,映射表里漏了一项,其实很难发现。因为引脚和走线通常能映射上,而Shape往往排在后面,等你在板上一层层查过去,才发现电源铜皮是空的。

3. 定位Unassigned覆铜并完成网络分配的完整流程

3.1 先确认数量和范围:Display -> Status

第一阶段是确认到底有没有Unassigned Shape、有多少。打开Display -> Status,虽然这个窗口不会直接显示“Unassigned: 3个”,但Allegro会在状态栏下方或者数据库信息里给出提醒信息。不同版本界面略有差异,但核心思路一样:先确认设计数据库的健康状态。

更可靠的方法是执行经典的show element命令。在命令行输入show element,然后把鼠标移到怀疑的铜皮上单击,弹出的报告窗口会列出这块Shape的完整信息,包括它的Layer、Bounding Box、网络名。如果网络那栏写着Net: NULL或者根本没列出网络,那就是Unassigned,不用猜。

3.2 靠网络颜色快速区分Unassigned铜皮

这是最直观的定位技巧。Allegro里每个网络可以设独立颜色,有网络的Shape会以该网络颜色显示。如果你把某层所有网络颜色都打开,Unassigned Shape就没有网络颜色映射,它会显示为层默认色,在整片同色铜皮里非常扎眼。

操作上,打开Display -> Assign ColorColor/Visibility对话框,勾选某些关键网络的“给网络分配颜色”,然后回到画布,扫一眼哪块铜皮颜色不一致。颜色和网络设得非常花的时候,可能会造成视觉干扰,所以通常的做法是:先关掉其他网络的高亮,只给GND和电源网络分配统一颜色,再看哪些铜皮不听话。

如果你有脚本基础,也可以用Skill脚本遍历所有Shape,筛选出Net为NULL的对象,直接高亮并给出坐标列表。很多公司内部会维护这样一个快速查询脚本,效率比肉眼找高得多。

3.3 单块修复:右键Assign Net

找到Unassigned的Shape后,修复动作很直接。选中目标Shape(单击铜皮,注意Find面板里只勾选Shapes),然后右键,菜单里会有一项Assign Net。点击后弹出对话框,选择目标网络,比如GND,确定。

完成后命令行的提示会从Unassigned shape变成显示命中的网络,Shape的颜色也会随网络颜色变化。这时候不要急着走,观察一下Shape周围有没有走线或焊盘需要避让。因为一块刚分配网络的Shape实际上还没有执行重灌,它的“物理形态”还是Unassigned时期的形态,需要触发一次Update,才会真正按照新网络的间距规则去掏空、避让。

3.4 批量修复:Find面板筛选Shapes后统一分配

单块修复适合零星几块。但在项目交接或者转换文件时,Unassigned往往是一大片一堆,比如整层电源平面都没网络。这时候要批量处理。

操作方法是:在Find面板里,只勾选Shapes,其余全部取消勾选。然后框选覆盖目标区域,或者全选(Ctrl+A)。选中后右键,依然选Assign Net,在弹出的对话框里输入网络名,点击OK。这一下会把选中的所有Shape全部赋予同一个网络。

这一步就是考验细心的时候了:如果选中的Shape里混有其他网络的铜皮,批量Assign Net会把它们全部改成同一个网络。比如有一块GND铜皮和一块VCC铜皮被同时选中,一起Assign Net为GND,那VCC铜皮就变成了一块GND铜皮,轻则逻辑错误,重则导致电源短路。批量操作前,建议先在图层上仔细确认选区的网络构成,或者分区域多次操作。

3.5 修完网络马上刷新

给Shape分配网络并不能让铜皮立刻重灌。完成Assign Net后,要做一次Update Shapes(方法见第四章),让灌铜引擎按照新网络和规则重新计算。

这里有一个组合命令,在工程里很顺手的做法:先批量Assign Net,再全板Update Shapes,然后立刻跑一次DRC,确认有没有因网络改变而冒出来的短路或间距问题。这样一套下来,Unassigned Shape清零,设计状态也干净了。

补充一个小知识点:Assign Net之后,即使网络分配正确,DRC也可能出现“走线连接已存在但Shape还没避让”的假报警。此时强制Update一次再重跑DRC,很多奇怪报警会直接消失。

4. Out of Date Shapes的状态解读与刷新实操

4.1 为什么会Out of Date:从动态铜的工作原理说起

动态铜的物理填充是延迟计算的,这是它性能优化的核心逻辑,也是Out of Date的来源。Allegro不会在每次你推一根走线、移一个焊盘时就立刻重灌所有铜皮——那样的话,布线速度会卡到无法忍受。它默认的做法是:记录下需要刷新但还没刷新的Shape,标记为Out of Date,等你空闲下来批量重灌。

所以“Out of Date”不是一个错误,它更像是Allegro给你的一个“待处理清仓提示”。平时改版过程中出现几个Out of Date太正常了,关键是交付前必须清零。

产生Out of Date的常见动作包括:移动或添加走线、旋转或移动器件、增加或删除过孔、修改走线宽度、修改Shape自身的Boundary(比如拖动边界)、修改覆铜间距规则(如Shape-to-line间距)。只要影响范围触及某块动态铜的覆盖边界,这块铜就会被标记。

4.2 手动刷新:Shape -> Update Shapes

手动刷新是修复Out of Date的标准动作。菜单路径是Shape -> Update Shapes...,命令行可以直接输入updateshapes或者up,效果是一样的。

对话框中几个关键选项:

  • All:全板所有Shape都刷新,最常用。
  • Layer:只刷新指定层的Shape,适合你正在调整某一层、不想影响其他层时用。
  • Selected:只刷新选中的Shape,适合局部快速调整。
  • Only Net:只刷新指定网络的Shape,适合局部微调后快速确认。

选择All然后点OK,Allegro会再次计算所有动态铜。放心,这个操作不会改变你的设计意图,它只是按当前规则把铜皮重新填一遍。几秒钟到几十秒钟,取决于板子规模和Shape数量。

刷新的过程中可以观察命令行,会输出类似Update Shapes: 35 done, 0 out of date之类的统计信息。刷完后再看Status窗口,Out of Date数量应该变成0。

4.3 三种更新模式:Always Smooth、Frequent、Avoid Smooth

在动态铜的更新模式上,Allegro提供了几个层级,这是很多工程师忽略、但恰恰是Out of Date频发的根源。

打开Setup -> Design Parameter Editor,切到Shape页签,可以看到Dynamic Fill相关选项:

  • Always Smooth:每次设计变化后立即执行平滑重灌,所见即所得,但大板子会卡。
  • Frequent:频繁重灌但不到3D平滑级别,适合大部分设计。
  • Avoid Smooth:尽量减少重灌,优先保证布线流畅性,代价就是Out of Date大量堆积。

如果你发现自己的板子稍微动一下走线就冒出一大片Out of Date,大概率是模式设成了Avoid Smooth。这种模式适合布线中段,目的是不让灌铜拖慢推线速度。但在收尾检查时需要切回Frequent或Always Smooth,把积压的Out of Date全部消化掉。

顺便说一句:很多人布线阶段喜欢把铜皮显示设为Ratsnest轮廓模式(只看边框不看填充),这样能大幅提升刷新速度,但这只是显示模式,不代表Shape数据本身是新的。收尾时一定要切回Smooth填充模式检查一遍,别被轮廓模式骗了。

4.4 顽固Out of Date的处理:DB Doctor和重建Shape

大部分Out of Date靠一次全板Update就能解决。但偶尔会有几块“钉子户”,Update之后状态依然是Out of Date,怎么点都不动。这种时候多半不是参数问题,而是数据库内部出现了小故障。

第一步,关闭所有不必要的窗口,执行Tools -> Database Check(习惯上叫DB Doctor,新版可能叫Database Audit)。勾选所有检查项,让它扫一遍数据库。它会修复数据库结构层面的错误,顺便重建一些失效的索引。

第二步,如果DB Doctor之后还不行,把这块Shape删掉重新画。选中这块铜皮,按Delete,然后手动重新绘制一遍,重新Assign Net,再Update。这种方法不优雅,但确实高效。

还有一种情况:这块Shape是静态铜被误用成动态铜来管理,Update不会生效,因为静态铜本来就不参与重灌。如果是这样,把Shape属性从Static改成Dynamic再Update,或者接受它是静态铜、手动编辑边界。

5. 高发场景中的连锁排查与避坑

5.1 Unassigned和Out of Date同时出现时的修复顺序

实际项目中,这些状态往往是结伴出现的。处理顺序有严格讲究:先解决Unassigned的网络归属,再解决Out of Date。为什么?因为Out of Date的刷新是“按当前设置重算网络和形状”,如果一块Shape本来就没有网络,直接Update,灌铜引擎不知道该按什么网络规则去避让,刷新完它依然是Unassigned,甚至可能形状变化导致你更难定位。

正确流程是:Find面板勾选Shapes -> 定位所有Unassigned -> Assign Net -> Update Shapes全板刷新 -> DRC检查。这一套流程做完,两个状态同时清零。

5.2 从旧版或第三方工具迁移时网络映射校验

跨版本、跨工具迁移的板子,大概率同时出现Unassigned和Out of Date。我有一个经验:拿到转换后的.brd文件,第一件事不是看走线,而是开Status窗口,看Shape相关状态,看网络数量、铜皮数量是否和源文件一致。

转换工具生成的网络映射表通常有一个清单,我建议逐项核对电源和地网络的映射结果,因为这两类网络往往承担了大面积覆铜。映射错了,铜皮不是变Unassigned就是被赋予错误网络。

在Allegro里可以用Tools -> Database Check在转换后进行全量检查,把错误列表导出留存。如果库文件不全,很多Shape会连带报错,这时候不要急着干别的,先把缺失的封装、网络、器件属性补齐,否则后面查Unassigned会无从下手。

5.3 网络颜色显示被关闭时如何确认

有一种很常见的情况:你觉得板上没有Unassigned,因为所有铜皮颜色都一样,看起来都像GND。可实际上,如果网络颜色显示被关掉,所有铜皮都显示为层默认颜色,Unassigned和GND铜皮根本分不出来。

排查前先确认显示状态:打开Color/Visibility,查看当前高亮颜色设置里Net相关选项。如果所有网络颜色都相同,先分配几个关键网络的颜色再做肉眼排查。

在没有网络颜色辅助的情况下,更准确的方式是show element逐个抽查,或者借助Skill脚本批量报告网络名。不推荐只靠眼睛。

5.4 出Gerber前刷新这个习惯必须养成

这是我吃了大亏后总结的纪律。有一年做一个测试板,底层电源平面是动态铜,我在收尾前几天一直在调一个射频模块的位置,调完就顺手把Cadence关了。交付前检查了DRC、检查了连接性,但在最终Gerber输出前少了一次Update Shapes。生产回来后发现某一块电源铜皮没有给移动后的射频模块让位,导致信号走线距离铜皮太近,阻抗异常。重新看设计文件,那块铜皮的Out of Date标记赫然在目。

从那以后,我给自己定了一个硬性流程:Gerber输出前,Status窗口里必须看到Out of Date为0,Unassigned为0。这两个数字任何一个不是0,都不允许进入光绘输出流程。

5.5 常见误区:把Out of Date当作正常现象

很多工程师对Out of Date已经麻木了,觉得“反正我最后会全板Update一下”。这个思维有个隐患:如果你一直不更新,你所看到的DRC结果、网络分析结果、信号完整性仿真结果,全部是基于过期的铜皮数据,这些结果可能毫无意义。

尤其在高速设计里,电源平面的过孔避让、回流路径、阻抗连续性,任何一个动态铜的旧状态都可能导致仿真结论错得离谱。别拿过期数据去做出发结论的依据。

6. 让整板覆铜状态长期保持干净的日常习惯

6.1 每完成一个功能模块立即Assign Net

不要等整板画完再统一分配网络。我的习惯是,每画完一块区域(比如电源模块、一个接口功能区),立刻检查这个区域的铜皮网络是否完整。如果是手动绘制的Shape,当场Assign Net;如果是Z-Copy生成的,马上补Net。这样Unassigned只会在一个很小的范围内出现,排查起来简单。

6.2 覆铜区域统一建立在专用层

板内铜皮尽量放在标准的Etch层上,并给每个铜皮设置清晰的Class和SubClass,不要在机械层或Board Geometry层放画着玩儿的“假铜皮”。这样后期Assign Net时,Find面板里筛选Shape非常方便,也不会误选到非电气图形。

如果你要做的只是限高、丝印、标识,不要用Shape工具,改用Board Geometry或Manufacturing层的线条。避免给Allegro增加无意义的电气对象。

6.3 个人检查清单

我现在的PCB交付检查清单里,覆铜部分固定有以下几项:

  1. Display -> Status:Out of Date Shapes = 0;
  2. 命令行show element抽查关键网络(GND、VCC等)的Shape是否Net正确;
  3. 网络颜色打开,肉眼扫一遍各层Shape,确保没有异色异常铜皮;
  4. 全板执行一次Shape -> Update Shapes
  5. 再跑一次完整DRC;
  6. 输出Gerber前最后检查一次Status。

每次做一遍,五分钟以内搞定,但能拦住绝大部分覆铜问题。养成这个习惯之后,我对“板子回来的实际表现与我设计的版图一致”这件事有了信心。

6.4 动态铜显示模式的正确切换

日常布线时可以切到Ratsnest或Avoid Smooth来提速度,但每天下班前或者完成一个设计阶段后,我建议至少切回Smooth模式刷新一次,把Out of Date扫掉。不必每根线都实时更新,但一天能做一到两次全量刷新,比最后一天攒着一堆问题再处理要省心得多。

还有一个提示:多处铺铜时,如果多个Shape有重叠,Allegro会根据优先级(Shape Priority)决定谁覆盖谁。调整优先级之后,也需要Update Shapes才能看到效果,否则优先级看似改了,实物的铜皮还是旧关系。这个我单独提醒一下,因为它的Out of Date表现和普通改动不太一样,不会直接显示在你刚改的那块铜皮上,容易漏。

6.5 交接文件前对对方负责

如果你负责把一个Allegro工程发给外部协作方或者生产厂,发之前一定确认对方拿到的文件里没有Unassigned和Out of Date。生产厂只认原始Gerber和钻孔文件,你发的.brd如果带着一堆Unassigned,对方工程师按自己的经验“帮你修正”,结果往往和你的意图背道而驰。

宁可自己花十分钟把这些状态清零,也别让制造端去猜。


最后再分享一个我自己的体会:Unassigned和Out of Date这两个问题,从技术上来说都不难解决,难的是“及时发现”和“不让它累积”。我见过太多工程师把主要精力放在布线速度和DRC通过率上,而忽略了覆铜状态管理。实际上,一块铜皮没分配网络、一块铜皮数据过期,可能比几根走线间距偏大造成的问题更致命,因为它无声无息,不出现在你习惯看的报警栏里。如果你现在正被这类问题困扰,照着上面的定位和修复步骤走一遍,再配合那套五分钟检查清单,后续基本不会再被这两个状态打个措手不及。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询