干PCB这行十来年,谁没经历过几次火烧眉毛的改板。器件已经摆好,布线走了一大半,领导突然说某个网络要改,可能是原理图换了连接关系,也可能是现场调试发现某个信号不该接到这个管脚。这时候要是重新从原理图改一遍再重新导入网表,动静太大,而且万一网表把已经布好的线和布局冲掉,更麻烦。Allegro 17.4这类工具其实支持在板子上直接改网络,也就是“元器件网络手动修改”,能快速解决一部分紧急变更,但改完必须和原理图做同步对照,不然早晚得出事。这篇我把自己在Allegro 17.4里改网、回改原理图、再做同步排查的流程写清楚,适合正在赶板,或者接手旧项目做Rework的硬件工程师、PCB Layout工程师参考。
核心原则只有一个:PCB上的任何手动改网,都要当成一次正式的ECO行为,备份、标记、修改、同步、复查,一步都不能少。下面按实际操作的顺序,把方法和容易掉进去的坑一起讲。
1. 紧急改网前先想明白:哪些情况适合“直接改PCB”
1.1 三种最常见的紧急改网场景
第一种是原理图网络名需要全局替换。比如一个走线网络从“I2C_SDA”改叫“I2C_DATA”,实际上连接关系没变,只是名字要统一。这种场景直接改PCB网络名,再回Capture同步一下别名,效率奇高,完全没必要重铺一遍。
第二种是个别引脚需要临时改接到其他网络。典型例子是调试时发现某个传感器中断脚接错了,或者接插件上的电源脚和地脚画反了。在板子已经布线大半、甚至已经开始试样的情况下,回原理图重新生成网表再全量导入,很容易把当前布局和走线关系搅乱。用Net Logic单独改一个pin的网络,反而是对现有设计影响最小的办法。
第三种是验证某种连接方案,不确定能不能长期使用。比如要在两颗芯片之间短接一个测试点,先没想好要不要正式进原理图,那就先在板上改网、跑测试,测试通过后再回Capture更新。这时手动改网就是一种“临时验证”手段。
1.2 什么时候不该手动改网
手动改网不是万能药。如果改动涉及几十个网络、多片电源域、BGA扇出部分,或者是一个多人并行设计的项目,我强烈不建议在PCB里手动改。改动面越大,漏改的概率越高,后续原理图同步的难度也会指数上升,最后大概率靠人肉对比网表,这种返工比一开始就改原理图痛苦得多。
另一个不适合手动改网的情况是高速差分信号、DDR等长组、或者带严格约束的网络。手动改网只改连接关系,不会自动修改约束规则,差分对属性、Matched Group等可能直接失效。这种设计规范驱动的问题,最好还是回到原理图和约束管理器里改。
还有一点容易被忽略:如果项目已经进入正式版本管理,每一版都要出ECO报告,那么PCB直接改网后面的“追溯性”就特别重要。这时候手动改网不是不行,而是必须同时改原理图、导出变更记录、更新版本说明,甚至要让同事评审。
2. 准备工作:备份、定位、显示设置,一个都不能少
2.1 备份工程文件到独立目录
这步看起来是废话,但紧急改板时总有人跳过。花20秒把.brd和原理图.dsn复制到一个新文件夹,带上日期和人名,万一改乱了至少能回滚。Allegro里可以用File → Save Copy As保存带时间戳的版本,也可以直接系统复制整个工程目录。我更喜欢后者,因为Capture和Allegro关联的网表文件、库路径、约束文件经常散在不同地方,整个目录备份最稳。
还有一个细节:备份时最好把当前Allegro版本和使用的skill也记下来。有的项目依赖第三方skill,换一台机器打开后网络名高亮行为都不一样,备份环境的记录能省很多排查时间。
2.2 用高亮和过滤快速定位目标元器件
改网之前,先把要动的位置在板上找清楚。Allegro里最快的方式是命令行输入网络名或位号,配合Find面板过滤。例如要改的是U25的第7脚,我会先用Find面板勾Symbols,输入U25,回车后右键Highlight,把器件高亮;再输入旧网络名,勾Nets,用“Display → Highlight”高亮整根网络。这样新旧网络用不同颜色显示,改的时候不会看错。
红绿两个颜色最容易区分,但要注意PCB背景如果偏暗,绿色看起来可能发灰。我一般把“旧网络”用白色或洋红色,“新网络”用黄色,对比更清晰。你也可以在Color/Visibility面板里单独给某些Net分配颜色,Allegro支持给网络直接Assign Color。
2.3 开启飞线和网络颜色,避免看错层
手动改网后,最直接的反馈就是飞线变化,所以必须把Ratsnest层打开。菜单Display → Color/Visibility,展开“Ratsnest”相关层,确认引脚、连接线都处于可见状态。如果原来的设计把飞线隐藏了,改成网络后你会感觉“什么都没发生”,其实是层没开。
网络颜色也要提前设置。Allegro的Display → Assign Color可以给网络涂色,改网之前把目标网络涂成亮色,改完后引脚颜色会立刻变化,一眼就能确认操作是否生效。
2.4 动态DRC在改网期间可以临时关掉,但必须记得恢复
板子规模一大,动态DRC在改网时会频繁刷新,卡得鼠标都挪不动。临时关闭DRC是常见操作,但我建议只在改网那几次点击时关闭,改完马上恢复。具体在Setup → Design Constraints里找到On-line DRC选项,取消勾选。注意关闭后Allegro不会实时报错,如果粗心改出短路,DRC也不会提醒你,所以关闭期间千万不要顺手把所有飞线都删了。
恢复DRC后,最好再跑一次全局DRC,确认新网络没有产生open、dangling或间距错误。这一步我后面详细说。
3. Allegro 17.4手动改元器件网络的两种核心操作
3.1 单引脚改网:Logic → Net Logic
这是Allegro里最直接的手动改网命令,适合单引脚或少量引脚。操作流程:
- 在PCB Editor中打开板子,菜单栏选择Logic → Net Logic。如果菜单里没有,直接在命令行输入net logic并按回车。
- 右侧Options面板里,把Action从默认的Unassign改成Assign。Net列表里会显示当前板上所有网络,选好你要改到的目标网络。
- 如果目标网络还不存在,不需要提前退出,直接在Net列表下方的输入框里输入新网络名,回车后Allegro会识别为一个新网络,点击时提示是否创建,确认即可。
- 用Find面板只勾选Pins,然后在画布里逐个点击需要改的引脚。点选后,引脚会立刻从旧网络分配到新网络,飞线、网络颜色马上变化。
- 改完右键选择Done,退出命令。
这个命令背后的逻辑是修改Allegro内部的逻辑连接关系,而不是简单改一个显示名字。所以DRC、飞线、铜皮连接都会跟着重新计算。需要特别注意的是,原本从该引脚引出的走线不会自动换网络,它们依然保留旧网络名。这也是很多人改完网发现板子“多了很多奇怪线”的原因,后面我会单独讲怎么清理。
3.2 批量改网:右键Temp Group + Net Logic
一次改几十个引脚时,一个个点容易漏。更实用的批量方法是用临时分组。先用Find面板勾Pins,通过鼠标框选或者按住Ctrl逐个点选需要改动的引脚,收集进Temp Group。也可以先高亮某一个旧网络,然后用右键“Select Whole Net”把整根网络上的所有pin都选进来,再执行Net Logic,统一Assign到新网络。
批量改网最大的风险是“误选”。比如框选时把附近其他芯片的引脚也圈进来了,一旦执行Assign,那些引脚也会被强制接到目标网络,造成隐性短路。所以我习惯先用“Show Element”确认选中的引脚数量和位号,再执行改网。Allegro里可以通过右键“Report”查看当前Temp Group包含的pin列表,这一步不要省。
3.3 新建不存在的网络:Create Net与Net Logic连用
如果新网络在原理图网表里本来就没有,Allegro不会自动凭空创建。最简单的方法是在Net Logic的Options面板里直接输入新网络名,回车后选择创建;也可以用Logic → Create Net命令,先建好网络,再Assign。创建网络时需要注意网络类型,电源和地最好指定为Power或Ground类型,这样后续铺铜、规则分配会更合理。
我曾经栽过一次:手动创建一个网络时没注意大小写,导致后面导入原理图网表时出现了两个只有大小写不同的同名网络,DRC查了半天。Allegro对网络名大小写敏感,所以新建网络名尽量从原理图直接复制,不要手输。
3.4 改网后的走线、过孔和铜皮清理
这是手动改网里最脏最累的活。pin改到新网络后,旧走线不会跟着自动变。如果你只是改一个悬空的pin,可能影响不大;但如果改的是已经布线的信号,旧铜线、过孔、甚至铺铜Shape都会挂着旧网络名留在板上。不清理的话,DRC会报dangling line,做铜检查时也可能出现网络名错乱。
处理办法一般有三种:
- 删除悬空走线:Edit → Delete,Find面板勾Clines和Vias,框选要删除的部分,右键Done。
- 把旧走线Change到新网络:Edit → Change,Find面板勾Clines和Vias,再在Options里选择目标网络,框选旧走线,让它们直接变更为新网络。前提是新网络已经存在,且走线电气上能连通。
- 铜皮Shape手动指定网络:选中Shape后,在右键菜单里选择“Assign Net”,再选目标网络。如果是一块覆盖整个电源层的动态Shape,直接改net后还需要重新生成Shape,Allegro会提示是否需要更新。
清理完走线之后,用Display → Reports里的Unconnected Pins检查,看是否还有悬空pin。然后再看一遍DRC,确认没有dangling line残留。我现在的习惯是改完网第一件事不是看飞线,而是打开Report窗口查Unconnected Pins,因为这个报告能直接把所有逻辑上没连通的pin列出来,比肉眼逐根看飞线可靠得多。
4. 和原理图同步对照:OrCAD关联Allegro的完整闭环
4.1 为什么板上改完,还必须回到Capture改原理图
手动改网之后,Allegro里的逻辑连接关系和Capture原理图已经脱节,Allegro本身不会通知Capture。等你保存PCB再交付,别人打开原理图根本看不到你改的连接。更麻烦的是,如果后面有人基于旧原理图重新生成网表并导入Allegro,你手动改的新连接会被网表覆盖,等于白改。
所以手动改网这个动作,必须和“同步原理图”绑在一起。Cadence的Capture和Allegro之间有同步机制,可以做正向同步,即Capture改完原理图、生成网表、导入Allegro;也可以反过来,你已经在PCB端手动改了,那就回到Capture把对应连接同步改掉,再生成一次网表做校验。
这里的核心原则是:PCB不能成为“孤儿设计”。哪怕板子已经量产,原理图也要是最新状态,否则下一次改版时,全工程师都会被你带进坑里。
4.2 在OrCAD里改网络连接并生成网表
打开OrCAD Capture,找到对应页面,把原来的导线或Net Alias删掉,然后重新用Wire连接,或用Place → Net Alias放置新的网络别名。改动完成后先用Design Rules Check跑一遍,重点关注Single Node Net和Off-Page Connector,避免出现悬空网络。
确认没问题后,执行Tools → Create Netlist,格式选择“Cadence Allegro”或“telesis”格式,指定输出目录,生成网表文件。这个网表文件就是Allegro后续同步的依据。如果你的Capture和Allegro已经做了工程关联,也可以用Tools → Design Sync直接导出变更文件,格式类似xml,后面在Allegro端导入。
4.3 在Allegro里Import Logic或Design Sync
传统方式是在Allegro里File → Import → Logic,Logic type选择Cadence,找到刚生成的网表文件,执行导入。导入前要注意选项:
- 如果只更新逻辑连接,不希望器件布局被重置,不要勾选“Replace”类选项,尤其是不要替换封装。
- 如果PCB上某些器件是锁定的,导入时可能跳过它们,需要先确认锁定状态。
- 导入后Allegro会输出一条summary,例如“Updated X nets, Removed Y nets”。看到这条结果后,再针对变动网络做一遍飞线确认。
对于局部小改动,我更推荐Design Sync方式。在Capture里执行Tools → Design Sync → Export Changes,会生成一个ECO文件;然后在Allegro里Tools → Design Sync → Import Changes,选择这个ECO文件。这样同步的粒度更小,不会出现整版重导的风险,比较符合“紧急修改”的场景。
4.4 用网表对比反查有没有漏改
同步之后,怎么确认PCB和原理图已经一致?最简单粗暴的方式是分别从Capture和Allegro导出网络连接列表,然后做文本比对。
Capture这边生成ASCII网表或CSV格式的BOM连接表;Allegro这边用Tools → Reports → Design Synopsis导出当前PCB的连接关系。两边放到Beyond Compare或者直接用Excel VLOOKUP比对,重点看改动过的网络,检查两端的位号.管脚号是否一致。
还有一个土办法,但非常有效:在Capture里只把改过的网络做成一个高亮颜色,在Allegro里同样把新网络高亮成同一种颜色,两边截图放到同一屏幕上对比。虽然原始,但能极大地避免“因为同步工具出错导致漏改”这种问题。
5. 手动改网后最容易翻车的6个细节
5.1 Pin被锁定或logic属性被修复
手动改网时,如果发现命令点了引脚没反应,先检查器件是不是被锁定。Allegro里Edit → Properties选Symbol,看是否有Fixed属性。锁定的器件需要先解锁才能改pin网络。
还有一种更隐蔽的情况是某些“logic属性”会限制网络分配。比如通过Skill或Edit Properties给pin加了特殊逻辑属性,Net Logic命令会直接拒绝执行。这种时候先清零Pin上的Net-Related属性,再重新改。遇到改不动的pin,别硬来,先用Show Element看清楚对象属性再决定。
5.2 电源和地对地短路,网合并后的规则问题
手动把两个电源网络合并成一个网络,看起来只是改个名字,实际牵涉到电源域的合并。如果两个电源电压不一样,例如3.3V和1.8V被误连接到同一个net,Allegro不会报“短路”,因为从逻辑上它们已经是一个网络了,但硬件工作必然出问题。所以改网前务必确认两边的电压值、电流承载能力、去耦电容的归属,改完后在约束管理器里重新检查电源域。
地网络合并也是高危操作。模拟地和数字地通常建议单点连接,如果在PCB里把两片地铜强行assign成一个网络,DRC可能不报错,但噪声性能会变差。这种情况在原理图同步时尤其容易漏,因为Capture里仍然是两个网络名。
5.3 差分对、等长组和约束被破坏
差分信号如果被手动改网,Allegro会丢失差分对属性。比如USB的DP/DM,你用Net Logic把其中一个pin改到另一个网络,那么这两个pin就不再属于同一个差分对,约束管理器里原来的差分规则、等长约束会直接报错。更麻烦的是,差分对属性丢失后不能靠Layout侧重新Assign找回,很多时候要回原理图把网络名改回来,再重新导入网表。
如果你只是想交换差分正负端,不要用Net Logic硬改,应该用Swap Pin或Swap Differential Pair功能,这样差分对属性还能保留。
5.4 位号重叠与封装更新引起网络错乱
板上如果有相同位号的元件残留(在未完全同步的工程里很容易出现),手动改网时很容易选错对象。比如位号“R124”在PCB上出现了两个,一个是你想改的,另一个是隐藏的旧版本。Net Logic选pin时,到底选到哪一个,Allegro不会特别提醒。改完后看到网络名对不上,才意识到选错了。
因此改网前建议先执行Tools → Reports里的Unplaced Symbols Report,看看有没有重复或未摆放的器件。必要时把不相关的旧器件临时删除或移出board geometry层。
5.5 网络名大小写和前后缀不一致
Allegro对网络名大小写敏感,但Capture和某些EDA工具不一定。项目里如果同时有“VCC_3V3”和“vcc_3v3”这两种写法,Allegro会创建两个网络,飞线自然连不上。手动改网时最稳妥的做法是从原理图复制网络名,或者用网表文件里的标准名称,不要自己脑补大小写。
还有一个常见问题是网络名里的空格和特殊字符。Allegro虽然支持,但在导入网表时容易触发各种奇怪错误。手动创建新网络时,尽量只用字母、数字、下划线。
5.6 忘记录变更记录,最终没法追溯
紧急情况下,改完一个网络就急着去出带,忘了记录,等后面做版本审查时就傻眼了。我习惯在工程目录下放一个“ECO.txt”,每次手动改网就写下:日期、修改人、原网络、新网络、涉及位号.管脚、修改原因、是否已同步原理图、是否已跑DRC。半分钟的事,但后面能救命。公司如果要做版本管理,这些记录可以直接整理成邮件或变更单。
下面是一个简单的记录模板,也可以直接在电脑里做成Excel表单:
| 字段 | 示例 |
|---|---|
| 日期 | 2025-06-12 |
| 修改人 | Zhang San |
| 原网络 | EN_3V3_OLD |
| 新网络 | EN_3V3 |
| 涉及器件 | U25.1 |
| 修改原因 | 使能脚接错 |
| 是否同步原理图 | 是 |
| 是否跑DRC | 是 |
| 备注 | 差分组检查通过 |
5.7 我把下面这个表当一个速查备份
| 故障现象 | 可能原因 | 排查方向 |
|---|---|---|
| Net Logic点了没反应 | 器件锁定或logic属性限制 | 查看Fixed属性,清理pin属性 |
| 改完飞线没变化 | Ratsnest层关闭或网络名输错 | 打开飞线层,核对网络名 |
| 改完出现大量dangling line | 旧走线未删除或未Change | Edit → Delete或Edit → Change |
| 原net、新net同时存在 | 大小写/空格不一致 | 统一用原理图命名 |
| import网表后手动修改被覆盖 | 没有把改动同步到Capture | 回Capture改原理图再重新导入 |
6. 实操项目记录:一次紧急改网的完整时间线
6.1 现场问题描述
有一块调试板,改版后MCU的使能引脚一直没信号,查了半天发现电源芯片的EN脚在原理图里接的是“EN_3V3_OLD”,但实际板上有另外一路“EN_3V3”才是正确的。连线问题,重新打样周期太长,决定在现有板上先改PCB网表,再重新出带,手工贴两颗片。
6.2 实际操作顺序
我没有一上来就改PCB,而是先在Capture里把U7的第3脚网络名从“EN_3V3_OLD”改成“EN_3V3”,生成新的网表文件。然后在Allegro里打开PCB,用Highlight把“EN_3V3_OLD”全部高亮,执行Logic → Net Logic,把U7.3这个pin Assign到“EN_3V3”。做完后删除悬空的旧走线,又把旧的Shape重新assign到新网络,最后跑了一遍DRC和Unconnected Pins Report,确认没有新增悬空脚。
当时如果只改PCB不回Capture,后面再import网表就会把这次修改覆盖掉。所以我在Capture里同步修改后,又重新导入了一次逻辑网表,确认ECO结果只包含“EN_3V3_OLD”到“EN_3V3”的变更,没有影响其他网络。整个过程不到半小时。
6.3 最终检查项
这次改完,我给自己列了一个检查清单,也分享给你们:
- 改动的pin两端的显示网络名一致;
- Unconnected Pins Report没有新增悬空pin;
- DRC没有Open、Dangling、Short错误;
- 旧走线和过孔要么删除,要么已经Change到新网络;
- Capture里DRC通过;
- Design Sync导入时无Error;
- 版本管理里写明“ECO-20250612-EN_3V3”。
这套流程走下来,板子交出去才有底气。
7. 改网后的一点个人经验
手动改网这个能力就像急救包,不怕不用,怕用时手忙脚乱。在Allegro 17.4里,我习惯把Net Logic设成快捷键,比如直接绑定到“N”,这样有紧急改动时能少点几级菜单。同时,每次改完都要用Unconnected Pins Report做一次“收尾确认”,别只靠眼睛看飞线。旧走线千万不能用隐藏代替删除,否则DRC不报,出Gerber时可能还带着原网络的一段残留线路,这个坑我踩过两次。
最后再提醒一句:即使你这次只改一个网络,也一定要回Capture同步,或者在原理图上用醒目颜色标注“PCB手动改过,待下次版本同步”。不要觉得这是小题大做,设计交付不是一个人的事,后面接手的人会因为你这条记录少走很多弯路。手动改网技术本身不难,难的是一套严谨、可追溯的习惯。