3. Constraint Manager基础操作

在 Allegro 中,Constraint Manager(约束管理器)是规则驱动设计的核心入口。它把原本分散在物理间距、线宽、过孔、差分、时序等处的约束集中到一个可检索、可复用、可追溯的数据库中。对双面板而言,规则数量不多,但“规则集—分配—覆盖—继承”这条链路必须走通,否则后续布线、DRC 检查与制造输出都会失去统一依据。

一、打开 Constraint Manager 与认识规则对象

在 PCB Editor 中,可通过菜单 Setup → Constraints → Constraint Manager 打开,也可在工具栏点击对应图标。打开后左侧是对象浏览器,通常按 Physical(物理规则)、Spacing(间距规则)、Electrical(电气规则)等类别展开;右侧是工作表,行是网络、网络类、差分对、总线等对象,列是具体约束参数。

需要先分清三个层次:规则集(Rule Set)是参数的命名集合,例如 RS_DEFAULT_8mil;规则分配(Assignment)是把规则集挂到某个对象上,例如把 RS_PWR_20mil 分配给 VCC_3V3 网络;覆盖与继承(Override / Inheritance)是当对象同时受到多层规则作用时,决定谁生效的机制。理解这三层,才能避免“改了规则但 DRC 不认”的常见问题。

Constraint Manager 规则集、分配、覆盖与继承关系 规则集库 Rule Sets RS_DEFAULT_8mil RS_PWR_20mil RS_DIFF_6_6mil 命名集合,可被多个对象复用 分配 设计对象 Objects Net: GND Net: VCC_3V3 Diff Pair: USB_D+/D- 网络、类、差分对、总线等 继承 最终生效约束 Line Width = 20 mil Clearance = 12 mil Diff Gap = 6 mil DRC 实际检查依据 覆盖与继承的优先级判定 对象级覆盖 优先级最高 类级规则 次高 默认规则集 兜底继承 DRC 检查 按生效值执行 规则查找顺序:对象级 → 类级 → 默认规则集;高优先级覆盖低优先级,未定义则向下继承 示例:VCC_3V3 单独指定 20 mil 线宽,则覆盖默认 8 mil,但间距仍可继承默认规则

二、创建规则集:从默认模板到专用集合

创建规则集有两种常用方式。第一种是复制现有规则集:在 Physical 工作表中选中 DEFAULT 行,右键 Create → Rule Set,输入名称如 RS_PWR_20mil,然后在 Line Width 列把 Min 设为 12 mil、Max 设为 40 mil、Default 设为 20 mil。第二种是直接新建空规则集,再逐项填写。对双面板,建议至少建立三个规则集:默认信号 RS_DEFAULT_8mil、电源 RS_PWR_20mil、差分 RS_DIFF_6_6mil。

创建时要注意:规则集名称应能反映用途和关键参数,避免使用 Rule1、NewSet 这类无意义命名;同一规则集可被多个网络复用,修改规则集会同步影响所有引用它的对象,这正是“一处修改、多处生效”的价值,也是误改的风险点。

三、规则分配:把规则集挂到对象上

分配操作在 Spacing 或 Physical 工作表中完成。以电源网络为例:在 Net 列找到 VCC_3V3,在 Referenced Physical CSet 单元格下拉选择 RS_PWR_20mil。此时该网络即继承此规则集的所有物理参数。若某网络需要单独调整,可直接在单元格中修改数值,Allegro 会将其标记为对象级覆盖,而不是修改规则集本身。

对差分对,需先在 Electrical → Differential Pair 中创建差分对对象,再分配 RS_DIFF_6_6mil,并设置 Gap 与 Line Width。对双面板,常见做法是:GND 与 VCC 分配电源规则集,普通信号分配默认规则集,USB 差分对分配差分规则集。分配完成后,可在工作表中用颜色区分“已分配规则集”和“对象级覆盖”,便于快速检查。

四、覆盖与继承:谁说了算

覆盖与继承是 Constraint Manager 最容易混淆的部分。规则查找顺序是:先看对象级是否直接定义了参数,若有则使用该值;否则向上查找所属类或网络类的规则集;若仍无,则使用 DEFAULT 规则集。也就是说,对象级覆盖优先级最高,类级次之,默认规则集最低。

举例说明:默认规则集线宽为 8 mil,电源类规则集为 20 mil,而 VCC_3V3 网络被单独改为 25 mil。最终该网络线宽为 25 mil,因为对象级覆盖了类级;但它的间距若未单独设置,仍继承电源类规则集的 12 mil。这种“部分覆盖、部分继承”是正常现象,检查时应逐列确认,而不是只看一行。

注意:直接修改规则集会影响所有引用它的对象;若只想改某一个网络,应在对象行上修改,而不是改规则集。否则可能造成其他网络规则被意外改变。

五、双面板规则初始化任务示例

假设一块简单双面板,包含 GND、VCC_3V3、USB_D+/D- 和若干普通信号。初始化可按以下顺序执行:

  1. 打开 Constraint Manager,确认 Physical 与 Spacing 工作表可见。
  2. 创建 RS_DEFAULT_8mil:线宽 Min 6 / Default 8 / Max 20 mil,间距 Default 8 mil。
  3. 创建 RS_PWR_20mil:线宽 Min 12 / Default 20 / Max 40 mil,间距 Default 12 mil。
  4. 创建 RS_DIFF_6_6mil:线宽 6 mil,差分 Gap 6 mil,间距 8 mil。
  5. 分配:GND、VCC_3V3 → RS_PWR_20mil;USB_D+/D- → RS_DIFF_6_6mil;其余信号 → RS_DEFAULT_8mil。
  6. 检查:在 Spacing 工作表中确认没有空白单元格;对未分配网络手动指定默认规则集。
  7. 验证:运行 DRC,观察是否有因规则缺失导致的报错;若有,回到对应对象补充分配。

完成上述步骤后,可导出规则报告或截图存档,作为后续布线与制造检查的基线。双面板规则初始化并不复杂,但“规则集命名清晰、分配无遗漏、覆盖有记录”这三点决定了后续修改是否可控。

实用检查清单:① 每个网络是否都有规则集引用;② 电源与差分是否使用专用规则集;③ 是否存在无意的对象级覆盖;④ 修改规则集后是否确认影响范围;⑤ DRC 是否通过且无规则缺失警告。