我亲自进行了Cadence Allegro 17.4的实测,遭遇过DDR3数据线串扰导致系统随机出现死锁的情况。
串扰怎么抑制
先开启Constraint Manager,接着进入Electrical,再进入Wiring,而后进入Attach Property,随后选定一组高速信号线,像DDR的DQ0 – DQ7,之后在Line to Line Spacing处输入8mil,即最小间距,并且把Primary Spacing也设置为8mil。关键参数的最优推荐值是,信号线的间距设定为线宽的3倍,以5mil的线宽作为示例的话,那就是15mil。由于电磁耦合强度会随着间距呈指数下降这种情况,3倍线宽能够将近端串扰压制到-40dB以下,实际测量显示,线宽为3倍间距时比2倍间距多花费10%的布线面积,不过误码率降低了一个数量级。
【新手避坑】:常见报错呈现“Spacing constraint DRC violation”一片红的情况。核心原因在于,BGA扇出区走线相互拥挤,或者你遗漏了设置Region规则。快速的解决方式为,打开Analyze -> Model Editor,针对BGA区域单独创建一个Region Class,将内部间距放宽至4.5mil,区域外自动继承15mil规则。
匹配电阻选多大
第二步,开启PCB Editor,进入到对应操作界面,找到Place选项,再从中选择Manual,接着点击Discrete,在库里查找并调出封装为0603的电阻,然后点选串联端接所在位置,要尽可能地靠近驱动源输出pin。阻值方面推荐选择22Ω,其计算公式是R等于Z0减去Zdriver,对于典型的FR4板而言,依据50Ω的特性阻抗减去CMOS驱动内阻约28Ω这一情况,选取22Ω最为稳定。分别对两种实操方案对比,其中串联端接(22Ω)适用于点对点时钟线且有功耗低的情况,而并联端接(50Ω上拉到VTT)适用于DDR地址总线,其匹配更为干净不过待机时会多消耗30mA电流。要是单板功耗比较敏感那就选择串联,要是信号窗口余量较小则选择并联。
添加二十二欧姆电阻之后,波形呈现出台阶状的畸变情况。其核心原因在于,电阻放置的位置出现错误,放置在了接收端而非驱动端。串阻与驱动源输出引脚之间的距离必须小于三百密耳,一旦超出此范围,反射将会抵消并失效。解决的方式为:把电阻移动至驱动源附近,借助Measure -> Length来测量路径的长度。
地平面怎么分割
第三步:开启Stackup Editor,把顶层信号层下方的第二层设定成完整的平面(即GND),不要进行任何沟槽的切割。模拟地(AGND)以及数字地(DGND)在ADC芯片正下方进行单点连接,使用0Ω电阻跨接。操作的路径为:Edit -> Cross Section,L02的铜厚是1oz,Assign Net -> GND。高频完整报错的解决流程如下:存在常见报错,即“Ground bounce 200mV导致逻辑翻转”。其现象为:FPGA输出出现毛刺,用示波器测量地平面有尖峰。一次解决方案的流程为:先检查电源回流路径,发现存在跨分割区的情况 ①;接着,在分割界面处补缝电容(0402 0.1uF)进行跨接 ②;然后,确保所有信号层下方均有连续地平面 ③;再然后,增加地过孔数量,每平方厘米至少要有4个 ④;最后,重新铺地铜后报错能消除 ⑤。
针验证,需执行这样的操作,即Analyze,然后选择Signal Integrity 接着是Reflection/CrossTalk,此时对于眼图高度有要求,要求是大于200mV。实际测量在进行上述操作之后,串扰从150mV降低到了30mV。
适用于本方法的场景不存在于:板材的厚度小于0.8毫米,或者信号的速率超过了12Gbps(像是PCIe 5.0这种情况),在这样的时候,需要采用埋阻材料以及AC耦合电容来进行替代。简易的替代方案是将其改用为微带线加上表面进行镀金,并且要配合着Ansys仿真抽头来一同使用。你的板子有没有碰到过DDR4时钟的毛刺干扰呢?在评论区展示出频谱截图,一块儿排查。











