In a project that uses the board flow, I can drag and drop components from the Board Tab on to the canvas. This instantiates the IP and then connects its interface to the right component on the board.
If I instantiate another instance of an IP that can connect to the same component on the board, the IP customization GUI will still show these components as valid options.
I have a project with a MicroBlaze design for the KCU105 board. This design uses the following components on the board:
A MIG and a GPIO core are also present in the Board Design (BD). All of these components are hooked up using the board interface tab.
However, I can still instantiate another instance of these IPs and by double clicking on the IP, I can re-use the already used interfaces.
Is this expected behavior? I cannot drag and drop an interface from the BI tab multiple times, so I would not expect to be allowed to do this through the IP customization window either.
Once an interface is used, ideally, the IP customization GUI would not offer it as a valid choice anymore.
A request has been made to enhance this option in a future Vivado release, so that when IP cores are added to a block design and those IP are customized on the canvas, the IP customization GUIs will not allow a connection to an already used resource.
When running validate_design, if multiple IP use the same resource, you should see a critical warning like the following: