1. 项目概述:PCB布线收尾的“最后一公里”检查
画完PCB,看着密密麻麻的走线和铺铜,心里总会有点不踏实:线真的都连上了吗?有没有哪根飞线被我不小心漏掉了?这种焦虑,相信每一位画过板的工程师都深有体会。尤其是在处理那些动辄几百上千个网络的中高密度板子时,靠肉眼在复杂的布线中寻找那几根遗漏的“飞线”(Un-Routed Net),无异于大海捞针,不仅效率低下,而且极易出错。一个未连接的飞线,轻则导致功能异常,重则可能让整批板子报废,带来的时间和金钱成本是巨大的。因此,掌握一套高效、可靠的飞线检查方法,是PCB设计流程中不可或缺的“最后一公里”质检环节。
今天,我们就以经典的Protel 99 SE / Altium Designer早期版本的操作环境为例,深入聊聊在布线基本完成后,如何系统性地检查并清理未连接的飞线。我们将超越简单的快捷键操作,深入DRC(设计规则检查)的核心设置,解读常见的错误报告,并分享一些从实际项目踩坑中总结出来的高效排查技巧。无论你是正在学习PCB设计的学生,还是偶尔需要检查一下外包设计文件的硬件工程师,这篇文章都能为你提供一套即拿即用的检查清单和问题解决思路。
2. 核心检查思路与工具选择
在Protel及其后续的Altium Designer中,检查未连接飞线,核心是依靠软件的网络连接性和设计规则检查(DRC)功能。我们的目标不是用眼睛去找,而是让软件自动报告问题。这里有两条主线思路,它们相辅相成,建议结合使用。
2.1 视觉辅助法:让飞线“无处遁形”
首先是最直观的方法——关闭所有布线层,让画面只剩下元件、焊盘和未连接的飞线。这是很多工程师的第一反应。
操作路径:在PCB编辑器界面,按下快捷键L,会弹出“板层和颜色”(View Configurations)对话框。在这里,找到“信号层”(Signal Layers)分组,将Top Layer、Bottom Layer以及你使用的任何中间信号层(Mid Layer1,2...)的“显示”(Show)复选框取消勾选。同时,为了画面更干净,也可以暂时关闭丝印层(Silkscreen)和机械层(Mechanical)。确认后,画布上所有实际的走线(Track)和铺铜(Polygon)都会隐藏起来。
此时,屏幕上应该只剩下:
- 元件的封装轮廓和焊盘。
- 以虚线段形式显示的、未完成的连接线,这就是“飞线”(Ratsnest),通常表现为细的虚线。
- 可能存在的、以细实线或另一种颜色高亮显示的、已完成的网络连接(如果相关选项被开启)。
这个方法的优缺点非常明显:
- 优点:极其直观,一眼就能看到板子上哪里还有稀疏的飞线未处理,对于检查少量、明显的遗漏非常快。
- 缺点:
- 依赖人眼:在复杂板卡中,元件密集,飞线可能很短,混杂在焊盘之间,容易看漏。
- 无法发现“假连通”:这是最致命的问题。如果两根线看似连接,但实际上没有电气节点(比如走线终点离焊盘还有0.1mm没接到,或者走线只是从焊盘上“掠过”而未真正连接),视觉上是看不出来的。
- 效率低下:不适合作为最终发布前的权威检查手段。
注意:单纯依赖此法风险很高。我曾在一个四层板项目中,用此法“确认”没有飞线后发板,结果回来发现一个LED的控制信号断路。原因是该飞线很短,被两个大焊盘遮挡,在关闭层显示时根本没注意到。从此,我仅把它作为快速预览的辅助手段。
2.2 规则检查法:让DRC成为“铁面判官”
这才是专业、可靠的方法。设计规则检查(DRC)不仅能检查间距、线宽,其核心功能之一就是检查电气连接完整性。我们需要正确配置并运行它。
核心设置位置:Design->Rules... 打开规则设置对话框。我们需要关注的是Electrical(电气规则) 类别下的Un-Routed Net(未布线网络)规则和Un-Connected Pin(未连接引脚)规则(后者在某些版本中可能归属于其他类别或名称略有不同)。
- Un-Routed Net规则:此规则检查整个板上,是否存在网络(Net)没有被任何导线(Track)、过孔(Via)或铺铜(Polygon)完全连接。也就是说,如果一个网络需要连接A、B、C三个点,但布线只连接了A-B和A-C,而B-C之间没有连接(即使A-B和A-C的线已经布了),只要这个网络在物理上未形成全连接,就会被报错。
- Un-Connected Pin规则:此规则更严格一些,它检查每一个元件的引脚(Pin)是否都有物理导线与之连接。这对于发现那种“线画到焊盘边上了但没连上”的致命错误特别有效。
如何启用检查:通常,这些规则在默认模板中已经存在并启用。你需要做的是确保在运行DRC时,勾选了这些检查项。执行DRC的路径是:Tools->Design Rule Check...。在弹出的DRC设置对话框中,你需要确保在Rules To Check列表里,找到Electrical下的Un-Routed Net和Un-Connected Pin(或其他类似名称)规则,并确认其右侧的“在线”(Online)和/或“批量”(Batch)检查选项被勾选。
执行与查看报告:点击Run Design Rule Check。软件会遍历整个设计。检查完成后,会生成一个.DRC的文本报告文件,并自动在PCB界面上以高亮(通常为绿色)标记出所有违规(Violation)的位置。同时,软件左下角的状态栏或独立的“Messages”面板会列出所有错误信息。你的主要工作界面将转移到这个错误列表和高亮显示上。
3. 飞线检查的详细实操流程
理解了核心思路后,我们来看一个完整的、可复现的检查流程。假设你刚刚完成了一块STM32主控板的主要布线。
3.1 检查前的准备工作
在按下DRC按钮之前,做好准备工作能让检查更顺畅,结果更准确。
- 保存并备份:进行任何全局检查前,先保存当前工作(
Ctrl+S)。这是一个好习惯,防止后续操作导致意外。 - 整理显示:按下
L,在视图配置中,建议暂时关闭所有“机械层”(Mechanical Layers)和“其他层”(Other Layers)中不必要的项,如“DRC错误标记层”(DRC Error Markers)如果之前有的话,可以先关掉再打开以刷新。保持信号层、丝印层、焊盘层(Multi-Layer)的开启,让画面干净。 - 确认网络连接:确保你的原理图(SCH)和PCB(PCBDOC)之间的网络表(Netlist)是最新且同步的。最保险的方法是:在PCB界面,使用
Design->Update Schematics in [ProjectName]或Design->Import Changes From [ProjectName].PRJPCB(取决于版本),确保所有元件和网络变更已从原理图同步到PCB。没有这一步,检查可能基于一个过时的网络连接状态。
3.2 执行DRC检查并解读报告
现在,打开Tools->Design Rule Check...。
配置检查选项:在弹出的对话框中,通常有两个主要标签页:“Report”(报告选项)和“Rules To Check”(待检查规则)。
- 在“Report”页,我习惯勾选“创建报告文件”(Create Report File)和“在板上标记违规”(Stop when violations found 可以不用勾,我们希望看到全部错误)。
- 在“Rules To Check”页,这是关键。滚动列表,找到
Electrical部分。确保Clearance(间距)、Short-Circuit(短路)、Un-Routed Net、Un-Connected Pin这几项的“批量”(Batch)列被勾选。其他如布线宽度、过孔尺寸等规则可根据需要勾选。
运行检查:点击“Run DRC”。软件会进入计算状态,对于复杂板卡可能需要几秒到几十秒。完成后,会自动打开一个文本报告(.DRC文件)并跳转到“Messages”面板。
解读错误信息:我们重点看
Un-Routed Net和Broken-Net Constraint错误。- 典型的
Un-Routed Net错误:报告会列出所有未完全布通的网络名称。例如:Violation - Net NetC12_2 is not completely routed.这直接告诉你“NetC12_2”这个网络有线没布完。 - 典型的
Broken-Net Constraint错误:这是未布线网络错误的一种更详细的表现形式,也是输入材料中用户遇到的核心问题。报告格式类似:
这条信息的解读至关重要:它告诉我们,一个名为XTAL2的网络,在PCB上应该连接三个点(子网):晶振Y1的第1脚、电容C25的第1脚、芯片U1的第49脚。但是,软件检测到这三个点之间没有通过任何导线、过孔或铺铜实现全部的电气连接。它们可能彼此孤立,也可能只有部分连接(比如Y1-1连到了C25-1,但都没连到U1-49)。Processing Rule: Broken-Net Constraint ( (On the board ) ) Violation Net XTAL2 is broken into 3 sub-nets. Routed To 0.00% Subnet : Y1-1 Subnet : C25-1 Subnet : U1-49Routed To 0.00%表示连通率为0%,即完全没连上。有时可能是33.3%(三节点中连了一对)、50%(四节点中连了两对)等。
- 典型的
3.3 定位与修复未连接网络
拿到错误报告后,下一步是精准定位并修复。
高亮定位:在“Messages”面板或DRC报告文件中,双击任意一条
Un-Routed Net或Broken-Net Constraint错误。PCB编辑窗口会自动缩放并高亮显示该错误所涉及的所有对象(焊盘、可能存在的部分走线),并以其他颜色(如暗色)淡化显示板上的其他对象。这是最快速的定位方式。分析可能的原因:
- 原因A:完全遗漏布线。这是最简单的情况,高亮后你能清楚地看到几个孤零零的焊盘,中间没有任何走线。解决方法就是手动或自动布线将其连接。
- 原因B:“假连接”或“虚连”。这是高发区,也是肉眼检查难以发现的。表现为:
- 走线未连接到焊盘中心:走线(Track)的终点停在了焊盘(Pad)的边缘,没有延伸到焊盘的中心孔(即电气节点)。在软件看来,它们没有建立电气连接。修复:使用
M->Move或直接拖动走线端点,使其与焊盘中心重合,或者重新布线。 - 走线从焊盘上“掠过”:走线为了拐弯,路径穿过了焊盘图形,但没有在焊盘中心形成节点。修复:同上,确保走线在焊盘中心有节点(通常表现为走线端点有一个小的“×”与焊盘中心重合)。
- 使用错误的层:比如一个贴片焊盘在顶层,而你画的线在底层,且没有用过孔打下去连接。修复:在焊盘处添加过孔并连接。
- 走线未连接到焊盘中心:走线(Track)的终点停在了焊盘(Pad)的边缘,没有延伸到焊盘的中心孔(即电气节点)。在软件看来,它们没有建立电气连接。修复:使用
- 原因C:原理图与PCB封装引脚不匹配。正如输入材料中提到的,原理图里二极管引脚是1, 2,但PCB封装里对应引脚名是A, K。如果网络表基于原理图引脚编号(1,2)生成,而PCB封装使用A, K,软件就无法正确建立网络连接,导致飞线“消失”或连接错误。修复:统一原理图符号和PCB封装的引脚标识(Designator)。通常修改PCB封装,将A, K改为1, 2,并更新到PCB。
修复后的复查:修复一个错误后,建议局部重新运行DRC或整体运行一次。因为有时连接一个网络可能会影响到其他网络的连通状态(虽然不常见)。更严谨的做法是全部修复后,执行一次完整的DRC。
4. 进阶技巧与深度排查指南
掌握了基本流程,下面这些从实际项目中总结的进阶技巧,能帮你更快地定位那些“诡异”的未连接错误。
4.1 利用“网络管理器”进行全局分析
除了DRC,Protel/Altium的“网络管理器”(Design->Netlist->Edit Nets... 或在PCB面板中选择“Nets”视图)是一个强大的辅助工具。
- 查看网络状态:在网络列表里,你可以看到每个网络的“连接性”状态。已完全布通的网络通常有特殊标识(如对勾),而未布通的网络则没有。你可以直接在这里筛选出所有“未布线”的网络。
- 高亮整个网络:在列表中选择一个可疑网络,点击“Zoom”或“Select”,软件会高亮该网络的所有元素(焊盘、已布线段)。如果应该连接的几个焊盘没有被高亮在一起,或者高亮后发现它们之间缺少走线,问题就一目了然。
- 检查网络成员:确认该网络下应该包含的元件引脚是否齐全。有时原理图连线错误,会导致某个引脚本应属于这个网络却没有加入,PCB上自然永远布不通。
4.2 处理“Broken-Net Constraint”的经典场景排查
针对输入材料中用户遇到的Broken-Net Constraint问题,我们可以系统性地排查:
场景一:走线未真正连接。如之前所述,双击错误高亮后,仔细检查Y1-1、C25-1、U1-49这三个焊盘。使用
Ctrl+H(或E->Select->Connected Copper)点选其中一段走线,看是否能选中整个预期的连接路径。如果只能选中一部分,说明连接断了。放大检查焊盘与走线的连接点,确保没有微小的间隙。场景二:使用了“禁止布线区”。如果在晶振或电容的焊盘和芯片引脚之间,不小心放置了一个“禁止布线”(Keep-Out)区域或一块铺铜(且该铺铜与此网络未连接),走线可能无法穿过,导致网络被物理分割。检查高亮区域是否有此类对象。
场景三:多层板的内层连接遗漏。如果XTAL2网络的一部分走线在顶层,另一部分在底层,而连接它们的过孔(Via)丢失或没有网络属性,就会形成“子网”。确保过孔两端分别与顶层和底层的走线正确连接,并且过孔自身的网络属性是正确的(通常放置时自动继承)。
场景四:元件封装问题。确认晶振Y1、电容C25的封装焊盘编号与原理图引脚编号一致。特别检查晶振,有时四脚贴片晶振的封装,其中两个脚是接地或悬空的,但在原理图符号里可能被定义为1、2脚有用,3、4脚无用。如果PCB封装把电气连接错误的对应到悬空脚上,就会导致网络断裂。解决方法:对比原理图符号和PCB封装的引脚映射(Pin Map)。
4.3 使用“布线完成度”报告
在较新版本的Altium Designer中,有一个更直观的功能:Reports->Board Information,在弹出窗口中选择“Report”按钮,在报告设置中勾选“Routing Information”。它会生成一个报告,列出所有网络的布线完成状态,包括已布通和未布通的数量和百分比,以及未布通网络的详细列表。这比DRC报告更侧重于统计,适合在项目后期做整体验收。
5. 常见问题与疑难杂症排查实录
即使按照上述流程操作,有时还是会遇到一些令人困惑的情况。这里记录几个我亲身踩过的“坑”及其解决方案。
5.1 问题:DRC没有报告错误,但板子做回来发现开路
可能原因与排查:
- 检查规则是否真正启用:回到DRC设置,确认
Un-Routed Net和Un-Connected Pin规则前面的复选框确实勾选了。有时软件升级或配置文件出错,规则会被意外禁用。 - 检查规则适用范围:确保规则的应用范围(Where the First object matches)是
All或Net Class包含了你的所有网络。如果错误地设置为某个特定网络类,其他网络就不会被检查。 - “假阴性”连接:这是最隐蔽的。例如,两个焊盘通过一块没有正确分配网络的铺铜(默认为No Net)连接在了一起。视觉上它们被铜皮连着,但电气上由于铺铜无网络,所以是断开的。DRC检查的是网络连接,它看到铺铜是No Net,就不会认为它连接了两个焊盘。排查:检查任何连接焊盘之间的铺铜,右键点击铺铜选择“Properties”,确认其“Net”属性是正确的网络名,而不是“No Net”。
- 盲埋孔或特殊焊盘:对于使用盲埋孔(Blind/Buried Via)或焊盘有非标准形状(如槽孔)的设计,软件在计算连接性时偶尔会有Bug。排查:单独高亮该网络,逐段检查连接,特别是过孔和焊盘的连接处。必要时,在问题点附近手动放置一个标准过孔和短线来“强行”连接。
5.2 问题:飞线时有时无,或者自动布线器拒绝连接某个网络
可能原因与排查:
- 布线规则冲突:该网络所属的“布线宽度规则”(Width)或“布线优先级”(Routing Priority)设置可能与实际物理空间冲突。例如,规则要求该网络线宽为0.5mm,但两个焊盘之间的间隙只有0.4mm,布线器就无法布线。排查:检查该网络的布线规则,或尝试手动用更细的线连接,看是否成功。
- 存在“板切割”或“禁止布线区”:在两个焊盘之间,可能存在一个你未注意到的板框切割线(Board Cutout)或禁止布线区(Keep-Out Layer),物理上阻断了布线路径。排查:关闭所有层,只打开机械层和禁止布线层,检查高亮网络路径上是否有障碍物。
- 元件或焊盘被锁定:如果网络中的一个元件或焊盘被锁定(Locked),自动布线器可能会跳过它。排查:双击元件或焊盘,在属性框中查看“Locked”选项是否被勾选。
5.3 问题:如何高效处理大量未连接飞线?
当接手一个布线完成度很低的板子,面对成百上千条飞线时,可以这样做:
- 优先处理电源和地网络:使用“网络管理器”或“PCB面板”,筛选出GND和VCC等电源网络。对于这些网络,优先考虑用铺铜(Polygon Pour)来连接,效率远高于一根根走线。放置铺铜并正确分配网络后,重新DRC,这些网络的错误会大量减少。
- 按功能模块分区处理:利用Room(如果原理图用多通道设计)或手工框选,将板子按功能模块(如MCU核心、电源部分、传感器接口)分开。一次只关注一个区域,完成该区域内所有网络的布线,然后再处理下一个区域。这能降低认知负担。
- 善用自动布线器作为辅助:不要指望自动布线器完成全部工作,但它可以作为“连接器”。设置严格的规则(线宽、间距),然后对某个区域或某个特定网络类(如数据线)进行自动布线。完成后,你再手动优化走线路径和美观度。这能快速解决大量简单的连接。
实操心得:在最终发板前,我强制自己执行一个“终检三部曲”:1) 运行全套电气DRC(包括未连接网络、短路、间距),确保零错误;2) 单独运行一次“Un-Connected Pin”检查,这是抓“虚连”的最后一道防线;3) 生成并仔细阅读“布线完成度报告”,确认100%连接。这三步完成后,心里才真正有底。PCB设计,细节决定成败,而连接性检查是所有细节的基石。多花十分钟检查,可能省下的是数周的板厂重做和项目延期时间。