05-17-2017 10:03 AM
Even though I prefer to use the HDL description of my designs, when I develop the firmware for SoCs, I often use the Block Designer. Sometimes the design becomes a combination of quite complex specialized subsystems created by connection of multiple blocks.
To keep my design legible, I usually create a hierarchy - I move each subsystem into a separate sub-block.
It is natural that I'd like to reuse such subsystems in other designs. However, unfortunately, the Vivado Block Designer does not allow me to create a module based on a block diagram stored in another file.
It is also not possible to copy your sub-block in one Vivado instance with one project open and paste it in another Vivado with another project open.
The suggested way is to prepare a user IP from the Block Design https://www.xilinx.com/support/answers/59355.html
I've tried that. However, the problem begins if you want to modify such subsystem.
The user IP stored in the repository does not contain the original block diagram! If you have not preserved your original BD file, your design is lost.
After a few attempts, I have found a method to move such BD-implemented subsystems between the projects.
I hope, that the above method may be useful for others.
With best regards,
10-05-2017 08:54 AM
Great idea. Thanks. It helped me after hours and hours wasted on this..
11-01-2018 04:08 PM
Many thanks! This worked for me perfectly -- very good instructions.
Just to clarify point 6. Maybe it's obvious to other users but to add the file, I actually had to add the entire bd directory of the the sub-component. This is found in the projectname.srcs/sources_1/bd directory (at least for my setup)