在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 4852|回复: 7

[求助] DDR2 时序约束不满足

[复制链接]
发表于 2014-10-13 10:52:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 fanny_haiyun 于 2014-10-13 11:06 编辑

在ML505上使用的DDR的型号为MT4HTF3264-667,利用ISE 生成了MIG,频率设置为200M(5000ps)。在ISE建立了一个工程,顶层文件产生很简单的读写,直接调用MIG控制DDR,最后根据生成的ucf文件约束。发现时序约束不满足。如下图:
1.png 由于图太小,将不满足的路径描述如下:
Slack (setup path):     -1.486ns (requirement - (data path - clock path skew + uncertainty))
   Source:               DDR2_INST/u_ddr2_top_0/u_mem_if_top/u_phy_top/u_phy_init/u_ff_phy_init_data_sel (FF)
   Destination:          DDR2_INST/u_ddr2_top_0/u_mem_if_top/u_usr_top/u_usr_wr/.gen_wdf[1].u_wdf (RAM)
   Requirement:          1.250ns
   Data Path Delay:      2.273ns (Levels of Logic = 1)(Component delays alone exceeds constraint)
   Clock Path Skew:      -0.178ns (3.551 - 3.729)
   Source Clock:         clkdiv0 rising at 0.000ns
   Destination Clock:    clk90 rising at 1.250ns
   Clock Uncertainty:    0.285ns

我直接用MIG 生成的约束文件进行约束都不满足,不知道怎么改了。
发表于 2014-10-13 15:57:29 | 显示全部楼层
自己分析下原因啊,Requirement:          1.250ns ,你不觉得有问题吗,虽然我不知道你的工程。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-13 16:12:42 | 显示全部楼层
本帖最后由 fanny_haiyun 于 2014-10-13 16:13 编辑

回复 2# wgej1987
1.25ns计算的是clk90和clkdiv0他俩路径之间的约束,下面是我的工程: 1.png
下面是对时钟的约束:
无标题.png
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-13 16:14:40 | 显示全部楼层
回复 2# wgej1987

你可以看下我下面编辑的工程和ucf的截图
回复 支持 反对

使用道具 举报

发表于 2014-10-13 18:53:21 | 显示全部楼层
要求时间1.25ns,但是你时钟只有200M,DDR最多也就400M,也就是2.5ns就行了,出来了1.25ns,说明你这里面的数据路径还有半周期的,也就是可能有上下沿混用的。你自己看看这条路径分析下,看能不能避免,或者没关系的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-13 19:16:18 | 显示全部楼层
回复 5# wgej1987
我的时钟的确是有个90度的,和clkdiv0之间相差的就是1.25ns,这条路径是不该约束的。我在约束文件里写了

NET "clkdiv0" TNM_NET = FFS "clkdiv0_GRP";
NET "clk90" TNM_NET = FFS "clk90_GRP";
TIMESPEC TS_clkdiv0_TIG = FROM "clkdiv0_GRP" TO "clk90_GRP" TIG;
这样的时序约束,但是还是报错
回复 支持 反对

使用道具 举报

发表于 2014-10-14 13:17:31 | 显示全部楼层
没用过xlinx,不知道这种约束,也没用过它的DDR,所以也不知道他的工程,无法帮你。
回复 支持 反对

使用道具 举报

发表于 2014-12-26 00:15:58 | 显示全部楼层
1.如果这两个时钟域之间你本来就想异步处理,你可以将这两个clock设定成false path,ucf文件里面应该是设定成不同的group。
2.如果你的设计需要分析这两个时钟域之间的data,你需要设定multi path,就不应该分析1.25ns这两个rising edge,可以分析3.75,或者6.25对应的一对rising edge。multi path语法可以查阅xilinx 的 clock closure user guild。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-14 07:11 , Processed in 0.018889 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表