11-16-2017 07:43 AM
I have a project with ZYNQ, I use block designs, xilinx ip and SDK for writing small programs in baremetal.
I use github, but I have vivado creates too many files for my project or when I changing it.
Are there any advices to manage project in github?
May be generating project from tcl, but how to clean other unuseful files?
Please help me!
11-16-2017 08:19 AM
Gitignore is the answer. create a file .gitignore that points to the vivado subdirectory where all the compilation is done.. In general, you might only want to save very specific files in Git, like the bitstream and the debug_nets.ltx file from Vivado debugger.
11-17-2017 03:35 PM
Vivado Design provides the write_project_tcl command, which is designed to integrate a Vivado Design Suite project with any version control system. This command exports a Tcl script that recreates the current project.
Please take a look at the document Using Vivado Design Suite with Version Control Systems - XAPP1165.
11-20-2017 08:09 AM
I changed ip core from xcix file to simple xci file and reduced repo size from 400MB with history to 55MB of initial commit. I had about 150MB of xcix files, and that was terrible.
11-21-2017 05:25 PM
The ideal approach would be to use the write_project_tcl command.
Check the image below. My example project is 133MB, and the tcl file is only 4KB. Just opening Vivado and running the TCL command source C:/.../lab1.tcl will recreate the whole project and its structures (will recreate the 133MB folder).
11-24-2017 06:04 AM
I knew that way, but I have one problem - I have a repo with testbenches and I launch it in modelsim. I need ip_cores_files folder in repo.
05-16-2019 12:54 PM
Vivado has changed a lot since that App Note is written; the directory structures are very different. I made a first crack at it, but had issues where portions of the tcl script still referred to full paths (I have some imported VHDL, and you almost always have custom constraints in a real project). Some meat on this would be really helpful: what options should you provide to the write_project_tcl command...where to place your secondary files relative to the tcl file so that someone can pull the repo and build from there. An example .gitignore for how you can then manage updates would help as well. So far I've manually re-done the write_project_tcl and hand-diffed in the meaningful modifications to preserve the hacks I had to make to the original tcl script.
06-05-2019 07:09 AM
Replying to my own post...on further working/reflection, I think Vivado is fundamentally f-d up when it comes to Git or similar source code management integration. write_project_tcl doesn't play well with other files in the project becaues it uses create_project to build the tree, which errors if any of the subdirectories exist. The -force option blows away any existing files, so that doesn't work either. So, by default you have to copy all the files over from wherever you cloned the repo from, which destroys the linkage to push back changes.
From some other discussions, I will have to start all over in building my repository, liberally using .gitignore and still dealing with all the embedded time stamps and crap that will exist in the .xpr file that are "fake differences". Someone who actually understands source control needs to be in the Vivado development team to integrate it into the tool.