有本人亲自进行测试的Allegro 22.1版本, 体验过一组DDR4数据线等长误差控制在即便想尽办法也难以调整到±20mil以内的那种状况, 新手依据相关步骤一步一步踏实操作, 便能轻……
有本人亲自进行测试的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功能依照层来计算延时差异, 手动进行补偿, 只不过耗费时间但更为稳妥。
微信扫一扫
还没有评论呢,快来抢沙发~