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
来源:优快云
原文:https://blog.youkuaiyun.com/Duncan_Lv/article/details/78077840
版权声明:本文为博主原创文章,转载请附上博文链接!