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!

AR# 59355

Vivado IP Flows - How to use one Block Design inside another Block Design?

Description

Using IP Integrator within Vivado, what is the proper method to package a Block Design (BD)?
 
Is it possible to create a hierarchical BD (i.e. Can I use one BD inside another BD)?
 
For example is it possible to have a top level BD that consists of sub-level BDs?

Solution

A Block Design (BD) can be used within another BD.

You need to initially package the sub-module BD as a user IP and then use it inside the top level BD.

Please follow the below process if you are using Vivado 2014.4 and below:

  1. In the first project where you have a block design for one of the sub module, right click on the .bd file in the sources tab and select Package Block Design.

  2. This directs you to the Vivado IP packager GUI, where you can view sources, IP name etc.
    In the Review and Package tab, you can find the location where the IP will be available.
    Select the Package IP option.
  3. Now open top level project, go to IP catalog, right click on any IP and select IP Settings.
    In the Project settings dialog box, click on Add repository and browse to the location where the IP is created in the previous step.
    You can see the IP listed in the selected repository section.
    Now click on OK/Apply.
  4. Open the BD in the top level project and select Add IP.
    Here you will find the User IP you just added.
    Add this IP to the BD and connect it to the rest of the design.

Note: You should not use the Create Peripheral or Package IP wizard to package a BD design.

Refer to the section "Packaging the Block Design" of (UG994) Vivado Design Suite User Guide: Designing IP Subsystems Using IP Integrator for more information.

http://www.xilinx.com/support/documentation/sw_manuals/xilinx2015_2/ug994-vivado-ip-subsystems.pdf

Please follow the below process if you are using Vivado 2015.1 and above:

  1. In the first project where you have a block design for one of the sub module, go to Tools --> Create and Package IP.

  2. This directs you to the "Create and Package IP" wizard. Click on Next, and choose the "package a block design from the current project" option.
    If you have multiple block designs select the block design which you would like to package and click on Next.
    Click on "Next" and then "Finish".
  3. This directs you to the Vivado IP packager GUI, where you can view sources, IP name etc.
    In the Review and Package tab, you can find the location where the IP will be available.
    Select the Package IP option.
  4. Now open top level project, go to IP catalog, right click on any IP and select IP Settings.
    In the Project settings dialog box, click on Add repository and browse to the location where the IP is created in the previous step.
    You can see the IP listed in the selected repository section.
    Now click on OK/Apply.
  5. Open the BD in the top level project and select Add IP.
    Here you will find the User IP you just added.
    Add this IP to the BD and connect it to the rest of the design.

Refer to the section "Packaging a Block Design" of (UG1118) Vivado Design Suite User Guide: Creating and Packaging Custom IP for more information.

http://www.xilinx.com/support/documentation/sw_manuals/xilinx2015_2/ug1118-vivado-creating-packaging-custom-ip.pdf
AR# 59355
Date Created 02/09/2014
Last Updated 09/14/2015
Status Active
Type General Article
Devices
  • FPGA Device Families
Tools
  • Vivado Design Suite - 2013.4