赛灵思
直播中

李响

7年用户 171经验值
私信 关注
[问答]

设计Artix-7中的双向ddr i/o电路时序约束失败的原因是什么?

我正在设计一个双向ddr i / o电路,但遇到时序约束失败。
器件为A7-100-FGG484-2,开发环境为vivado 2016.2。当电路作为输入(t_rn = 1)运行时,ddr输入引脚ldat有一个有效的数据窗口,窄至1.4nS,中间与ddr输入对齐
时钟引脚lclkin,(tsu = 0.7nS,th = 0.7nS)。我使用iddr从ldat捕获ddr数据,但是时序要求不能满足。
时序报告显示时钟延迟远大于数据延迟,导致保持时间违规。我尝试将BUFG / BUFIO或IBUF直接连接到iddr原语,没有一个可以满足时序要求。可以帮我设计一个这样的双向
具有tsu = th = 0.7nS的Artix-7器件中的ddr i / o电路?顺便提一下,时序报告显示IBUF(0.886nS)/ BUFIO(1.105nS)的最大延迟远大于IBUF的最小延迟(0.265nS)
)/ BUFIO(0.483nS),这是因为数据窗口缩小为1.4nS所以设置和保持不能同时满足的原因是什么?
以下是我的电路和设置/保持时序报告。

回帖(5)

陈玉筠

2020-8-28 06:23:51
这与路径是双向的这一事实无关。
这些工具(正确地)告诉您,它无法可靠地捕获小到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
在原帖中查看解决方案
举报

贾小龙

2020-8-28 06:42:40
嗨,
缓冲区不会有太大帮助。
尝试延迟数据路径以匹配时钟路径延迟。
IDELAYE2原语可以很好地运行Artix7,它可以插入到您的数据路径中。
选择合适的分接头值以获得所需的延迟。
问候。
--------------------------------------------------
--------------------------------------------------
---- FPGA爱好者!-------------------------------------------
--------------------------------------------------
-----------
举报

陈玉筠

2020-8-28 06:59:02
这与路径是双向的这一事实无关。
这些工具(正确地)告诉您,它无法可靠地捕获小到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
举报

王林

2020-8-28 07:11:01
非常感谢,但答案是抑制。
我认为该报告暗示数据窗口窄至1.25 ns无法在7-2速度下正确捕获,因为设置松弛和保持松弛的总和为负。
但是,为什么a7 ddr2sdram控制器可以在400MHz内正确捕获数据,因为数据窗口也很窄。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分