DDR IP多个例化

XILINX FPGA型号:xc7k325t  ffg900-2

工具版本:vivado 2016.4

DDR3:芯片数据位宽16bit,DDR工作频率533M;

需求是例化两个DDR3的控制器;每个控制器的数据位宽32bit,

1)  问题描述:

例化1个DDR3控制器,然后在顶层调用两次使用;在编译时报错如下:

[DRC 23-20] Rule violation (PLIDC-3)IDELAYCTRLs in same group have conflicting connections - IDELAYCTRLcells'u0_ddr_arbitrage/u0_ddr3_core/u_ddr3_core_mig/u_iodelay_ctrl/u_idelayctrl_200'and 'u1_ddr_arbitrage/u0_ddr3_core/u_ddr3_core_mig/u_iodelay_ctrl/u_idelayctrl_200'

have same IODELAY_GROUP'DDR3_CORE_IODELAY_MIG0' but their REFCLK signals are different

或此以下报错

[DRC 23-20] Rule violation (PLIDC-3)IDELAYCTRLs in same group have conflicting connections - IDELAYCTRL cells'u0_ddr_arbitrage/u0_ddr3_core/u_ddr3_core_mig/u_iodelay_ctrl/idelayctrl_gen_1.u_idelayctrl_300_400'and 'u1_ddr_arbitrage/u0_ddr3_core/u_ddr3_core_mig/u_iodelay_ctrl/idelayctrl_gen_1.u_idelayctrl_300_400'have same IODELAY_GROUP 'DDR3_CORE_IODELAY_MIG1' but their REFCLK signals aredifferent

 

问题原因:

2个DDR3控制器是重复调用,在每次调用时都会例化一次IODELAY_GROUP,但只有1个IODELAY_GROUP可供使用,故在编译时会爆冲突;

解决方法:

在例化DDR3控制器IP时,直接选择一次例化两个控制器,这样例化的话,工具就会自动只例化一个IODELAY_GROUP,两个DDR控制器共用;

如果只例化1个DDR3 控制器,想调用两次,也可以通过修改DDR的代码,把其中一个IODELAY_GROUP注销,把控制器的ready信号直接引入使用;

         注意此问题同样会出现在FPGA的节温控制模块调用;也需要做相同的修改才能不报错;

 

2)  这个型号的FPGA,DDR3的数据速率最高是1600M,但只能在HP BANK布线,就是FPGA的bank32、bank33和bank34;而使用HR BANK,数据速率最高只有1066M,在bank12、bank13、bank14、bank15、bank16、bank17和bank18;

5)  需注意在生成DDR IP时,IP会自动生成XDC约束文件,在编译过程中,vivado会调用此xdc文件进行布局布线;如果在工程使用的xdc文件中,对DDR相同的管脚进行约束,有时候会爆冲突的错误,或在生成bit文件时,爆出几个引脚无法分配,但实际是这几个管脚已经正确分配并布线完成。
--------------------- 
作者:Duncan_Lv 
来源:CSDN 
原文:https://blog.csdn.net/Duncan_Lv/article/details/78077840 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值