搜索
bottom↓
回复: 7
打印 上一主题 下一主题

带DELAYCTRL的SelectIO模块,编译报错REFCLK不同,怎么处理?

[复制链接]
(11464148)

出10入12汤圆

跳转到指定楼层
1
发表于 2021-3-15 17:53:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
报错如下:
[DRC PLIDC-3] IDELAYCTRLs in same group have conflicting connections: IDELAYCTRL cells 'diff_measure_0/diff_ch_1/diff_io_in0/inst/delayctrl' and 'diff_measure_0/diff_ch_3/diff_io_in0/inst/delayctrl' have same IODELAY_GROUP 'diff_io_in1_group' but their REFCLK signals are different

实际设计中的REFCLK是相同时钟的,但编译会报错REFCLK不同,请教大家要怎么解决?
网上也找了一下资料:
但是根本没用,还是不行,请大家分享一下经验,非常感谢!



AR#64542

[DRC PLIDC-3]同一组中的IDELAYCTRL具有冲突的连接:

实例化同一个selectio核会报这个问题。

官方给的解决思路:

解决方案

要变通解决此问题,您将需要在HDL中编辑IODELAY_GROUP约束,并使用XDC约束覆盖它。

要编辑HDL,请打开<SelectIO向导IP名称> _selectio_wiz.v文件,然后搜索(* IODELAY_GROUP =“ selectio_wiz_0_group” *)行。

将有一个用于DELAY,另一个用于IDELAYCTRL。注释掉这些行中的每一行,因为您将要约束XDC文件中的组。

然后在XDC文件中为SelectIO向导的每个实例创建一个IODELAY_GROUP。

约束可以保持通用,因此实例中的所有延迟元素(IDELAYCTRL和IODELAY原语)都被限制在同一组中。 

set_property IODELAY_GROUP <SelectIO向导IP名称> _group1 [get_cells <SelectIO向导IP层次名称#1> / inst / * delay *]

set_property IODELAY_GROUP <SelectIO向导IP名称> _group2 [get_cells <SelectIO向导IP层次名称#2> / inst / * delay *]
————————————————
版权声明:本文为CSDN博主「qian_123456」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qian_123456/article/details/109004296

(11456933)

出0入20汤圆

2
发表于 2021-3-15 19:54:06 来自手机 | 只看该作者
仔细检查你的时钟是不是接错了。还有,可以例化一个无声明的idelayctl,让综合器自己去remap(不需要自己复制)。
(11385560)

出10入12汤圆

3
 楼主| 发表于 2021-3-16 15:43:39 | 只看该作者
wye11083 发表于 2021-3-15 19:54
仔细检查你的时钟是不是接错了。还有,可以例化一个无声明的idelayctl,让综合器自己去remap(不需要自己复 ...

关于楼主位的报错,我发现把delay_clk和和ref_clock接同个时钟就不会报错了

但有个新的问题,编译会报错IDELAYCTRL不够用,我的设计中的用了29对IO,编译器为每对IO都分配了独立的IDELAYCTRL,所以肯定会不够
但是看资料的话,一个时钟域其实用一个IDELAYCTRL就够了,我尝试把IP的IDELAYCTRL屏蔽掉,但会在顶层只例化一次,但也还是会报类似错误
这个问题怎么解决呢,请指点一下吧,非常感谢!

[Place 30-640] Place Check : This design requires more IDELAYCTRL cells than are available in the target device. This design requires 29 of such cell types but only 6 compatible sites are available in the target device. Please analyze your synthesis results and constraints to ensure the design is mapped to Xilinx primitives as expected. If so, please consider targeting a larger device.
(11383918)

出0入20汤圆

4
发表于 2021-3-16 16:11:01 来自手机 | 只看该作者
清空vivado目录试试。vivado偶尔会出bug,用旧的缓存文件。
(11382417)

出10入12汤圆

5
 楼主| 发表于 2021-3-16 16:36:02 | 只看该作者
wye11083 发表于 2021-3-16 16:11
清空vivado目录试试。vivado偶尔会出bug,用旧的缓存文件。

我试了清空.runs路径,但问题还是一样
您用过SelectIO的IDELAY功能吗,是否有什么需要特殊处理的?
(11381899)

出0入20汤圆

6
发表于 2021-3-16 16:44:40 来自手机 | 只看该作者
不用啊。随便折腾。你查查是不是没有删掉idelayctrl
(11371871)

出10入12汤圆

7
 楼主| 发表于 2021-3-16 19:31:48 | 只看该作者
wye11083 发表于 2021-3-16 16:44
不用啊。随便折腾。你查查是不是没有删掉idelayctrl

我之前生成的selectIO是1位的,所以要例化很多次,现在我把SelectIO例化成15位,这样例化两次就够了,不会再报idelayctrl数量不够的错误
再向您请教一下,selectIO里有一路时钟是delay_clk,看代码这路时钟是连接到IDELAY的时钟端口,看手册,这路时钟只是同步idelay的控制信号用,理论上应该接主控制逻辑的时钟,但我这样接,selectIO只例化一次是可以的,如果例化两次以上,就会报楼主位的错误。
delay_clk接ref_clock就不会报错了,但这样接的话,我感觉IDELAY的控制信号与主逻辑就跨时钟域了,也不太合理
您在项目中是怎么接delay_clk呢,是否遇到过我说的问题?
(11371393)

出0入20汤圆

8
发表于 2021-3-16 19:39:46 来自手机 | 只看该作者
xxdd 发表于 2021-3-16 19:31
我之前生成的selectIO是1位的,所以要例化很多次,现在我把SelectIO例化成15位,这样例化两次就够了,不 ...

你好好读读ug吧。有些信号不需要接。有一路clk是必须有的,用于tap incdec。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2021-7-26 10:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表