cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Scholar
Scholar
4,508 Views
Registered: ‎08-24-2011

How to reuse the subsystem implemented in Block Designer in other projects?

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.

 

  1. In the design, where I have created my subsystem, I click "Create Block Design" in the IP Integrator - so I get a new BD in another file.
  2. I select the desired sub-block in its BD, and copy it.
  3. I paste the copied sub-block to the newly created BD, and save the file.
  4. I remove the file from the project, but do not delete it from the disk. I can create a copy somewhere building a library of BD-implemented subsystems.
  5. I open another project.
  6. I temporarly add the file created in point 3 (the "library" file) to the project.
  7. I copy the subsystem from that file.
  8. I paste the subsystemm to the destination BD
  9. I remove the "library" file from the project.
  10. DONE!

I hope, that the above method may be useful for others.

With best regards,

Wojtek

2 Replies
Highlighted
Observer
Observer
3,717 Views
Registered: ‎07-23-2009

Re: How to reuse the subsystem implemented in Block Designer in other projects?

Great idea. Thanks. It helped me after hours and hours wasted on this..

0 Kudos
Highlighted
Adventurer
Adventurer
1,695 Views
Registered: ‎03-31-2016

Re: How to reuse the subsystem implemented in Block Designer in other projects?

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)

 

Thanks again!

0 Kudos