1. 项目概述:当DRC红灯亮起时
画完PCB,按下那个绿色的“运行DRC检查”按钮,然后看着消息面板里瞬间刷出几十上百条报错,这大概是每个用过Altium Designer的电子工程师都经历过的“心跳时刻”。DRC,设计规则检查,本应是保障我们设计文件准确无误、最终能顺利投产的“守门员”,但很多时候,它更像一个过于较真、规则繁复的“考官”,用满屏的红色错误(Error)和黄色警告(Warning)给我们当头一棒。
“Altium Designer DRC规则报错”这个标题,背后远不止是一个软件功能的使用问题。它直指PCB设计从逻辑图到物理实物的关键转化环节,是确保设计意图被精确执行、避免生产灾难(如短路、开路、间距不足)的核心防线。处理这些报错的过程,本质上是一个理解设计约束、权衡设计目标、并最终实现设计可制造性的过程。无论是刚入行的新手,还是画了多年板子的老手,在面对一些复杂或陌生的规则报错时,依然会感到棘手。
这篇文章,我将结合自己多年踩坑填坑的经验,不局限于简单地告诉你“这个报错怎么消掉”,而是试图帮你建立起一套处理DRC报错的系统性思维。我们会深入DRC规则的底层逻辑,拆解最常见的几类报错及其根源,分享高效排查和修复的实战流程,并探讨如何定制一套适合自己项目需求的规则集,从而让DRC从一个“麻烦制造者”转变为真正得力的“设计助手”。
2. DRC核心逻辑与规则体系深度解析
要高效解决DRC报错,首要任务是理解它到底在“检查”什么,以及它是依据什么来判定的。Altium Designer的DRC引擎是一个基于规则的检查系统,它不会理解你的设计意图,只会机械地比对设计图中的对象(如导线、焊盘、过孔、覆铜)与预设规则之间的几何关系。
2.1 DRC规则体系的四层架构
我们可以把AD的DRC规则体系想象成一个四层的金字塔:
底层:电气规则(Electrical)。这是最基础、最不容妥协的规则层,主要关乎电路能否正常工作,核心是“连通性”和“安全间距”。
- Clearance(安全间距):这是报错的重灾区。它规定了不同网络、不同对象(如导线-导线、导线-焊盘、焊盘-焊盘)之间必须保持的最小距离。任何小于此距离的情况都会触发错误。其背后是防止电气短路、满足生产工艺(如蚀刻精度、焊盘间距)和安规要求(如爬电距离)。
- Short-Circuit(短路):明确禁止不同网络的对象发生物理连接。除非你特意设置了允许短路的规则(极少见),否则任何此类连接都是致命错误。
- Un-Routed Net(未布线网络):检查是否所有在原理图中定义的网络连接,在PCB上都已通过导线或覆铜实现了物理连接。遗漏的飞线就是这里的检查目标。
- Un-Connected Pin(未连接引脚):检查是否有元器件的引脚处于完全悬空的状态,既没有网络连接,也没有任何布线。
中间层:布线规则(Routing)。这一层约束了“如何实现连接”,主要影响PCB的可制造性、信号完整性和美观度。
- Width(布线宽度):定义不同网络或层走线的宽度范围。电源线需要更宽以承载电流,高速信号线可能需要特定阻抗线宽。
- Routing Via Style(过孔样式):规定过孔的直径和孔径。过孔太小可能增加制板成本和钻孔难度,甚至导致孔壁镀铜不良。
- Routing Topology(布线拓扑):定义引脚间布线的优先顺序(如最短路径、菊花链等),在复杂总线布线中用到。
- Routing Priority(布线优先级):设定网络布线的先后顺序,通常优先布置关键网络(如时钟、电源)。
应用层:制造规则(Manufacturing)。这一层直接与PCB工厂的加工能力挂钩,目的是确保设计出的文件能被生产出来。
- Hole Size(孔尺寸):检查所有钻孔(包括过孔、安装孔)的直径是否在板厂工艺能力范围内。孔径太小或非标孔可能导致无法加工。
- Silk to Solder Mask Clearance(丝印到阻焊间距):确保丝印(元器件标识)不会印到焊盘或阻焊开窗上,影响焊接。
- Solder Mask Expansion(阻焊扩展):定义阻焊层相对于焊盘的收缩量。适当的扩展可以防止阻焊上焊盘,但过小可能导致焊接时阻焊脱落。
- Polygon Connect Style(覆铜连接方式):规定覆铜与焊盘的连接形式(直接连接、十字热焊盘连接等),影响焊接时的散热。
高级层:高速电路与放置规则(High Speed & Placement)。针对特定设计需求。
- Differential Pairs(差分对):约束差分线的线宽、间距、长度匹配等,对高速信号(如USB、HDMI、PCIe)至关重要。
- Length(长度规则):设定网络或差分对布线的最大、最小或匹配长度,用于时序控制。
- Component Clearance(元件间距):检查元器件本体(而非焊盘)之间在2D或3D空间上的距离,避免装配干涉。
提示:很多令人困惑的报错,根源在于规则之间的优先级和适用范围(Rule Scope)设置冲突。AD的规则应用遵循“特定规则优先于通用规则”的原则。一个针对“NetClass_Power”的线宽规则,其优先级会高于全局的“All”规则。
2.2 规则冲突与报错生成的逻辑
当你在PCB上放置或绘制一个对象时,AD会实时(或在你运行DRC时)遍历所有启用状态的规则,检查该对象是否违反了任何一条规则。关键在于,一个对象可能同时属于多条规则的检查范围。
例如,一条5V的电源线(网络名为+5V)靠近一条GND的走线。检查流程如下:
- 引擎识别这两段走线分别属于网络
+5V和GND。 - 查找所有适用的
Clearance规则。首先看是否有针对+5V与GND这两个特定网络的规则?如果没有,则看是否有针对+5V网络与All(所有其他网络)的规则?如果还没有,则最终应用全局的Clearance规则(通常针对All到All)。 - 测量两条走线边缘之间的最小空气间隙距离。
- 将测量值与找到的适用规则中规定的
+5V与GND(或All)的最小间距值进行比较。 - 如果实测距离小于规则值,则生成一条
Clearance Constraint报错,并高亮显示违规区域。
理解这个流程,你就明白为什么有时修改了一个规则,但报错并未消失——可能是因为还有一个优先级更高、更具体的规则在起作用。你需要找到真正“生效”的那条规则。
3. 高频DRC报错实战诊断与修复
面对满屏报错,切忌盲目地一个个去“硬改”板子。正确的做法是分类识别、定位根源、批量处理。下面我们针对几种最高频的报错类型,进行实战化拆解。
3.1 安全间距违规(Clearance Constraint)
这是最常见的报错,没有之一。错误信息通常为“Clearance Constraint Between ... and ...”。
诊断步骤:
- 双击报错信息:AD会自动跳转到PCB违规位置并放大,用高亮色圈出违规对象。这是最快定位问题的方法。
- 识别违规对象:看清楚是哪两个对象之间的问题。是导线-导线?焊盘-焊盘?还是覆铜-焊盘?记下它们所属的网络。
- 检查生效规则:在PCB界面,使用快捷键
T + D(Tools -> Design Rule Check),但先不运行。点击Rules To Check,找到Clearance规则,确保它被勾选。然后,回到PCB,将鼠标光标悬停在其中一个违规对象上,按Shift+V键。这会弹出一个“规则冲突”对话框,列出影响该对象的所有规则及其冲突详情。这里显示的就是真正“生效”的规则及其参数。 - 分析根源:
- 规则值过小?如果规则本身设置的值(如6mil)小于板厂工艺能力(如要求8mil),那么即使板子看起来“布得通”,也必须修改规则值以适应生产。
- 布局过密?规则值合理(如10mil),但局部空间实在有限,元件或走线过于拥挤。这是物理空间问题。
- 规则应用范围错误?可能你为电源网络设置了更大的间距(如20mil),但这个报错发生在两个电源网络之间,因为它们适用了那条更严格的电源网络间距规则,而非全局的10mil规则。
修复策略:
- 修改规则(治本):如果确认是规则值设置不当,进入
Design -> Rules,找到对应的Clearance规则进行修改。如果是特定网络间需要特殊间距,可以新建一条规则,将其Scope(第一个对象)和Scope(第二个对象)分别设置为那两个网络,然后赋予新的间距值。 - 优化布局布线(治标):如果是空间问题,只能手动调整:
- 拖动元件:微调元件位置,为走线腾出空间。
- 重新走线:删除原有走线,尝试更优的路径。善用“推挤”模式(在布线时按
Shift+R循环切换模式)让已有走线自动避让。 - 调整走线宽度:在允许的规则范围内,临时减小非关键信号的线宽以通过狭窄区域。
- 使用泪滴:为焊盘添加泪滴,可以稍微增加焊盘与走线连接处的间距冗余。
- 利用覆铜间距:如果是覆铜导致的间距报错,可以右键覆铜,选择
Polygon Actions -> Properties,在Clearance设置中,单独为这个覆铜设置更大的安全距离,或者使用Polygon Pour -> Repour All重新灌铜,有时能自动修复一些边缘毛刺造成的微小间距问题。
3.2 未布线网络(Un-Routed Net Constraint)
报错信息为“Un-Routed Net Constraint: Net ...”。这意味着原理图中定义的电气连接,在PCB上没有完整的铜皮路径。
诊断步骤:
- 查看飞线:在PCB视图,确保飞线显示已打开(
View -> Connections -> Show All)。报错的网络会有一根或多根“飞线”悬空,指示未连接的端点。 - 检查网络完整性:双击报错信息,高亮显示整个未连接的网络。观察是整条网络都未连接,还是某个分支或某个元件的引脚未连接。
- 常见原因排查:
- 引脚遗漏:某个元件的引脚忘记连线。
- 布线未完成:走线画到一半停止了,没有连接到目标焊盘。
- 过孔连接问题:走线通过过孔换层,但另一层的走线没有从过孔引出,或者过孔的网络属性错误。
- 覆铜连接不可靠:依赖覆铜进行连接,但覆铜与焊盘的连接方式(Relief Connect)可能因间距问题导致实际未连接,或者覆铜被禁布区(Keep-Out)阻挡。
- 元件封装错误:原理图符号的引脚编号与PCB封装的焊盘编号不匹配,导致网络表导入后网络错乱。这是最隐蔽也最致命的原因之一。
修复策略:
- 手动补线:对于简单的遗漏,手动绘制走线连接飞线两端。
- 使用布线器:对于复杂的多引脚网络,可以使用AD的交互式布线或自动布线功能(谨慎使用)进行快速连接。
- 检查覆铜:如果依赖覆铜,重新灌铜后,使用
Tools -> Polygon Pours -> Shelve暂时隐藏所有覆铜,再检查飞线是否消失。如果消失,说明问题在覆铜连接上,需要检查覆铜属性、连接方式和与焊盘的间距。 - 验证封装:这是关键一步。对报错的网络,右键选择
Net -> Select Entire Net,然后查看其中一个焊盘的属性,确认其网络名是否正确。同时,在原理图中高亮同一网络,对比PCB上的连接关系。如果发现引脚对应错误,必须返回原理图或封装库进行修正,然后更新PCB。
3.3 丝印到阻焊/丝印到丝印间距违规
这类报错属于制造规则,通常为警告(Warning)级别,但必须处理,否则影响产品外观和可读性。报错如“Silk To Solder Mask Clearance Constraint”或“Silk To Silk Clearance Constraint”。
诊断步骤:
- 定位:双击警告,查看是哪个元件的丝印(通常是位号或轮廓)太靠近焊盘(阻焊层)或其他丝印。
- 原因:几乎都是由于元件布局太密,自动放置的丝印位置重叠或侵入焊盘区域。
修复策略:
- 手动调整丝印:这是主要手段。选中丝印文本(如
R1,C5),拖动到合适位置。遵循清晰、不重叠、方向一致(通常尽可能朝上或朝左)的原则。 - 批量调整:AD提供强大的丝印调整工具。
Tools -> Placement -> Position Component Text...可以批量将元件的位号摆放在元件的四周。我个人的习惯是,在布局基本固定后,使用这个功能将所有位号放在元件上方或左侧的统一位置,然后再进行微调。 - 修改规则(慎用):如果板子空间极其紧张,可以适当减小
Silk To Solder Mask Clearance的规则值,但绝不能小于板厂要求(通常2-3mil),否则丝印可能上焊盘。 - 隐藏不必要丝印:对于极密区域(如BGA底部),可以考虑隐藏部分元件的丝印,在装配图上另行标注。右键元件,选择
Properties,在Designator或Comment的Autoposition下拉框中选择Hide。
3.4 孔尺寸违规(Hole Size Constraint)
报错“Hole Size Constraint”意味着你的过孔或通孔焊盘的钻孔直径,超出了你在Design -> Rules -> Manufacturing -> Hole Size中设置的允许范围。
诊断步骤:
- 确认违规孔:双击报错,定位到具体的过孔或焊盘。
- 检查规则设置:进入孔尺寸规则,查看你设置的
Minimum和Maximum值。这个范围必须覆盖你设计中所有孔的直径,并且必须符合目标PCB板厂的工艺能力。例如,板厂可能要求最小机械钻孔为0.2mm(约8mil),那么你的规则最小值就不能小于8mil。 - 检查孔的实际尺寸:双击违规的孔,在属性框中查看其
Hole Size值。
修复策略:
- 修改规则:如果规则范围设置得不合理(比如你用了6mil的过孔,但规则最小值设成了10mil),调整规则值以涵盖所有设计孔。
- 修改过孔尺寸:如果规则正确(如最小8mil),但你的过孔是6mil,那么你必须修改过孔尺寸。可以批量修改:
Find Similar Objects选择所有过孔,在属性面板中修改Hole Size。注意:修改过孔孔径会影响其阻抗和载流能力,需重新评估。 - 与板厂确认:最稳妥的方式是在设计前就明确板厂的工艺能力,并以此为依据设置规则。如果设计已完成但有个别孔超标,需要与板厂沟通是否可以作为特殊工艺处理(通常会增加成本和风险)。
4. 高效DRC问题排查与修复工作流
面对成百上千的报错,一个系统性的工作流能极大提升效率。我个人的流程如下,你可以直接参考:
4.1 第一步:分类与过滤,聚焦关键错误
- 运行完整DRC:首先,进行一次全面的DRC检查(
Tools -> Design Rule Check -> Run Design Rule Check)。生成报告。 - 错误优先:在
Messages面板中,忽略所有Warning,只关注Error。错误是必须解决的,警告可以根据情况处理。 - 按规则类型排序:点击
Messages面板的列标题,按Rule或Class排序。这样,所有Clearance错误会排在一起,所有Un-Routed Net错误会排在一起。 - 解决连通性错误:优先处理
Un-Routed Net和Short Circuit错误。因为布线不完整或短路,板子根本不能用,其他间距问题在调整布线时可能自然解决。 - 批量查看同一类错误:选中一个
Clearance错误,右键选择Select All Violations of Same Type,然后按F11打开PCB Inspector面板,你可以看到所有这些违规的详细信息,并且可以在PCB上同时看到所有高亮位置,便于评估问题的普遍性。
4.2 第二步:定位与诊断,利用高效工具
- “Shift+V”大法:如前所述,将鼠标悬停在违规对象上按
Shift+V,是诊断规则冲突最快的方式。它能直接告诉你当前生效的是哪条规则,以及冲突的具体数值。 - PCB筛选面板:使用
PCB Filter面板(快捷键F12或面板底部标签)。你可以编写查询语句,例如输入InNet('GND') And OnLayer('TopLayer')来高亮显示顶层所有GND网络的对象,在检查间距或布线时非常有用。 - 隐藏与反隐藏:在处理密集区域的间距错误时,可以暂时隐藏无关的层(在
Layers面板点击眼睛图标)或无关的网络(右键网络选择Connections -> Hide),让视野更清晰。 - 使用“Re-Route”功能:对于一段有间距问题的走线,不必删除重画。选中该走线,按
Tab键可以选中整条网络线段,然后使用Interactive Sliding(快捷键U+I)或Re-Route(快捷键P+T然后点击已有走线)功能进行推挤或重新规划路径,AD会自动保持新的走线符合规则。
4.3 第三步:修复与验证,避免反复
- 修改后实时DRC:在
Preferences -> PCB Editor -> General中,勾选Online DRC(在线DRC)。这样,在你拖动元件或布线时,一旦违反规则,会立即出现高亮提示(通常是绿色波浪线或高亮圈),实现“实时纠错”。 - 局部重铺覆铜:修改了与覆铜相关的布线后,务必右键相关覆铜,选择
Polygon Actions -> Repour Selected,重新灌铜以更新其形状并触发新的DRC检查。 - 修复后再次运行DRC:每修复完一类主要错误,就重新运行一次DRC。因为你的修复动作可能会引入新的冲突(比如为了避开一个间距错误,走线变长,可能与另一条线产生新的间距问题)。
- 生成最终报告:在所有错误清除后,运行最后一次完整DRC,并勾选
Create Report File,生成一个.htm格式的详细报告文件。这份报告是发给同事审查或存档的重要文件,证明你的设计已通过所有规则检查。
5. 构建与维护项目专属DRC规则集
依赖软件默认规则或每次新建项目都从头设置规则是低效的。建立一个适合自己公司或常用工艺的规则模板,是专业性的体现。
5.1 规则设置的黄金法则
- 基于制造商能力:所有制造类规则(最小线宽/线距、最小孔径、阻焊扩展等)的底线,必须来自你计划合作的PCB板厂的《工艺能力规范》。通常以“最小/常规/极限”能力给出。我们通常按“常规能力”设置,为生产留有余地。
- 电气规则优先:安全间距、短路检查等电气规则必须严格,通常设置为板厂最小线距。对于高压、大电流部分,需根据安规(如IPC标准)加大间距。
- 为高速信号单独设规:差分对、阻抗控制线、关键时钟线等,必须建立独立的规则类(Net Class),并为其分配特定的线宽、间距和长度规则。
- 电源网络区别对待:将电源网络(如
VCC12V,VCC5V,VCC3V3)归类,设置更大的线宽(满足载流)和可能的更大间距(提高可靠性)。
5.2 创建与导出规则模板
- 在成熟项目中设置:找一个你最近完成的、经过生产验证无误的项目。
- 进入规则管理器:
Design -> Rules。 - 清理和优化:删除该项目中未使用的、临时的规则。确保留下的规则都是清晰、必要且参数正确的。
- 导出规则:在规则管理器对话框的左上角,点击
Rules菜单,选择Export Rules...。选择你想导出的规则类别(通常全选),保存为一个.rul文件。 - 导入到新项目:在新项目的PCB文件中,同样进入规则管理器,点击
Rules菜单,选择Import Rules...,选择你保存的.rul文件。导入后,仔细检查一遍,根据新项目的特殊需求做微调(比如板厚不同,阻抗线宽可能需要重新计算)。
5.3 规则检查清单(DRC前必看)
在发出制板文件前,对照此清单快速过一遍你的规则设置:
- [ ]电气规则:
Clearance全局值是否≥板厂最小线距?是否有高压网络需要额外加大间距? - [ ]布线规则:电源网络线宽是否满足载流计算?高速信号线(差分对)是否设置了正确的阻抗线宽和间距?
- [ ]过孔规则:
Routing Via Style中的孔径和直径是否在板厂能力范围内?是否定义了不同尺寸的过孔(如电源过孔、信号过孔)? - [ ]覆铜规则:
Polygon Connect Style中,电源焊盘是否设置为直接连接(Direct Connect)以获得更好的载流和散热?信号焊盘是否设置为热焊盘连接(Relief Connect)以避免焊接困难? - [ ]制造规则:
Hole Size范围是否涵盖所有钻孔?Silk to Solder Mask间距是否≥3mil?Solder Mask Expansion是否设置合理(通常2-4mil)? - [ ]元件放置:
Component Clearance是否启用?3D体之间的间距是否满足装配要求?
6. 进阶技巧与疑难杂症处理
即使掌握了上述流程,有些“顽固”的DRC报错依然让人头疼。这里分享几个进阶处理技巧。
6.1 “虚假”报错与规则豁免
有时,DRC会报告一些实际上可以接受的“虚假”错误。
- IC引脚内的间距:一些多引脚IC(如QFP、BGA),其封装内部相邻焊盘的中心距离可能本身就小于你设定的全局安全间距。这时,可以为这个元件的封装单独创建一条豁免规则。在
Clearance规则中新建一条,Scope 1设置为All,Scope 2设置为Footprint is ...(你的IC封装名),然后将间距值设为一个极小的值(如1mil)。这样,该封装内部的间距检查就会被放宽,而它与其他元件的间距仍受全局规则约束。 - 测试点与焊盘:测试点可能需要故意靠近某些焊盘。可以为测试点网络或测试点元件设置特殊的、更小的间距规则。
- 金手指或板边连接器:这些区域可能有特殊的间距要求,需要单独设规。
注意:使用豁免规则必须非常谨慎,确保你完全理解放宽规则可能带来的风险(如焊接桥连)。最好在PCB上添加清晰的注释或与焊接厂沟通。
6.2 覆铜相关的特殊问题
覆铜是DRC报错的“高发区”,除了间距问题,还有:
- 死铜(Dead Copper):孤立的、没有连接到任何网络的覆铜岛屿。它们可能造成EMI问题。在覆铜属性中勾选
Remove Dead Copper可以自动清除。 - 覆铜连接失效:明明看到覆铜覆盖了焊盘,但
Un-Routed Net报错依然存在。这通常是因为覆铜与焊盘的连接线(Thermal Relief)太细或连接点数太少,在实际光绘输出时可能断开。解决方法是:在覆铜属性或规则中,增大Conductor Width(连接线宽),或增加Connections(连接点数)。对于大电流焊盘,直接使用Direct Connect(全连接)。 - 覆铜重铺后报错变化:每次重铺覆铜,边缘形状会有微小变化,可能导致之前修好的间距报错再次出现,或者新的地方出现报错。建议在布局布线最终冻结后,再进行最后一次覆铜和DRC检查。
6.3 与原理图同步相关的深层错误
最令人崩溃的DRC错误,是那些根源不在PCB,而在原理图或封装库的错误。
- 封装引脚映射错误:原理图符号的引脚号(如
1, 2, 3)与PCB封装的焊盘号(如A, B, C)不匹配。更新PCB后,网络会错接到错误的焊盘上,导致大量无法理解的短路和未连接报错。解决方法:必须返回库文件修正,确保原理图符号的Designator与PCB封装的Pad Designator一一对应。 - 网络名不一致:在原理图中修改了网络标签,但没有成功更新到PCB。使用
Design -> Update PCB Document...功能,仔细查看工程变更订单(ECO),确保所有更改被正确推送。 - 元件位号变更:在PCB中直接修改了元件位号(如将
R1改为R100),但没有反标回原理图。这会导致后续BOM不一致。任何位号修改都应在原理图中进行,然后更新到PCB。
处理这类错误,需要建立严格的库管理规范和同步流程。一个实用的习惯是:在开始PCB布局前,先对项目进行一次完整的编译(Project -> Compile PCB Project),确保原理图没有电气错误,然后执行一次更新PCB操作,并在ECO中仔细核对每一项变更。
DRC报错不是敌人,而是最严格的老师。每一次解决报错的过程,都是对设计细节的一次审视,对设计规则的一次理解,对可制造性的一次靠拢。起初,你可能会觉得这些规则繁琐恼人;但当你习惯与之共处,并学会为自己量身定制规则集后,你会发现,正是这些看似冰冷的约束,在默默守护着你设计的可靠性,将天马行空的电路构想,扎实地锚定在可以量产的物理世界。下次当DRC红灯再次亮起,希望你能从容地点开报告,像解开一道道有趣的谜题一样,将它们逐一化解。