简述
在使用selectIO处理输入数据时,最初设置IP为不对数据进行延迟,如下图A所示。整个程序综合实现之后,没有时序错误,但是,观测输入数据的信号,发现采样窗口很小,且每次对时钟复位之后,输入数据容易出现毛刺。之后,修改IP设置如图B所示,采用Fixed模式,delay tap设为0,程序综合实现后,观测输入数据的信号,变正常了。
最初找我的理解,当设为None模式时,不例化IDELAY组件;当设为Fixed 但tap设为0时,例化IDELAY组件,但不会对数据进行延迟。如果真的是这样,则图A和图B的实现结果应该不会有上述差异,所以两者肯定不同。于是想到,例化组件肯定会引入走线延迟,这个延迟值是否固定,则未可知。在官网荡了一圈,找到如下的AR#42133,里面提及对于7系列器件,当tap设为0时,IDELAY和ODELAY会有600ps的延迟。600ps这个数据在UG471中并未找到,仅见于此。
现在想来,设计中对输入、输出路径并未做时序约束,则很可能是在最初的设计中,输入路径的保持时间其实并不满足,但因为没有做约束所以工具给不出来时序错误。
链接
A fixed 600ps delay IDELAY ?
AR# 45028 How to meet timing for OFFSET IN
Design Advisory for Spartan-6 - IODELAY2; Late and Early Edge Delays and Single Data Bit Corruption