UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
653 Views
Registered: ‎10-15-2018

Stitching together IPs that include instances of common subIPs.

Hi,

We have a few IPs - say IP0 and IP1 - that we need to stitch (integrate) together. They include instances of common subIPs like FFTs and memory arrays etc.

When I try to instantiate the IPs i.e. IP0 and IP1 ina top level wrapper, Vivado gives an error for the subIPs - i.e. memory arrays - that different instances of same module with potentially different data are present.

What is the recommended way to do this - preferably without changing the IPs - IP0 and IP1 ?

0 Kudos
2 Replies
Teacher xilinxacct
Teacher
589 Views
Registered: ‎10-23-2018

Re: Stitching together IPs that include instances of common subIPs.

@bhawandeepsingh

Are all of the IPs fully encapsulated or are they trying to use some shared resource? (e.g. do each instance have their own port mapped instances.. creating separate hardware?) If they are fully encapsulated, I don't see a reason why this would not work.

Scholar brimdavis
Scholar
562 Views
Registered: ‎04-26-2012

Re: Stitching together IPs that include instances of common subIPs.

@bhawandeepsingh   "What is the recommended way to do this - preferably without changing the IPs - IP0 and IP1 ?"

If you're using the IP Integrator flow, put all the shared stuff in it's own directory, then use the "Package a Specified Directory => Package as a library core" option within the IP packager, which makes the shared code visible to other IP as a "library core". You then add these shared IP to IP0 and IP1 as a "sub-core reference" in the Vivado IP Packager.

The following thread has some discussion and manual links on this topic:

   https://forums.xilinx.com/t5/Design-Entry/HDL-files-used-in-custom-IP-could-not-be-updated-Advise-please/m-p/864773/highlight/true#M17129


If you're doing this in a Verilog RTL flow, you'll need to either give each module a unique name, or use OOC synthesis (which has its' own side effects) :

   https://www.xilinx.com/support/answers/58282.html

With a VHDL RTL flow, you can use package or library namespaces to resolve the correct entity.

-Brian