使用PCIE等IP时,IP核例化生成的文件中包含了xdc以固定引脚分配,该xdc是read only的,但还是有办法修改,麻烦一些而已。Vivado默认使用此xdc文件,因此用户在综合后重新设定引脚绑定后,生成的用户xdc与ip xdc冲突,用户的约束不管用。解决此问题的方法是,在xdc下面的用户位置约束之前设置一个空位置。
如下面所示,用{} 设置引脚约束为空。后面的引脚约束就是自定义后的。
set_property PACKAGE_PIN {} [get_ports RX0_P]
set_property PACKAGE_PIN {} [get_ports RX1_P]
set_property PACKAGE_PIN {} [get_ports RX2_P]
set_property PACKAGE_PIN {} [get_ports RX3_P]
set_property PACKAGE_PIN Y2 [get_ports RX0_P]
set_property PACKAGE_PIN W4 [get_ports RX1_P]
set_property PACKAGE_PIN V2 [get_ports RX2_P]
set_property PACKAGE_PIN U4 [get_ports RX3_P]
这个问题出现在黑金的AX7103开发板上,当我用vivado 2018.2生成XDMA后,无论怎么调试电脑都识别不了PCIE。老版本的教程中并没有指出引脚绑定有什么不同,直到我查看了kc705板子的pcie引脚后,发现PCIE的0-3通道对应GTP的3-0通道,这也是生成XMDA IP后,自带XDC约束的引脚顺序,而黑金在设计时,PCIE的0 1 2 3 通道分别对应GTP的1 0 2 3通道。该工程综合后,打开综合,IO约束,绑定好正确的引脚后,在xdc文件中加入以下几句话就可以了。
set_property PACKAGE_PIN {} [get_ports {pci_exp_rxn[3]}]
set_property PACKAGE_PIN {} [get_ports {pci_exp_rxn[2]}]
set_property PACKAGE_PIN {} [get_ports {pci_exp_rxn[1]}]
set_property PACKAGE_PIN {} [get_ports {pci_exp_rxn[0]}]
set_property PACKAGE_PIN C9 [get_ports {pci_exp_rxn[3]}]
set_property PACKAGE_PIN A10 [get_ports {pci_exp_rxn[2]}]
set_property PACKAGE_PIN A8 [get_ports {pci_exp_rxn[1]}]
set_property PACKAGE_PIN C11 [get_ports {pci_exp_rxn[0]}]
————————————————
版权声明:本文为CSDN博主「同年纪_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/q774318039a/article/details/88996517