这与路径是双向的这一事实无关。
这些工具(正确地)告诉您,它无法可靠地捕获小到1.4ns的数据眼(至少没有这种时钟结构)。
你有两个基本问题。
第一个(不太严重)是输入的时钟/数据关系与IDDR与BUFIO捕获的“最佳”时序不匹配。
这些工具告诉您,您需要更多延迟数据以匹配时钟插入。
这可以使用数据输入上的IDELAY元素来完成。
在理想的世界中,您添加的延迟量将减少您的设置松弛并增加您的保持松弛量。
尽管如此,这些工具告诉你这还不够。
即使您可以在数据延迟上精确地添加1.250ns(这会将保持违规减少到0),这会将您的设置松弛减少到-0.019ns - 技术上是失败。
由于设置松弛和保持松弛的总和小于0,因此该接口不可用。
根据我的经验,使用BUFR而不是BUFIO可以获得略微更好的时机 - 虽然不直观(我仍然认为这些工具是错误的),时间应该略有改善,但可能不够重要。
即使窗口改进得足以使setup_slack + hold_slack> 0,IDELAY的添加也会破坏这一点。
添加IDELAY会增加相当多的额外窗口要求,原因有两个
- 通过IDELAY的额外无补偿延迟路由
- 由于延迟数据导致的模式相关抖动
通过向时钟而不是数据添加延迟可以避免两者中的第二个,但为此,您还需要更改约束以修改启动和捕获边缘关系。
看看这篇关于约束中心对齐源同步DDR输入接口的文章。
但是,再一次,我认为这不会在Artix-7中发挥作用,即使在-2速度等级......
Kintex-7有点快(可能更好),但可能仍然不够。
如果你无法静态捕获,那么你将不得不求助于某种动态捕获机制(带校准)。
Avrum
在原帖中查看解决方案
这与路径是双向的这一事实无关。
这些工具(正确地)告诉您,它无法可靠地捕获小到1.4ns的数据眼(至少没有这种时钟结构)。
你有两个基本问题。
第一个(不太严重)是输入的时钟/数据关系与IDDR与BUFIO捕获的“最佳”时序不匹配。
这些工具告诉您,您需要更多延迟数据以匹配时钟插入。
这可以使用数据输入上的IDELAY元素来完成。
在理想的世界中,您添加的延迟量将减少您的设置松弛并增加您的保持松弛量。
尽管如此,这些工具告诉你这还不够。
即使您可以在数据延迟上精确地添加1.250ns(这会将保持违规减少到0),这会将您的设置松弛减少到-0.019ns - 技术上是失败。
由于设置松弛和保持松弛的总和小于0,因此该接口不可用。
根据我的经验,使用BUFR而不是BUFIO可以获得略微更好的时机 - 虽然不直观(我仍然认为这些工具是错误的),时间应该略有改善,但可能不够重要。
即使窗口改进得足以使setup_slack + hold_slack> 0,IDELAY的添加也会破坏这一点。
添加IDELAY会增加相当多的额外窗口要求,原因有两个
- 通过IDELAY的额外无补偿延迟路由
- 由于延迟数据导致的模式相关抖动
通过向时钟而不是数据添加延迟可以避免两者中的第二个,但为此,您还需要更改约束以修改启动和捕获边缘关系。
看看这篇关于约束中心对齐源同步DDR输入接口的文章。
但是,再一次,我认为这不会在Artix-7中发挥作用,即使在-2速度等级......
Kintex-7有点快(可能更好),但可能仍然不够。
如果你无法静态捕获,那么你将不得不求助于某种动态捕获机制(带校准)。
Avrum
在原帖中查看解决方案
举报