ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AD22原理图编译检查与DCR设计评审全攻略:从Validate到交付检查

AD22原理图编译检查与DCR设计评审全攻略:从Validate到交付检查 1. 为什么原理图编译检查值得单独写一篇攻略先交代一下背景。我接触Altium Designer十几年从Protel 99SE一路用到AD22画过的板子少说也有几十块。早期大家画原理图都比较随意拉完线直接丢给Layout工程师结果到了PCB阶段才发现网络少连、引脚悬空、电源符号用错返工改图改到怀疑人生。后来带团队带新人我发现一个规律凡是原理图阶段老老实实跑完编译检查的项目后面Layout和投板的坑至少少一半。Altium Designer 22以下简称AD22的原理图编译检查官方叫法其实是Engineering Validation但绝大多数人习惯直接说Validate。它做的事情简单粗暴扫描整个原理图工程把电气连接、器件属性、网络命名、层级结构这些潜在问题一次性列出来然后你根据Message面板逐条去改。改完再跑直到没有error为止。这个过程不复杂但细节非常多很多新手甚至一些老手都只跑默认规则导致大量该查的问题被漏掉。这篇文章就用我实际跑项目的流程把从Validate到DCR的完整链路拆开讲一遍。DCR是Design Constructive Review的缩写在AD22里是专门用于原理图评审的检查工具比普通Validate更严格、更偏设计规范。我会把每一步的操作方式、参数含义、常见坑位都写清楚适合刚接触AD22的工程师也适合想系统梳理检查流程的Layout和硬件老兵。先放一张我自己项目的检查流程总览方便你心里有数原理图绘制完成 → 编译工程(Validate) → 逐条排查Message → 修正电气错误 → 设置DCR检查规则 → 运行DCR → 分析报告 → 人工重点复查 → 输出评审记录整个过程看下来好像就是“点几下按钮”但真正花时间的全在后面的人工研判上。下面逐个环节展开。2. Validate和DCR到底是什么关系2.1 Validate是“电路连通性体检”AD22的Validate编译工程核心任务是检验整个工程的电气完整性。它不会去管你的原理图画得是否美观、器件位号是否规范、走线是否符合公司规范——这些不是它的职责。它只关心一件事每一根导线、每一个引脚、每一个网络从电气意义上是否形成了正确且完整的连接。具体来说Validate会做以下几类检查单端网络检查某个网络只连接了一个引脚或一个端口另一端悬空。这是最常见的错误类型在电源和地网络上尤其容易出现。引脚冲突检查同一个引脚被多个网络同时连接或者两个输出型引脚直接短接。未连接引脚检查器件有引脚没有接任何网络。有些是故意不接但更多是漏画。端口与网络标签类型不匹配比如Input类型的端口接到了Output类型的端口。器件位号重复或缺失原理图里出现两个R1或者某个器件没有位号。层级端口对应关系错误多图纸设计中上层图纸的Sheet Symbol引脚与下层图纸的端口名称不一致。你可以把Validate理解成医院的常规体检套餐查的是血压、心率、血常规这些基础指标。基础但必须漏掉任何一项都可能出大事。2.2 DCR是“设计规范审查”DCRDesign Constructive Review在AD22中是相对较新的功能英文全称是Design Constructive Review直接翻译是“建设性设计评审”。它和Validate的定位完全不同。DCR不是从电气连通性出发而是从可制造性、可读性、规范性出发去审查你的原理图是否存在设计层面的隐患。举个例子Validate永远不会告诉你“你的地网络扇出只有单个过孔电流能力可能不够”更不会告诉你“你的去耦电容离IC电源引脚太远”。但DCR会通过规则来约束这些。它更接近老工程师人工审图时关注的东西——器件布局是否合理、电源处理是否稳妥、关键网络是否做了标注、是否有容易被忽略的隐藏引脚。DCR的检查维度包括但不限于BOM规范性器件是否有制造商编号、封装是否完整、值是否合理。电源网络检查是否存在多个不同名字的电源网络实际是同一个电平、电源符号使用是否一致。位号和标注检查位号是否连续、是否有重复、注释是否包含非法字符。信号完整性初步提示某些高速信号是否做了阻抗标记、是否加了必要的端接。设计复用性是否存在大量复制粘贴导致的网络命名混乱。所以两者真正的区别是Validate管“能不能通电”DCR管“是不是规范、好不好生产”。实际项目中两个都必须跑而且顺序不能反。先跑Validate解决根本性连接错误再跑DCR做规范性收尾。2.3 热词里的“validate branches another open merge request”跟AD没关系顺便提一下检索这个标题时可能会看到“validate branches another open merge request already exists for this source”这类内容这是GitLab等代码托管平台在合并请求校验时出现的报错跟Altium Designer完全无关。你要是搜资料时看到这种直接忽略即可别被带偏。我们这里说的Validate就是Altium Designer工程菜单下的Compile操作不要混为一谈。3. Validate前的工程设置这一步偷懒后面全是泪很多教程上来就让你打开原理图直接Project → Validate PCB Project我建议你别这么干。Validate的检查结果高度依赖工程选项里的配置默认配置远不够用。先按下图路径打开OptionsProject → Project Options → Options分类页默认就是这里有几个关键项我逐个说。3.1 Error Reporting选项卡——错误等级先调满这个选项卡是Validate的核心里面列了上百种检查项每一项都有四个错误等级No Report、Warning、Error、Fatal Error。默认情况下很多项目是Warning或者No Report这就导致很多隐患被静默忽略。我的做法是一律先调到Error级别跑一遍看看到底有多少问题然后再根据实际情况适当放宽个别项。具体调整方法打开Error Reporting选项卡在列表里全选然后右键 → Set as Error。这个操作能快速把所有检查项拉到最严格等级。但注意有几个项我建议保持Warning不要直接拉Error“Nets with multiple names”多名称网络——有时候设计上有意做了网络名别名直接设Error会误报一堆。“Unconnected component pins”未连接的器件引脚——部分器件引脚本来就设计为空脚直接Error会导致大量无效返工。“Component with duplicate subparts”重复子部件的器件——某些多子件封装在PCB封装库里允许。先全拉Error跑一次再根据结果逐项降级这是最高效的调参路径。3.2 Connection Matrix选项卡——电源和地必须重点盯Connection Matrix连接矩阵是Validate里最容易被人忽视但是最关键的配置。它定义的是“引脚类型A连接到引脚类型B时应该报什么级别的错误”。例如默认矩阵里Passive引脚连接Passive引脚是No Report但两个Output引脚连接就是Error。这里面最需要改的通常有两条Passive Pin → Power Pin建议从No Report改为Error。原因很简单被动引脚比如电阻引脚直接连接电源引脚通常是网络标注错误导致的。Open Collector Pin → Power Pin看设计风格。如果项目里大量使用开漏输出可以保持Warning如果项目里没有这类器件直接Error更安全。连接矩阵的调整需要结合自己的电路设计习惯没有通用的最优配置。我自己的项目里凡是做电源板的会把Power Pin互相连接的规则调到最严做数字板的则更关注Output Pin之间的互连。3.3 Options选项卡——网络名和端口范围Options选项卡里有几个选项直接影响网络识别的边界“Net Identifier Scope”网络标识范围指定网络标签的生效范围。多图纸设计推荐选Global全局这样不同图纸里同名的网络标签会自动连通。如果选Automatic或Hierarchical可能出现在图纸A里定义的网络图纸B里同名却不连通的问题。“Power Port Style”电源端口样式不同的电源符号样式如VCC、GND、BAR等如果混用在某些配置下不会被认为同一个网络。建议全工程统一用同一个电源符号风格。“Creator”创建者和“Generated By”生成者这两个字段只影响导出报告时的元数据不影响检查逻辑可以不用管。3.4 编译前还要自检的三个小习惯工程选项配好之后每次在跑Validate之前我还会做三个手动确认第一确认Project面板里所有原理图都被加入工程。很多人直接在别的文件夹打开一张图纸来画画完才发现没加入工程导致编译时这张图纸完全没被检查。这个错误极其隐蔽我自己踩过一次调了半天找不到问题最后发现压根没编译那张图。第二确认没有残留的旧网络标签。比如你把某根线从NetLabel5改成了NetLabel6但旧标签残留在图纸角落它的网络定义依然有效并与新网络连通。这个靠人眼不容易看出来我的办法是先按快捷键ShiftM把图纸区域高亮然后逐屏扫一遍。第三确认电源端口符号的全局属性。AD22里双击电源端口可以看到属性其中有一个“Net”属性如果填了具体网络名例如VCC那么这个符号就固定连接VCC网络。如果没填它默认跟符号的Style绑定。这里最容易翻车的是同一张图里VCC符号和BAR符号混用两者很可能被识别成不同网络。全工程搜索一遍统一成同一种符号能避免大量莫名其妙的问题。4. 跑Validate的实际过程Message面板怎么看成关键4.1 操作步骤工程设置完成后保存所有图纸然后Project → Validate PCB Project XXX.PrjPcb快捷键是CtrlAltV。点击之后AD22会开始编译编译过程中底部Message面板会实时弹错误和警告。如果你的Message面板被关了可以通过右下角Panels → Message重新调出来。编译完成后注意看Message面板这里有几类信息Error必须修复的问题存在error时理论上不应该进入下一步。Warning潜在风险人工研判后确认无风险可以忽略但要在评审记录里注明。Info一般只是提示性的信息比如某器件没有Footprint如果不做PCB可以忽略。4.2 常见错误逐条分析Message面板会给出错误的具体位置比如“Nets → Net R1-1 has only one pin”双击就能跳转到原理图对应位置。我按出错频率列一下实际项目中碰得最多的几类单端网络Net has only one pin这个错误在电源和地网络里非常常见。例如你放置了一个GND电源端口但旁边的电容地引脚没有连到这个端口而是悬空就会出现这个错误。处理方式检查该网络所有引脚把漏接的连上。注意有些单端网络是设计上故意的比如某些测试点网络只连了一个焊盘用于调试这时候可以在错误上右键 → Place Exclude把这个错误排除掉。但排除必须写清楚理由方便后期追溯。引脚悬空Unconnected Pin这个和单端网络不一样单端网络是网络存在但只连接一个点引脚悬空是器件引脚完全没连网络。AD22对悬空引脚的检查默认在Error Reporting里的Unconnected component pins默认等级一般是Warning。处理方式如果是空脚比如运放的NC脚直接在引脚属性里勾选“No Connect”AD22就会认为这是有意悬空不再报。如果是漏画接上导线即可。位号重复Duplicate Component Designators通常是复制粘贴的时候没重新编号。处理方式使用Tools → Annotation → Annotate Schematics Quietly自动重命名所有位号。网络标签悬空Net Label without wire or bus如果你放了一个Net Label但没连到导线或引脚上它不属于任何网络编译会报错。这个多发生在修改图纸时逻辑删掉了但标签还留在原地。处理方式选中删除或者把它连到应该连接的线上。端口类型不匹配Input port connected to Output port上下层级图纸连接时如果端口类型没有遵循“Output接Input”的原则比如两个Input端口连接在一起会报这个错误。处理方式检查层级连接逻辑把端口类型改成正确的方向。4.3 错误排除的艺术不是所有Error都必须改图。AD22提供了在错误对象上右键的Exclude功能能把某一条具体错误排除掉。但我要强调Exclude不是用来逃避检查的它必须搭配注释使用。我的做法是在排除前先在原理图上放置一个特殊颜色的Text注释写明“此网络为测试网络单端连接属预期排除检查”然后用Message面板的右键功能排除对应错误。这样后期评审时别人能看懂为什么这里有个豁免而不是一脸懵地看到一张满是排除标记的图纸。另外如果在Message面板里发现某条错误反复出现且位置不明确可以先把所有器件重新标注一次Annotate再重新编译。有时候是器件位号错乱导致AD22无法正确识别引脚归属重新标注后问题自动消失。4.4 Validate通过不等于万事大吉这是我最想强调的一点。Validate通过只代表“电路逻辑上所有连接是闭合的”不代表“你的电路是正确的”。它查不出以下这些问题电源和地接反了但两个网络都正确命名它不报错。一个100Ω电阻误放成10kΩ网络连通性完全正常它不报错。I2C的上拉电阻画到了MCU的另一端网络名一致它不报错。一颗去耦电容放在了原理图页面的角落根本没有靠近电源引脚但不影响电气连接它不报错。所以Validate只是基础真正要保证质量必须靠DCR和人工审图。这也是我在团队里反复灌输的一句话编译通过只能说明你的原理图在软件眼里没有逻辑漏洞而电路能不能稳定工作靠的是设计者的功力。5. DCR检查从新建规则到跑出报告的完整操作5.1 在哪里找到DCR功能AD22的DCR入口在菜单栏的Tools位置具体路径Tools → Design Constructive Review在弹出的DCR设置界面里左侧是检查类别树右侧是每一个类别的参数配置。界面的最下方有几个分页包括BOM、Nets、Components、Violations等每个分页对应一类规则。DCR界面默认包含了大量规则但很多规则默认被关闭了需要手动勾选启用。这也解释了为什么有人跑了DCR却感觉什么都没查出来——那不是功能不给力是你压根没打开对应的检查开关。5.2 我常用的DCR配置以下是我在AD22里跑DCR时实际使用的规则配置你可以作为起步配置再根据自己的设计类型调整。检查类别关键规则推荐设置说明Design RulesUnconnected PinsError引脚未连接Design RulesDuplicate DesignatorsError位号重复Design RulesOff-grid PinsWarning引脚不在格点BOMMissing Manufacturer Part NumberWarning缺少厂商料号BOMMissing Supplier LinkWarning缺少供应商链接BOMMissing DescriptionWarning缺少器件描述BOMEmpty Component ValueError值参数为空LoadingBad ReferenceWarning位号格式错误NetsPower Pin Not Connected to Power ObjectError电源引脚未接电源符号NetsGround Pin Not Connected to Ground ObjectError地引脚未接地符号NetsDifferent Net Names on Nets in same connectivity islandsError连通区域网络名不一致这个表格是我从实际项目中总结的起步配置。注意DCR的规则不是越多越好规则开太细会导致大量误报你的时间全花在逐条研判是否误报上反而不利于效率。先开核心规则跑一轮再根据报告的错误类型逐步加严。5.3 跑DCR的前置准备跑DCR之前我建议先做三件事第一保证原理图已经保存且工程里所有图纸都已加入工程。DCR是基于当前工程文件树来扫描的漏了图纸等于没查。第二尽可能把器件参数补齐特别是Value、Manufacturer Part Number、Supplier这些。如果没补齐DCR的BOM检查项会大量报Warning干扰你对真正严重问题的判断。补齐之后跑报告会干净很多。第三关闭其他正在运行的EDA工具或大型程序。DCR在大型工程上运行时比较吃内存尤其是几百页的复杂图纸开着浏览器再多标签页都可能导致卡顿甚至崩溃。我实测过一个约300页数字板工程跑DCR时内存在AD22上飙到8GB以上。5.4 运行DCR并解读报告点击Run DCR之后AD22会逐张扫描图纸扫描过程中底部状态栏会显示进度条。跑完之后会弹出一个独立的DCR报告面板里面按类别列出所有Violations每条都带有定位信息和具体说明。双击某条Violation会跳转到原理图的对应位置。这里分享一个实用的技巧DCR报告面板里可以按Violation Type分组然后我再按Error级别排序。我通常先把Error级别的问题处理完再处理Warning。因为Error级别在DCR里往往代表真正会导致生产事故的问题比如电源引脚没接电源位号为空Warning则可以批量研判后一次性忽略。处理DCR报告里的问题和Validate一样也可以在报告里右键Exclude但同样建议配合图纸注释使用。5.5 DCR和Validate的执行顺序我在项目里固定的顺序是先Validate把电路连通性问题全部清零。再DCR把规范性、可制造性问题集中处理。DCR结束后再跑一次Validate确认DCR过程中修改的连线没有引入新的电气错误。最后做一次人工全图检查重点是电源树、特殊封装、高速信号线。顺序不能换因为DCR报出来的某些问题比如电源引脚未接电源根源其实是Validate阶段的连接错误。如果你先跑DCR看到一堆电源网络报错回去改完电气连接DCR报告又要重新看一遍纯属浪费时间。6. 我在实际项目中踩过几次坑直接给你避雷6.1 坑一Net Identifier Scope设置错误导致网络全乱当时做一个4张原理图规模的数字采集板图A里定义了一个叫ETH_TX_P的网络图B里也用同名网络连接但编译后AD22报出两个网络未连接。查了半天发现是Net Identifier Scope设置成了Automatic而我的图纸结构没有设置成严格Hierarchical导致同名网络没有跨图纸连通。改成Global之后问题解决。这也是为什么我在前面强调多图纸设计要主动去Options里确认这个选项不要依赖默认。6.2 坑二复制粘贴遗留的重复位号复制粘贴模块电路时AD22会自动给新器件加后缀比如R1_1但如果你用CtrlV然后手工改了一些位号又没重新Annotate很容易出现两个R1。Validate默认会报Warning而不是Error很多人一看是Warning就没管结果PCB导入时报错“Duplicate component designators”麻烦更大。我现在习惯每次复制完模块立刻执行一次Annotate。6.3 坑三DCR报错一大堆原来是没有跑序列号重排有次我帮同事看一个DCR报告报了几百条“Bad Reference”我以为是位号格式有问题后来发现只是器件位号带着下划线和数字后缀比如U1_1_1DCR默认的正则表达式不允许这种格式。这种情况其实不是错误而是DCR规则没适配。处理方式是在DCR规则设置里修改位号匹配的正则表达式或者先执行Tools → Annotation → Force Annotate All把位号强制重新编号。6.4 坑四Message面板里看不到任何输出有一次团队新人跑ValidateMessage面板一直空白以为没问题了。我过去一看原来他在Project面板里选中的是某张原理图而不是整个工程然后点了Validate Document编译文档而不是Validate PCB Project。Document级编译只检查当前这张图不检查跨图纸连接相当于一叶障目。这个细节大家一定要留意确认左下角Project面板选中的是工程节点再跑编译。6.5 坑五DCR报告里的Warning被全部忽略很多人拿到DCR报告“又是Warning不是Error不管了”。但给个真实的教训有一个项目DCR的BOM检查报了“Several components have no manufacturer part number”被忽略了结果BOM整理给采购时有将近三分之一的器件无法直接下单每个都要人工到官网去核型号一周时间没了。所以DCR的Warning我不会全部忽略至少会过一遍把确实有问题的登记到问题跟踪表里。7. 常用检查清单给团队培训时直接复印为了方便大家用我把上面讲的流程整理成一张可复用的检查清单。每次原理图交付前按这个顺序打勾。7.1 工程准备阶段[ ] 所有原理图已加入工程Project面板确认图纸数量正确[ ] Project Options → Error Reporting所有项设为Error再按需调整[ ] Connection Matrix电源和地相关连接已调整到位[ ] Options选项卡Net Identifier Scope设为Global多图纸[ ] 所有电源符号样式统一无混用7.2 Validate检查阶段[ ] 执行Project → Validate PCB Project[ ] Message面板所有Error逐条修复[ ] 有意的异常已用Exclude且图纸上已有注释说明[ ] 再跑一次Validate确认无Error7.3 DCR检查阶段[ ] 按项目类型启用合适的DCR规则[ ] 执行Tools → Design Constructive Review[ ] Error级别问题全部处理[ ] Warning级别逐条研判区分“真问题”与“误报”[ ] 处理完毕后再跑一次Validate防止修改引入新错误7.4 交付前的最后人工检查[ ] 电源网络逐个确认VCC、GND、模拟地、数字地是否正确分隔[ ] 所有IC电源引脚都放了去耦电容[ ] 关键信号时钟、复位、高速接口做了网络标注[ ] 位号已按模块区域重排图纸可读性好[ ] 晶振电容、上拉电阻、下拉电阻等常用外设没有遗漏[ ] 所有器件的Value和封装都填好了这张清单我打印出来贴在工位上每次出图前过一遍效率很高。你也可以根据自己公司的规范增加条目。8. 由这套流程带出来的管理心得在带团队过程中我发现原理图检查流程有没有制度化直接决定了一个硬件项目的中后期质量。以前大家各画各的有人画完跑一遍Validate就算交差有人会多做几步DCR但也没有统一标准。后来我把上面的流程整理成一份公司内部的《原理图交付检查规范》规定所有原理图必须在评审前同时提交Validate和DCR的报告并且每个Error或者Warning都要有处理状态。实施两个季度后PCB回板后的低层返工单数量明显下降最直观的变化是“板上飞线”和“割线改网”的频次降低了评审会也从动不动一个小时缩短到20分钟以内。这套流程还间接倒逼了器件库的规范化。因为DCR对BOM信息有严格要求原理图里凡是缺少封装或厂商信息的器件都会暴露出来大家被迫去维护标准库而不是每次画图时临时建一个封装。库规范了后面Layout和采购的效率也跟着上来了。Altium Designer 22的编译检查和DCR说到底不是点击几个菜单按钮那么简单它是一套把质量意识固化到工具里的方法。我在实际使用中最大的体会是工具能帮你过滤逻辑性错误但设计质量的最后一道防线永远是人的认真程度。别嫌检查麻烦也别觉得多跑一次DCR是浪费时间。这两步花掉的半小时能在后面Layout、出图、生产、调试环节帮你省下几十个小时而且避免的往往是那种让你深夜查板子查到怀疑人生的隐蔽问题。
返回列表