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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 4551|回复: 10

[求助] 请教IDELAYCTRL的相关问题

[复制链接]
发表于 2022-1-17 17:01:43 | 显示全部楼层 |阅读模式

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

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

×
使用ISE 14.6
使用芯片KINTEX7系列XC7K325T
问题:
我有两组LVDS的输入,都是4路,解串因子为8,两组LVDS同属于一个BANK
在MAP时提示如下错误:
MapLib:1000 - IDELAYCTRL processing failed.IDELAYCTRL symbol " rx1_bitslip/lvds_1_8/delayctrl" (outputsignal= rx1_bitslip/lvds_1_8/DELAY_LOCKED) and IDELAYCTRL symbol "rx2_bitslip/lvds_1_8/delayctrl" (output signal= rx2_bitslip/lvds_1_8/DELAY_LOCKED)have the same IODELAY_GROUP constraint and belong to different partitions.Their RDY pins cannot be used.
网上有说解决方法:set a different IODELAY_GROUP parameter for each core
但我在PlanAhead里可以看到,一个BANK只有一个DELAYCTRL,该怎么解决这个问题呢?




发表于 2022-1-17 23:54:34 | 显示全部楼层
image.png
回复 支持 反对

使用道具 举报

发表于 2022-1-17 23:57:46 | 显示全部楼层
image.png
回复 支持 反对

使用道具 举报

发表于 2022-1-18 00:02:21 | 显示全部楼层
猜测你是不是违背了这条限制?

“Do not use IODELAY Group in conjunction with IDELAYCTRL instances that have a LOC constraint”
回复 支持 反对

使用道具 举报

发表于 2022-1-18 00:15:30 | 显示全部楼层
再次看你贴出的报错,看来违背的是这一条:
“Instantiate only one IDELAYCTRL”。

用IODELAY Group,IDELAYCTRL只能例化一次,就是一个IODELAY Group中只能有一个IDELAYCTRL,你的错误报告反映出你分别例化了两个IDELAYCTRL:
rx1_bitslip/lvds_1_8/delayctrl
rx2_bitslip/lvds_1_8/delayctrl
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-1-18 09:49:00 | 显示全部楼层


   
innovation 发表于 2022-1-18 00:02
猜测你是不是违背了这条限制?

“Do not use IODELAY Group in conjunction with IDELAYCTRL instances th ...


你好,问题我大致可以看明白,具体解决办法还是不大懂,我详细说一下我的应用,麻烦帮忙看一下可以吗,谢谢我的FPGA与外界通过LVDS通信
一组是      datap[3:0],datan[3:0],clkp,clkn         用来传输数据
另一组是   parap[3:0],paran[3:0],pclkp,pclkn     用来传输命令
所以我例化了两个LVDS核,上面这10对差化信号是分配在同一个BANK中,结果就出现了上文的错误
因为同时有命令和数据传输,我也没办法只例化一个LVDS啊,这个问题该怎么解决呢?谢谢


回复 支持 反对

使用道具 举报

发表于 2022-1-18 14:19:37 | 显示全部楼层
本帖最后由 innovation 于 2022-1-18 14:52 编辑


   
djqlyy2922 发表于 2022-1-18 09:49
你好,问题我大致可以看明白,具体解决办法还是不大懂,我详细说一下我的应用,麻烦帮忙看一下可以吗,谢 ...


你试试在你的UCF文件中添加这样两句,看行不行:
INST "rx1_bitslip/lvds_1_8" IODELAY_GROUP = idgrp_rx1 ;
INST "rx2_bitslip/lvds_1_8" IODELAY_GROUP = idgrp_rx2 ;

意思就是你在设计中例化了两个LVDS IP,每个LVDS IP中分别例化了IDELAYCTRL,IDELAYCTRL没加约束,软件自动分配了相同的IODELAY_GROUP,分配的名称相同,然后冲突了,所以,你手动在UCF文件中为两个LVDS IP分配各自不同的IODELAY_GROUP名称。

"rx1_bitslip/lvds_1_8"和"rx2_bitslip/lvds_1_8"就是你例化的两个LVDS IP实体,idgrp_rx1和idgrp_rx2就是随便取的名字了,你自己看怎么好记好理解就怎么取名字。

这个就是你说的:“set a different IODELAY_GROUP parameter for each core”,原以为你是分配错了,突然回过味儿来,你是不是就没分配哦?

哦,你之前问过“怎么批量重生成IP?”,难道这个问题是你移植S6的设计到K7遇到的,因为S6没有IDELAYCTRL这个原语,K7有(为了提高IODELAY的精度)?如果是这样的话,那么,你放心,所有你没看的手册最后都会逼你看的,所有你没干的活儿,最后都会逼你干的。
回复 支持 反对

使用道具 举报

发表于 2022-1-18 14:55:04 | 显示全部楼层
把IDELAYCTRL放到外面例化,不要在LVDS模块里例化,只是在LVDS模块里使用,这样就不会有同一个BANK例化2次的问题了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-18 15:56:53 | 显示全部楼层


   
innovation 发表于 2022-1-18 14:19
你试试在你的UCF文件中添加这样两句,看行不行:
INST "rx1_bitslip/lvds_1_8" IODELAY_GROUP = idgrp_rx1 ...


谢谢您的解答,在UCF里加上约束就可以了,多谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-18 15:57:56 | 显示全部楼层


   
jinj198908 发表于 2022-1-18 14:55
把IDELAYCTRL放到外面例化,不要在LVDS模块里例化,只是在LVDS模块里使用,这样就不会有同一个BANK例化2次 ...


这个在生成LVDS的IP核时,没看到有选项说外部还是内部,都是自己生成的
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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


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

GMT+8, 2025-8-21 22:38 , Processed in 0.026480 second(s), 4 queries , Gzip On, Redis On.

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