Using a typical approach, you can instantiate separate IP integrator block design sources in various RTL modules at different levels of hierarchy. However, these block designs are isolated instances, and modularization cannot be used to control addressing or parameter propagation within the block designs.
Using block design containers (BDCs), you can instantiate one or more block designs inside another block design. This feature essentially converts a hierarchical block and its contents into a block design. The resulting block design is defined as a .bd file and can also be used as part of another block design project.
In the following figure, three separate block designs instantiated in one level of hierarchy are converted into two levels of hierarchy, in which Block Design 1 instantiates Block Design 2 and Block Design 3 as BDCs.
BDCs offer the following benefits:
- Partition of large block designs into BDC sub-blocks where each block design can be independently developed
- Replication of BDC content on the canvas
- Reuse of .bd sources across different IP integrator projects
The content of the sub-block design hierarchy is visible from the diagram of the top-level block design. However, you must make changes to the content of the BDC within the source block design of that BDC. The changes made are then automatically synced with the top-level block design.
All parameters from the IP in the top-level block design automatically propagate to the connected IP inside the sub-block design BDC. This allows for multiple instantiations of the same source block design but with different sets of parameters or properties propagated to these instances. All addressing of BDC sub-blocks must also occur from the top-level block design.