3. Allegro原理图与高速网络规划

在Allegro高速硬件项目里,原理图不只是“把器件连起来”的图纸,它同时承担着网络命名、层次结构、拓扑约束和规则传递的职责。到了PCB阶段,约束管理器(Constraint Manager)里能看到的差分对、总线、拓扑和电气规则,绝大多数都源自原理图阶段的规划质量。如果原理图阶段只画连通性,不规划网络类,后期就要在PCB里手工补差分对、补XNet、补拓扑,既费时又容易漏。本节围绕“层次化设计 + 高速网络规划 + 网络类与规则分配”这条主线,讲清楚在Concept HDL或OrCAD Capture里应该做什么、怎么做。

一、层次化设计:先定结构,再画连接

层次化设计的核心是“自顶向下拆分功能,自底向上实现电路”。对于一块典型的高速板卡,顶层(Top)通常只放各功能模块的符号(Block Symbol)和模块之间的高速互连;每个模块内部再展开为具体器件和网络。常见的拆分方式是按功能域划分,例如:CPU/SoC核心域、DDR内存域、PCIe/以太网高速接口域、电源与时钟域。这样拆分的好处是:高速网络被限制在明确的模块边界内,跨模块的连接在顶层一目了然,便于后续按模块分配网络类和规则。

在OrCAD Capture中,层次化通过Hierarchical Block和Hierarchical Port实现:顶层放置Hierarchical Block,双击进入下层原理图(Page),模块对外的信号用Hierarchical Port引出,端口名就是跨层连接的网络名。在Concept HDL中,对应的是Block Symbol与Hierarchical Port/Off-page Connector,通过Block的接口定义(Interface)把内部信号暴露到上层。两种工具的共同原则是:跨层信号必须在端口处命名,且命名要能表达功能与方向,例如 DDR0_DQ[31:0]、PCIE0_TX0_P/N,而不是 NET123 这类无意义名字。

一个容易被忽略的细节是:层次化端口的方向(Input/Output/Bidirectional)要与实际信号方向一致。差分对、时钟这类信号如果方向标错,虽然不影响连通性,但会影响后续规则分配时的可读性,也容易在跨模块检查时产生误判。建议在模块接口定义完成后,先做一次“端口方向与命名审查”,再进入具体连接绘制。

二、高速差分对、时钟与总线的规划

高速网络规划的关键,是在原理图阶段就把“哪些网络属于同一组、以什么方式约束”确定下来。差分对是最典型的一类:在OrCAD Capture中,可以通过网络名后缀(如 _P/_N、+/-)配合差分对规则自动识别,也可以在Capture的差分对属性中显式指定;在Concept HDL中,通常通过属性(Property)或约束文件把两条网络绑定为差分对。命名建议统一为 功能_通道_P/N,例如 PCIE0_TX0_P 与 PCIE0_TX0_N,这样在Constraint Manager里可以按前缀批量筛选。

时钟网络需要单独规划。高速时钟通常要求:点到点或点对多点拓扑、等长、参考平面完整、避免跨分割。在原理图阶段,应把时钟网络单独归入一个网络类(Net Class),例如 CLK_HIGH_SPEED,并在网络类上预设拓扑类型(如Daisy Chain或Fly-by)和等长规则。总线类网络(如DDR的DQ/DQS/ADDR)则应按字节通道分组,例如 DDR0_BYTE0、DDR0_BYTE1,每组内部再区分数据、选通和地址,便于后续按组设置等长和间距规则。

规划顺序建议:先按功能域划分模块 → 再按信号类型(差分、时钟、总线、普通)归类 → 最后为每类网络指定命名前缀和网络类。命名前缀一旦确定,后续所有规则分配都可以基于前缀批量完成,效率最高。

三、网络类与规则分配:从原理图到约束管理器

网络类(Net Class)是原理图与PCB之间的“规则载体”。在OrCAD Capture中,可以通过Edit Properties或Net Class属性为网络指定类名;在Concept HDL中,通常通过约束管理器(Constraint Manager)或属性文件导入。无论哪种方式,目标都是让同一类网络在PCB阶段自动继承相同的物理规则,例如线宽、间距、过孔类型、差分阻抗、等长容差。

规则分配的核心是“先分类,再赋值”。以一块含PCIe Gen3和DDR4的板卡为例,可以建立如下网络类:PCIE_TX(差分100Ω,线宽/间距按叠层计算)、PCIE_RX(同上)、DDR4_DQ(单端50Ω,组内等长±5mil)、DDR4_ADDR(单端50Ω,Fly-by拓扑,等长±10mil)、CLK_100M(差分100Ω,点对点)。每个类在Constraint Manager中对应一组规则,原理图阶段只需保证网络被正确归入对应类。

实际项目中,规则分配最容易出问题的地方是“漏网之鱼”:某些网络既没有前缀规律,也没有被显式指定类,结果在PCB里使用默认规则,导致阻抗或等长不满足要求。建议在原理图完成后,用工具自带的网络类检查功能(或导出网络清单)核对:所有高速网络是否都有明确的类归属,差分对是否成对出现,总线位宽是否与器件引脚一致。

原理图层次化设计 → 网络规划 → 规则分配 数据流 顶层 Top(功能域划分) CPU/SoC 域 DDR 内存域 PCIe/以太网域 电源/时钟域 Hierarchical Port / Block Symbol 高速网络规划(命名 + 分类) 差分对 PCIE0_TX0_P / _N 100Ω 差分阻抗 时钟网络 CLK_100M_P / _N 点对点 / 等长 总线类 DDR0_DQ[31:0] 按字节通道分组 普通网络 GPIO / 控制信号 默认规则 Net Class 属性 / 约束文件 Constraint Manager 规则分配 PCIE_TX / PCIE_RX 差分阻抗 100Ω 线宽/间距按叠层 对内等长 ±5mil DDR4_DQ / DQS 单端 50Ω 组内等长 ±5mil 按字节通道分组 DDR4_ADDR / CLK Fly-by 拓扑 等长 ±10mil 参考平面完整 检查点:所有高速网络均有类归属 · 差分对成对 · 总线位宽与引脚一致

四、实操要点与常见问题

在OrCAD Capture中,推荐用“属性批量编辑”来分配网络类:选中一组网络,打开Edit Properties,在Net Class列填入类名,一次完成。差分对可以在Place Differential Pair或属性中指定,Capture会自动生成 _P/_N 配对关系。在Concept HDL中,网络类通常通过约束管理器或 .csv 属性文件导入,建议在原理图完成后导出一份网络清单,用脚本或表格核对类归属。

常见问题有三类。第一,差分对命名不统一,例如有的用 _P/_N,有的用 +/-,导致自动识别失败;解决方法是项目开始前统一命名规范,并在原理图检查阶段用规则扫描。第二,总线位宽与器件引脚不一致,例如DDR数据线声明为 [31:0],但实际只连了 [15:0],这会在PCB阶段造成网络缺失;解决方法是利用工具的总线展开检查功能。第三,跨模块信号在端口处未命名或命名冲突,导致顶层网络与模块内网络对不上;解决方法是坚持“端口即网络名”的原则,并在层次化检查中核对端口列表。

规则分配不是“一次性动作”。当叠层调整、阻抗要求变化或器件替换时,网络类与规则需要同步更新。建议在原理图版本变更时,同步检查Constraint Manager中的类映射,避免PCB阶段使用过期规则。

最后给出一个可直接参考的网络类规划表结构,字段包括:类名、包含网络前缀、信号类型、目标阻抗、拓扑类型、等长容差、备注。例如 PCIE_TX 对应前缀 PCIE*_TX*,差分100Ω,点对点,对内等长±5mil。这张表在原理图阶段填写,在PCB阶段直接作为约束管理器的输入,能显著减少沟通和返工。