首页 / 资讯中心 / 文章详情

PCB设计DRC完全指南:从规则配置到partial route conflicts解析

PCB设计DRC完全指南:从规则配置到partial route conflicts解析 ★ FEATURED ARTICLE
做PCB设计这些年DRC大概是被提起最多、又被理解得最浅的名词。很多初学者画完板子点一下DRC按钮看到绿色的对勾就以为万事大吉直到板厂打来电话说这里间距不够那里网络被切断了才意识到自己根本没有搞懂DRC到底查了什么。更常见的情况是跑完DRC弹出一大串红色报错比如热搜里那条drc rtstat-6 partial route conflicts: 1184 net(s) have a partial conflict一眼扫过去直接头疼压根不知道从哪儿下手。DRC的全称是Design Rule Check翻译过来就是设计规则检查。它是从设计到制造之间最重要的一道关卡原理图有没有画错、PCB有没有违反制造工艺限制、有没有短路断路风险都要靠DRC去兜底。这篇文章就是给零基础或者半只脚刚入门的硬件工程师准备的我会把DRC从它到底是什么到怎么样才算把这个工具学明白拆成一条完整的学习路径再拿OrCAD和Allegro这种常见工具举例把实操流程、报错定位、踩坑经验一起讲透。读完你会发现DRC真不是跑一下就算了的按钮它是一套值得认真对待的方法论。1. 先搞清楚DRC到底是干什么的——设计规则检查的本质1.1 DRC在设计流程中的位置从画完原理图到投板之间的守门员我习惯把一块板子的诞生分成三个阶段原理图设计、PCB布局布线、制造与贴片。DRC横跨第二阶段和第三阶段的交界处它存在的意义就是在你把Gerber文件发给板厂之前先用软件替你检查一遍这板子能不能造、造出来能不能用。打个比方DRC就像是你交毕业论文之前的查重系统。你自己觉得自己写得挺好但有没有抄袭、格式对不对、引用规不规范得跑一遍查重才知道。DRC也是一样它不管你电路功能设计得多巧妙只管你有没有违反设计规则。规则从哪来一部分来自PCB制造工艺的物理极限比如线宽不能小于多少mil、过孔到焊盘的间距不能小于多少mil另一部分来自电路设计本身的电气要求比如电源网络和地网络之间不能短路、输入引脚不能悬空。这个守门员角色决定了DRC的地位——它不是锦上添花而是硬性关卡。我自己见过太多工程师在仿真和原理图上花了大把精力结果画PCB时因为一个间距0.2mm小于规则0.3mm的报错被板厂退回反复打样浪费时间和钱。DDR、电源、高速信号这些设计固然重要但DRC是地基中的地基地基不牢上面盖得再漂亮都可能塌。1.2 为什么DRC不是点一下按钮就完事很多初学者有个误区觉得DRC是一个固定流程规则用默认的检查点一下结果看绿了就结束。实际上DRC的完整工作流应该是定义规则-执行检查-解读结果-修改设计-复查闭环这五步其中任何一个环节做不好DRC都只是走过场。先说定义规则。默认规则通常是EDA工具按照通用工艺给的但你的板子可能是2层板也可能是12层板可能是低速数字电路也可能是射频电路不同板子的核心矛盾完全不同。低速板你可能最关心制造可行性高速板你得额外关心阻抗、串扰、回流路径这时候DRC规则就得针对性地加上电气约束和物理约束。再看结果解读。partial route conflicts这种报错字面上是部分布线冲突但具体是网络没走完、走线出现了stub分支、还是同一网络被铜皮和走线切成了多个孤岛这需要你把软件报错和PCB图形对照起来看而不是只看一个数字。所以DRC真正考验的不是点按钮的手速而是你把规则、实际设计和检查结果三方对照起来分析的能力。1.3 DRC、ERC、DFM到底有什么区别学DRC路上第一个绕不开的困惑就是DRC、ERC、DFM这几个东西是不是一回事。不是它们是三兄弟管的事情完全不同。先看DRC全称Design Rule Check侧重PCB物理和电气设计比如间距、线宽、孔到孔距离、平面连接方式。再看ERCElectrical Rule Check通常用在原理图阶段主要检查单向引脚有没有接反、输入悬空、输出短路这些电气逻辑错误。简单说ERC检查的是你画的原理图符号之间连接得合不合理DRC检查的是你画的物理版图符不符合制造和电气要求这两者在不同工具里菜单位置不一样但很多初学者容易混。顺便说一句DFMDesign for Manufacturing它比DRC更靠近制造端检查的是你的设计能不能被现有产线加工出来比如拼板开槽角度、Mark点位置、铜皮到板边的距离。现在有些EDA工具已经把DFM检查整合到DRC流程里了但概念上它们还是有区分。作为初学者你可以先记住一条主线原理图阶段靠ERC把关PCB阶段靠DRC把关投板前用DFM做最终体检。2. 初学者的结构化学习路径把DRC拆成四个台阶来走2.1 第一层理解设计规则从哪来——工艺能力、器件规格、电气约束如果只看操作不看原理DRC学起来会非常空虚。我建议初学者把第一层功夫花在规则是从哪来的这个问题上因为它直接影响你后面能不能正确地改规则。设计规则主要来自三个源头。第一是板厂的工艺能力线宽和间距做多少能达到良率最优、钻孔最小能做到多少、孔环最小要留多少这些参数板厂会给你一份工艺能力表你的PCB设计规则必须在这个范围之内。第二是器件本身的封装规格比如一个间距只有0.4mm的BGA你的走线和过孔策略就得围着它转有些连接器引脚之间的间距极小布线规则稍微设宽一点软件就会疯狂报错。第三是电路设计的电气约束比如电源网络载流能力要求某段走线必须加宽、差分对要求等长等间距这些要手动加到规则里去而不是靠默认规则覆盖。理解了这三个来源你就自然理解为什么不同板子要配不同规则文件。我在公司里维护过一套标准规则库2层低速板、4层中速板、6层高速板各有一套每套都附带注释说明每条规则来自哪份工艺文件、哪个器件规格书这样新同事上手也能明白来龙去脉。2.2 第二层学会配置规则——最小线宽/间距、钻孔到铜、平面层连接规则配置是DRC学习路径里最需要动手的一层。我先拿最常用的几个规则类别展开讲。间距规则Spacing定义不同网络之间的最小距离比如Clearance设为6mil还是8mil。这里要注意的是网络类别之间的间距比如普通信号线之间可以6mil但信号和电源之间、信号和地之间可能要分别设置因为不同网络对噪声和抗干扰的要求不一样。线宽规则Line Width定义走线的最小、最大和推荐宽度。最小宽度受工艺和载流能力限制最大宽度主要考虑布线密度和阻抗控制。孔类规则Drill包括钻孔到铜皮的最小距离、孔环Annular Ring的最小宽度、以及孔与孔之间的最小间距。这些规则直接决定板厂能不能顺利钻孔孔打歪了会不会碰到旁边的走线。平面层规则Plane定义内电层铜皮到过孔、焊盘的最小间距还有热焊盘连接的宽度和数量。平面层的设置直接关系到电源完整性也关系到回流焊时器件能不能正常散热。配置这些规则时我建议每改一条都在旁边写注释这样后续查问题时不用反复推理这个值当初是为什么设的。另外规则文件一定要和PCB工程一起保存换电脑、换版本、发给同事评审时才不会乱。2.3 第三层会跑、会看、会导出DRC报告规则配好了才有资格谈跑DRC。这一步的核心不是点那个按钮而是选择合理的检查范围以及解读输出的报告。以Allegro/OrCAD PCB Editor为例DRC通常在菜单里叫Design Rule Check或者直接在工具栏找到DRC图标。跑之前先要选择检查模式你是做实时模式还是批量模式。实时模式适合布线过程中边画边检查能第一时间发现问题批量模式适合在某个设计节点或者最终投板前做全面扫描把整个板子彻底过一遍。跑完之后软件会输出一个报告文件也就是类似drc rtstat-6 partial route conflicts这类信息的来源。报告里一般会分类列出错误个数比如间距错误、连接性错误、走线完整性错误、钻孔错误。我看到很多新人拿到报告就盯着第一行发慌其实正规的做法是先把报告分类看一遍明白问题集中在哪一类然后回到PCB编辑器里用定位功能逐个跳转到错误坐标去看图判断。2.4 第四层看懂报错并定位到具体网络和坐标配置规则、跑出报告这些都只是手段最终目的是让你能定位问题、理解问题、解决问题。这一层的学习方法是拿到真实报错去翻译它的含义。比如partial route conflicts报错我在实际项目里见到的频率很高。它通常的意思是PCB上有一些网络没有完整连接或者说网络拓扑不完整。用工程师的行话说就是这个网络走线没走完或者这里有残桩。你点开错误定位会看到一个网络明明两端都有焊盘但中间有一段没有走线连接或者走线到了一个过孔就断掉了。还有一种情况是同一网络存在多条未连接的分支比如一个电源网络通过铜皮连接了多个引脚其中某个引脚和铜皮的连接被间距规则挡住了导致这个引脚实际是悬空的。定位报错的核心技能是会用软件的高亮、过滤和选择功能。我习惯在DRC结果面板里先按错误类型过滤再把某条错误设为高亮配合Cross Probe功能在原理图和PCB之间来回跳这样能快速判断这个管脚原本应该连到哪去是布线漏了、规则卡了还是器件封装本身就有问题。3. 以OrCAD为例的DRC实操流程从原理图到PCB3.1 原理图阶段的ERC检查——不只有没有连错还要看有没有悬空现在很多学OrCAD的人一上来就盯着PCB Editor的DRC却忽略了OrCAD Capture原理图阶段还有一个ERC电气规则检查。完整的学习路径应该是先过原理图再过PCB否则你在PCB阶段发现的很多规则冲突源头可能在原理图就已经埋下了。在OrCAD Capture里ERC的入口通常位于菜单Tools下手动触发或者在做Netlist时自动检查。它主要查这些事第一有没有未连接的引脚比如一个电阻的引脚只在原理图画面上看着连了但没有实实在在的网络标签第二有没有电源和地接反比如某个芯片的VCC引脚被接入了GND网络第三有没有输出类型冲突比如两个输出引脚短接在了一起。这些在原理图上看不出来但摩擦到PCB阶段全是真实的DRC报错而且更难改。我自己的习惯是每一页原理图画完就立刻跑一次ERC不让错误累积到后面。如果等到整张原理图全部画完再跑报错几十上百条你根本分不清哪个报错影响的是哪个模块定位成本会高很多。这个习惯叫做小步快跑放到原理图检查和PCB DRC都适用。3.2 PCB Editor中的DRC设置——间距、线宽、过孔、平面连接到了PCB EditorOrCAD和Allegro共用同一套约束管理器DRC设置的入口一般在Constraints或Setup - Constraints菜单下。初学者第一次打开约束管理器通常会懵因为里面的树状结构非常深左边是物理约束右边是间距约束下面还有区域规则、高速规则、器件规则、制造规则等一大堆分类。我建议按下面这个顺序去核对先看全局间距规则Spacing Constraint Set确认默认间距值是否符合板厂工艺能力。再看全局物理规则Physical Constraint Set这里面包含线宽和过孔的类型定义。然后检查平面层相关的规则比如Plane标签页里的热焊盘连接方式和隔离间距。最后确认有没有需要单独设置的特殊网络比如时钟线、差分对、电源网络把它们的规则在Net或Bus层面的约束里单独调出来。这里分享一个我踩过的坑。早年我画一块FPGA核心板跑完DRC发现几百个间距报错全部集中在BGA底下。原因就是我把全局间距统一设成了6mil但BGA中心距只有0.5mm折算下来引脚间距离根本容纳不下6mil间距正确做法是在BGA封装区域单独加一个区域规则Region把间距临时放宽或者把扇出走线改成盘中孔方案重新规划。这个案例说明DRC规则设置不是全局一个值走天下你得有区域规则的思维。3.3 实时DRC与批量DRC两种模式怎么配合OrCAD PCB Editor里的DRC除了批量检查之外还提供了一个叫实时DRC的功能在布线过程中动态显示违规比如你拉一根线时只要间距不够软件立刻会显示一个红圈或者变色提示。初学者的常见问题是用不好这两种模式的配合。要么全程开实时DRC导致布线时被无数红色警告吓得不敢动线要么干脆全关画到最后一跑批量DRC才发现几百个错误堆在那里。我的建议是分阶段使用。布局阶段和布线前期实时DRC可以开着但要打开在线DRC只查间距类错误别把连接性错误也实时开不然会卡顿且信息过载。到了布线中后期可以把实时DRC的检查项缩小到当前正在处理的网络专心把主连通搞定。等到布线全部结束再打开完整的批量DRC做最终体检把所有类型错误一次扫清。实际操作中批量DRC跑完会生成一份报告报告路径通常在输出目录下文件名类似chk.drc或者是图形化的DRC Markers列表。别只看报告正文还要学会利用软件界面的DRC Browser窗口它会把每条错误映射成图形标记双击任意一条视图会自动跳到对应的坐标处非常高效。4. 一个真实的partial route conflicts报错剖析4.1 报错信息怎么读——rtstat-6里的数字与含义遇到drc rtstat-6 partial route conflicts: 1184 net(s) have a partial conflict这类报错时第一步不是恐慌而是拆解信息。rtstat-6是Allegro/OrCAD PCB Editor里一个检查项的代号我用几个实际项目经验来解释一下rtstat全称其实是Route Status的缩写它检查的是每一个网络有没有完全布通。后面的数字6在旧版软件里对应部分布线冲突这个子类型。重点来了——1184 net(s) have a partial conflict这行文字的真正含义是在所有网络里有1184个网络处于部分连通状态。什么叫部分连通我见过很多新人把它理解成有1184个网络完全没走线这是错的。部分连通指的是网络内部所有引脚、焊盘、走线、过孔加在一起构成了一张网但这张网存在至少一个缺口要么是某两个焊盘之间缺了一段走线要么是某个引脚和过孔没有连接上要么是铜皮之间的间距规则把连接硬生生切断了。所以当你看到这个报错时真正要关心的是缺口在哪里以及为什么会产生缺口而不是被1184这个庞大的数字吓到。4.2 1184 net(s) have a partial conflict到底是怎么来的1184个网络有冲突这个数字在大中型PCB上并不罕见。如果一个BGA封装的芯片有几百个引脚电源网络和地网络又通过多层平面连接一旦平面层切割出了问题或者某一段规则设置错误报错数量就会指数级上升。拿我做过的一块含DDR4模块的板子来举例。当时的报错数量大概600多个我以为是布线没完成结果打开定位一看全是同一个原因DDR4芯片底下的某些电源引脚通过过孔连到内电层但内电层的铜皮被另一个网络的分割线切断了导致引脚和铜皮之间出现了一个极窄的绝缘缝隙。从二维平面上看过孔和铜皮离得很近但实际并没有连接。这就是典型的看起来连上了实际没连上DRC报partial conflict是对的。另一个高频原因是残桩stub。有些同学布线时改过路径原来的走线段没删干净留下一条一端悬空的短线挂在网络上这种短线不会导致断路但会造成信号反射和阻抗不连续DRC也会把它标记为部分路由冲突。所以这个报错不仅仅关乎连通性还关乎走线质量。4.3 从定位到修复——拿一个例子完整走一遍我建议你按照下面这个流程来处理“partial route conflicts”第一步打开DRC Browser或Error Markers列表设置过滤器只显示Route Status类错误这样能把1184条报错缩小到更可控的范围。第二步按网络分类优先处理电源和地网络。这类网络通常层数多、覆盖面大修复一个往往能消掉几十上百条报错。比如我上边提到的DDR4例子我在内电层分割线处补了一块连接铜皮同一个电源网络下几十个引脚的报错全部消失了。第三步处理单端信号网络的残桩。在PCB编辑器里打开走线显示模式仔细看报错位置是不是存在一端悬空的走线段。如果是选中它按删除键把残桩清掉。删完之后记得再次用DRC检查这个网络确认错误消失再切换到下一个。第四步有些部分连接是规则导致的。比如某个引脚和铜皮之间的间距规则太保守铜皮被隔离得太远这时候你就得判断是改规则合理还是应该调整铜皮形状、加入一个过渡走线更合理。我的原则是优先改设计实在无法避免时才改规则而且改规则要有依据、写注释、经过评审。4.4 几类常见DRC报错的速查对照表初学DRC时最缺的是一张报错速查表我把项目里最常遇到的几类列在这里方便你对照排查。报错类型通常含义常见修复手段Partial Route Conflicts网络存在未连通或走线分支补走线、删除残桩、补铜皮Spacing Violation间距小于规则值推挤走线、调整过孔位置、改局部规则Hole to Copper Violation钻孔到铜皮距离不足移动过孔、缩小孔环、调整铜皮Unconnected Pin引脚未被网络连接检查原理图、补走线或修改封装Missing Net Connectivity网络标签未分配回到原理图补标签重新生成网表Plane Thermal Relief Violation热焊盘连接数不足修改热焊盘参数或连接方式这张表只是一个起点每个EDA工具的报错措辞可能略有不同但底层逻辑是一致的先判断错误属于规则类、连通类还是制造类再决定修复策略。别一上来就动手改设计先看清楚错误归类这是我从无数加班夜晚里总结出来的惨痛教训。5. 初学者最容易踩的坑和排查技巧5.1 只跑默认规则从来不建自己的规则文件这个坑我在前面反复提过但还是要单拎出来强调因为它实在太普遍了。很多初学者拿到工程文件后规则全部用默认画完板子跑一次DRC绿了就投板出问题后又一脸无辜。默认规则不是不能用而是它只适用于最简单的两层板、宽间距、低速电路。稍微复杂一点的板子如果没有针对电源网络加大线宽、对差分对做等长约束、对BGA区域做区域规则DRC跑出来的结果基本等于只检查了物理最小间距电气维度和制造维度的风险全都没覆盖到。正确做法是先和板厂要一份工艺能力表再对照原理图的电源树和关键信号逐一确认规则库中哪条规则对应哪个设计需求。把这个过程写成一个清单每次新项目直接用模板再根据具体板子微调效率会高很多。5.2 只看错误数量不看错误分布跑完DRC看到1184个冲突有人第一反应是崩溃第二反应是想一次性全部修复。这个方向就错了。真正有效的做法是先分类、后抽样、再批量。我个人的习惯是先看错误类型分布比如1000条里如果950条都是同一类错误那一定是系统性原因造成的不是一个个手动改出来的。可能是一个规则参数设错了可能是一个平面层被整体切错可能是某个原理图网络标号统一错了。修掉这个根因几百上千个错误可能同时消失。这时候如果你埋头单个去改一晚上可能只改了几十条效率低到让人崩溃。5.3 报错定位后不知道怎么下手定位到坐标之后新手经常面临的困境是看到了红色标记却不知道这个标记代表的问题应该怎么改。我提供一个非常实用的排查顺序先看这个位置属于哪个网络用软件的Highlight功能高亮这个网络的所有元素。然后看它的连接关系是应该和哪个焊盘、哪段走线、哪块铜皮相连。如果连接断开了判断是没走还是走线被规则挡了没走就补走线被规则挡了就检查这块区域的间距规则和其他约束必要时和周边布局协调调整。最后再检查一下封装本身比如某些器件的引脚排列非常密扇出走线本来就需要特殊处理这时就别硬用默认规则了加一个区域规则来适配更合理。5.4 实用排查技巧善用过滤、高亮和Cross Probe软件操作层面有几个功能是DRC排查效率倍增器我建议初学者尽早掌握。第一个是过滤器Filter它可以让你只显示当前关注的错误类型把其他干扰信息全部藏起来。第二个是高亮Highlight把目标网络或目标对象用明亮颜色标记出来尤其是在布线密度高的区域视觉上能快速帮你抓住重点。第三个是原理图和PCB的Cross Probe联动在OrCAD和Allegro的联合环境下在原理图里选中一个网络PCB里也会同步高亮反过来也一样。我处理那种一个问题牵涉几十个引脚的报错时会先在原理图里把整个模块的网络选中切到PCB高亮然后在3D视图或暗色背景下观察整体连接走线很多之前2D平面里看不出来的断点、残桩、间距问题在这种模式下会变得特别清晰。这个习惯帮我节省了大量时间真心建议你也试试。回到开头那条partial route conflicts: 1184 net(s)。说实话我后来再遇到这种报错已经淡定多了因为我知道它只是一个信号告诉我网络完整性出了问题至于问题是什么、出在哪个层级、怎么修都需要回到设计本身去分析。DRC工具是死的但规则是活的设计者才是整个流程的核心。初学阶段我建议你刻意练习先分类再定位、先根因再批量的工作方式把每一次DRC报错都当成一次排查训练而不是一次麻烦。这样积累半年你会发现自己对PCB设计的理解深度已经远远超过了那些只会点按钮的人。
阅读完成 · 觉得有帮助?
咨询建站