1. 问题现象与背景解析
最近在Altium Designer 25(简称AD25)中遇到一个典型问题:明明设置了线宽规则(Width Constraint),但在实际布线时规则却不生效。这种情况在高速PCB设计中尤为致命,可能导致阻抗不匹配、信号完整性问题。经过反复测试和排查,我总结出以下几个关键排查方向。
2. 规则优先级检查
2.1 规则应用范围冲突
AD25的规则系统采用优先级机制。当多个规则同时匹配同一对象时,高优先级规则会覆盖低优先级规则。常见问题场景:
- 存在更高优先级的"All"规则覆盖了特定网络规则
- 不同规则条件(如层设置、网络类)产生交叉匹配
操作建议:在PCB Rules and Constraints Editor中,右键点击规则选择"Rule Priority",将目标规则调整到合适位置。建议特定网络规则优先级高于通用规则。
2.2 规则作用域设置错误
线宽规则不起效的另一个常见原因是作用域(Where the First Object Matches)设置不当:
- 网络(Net)作用域误选为网络类(Net Class)
- 层(Layer)限制与当前布线层不匹配
- 自定义查询语句语法错误
典型排查步骤:
- 双击打开问题规则
- 检查"Full Query"内容是否准确反映目标对象
- 使用"Query Helper"工具验证语法
3. 软件设置与交互问题
3.1 实时规则检查开关
AD25默认启用实时DRC(Design Rule Check),但可能被手动关闭:
- 确认"Tools » Preferences » PCB Editor » General"中的"Online DRC"已勾选
- 检查右下角状态栏的"DRC"图标是否为绿色
3.2 布线模式影响
不同布线模式对规则的响应不同:
- "Ignore Obstacles"模式会绕过所有规则检查
- "Push Obstacles"模式可能产生非预期线宽
- 推荐使用"Walkaround Obstacles"标准模式
3.3 版本兼容性问题
AD25相比前代版本在规则引擎上有这些变化:
- 新增"Impedance Controlled Routing"规则类型
- 改进了差分对规则的实现方式
- 可能出现旧版本项目导入时的规则迁移错误
4. 高级排查技巧
4.1 规则调试方法
当常规检查无效时,可采用深度调试:
- 创建测试PCB文件,仅保留问题网络
- 逐步添加规则条件,观察何时失效
- 使用"PCB » Rules » Rule Wizard"重建规则
4.2 系统级问题处理
某些特殊情况需要系统级处理:
- 重置所有参数:删除AD25的"AdvPCB.ini"配置文件(会自动重建)
- 清理规则缓存:关闭项目后删除".PrjPcbStructure"文件
- 更新至最新补丁版本(当前最新为AD25.2.1)
5. 典型场景解决方案
5.1 差分对线宽异常
现象:差分线宽与规则设置不符
解决方案:
- 确认已正确定义差分对(Differential Pair)
- 检查"Diff Pair Routing"规则中的"Primary Width"
- 注意"Max Width"不能小于目标值
5.2 特定层规则失效
现象:某层的线宽规则不生效
排查要点:
- 确认规则中"Layer"条件设置正确
- 检查"Layer Stack Manager"中的层属性
- 验证当前激活的布线层(快捷键"+"、"-"切换)
5.3 网络类规则覆盖
现象:网络类成员不继承类规则
处理方法:
- 右键网络类选择"Update From PCB"
- 检查网络类属性中的"Rule Scope"
- 确认没有成员网络的独立规则冲突
6. 设计规范建议
为避免线宽规则问题,推荐这些设计实践:
- 建立清晰的规则层次结构(通用→类→特定网络)
- 使用"Rule Wizard"而非手动创建复杂规则
- 在项目模板中预置常用规则
- 布线前执行"Tools » Design Rule Check"预检查
经过这些系统排查,大多数AD25线宽规则失效问题都能定位。我自己的经验是,80%的情况源于规则优先级冲突,15%是软件设置问题,剩下5%可能需要更深入的调试。建议养成规则分组的习惯,比如按功能模块划分规则区域,可以大幅降低这类问题的发生概率。