4. 电气约束入门

在 Allegro 的约束管理器(Constraint Manager)里,物理约束回答的是“线要多宽、孔要多大”,而电气约束回答的是另一个层面的问题:信号从驱动器出发,经过互连到达接收器时,时间上是否来得及、波形上是否还认得出来。前者决定板子能不能造出来,后者决定板子能不能跑起来。本节围绕传播延迟、相对延迟、差分对相位和最大/最小长度这四类最常见的电气约束,说明它们的物理意义以及它们之间的换算关系。

传播延迟:电气约束的“时间原点”

信号在 PCB 走线上的传播速度并不是光速,而是由介质决定的。对常见的 FR-4 微带线,等效介电常数 εr_eff 约为 3.5~4.2,对应的传播延迟约为 140~180 ps/inch(约 5.5~7.1 ps/mm);对内层带状线,因上下都被介质包裹,εr_eff 接近板材本体介电常数(约 4.2~4.6),传播延迟约为 180~190 ps/inch(约 7.1~7.5 ps/mm)。工程上常取一个便于口算的近似值:外层约 150 ps/inch,内层约 180 ps/inch。

传播延迟(Propagation Delay)就是走线长度乘以单位延迟。例如一条 2.5 inch 的外层走线,延迟约为 2.5 × 150 = 375 ps。这个数字本身没有好坏,它只有在与“时间预算”比较时才有意义。时间预算来自器件手册:驱动器的 Tco(时钟到输出有效)、接收器的建立时间 Tsu 与保持时间 Th、时钟网络的偏斜 Tskew,以及时钟周期 Tperiod。一个典型的源同步接口(如 DDR 数据组)的建立关系可以写成:

Tco_max + Tflight_max + Tsetup + Tskew <= Tperiod
Tco_min + Tflight_min - Thold - Tskew >= 0

其中 Tflight 就是走线的飞行时间,也就是传播延迟。约束管理器的任务,就是把 Tflight 的允许范围翻译成走线长度范围,再分配给每一条网络。

相对延迟:把“绝对时间”变成“可比较的差值”

实际设计中,我们很少关心某条线绝对延迟是多少,更关心一组相关信号之间的延迟差。这就是相对延迟(Relative Propagation Delay),在 Allegro 中通常以某个网络为“目标”(Target)或“基准”,其余网络相对它设置 Delta 容差。例如一组 8 位数据线 DQ0~DQ7 加上 DQS,可以把 DQS 设为基准,要求各 DQ 相对 DQS 的延迟差在 ±25 ps 以内。

相对延迟的物理意义是保证同一组信号在同一时刻被采样。如果 DQ3 比 DQS 晚了 200 ps,而接收端的建立窗口只有 150 ps,那么这一位就会采错。把 ±25 ps 换算成长度:外层走线约 ±0.17 inch(±4.2 mm),内层约 ±0.14 inch(±3.5 mm)。这个换算结果就是约束管理器里 Pin Pair 的 Delta 值来源。

相对延迟约束必须绑定到具体的 Pin Pair(驱动引脚到接收引脚),而不是整条网络。同一网络在不同拓扑下可能有多段分支,只有 Pin Pair 才能表达“从哪个脚到哪个脚”的延迟关系。

差分对相位:两条线必须“同进同出”

差分信号靠两条线的电压差传递信息,共模噪声在接收端被抵消。这个机制成立的前提是两条线严格等长、等延迟、等阻抗。差分对相位(Phase)约束描述的就是 P 与 N 两条线之间的延迟差,通常要求控制在 ±5 ps 以内,高速差分(如 PCIe Gen4、USB 3.2)甚至要求 ±2 ps。

相位失配会带来两个后果:一是差分信号部分转化为共模信号,向外辐射增强,EMI 变差;二是眼图张开度下降,抖动增大。在 Allegro 中,差分对相位约束通过 Diff Pair Phase 设置,配合 Phase Tolerance 与 Uncoupled Length 一起使用。当 P/N 因过孔、绕线或引脚扇出产生长度差时,需要在靠近失配点的位置做蛇形补偿,而不是在远端随意补,否则补偿段本身又会引入新的相位误差。

最大/最小长度:把时间约束落到几何上

最大长度(Max Length)和最小长度(Min Length)是电气约束在几何层面的最终表达。最大长度通常来自时序余量:飞行时间不能超过某个上限,否则建立时间不够;最小长度则来自保持时间或信号质量考虑:线太短时反射来不及衰减,可能造成过冲或振铃,也可能导致保持时间违例。

在约束管理器中,长度约束可以按网络、按 XNet、按 Pin Pair 或按 Match Group 设置。一个实用的做法是:先根据器件手册算出 Tflight 的允许区间,再乘以单位延迟换算成长度区间,最后加上工艺余量(通常留 10%~15%)。例如某组信号要求 Tflight 在 300~500 ps 之间,外层走线单位延迟取 150 ps/inch,则长度范围约为 2.0~3.3 inch,考虑工艺余量后设为 2.1~3.2 inch。

电气约束的物理意义与换算链路 时间域(器件手册) Tco 驱动输出延迟 Tsu / Th 建立/保持 Tskew 时钟偏斜 Tperiod 时钟周期 Tflight 飞行时间 = 允许延迟区间 相对延迟 Delta = 组内允许差值 差分相位 Phase = P/N 延迟差 最大/最小长度约束 换算关系 外层 ≈ 150 ps/inch 内层 ≈ 180 ps/inch (FR-4 典型值) 长度 = 延迟 ÷ 单位延迟 延迟 = 长度 × 单位延迟 ±25 ps → 外层 ±0.17 in ±25 ps → 内层 ±0.14 in 工艺余量 10%~15% 最终写入约束管理器 几何域(Allegro 约束) Max Length 网络/ XNet 级 Min Length 防反射/保持时间 Relative Delay Pin Pair + Delta Diff Pair Phase ±2~±5 ps Match Group 组内等长/等延迟 Uncoupled Length 时间预算 → 延迟区间 → 长度区间 → 约束管理器条目,四类电气约束共享同一条换算链路

四类约束的协同关系

这四类约束不是孤立的。最大/最小长度是“绝对边界”,相对延迟是“组内一致性”,差分相位是“对内一致性”,而传播延迟是它们共同的换算基础。实际项目中,通常先由时序分析确定 Tflight 的绝对区间,再按信号组分配相对延迟容差,最后对差分对单独设置相位约束。约束管理器中的 Match Group 可以把一组网络组织在一起,统一设置 Delta 与 Tolerance,避免逐条网络手工填写。

需要特别注意的是,长度约束必须与拓扑结构匹配。菊花链(Daisy Chain)拓扑下,同一网络的不同 Pin Pair 长度不同,此时应使用 Pin Pair 级别的相对延迟,而不是整网长度;星形(Star)或 T 型拓扑下,分支点的位置会影响各接收端的飞行时间,约束应绑定到“驱动到各接收端”的 Pin Pair。如果拓扑与约束不匹配,约束管理器会报出大量虚假违例,反而掩盖真正的问题。

单位延迟不是常数。同一块板上,外层微带线与内层带状线的单位延迟可能相差 20% 以上;过孔、连接器、封装引脚也会引入额外的延迟。做精确时序预算时,应使用叠层与材料参数计算出的实际值,而不是直接套用 150/180 ps/inch 的经验值。

一个可执行的约束设置示例

假设某源同步接口有 8 条 DQ 和 1 条 DQS,器件手册给出:Tco 范围 0.8~1.2 ns,Tsu = 0.3 ns,Th = 0.2 ns,Tperiod = 2.5 ns,Tskew = 0.1 ns。按建立关系:Tflight_max ≤ 2.5 − 1.2 − 0.3 − 0.1 = 0.9 ns;按保持关系:Tflight_min ≥ 0.2 + 0.1 − 0.8 = −0.5 ns,负值说明保持时间有余量,最小长度主要由信号质量决定,取 0.3 ns 作为下限。外层走线单位延迟取 150 ps/inch,则长度范围为 2.0~6.0 inch。考虑工艺余量后,Max Length 设为 5.5 inch,Min Length 设为 2.2 inch。DQS 作为基准,各 DQ 相对 DQS 的 Delta 设为 ±25 ps,对应外层约 ±0.17 inch。

把这组数值填入约束管理器后,可以通过 Analyze → Analysis Modes 打开在线 DRC,让 Allegro 在布线过程中实时标出超长、超短和相对延迟违例。布线完成后,用 Constraint Manager 的 Report 功能导出实际长度与延迟,与约束值逐条比对,确认所有网络都落在允许区间内。这一步是电气约束从“纸面规则”变成“可验证结果”的关键闭环。