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

Note: This Answer Record is applicable to Vivado 2020.1 and previous releases.

Starting in the Vivado 2020.2 release, it is recommended to use the Block Design Container feature in IP Integrator that allows instantiation of a Block Design (BD) within another BD.

For more information, see chapter 5 "Collaborative Design in IP Integrator" in  "Designing IP Subsystems Using IP Integrator" (UG994).




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

- For Vivado 2014.4 and all previous versions, please follow the below process:

  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 (v2015.2) for more information:
    http://www.xilinx.com/support/documentation/sw_manuals/xilinx2015_2/ug994-vivado-ip-subsystems.pdf

 

- For Vivado 2015.1 and later releases (till 2020.1), please follow the below process:

  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.
    https://www.xilinx.com/support/documentation/sw_manuals/xilinx2020_1/ug1118-vivado-creating-packaging-custom-ip.pdf 
AR# 59355
Date 05/22/2021
Status Active
Type General Article
Devices
Tools
People Also Viewed