有我亲自测试的Allegro 22.1版本,体验过一组DDR4数据线等长误差控制在即便想尽办法也难以调整到±20mil以内的那种情况。
匹配长度前先画好参考线
将Allegro的Route功能启用,转至Constraints Manager,在Electrical Constraint Set里搜寻Relative Propagation Delay。我有这样的习惯,那就是先去设定Match Group,接着把DDR4_DQ0到DDR4_DQ7这8根线全部选择,之后点击右键来Create Match Group,随后在右侧的属性栏输入目标长度误差范围,像±20mil这样的。点选Pin Pair这一关键步,要将起点定位到CPU端BGA焊盘,还要把终点定位到DDR颗粒焊盘处,若不如此,系统自动捕捉的过孔可要导致长度计算出现偏差了。
新手常常会犯这样错误,将信号线总长度直接用于做等长,然而不同层走线,因过孔以及焊盘存在差异,导致实际电气长度相差能达到30 – 50mil。报错现象呈现为Match Group状态栏始终显示Out of Tolerance,其原因在于没有对Pin Pair进行统一。采取的解决办法是,以手动方式,将每一条线的Reference Pin Pair,变更为相同的起点和终点,随后再运行一次长度匹配。
蛇形走线三步扭出精准长度
先是进行第一步,将那需要去调整的线给选中,之后呢,用右键点击Route,接着去到Add Serpentine那里。在弹出的Serpentine Options里,将Amplitude设置为20mil,把Spacing设置成15mil,这两项内容决定了蛇形线的宽度以及间距,其所取的数值过小的话会导致布线密集区域出现串扰现象,而取值过大的话又会造成PCB空间的浪费。我所推荐的,是Amplitude等于20mil, Spacing等于15mil,而这种的参数组合,是能够兼顾信号完整性以及布线效率的,经过实际测量可知,在DDR4 2400MHz的情况下,它的误码率是最低的。
先是第二步,用鼠标拉着走线路径在参考线周围扭,每扭一个波浪, Status栏会显示实时剩余误差,操作习惯是盯着Delta值,当它从+50mil降到+5mil时减速微调,别一次扭过头。
第三步,完成扭转操作后右方点击Done,返回Constraints Manager当中进行刷新,查看Match Group的所有线条的Tolerance值是不是都处于±20mil的范围以内。要是存在超范围的线条,直接针对那条线双击,通过Edit Serpentine略微调整几次波浪就是了。
新手要躲开坑,蛇绕着走扭好后,出现报错 Gap Violation,要么 Min Amplitude Fail,这样挺常见。为什么这样呢,核心的原因是, Spacing设的时候弄太小了,所以相邻的波浪之间,距离窄到比工厂工艺能达到的极限还低。采取的解决办法是,将Spacing增大至20mil以上,同时适度降低Amplitude,并且让总走线长度维持不变。要是连续调整三次之后仍旧报错,那就能够直接删去蛇形线再重新扭,不要在一条错误路径上一直为难自己。
四步完整修一组典型报错
有一回,我所负责的一块板子,其等长误差控制硬是没办法通过,报错给出的信息是, Net DDR4_DQ3的长度为2450.12mil,最小长度要求是2425.00mil,最大长度要求是2475.00mil,超出了公差范围。误差达到了正25mil。完整的解决流程是这样的:先要打开Constraints Manager,接着,去定位到达DQ3这条线,然后,会发现它的Relative Delay值相较于同组中的平均值而言,高出了22mil。往后面的步骤进行步入,以双手快速点击的常规重复力度进入到 Edit Serpentine 里,将其中的 Amplitude 从原本的 20mil 降低至 15mil 的数值,同时把 Spacing 从 15mil 降低到 12mil 的程度,进而使得蛇形线变得更加紧凑,最终达到减少占用空间的结果。将多余长度自动压缩,借助软件之力,执行一次Optimize Serpentine,此为第三步。第四步,刷新Status, Tolerance变动为+3mil,问题遂得解决。针对这个具体方案,其进行取舍操作时所依据的逻辑是这样的:要是空间方面是允许的,那么在进行相关调整时,会优先考虑去调整Amplitude以及Spacing,而不是选择删线之后重新再踏出一条路径,因为如此一来,所涉及到的时间成本会更低一些。
【新手避坑】:当报错Length Mismatch时,不要盲目去添加蛇形线。先要查看Pin Pair是否统一,接着再去看参考线是否被挪动过。要是这两者都正确却依旧报错,那么大概率是BGA出线区域有的短段线没有配对,把那个短段手动补充一个蛇形弯就能解决。
该方法在DDR4以及DDR3场景当中很好用,然而要是你的板子所采用的是DDR5或者频率超越3200MHz,单单凭借蛇形线调整等长恐怕是不足够的。DDR5对于时序窗口所提出的要求更为严格,建议在达成等长误差控制之后,借助仿真软件去确认信号质量。简易的替代方案是直接令Layout工程师运用X-Section功能依照层来计算延时差异,手动进行补偿,只不过耗费时间但更为稳妥。










