Zynq7020 GTP收发器误码率偏高,时序约束到底该怎么配?
各位同行,最近被一个Zynq7020项目折腾得够呛。板子上两片FPGA通过GTP收发器互连,线速率3.125Gbps,跑的是自定义8b/10b编码协议。现象是常温下误码率大概1e-9,勉强能用,但一上高温老化箱到60℃就开始零星丢包,误码率飙到1e-6量级。这批板子要交货了,产线停着等结果,急得上火。
已经排查过的:电源纹波测了没问题,参考时钟用的是差分晶振,抖动也在手册范围内;收发器复位时序按UG476调过,CDR能锁定。现在怀疑是TX端预加重和均衡参数没配好,另外我的时序约束里对GT的参考时钟只做了create_clock,没写set_input_jitter,跨时钟域那边GTP的恢复时钟到用户逻辑也只加了简单的set_false_path,不知道是不是这里埋了雷。
想请教做过高速接口的兄弟:GTP这种场景下参考时钟的jitter约束到底怎么写比较稳妥?还有恢复时钟域到本地时钟域的握手,你们一般用异步FIFO还是直接做相位对齐?综合前先想好时序这话我天天跟新人说,轮到自己还是踩坑。先谢过各位!
回答(1)
★ 精华
先别急着调预加重,60℃才劣化,八成是裕量问题不是参数没配好。建议按这个顺序查:一、用示波器抓GTP参考时钟的相位噪声,重点看1MHz~10MHz偏移段,常温正常不代表高温正常,晶振温漂会吃掉CDR裕量;二、set_input_jitter必须补上,值取晶振手册的RMS抖动,别拍脑袋写;三、恢复时钟域那侧确认做了set_clock_groups异步约束,否则工具会过度优化。预加重先保持默认,把上面三项坐实了再看眼图。先看波形再下结论。