cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Visitor
Visitor
6,813 Views
Registered: ‎01-31-2014

how to change target device for Vivado project with custom IPs

Hello!

 

I have a working project for xc7z020clg484-2, Vivado 2013.4. The project has multiple custom IPs, some of them contain memory and DSP units (when I package IPs, I mention .xci files for memories and DSPs in the list of IP File Group). It all works fine.

 

Is there an easy way to migrate the whole project with all cores and sub-cores to another device, e.g. xc7z030fbg484-2? I could not find it. When I changed the project device, all the sub-cores became locked.

 

Ok, I opened each and every IP, changed its device, regenerated sub-cores for rams and multipliers inside each IP, now all IPs seem unlocked, but still cannot synthesize the main project.

 

This is the error I get:

 [BD 41-1336] One or more IPs are locked in this design 'design_1.bd'. This command cannot be run until these IPs are unlocked. Please run report_ip_status for more details and recommendations on how to fix this issue.

 

but when I run report_ip_status, I cannot find any locked IPs! i attached the pics showing the ip status and design sources.

 

How can I allocate and fix the problem?

 

Thanks in advance.

 

Anton

ip_status.jpg
design_sources.jpg
0 Kudos
6 Replies
Highlighted
Visitor
Visitor
6,761 Views
Registered: ‎01-31-2014

Ok, I found the way to struggle with locked IPs.

 

It is basically written here:

https://forums.xilinx.com/t5/Design-Entry/How-to-remove-my-user-IP-from-Vivado-project/td-p/422185

 

So, I ran command

 

foreach x [get_ips] {puts $x; puts [get_property IS_LOCKED $x]}

 

and saw, that some IPs thay were not mentioned in the report_ip list, were indeed locked:

 

design_1_util_ds_buf_0_0

design_1_auto_pc_15

design_1_auto_pc_19

 

I believe these auto_pc IPs were generated automatically and are not used now. It would be nice if Vivado could delete them by itself automatically also..

 

I manually deleted instanciations of these IPs from design_1.bxml, then I closed project and reopened it again and ran Generate Output Products. After that the Synthese starts fine.

 

But my first quation remains the same: Is there an easy way to migrate the whole project with all cores and sub-cores to another device? Opening all cores and sub-cores and regenerating IPs does not seem a decent way for me.

0 Kudos
Highlighted
Scholar
Scholar
6,756 Views
Registered: ‎06-05-2013

@antg0l You must have to regenerate the cores with a new device. There is no other way to upgrade without having to regenerate the cores.

-Pratham

----------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
----------------------------------------------------------------------------------------------
0 Kudos
Highlighted
Visitor
Visitor
6,751 Views
Registered: ‎01-31-2014

I understand that the cores have to be regenerated. But it seems natural to automate this procedure somehow. Ideally by a magic button "regenerate all cores" for new device, incrementing all core versions by 1. Or by a certain script, smth like:

 

foreach x [get_ips] {regenerate_all_cores_in $x for device yyy}

 

Imagine that we have a complicated project with many IPs. And we have to choose a suitable device for implementaion of a new increased version of our project (or the same functionality with increased working frequency). So we have to try and implement this project for a number of devices to be sure. Isn't it possible to automate this task?

0 Kudos
Highlighted
2,166 Views
Registered: ‎11-12-2018

If you are using the IP Integrator design flow.

1. Prior to changing the part do a
write_bd_tcl <IP_integrator_file_name.tcl>

2. Edit the file you just created to change the part type to the new part

3. In settings, change the part type

4. In the source tab, DELETE the entire board design (.bd file)

5. From the TCL console do a 
source <IP_integrator_file_name.tcl>

6. Recompile everything

0 Kudos
Highlighted
Participant
Participant
1,562 Views
Registered: ‎03-25-2009

Dan

Thank you for the concise description, a pity its not in the manuals ...

Worked very nicely for changing a part in 2016.3, tcl seems to be where you have to go to effect modifications and ports ...

Best Regards

 

Martin

0 Kudos
Highlighted
Visitor
Visitor
686 Views
Registered: ‎05-16-2019

Does this work with associating ELF files as well?

I've tried it out - switching between different devices and it worked perfectly.

I was just wondering if I created a base template and changed the device through the TCL command if the associated ELF files will still run with the new device. My guess is the ELF file will have to be regenerated each time. This just makes it easier to setup complex designs once without having to recreate them every time.

0 Kudos