在长burst中漏采样的问题
一、背景
最近在验SerDes的过长中,发现了一个在长burst中漏采样的问题。本来lane上的data应该是均匀的,但是在data传送一段时间之后,就会出现valid信号少了一个,本来是2T clock来一个valid,但是某时刻4T才来了一个burst。
二、问题探索
开始,怀疑是使用clock blocking造成的,可能是setup_time和hole_time设定不合理导致的漏采样问题,但是在确认design内部信号和Interface上的信号之后,排除了这一假设
之后猜测是clock不同源导致的问题,经过确认,发现design内部lane上的clock是545.001MHz,而Monitor使用的clock是545.019MHz,经过分析,发现是clock不同源积累的误差
三、建议
- 在Interface中,setup_time和hold_time可以设定为T/4
- 保证Design和Monitor采样时钟是同源的
- 尽量使用clock blocking做同步处理