07-26-2016 04:08 AM
when I create a block design, and afterwards right-click on it -> create hdl wrapper -> let Vivado manage updates, the wrapper is automatically updated when I add / remove external ports from the block diagram. So this works fine.
However, for a certain project, I used a 'project.tcl' file and 'bd.tcl' file, created with 'write_project_tcl' and 'write_bd_tcl', to recreate this project 'from scratch'.
Everything in this 'tcl created project' works fine, except that the top level wrapper is not updating automatically anymore, so I'm wondering if this is some property on the wrapper file that needs to be set using tcl in the project script? This is likely to be missing in the write_project_tcl, and looks like a bug.
vivado version : 2015.4
07-26-2016 04:18 AM
Did you validate and save the design and you are still seeing the same issue?
Also try closing the blockdesign and reopening the same and see if the wrapper updates.
07-26-2016 04:26 AM
in the meantime I deleted the wrapper and generated it again, so I cannot test it immediately, but I'll retry this with a new project.
I did hit 'generate bitstream', so I asume it's running validate automatically?
I did try open / close the design, and save it, that didn't fix it.
I've seen this in 2 designs so far, both recreated from the generated project.tcl and bd.tcl scripts
07-26-2016 04:31 AM
If possible also try checking it in Vivado 2016.2.
07-26-2016 04:35 AM
Recently I saw a similar issue where the wrapper was not updated. Workaround was
07-26-2016 04:43 AM
@arpansur thanks for the workaround, I'll try that one next time I run into the issue.
looks like a bug in 2015.4 then?
I couldn't find a property on the wrapper file that tells it is 'managed by Vivado' or not.
There's some property 'IS_GENERATED', and I checked in both a project that does update the wrapper, and the one that doesn't update the wrapper automatically, but they have no value in both projects
07-26-2016 04:46 AM
I am not sure if this is the same scenario.
The issue was seen in customer design when he was trying to upgrade from 2015.4 to 2016.2.
07-26-2016 04:48 AM
07-28-2016 08:25 AM
hello @arpansur, I tried this so far :
validate and save the design
closing the blockdesign and reopening the same and see if the wrapper updates
that doesn't fix it
07-28-2016 08:26 AM
10-11-2017 08:28 PM
Did anyone get to the bottom of this?
I am running 2016.2 and notice the exact same behavior. After a clean build from .tcl I need to recreate the top wrapper in order to get Vivado to start managing it on my behalf again. Not a big deal, but kinda annoying.
Interested to hear if there is something missing from my build.tcl script.
10-29-2019 10:28 AM
I experienced the same problem in Vivado 2019.1. The block design had been generated from tcl file and the modifications did not update the wrapper. Right click on generate HDL Wrapper did not fix the problem.
I deleted the wrapper and generated a new one. Then it worked.
10-30-2019 03:29 AM
So I have reproduced the issue with Vivado 2019.1 and filed a CR so that Factory will address this to be fixed in future versions of vivado.
unfortunately, Vivado 2019.2 will be released very soon so this issue will not be fixed in this upcoming release.
For now, the only thing we have are the workarounds
Case 1. if you have created the project tcl using the following command
write_project_tcl -target_proj_dir "./<dir_name>" -use_bd_files ./<tcl_file_name.tcl>
attach the following commands in the end of your tcl file
file delete -force $origin_dir/<your_project_name>/<your_project_name>.srcs/sources_1/imports/hdl/design_1_wrapper.v
add_files -norecurse $origin_dir/<your_project_name>/<your_project_name>.srcs/sources_1//bd/design_1/hdl/design_1_wrapper.v
Cause of the issue in case 1:
When you create a project using write_proj_tcl and then try to update the top-level ports of the BD from IPI, then these changes are not automatically reflected in the BD wrapper. Even if you have select let vivado automatically manage this file
In the project created using TCL, the wrapper is added as imports in design and its copy is also present BD->design_1->hdl. as per step 4 observation whenever we make changes to BD top-level ports, wrapper present in the imports folder is not updated but the wrapper present in BD->design_1->hdl is updated.
This confirms that for flow with write_proj_tcl, vivado is using the wrong file as a wrapper to the BD,i.e. it should use wrapper present in BD/hdl folder instead of wrapper present in imports folder
Case 2. if you have created the project tcl using the following command
write_project_tcl -target_proj_dir "./<dir_name>" ./<tcl_file_name.tcl>
then the workaround is to create a new wrapper every time you recreate a project using write project TCL since there is no file created in the BD->design_1->hdl folder.
In this case, another suggestion is to try to migrate to use case 1