08-22-2013 02:06 PM
I have a big RTL database that I can check out from the depository. In the database, there is a hierarchy of subdirectories where RTL files are located. Some RTL files remain the same, but many RTL files have been edited and changed in the latest database compared to the one I used for synthesis sometimes ago.
What is the best way to update my database for re-synthesis in Vivado?
Do I just read in the directories and subdirectories of the latest database, and let Vivado decide which files to update and replace? I did not set check points for incremental compile, because I was expecting a big change in the database so I am expecting to do a complete recompile.
08-22-2013 07:04 PM
Vivado will automatically detect any changes in the source files and automatically update the files. Are you seeing Vivado not behaving this way?
08-23-2013 11:47 AM
Let's say the RTL database hierarchy is under the directory "project_X". Under this directory, there are many subdirectories for RTL files. Only a subset of these directories and RTL files in them are used in my project. This project_X directory was checked out from the revision control system.
Many RTL files were updated and changed since I last synthesized them, so if I use the Linux command to
"mv project_X project_X_old" first, and then check out the latest database to get project_X.
Now, when I open the project in Vivado, the RTL files are automatically read in by Vivado and got updated by Vivado for a new round of synthesis? If yes, then it is great. Please confirm.
08-25-2013 07:12 PM
Yes, I think so if the source files that are already added to the project are located in Project_X directory. When you select a source file and check it's property, you'll see it's "Location" property. If the "Location" is Project_X directory, Vivado will automatically detect any update in the source files.
Why don't you have a try to see if that works?
08-27-2013 12:15 PM
I used the option to copy the source files into the project. And, I have read in more RTL files along the way (not all RTL files are read in at the same time in the GUI), so the RTL files are "scattered" in the project directory and not in the same hierarchy as the one in the database. For example, one of the source file's location is:
What is the best way to update my database with the latest RTL files so that I can re-synthesize?
There are a few files with local fixes in the project directory to make synthesis compile. What is the easiest way to propage these local fixes to the updated database?
09-04-2013 03:49 PM
If the files have not been copied to the project, they will be analysed where they are and Vivado will recognize if there are changes. However, in your case It sounds like the files have been copied ot the project directory. To update an individual file, you can right click on the file in the hierarchy window and select Replace file. This brings up a window with the location where Vivado believes the file was originally copied from. The user has the option to select a new location and file if wanted.
In the Tcl console a user could use the update_files command.
Example: update_files -from_files C:/testarea -to_files C:/test/project_2/project_2.srcs/sources_1/imports/hdl -filesets [get_filesets *]
Type "update_files -h" for more info.
A white paper with Source control recommendations for Vivado is available at: http://www.xilinx.com/support/documentation/application_notes/xapp1165.pdf (Using Vivado Design Suite with Version Control Systems)
There is also a short overview at: http://www.xilinx.com/training/vivado/vivado-version-control-overview.htm