DRC: Have conflicting connection.
报错如下:
[DRC PLIDC-3] IDELAYCTRLs in same group have conflicting connections: IDELAYCTRL cells ‘dvi_inst/U0/TMDS_ClockingX/IDelayCtrlX’ and ‘dvi_inst1/U0/TMDS_ClockingX/IDelayCtrlX’ have same IODELAY_GROUP ‘dvi2rgb_iodelay_grp’ but their RST signals are different
Xilinx 官网对于此问题的描述:
When instantiating multiple instances of the same SelectIO Wizard IP core, the following error might be displayed:
实例化同一SelectIO Wizard IP核的多个实例时可能会出现以下报错:
//
[DRC PLIDC-3] IDELAYCTRLs in same group have conflicting connections: IDELAYCTRL cells ‘dvi_inst/U0/TMDS_ClockingX/IDelayCtrlX’ and ‘dvi_inst1/U0/TMDS_ClockingX/IDelayCtrlX’ have same IODELAY_GROUP ‘dvi2rgb_iodelay_grp’ but their RST signals are different
//
The SelectIO Wizard IP core contains IODELAY_GROUP constraints in the HDL code which is common for all instances.
SelectIO Wizard IP 核在所有实例通用的HDL代码里面包括了IODELAY_GROUP 的约束,
//
(* IODELAY_GROUP = “selectio_wiz_0_group” *) ///
/
Because all instances use the same HDL code, but have different signals, this DRC error is issued.
因为所有实例都使用的相同的HDL代码,但是信号不同,就会报这个错误。
**
原因分析:
由于调用了多次相同的ip核,因为文件中对IDELAY进行了约束,ip核的xdc文件仅仅适用于调用一次时使用,需要我们手动添加约束。尝试直接写xdc文件把每一对IDELAY和IDELAYCTRL约束到不同的group。但是会报“三个IDELAYCTRL”分配了group但是没有cells的错误。以下为成功最后解决的方法:
**
解决方法:
删除ip核文件夹中的xdc文件中的关于约束IDELAY和IDELAYCTRL的代码
在vivado中的xdc重新写约束。操作如下:
打开综合后的device面板,在面板中找到IDELAY和IDELAYCTRL器件,一般这两个器件隔得很近,IDELAYCTRL很少,一个CLOCK Region Prop 中只有一个,IDELAY较多。
黄色的就是一个IDELAYCTRL了,紫色的就是IDELAY。
找到之后约束这样写:
set_property LOC IDELAY_X0Y24 [get_cells dvi_inst/U0/DataDecoders[*].DecoderX/InputSERDES_X/InputDelay]
set_property LOC IDELAYCTRL_X0Y0 [get_cells dvi_inst/U0/TMDS_ClockingX/IDelayCtrlX]
IDELAY_X0Y24 替换为你的IDELAY的名字,dvi_inst/U0/DataDecoders[*].DecoderX/InputSERDES_X/InputDelay替换为你的IDELAY cell。
IDELAYCTRL_X0Y0 替换为你的IDELAYCTRL的名字,
如图中名字为IDELAYCTRL_X0Y1。
dvi_inst/U0/TMDS_ClockingX/IDelayCtrlX 替换为对应的IDELAYCTRL。