{"id":1238,"date":"2021-02-20T21:53:31","date_gmt":"2021-02-20T21:53:31","guid":{"rendered":"http:\/\/fpganow.com\/?p=1238"},"modified":"2021-02-20T21:53:31","modified_gmt":"2021-02-20T21:53:31","slug":"xilinx-vivado-and-source-control","status":"publish","type":"post","link":"https:\/\/fpganow.com\/index.php\/2021\/02\/20\/xilinx-vivado-and-source-control\/","title":{"rendered":"Xilinx Vivado and Source Control"},"content":{"rendered":"\n<p>Related Source Repository:<\/p>\n<p><a href=\"https:\/\/github.com\/fpganow\/vivado_scm\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/fpganow\/vivado_scm<\/a><\/p>\n\n\n\n<p>Xilinx Vivado does not come with built-in source control.&nbsp; If you are a Visual Studio user, or a IntelliJ IDEA or eclipse user, you may be familiar with using some sort of IDE-related source code control.<\/p>\n<p>Vivado has a different paradigm for source control:<\/p>\n<ul>\n<li>Export commands to re-generate the project as a tcl script.<\/li>\n<li>Add tcl and all related files to source-control<\/li>\n<\/ul>\n<p>After I tried following a lot of guides that I found on the internet for using source control, I was only successful after I did the following:<\/p>\n<ul>\n<li>Create a branch new project in folder A<\/li>\n<li>Create a folder alongside folder A called src and add all files in to that directory, including the block design.<\/li>\n<li>Write the project tcl &#8211; with no options selected &#8211; via File-&gt;Project-&gt;Write Project Tcl<\/li>\n<li>Add all source files referenced in the resulting tcl to source control.\n<ul>\n<li>Make sure all files are outside of your original project folder<\/li>\n<li>I have written a crude python script to read the tcl file and to add the source files to the current git repository\n<ul>\n<li><a href=\"https:\/\/github.com\/fpganow\/vivado_scm\/blob\/main\/vivado\/git_add.py\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/fpganow\/vivado_scm\/blob\/main\/vivado\/git_add.py<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2><strong>Creating a Vivado project from scratch and adding it to source control<\/strong><\/h2>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/01-Create_Project.png\" target=\"_blank\" rel=\"noopener\">[1] Start Vivado and click on &#8220;Create Project&#8221;<\/a><\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/01-Create_Project.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1258 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/01-Create_Project.png\" alt=\"\" width=\"437\" height=\"330\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/01-Create_Project.png 437w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/01-Create_Project-300x227.png 300w\" sizes=\"auto, (max-width: 437px) 100vw, 437px\" \/><\/a><\/p>\n<p>[2] Click next<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/02-Create_Project_Step_1.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1259 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/02-Create_Project_Step_1.png\" alt=\"\" width=\"911\" height=\"478\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/02-Create_Project_Step_1.png 911w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/02-Create_Project_Step_1-300x157.png 300w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/02-Create_Project_Step_1-768x403.png 768w\" sizes=\"auto, (max-width: 911px) 100vw, 911px\" \/><\/a><\/p>\n<p>[3] Name the project whatever you like, keep it in the vivado sub-directory as the picture below shows<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/03-Create_Project_Step_2.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1260 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/03-Create_Project_Step_2.png\" alt=\"\" width=\"911\" height=\"478\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/03-Create_Project_Step_2.png 911w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/03-Create_Project_Step_2-300x157.png 300w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/03-Create_Project_Step_2-768x403.png 768w\" sizes=\"auto, (max-width: 911px) 100vw, 911px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/03-Create_Project_Step_2.png\" target=\"_blank\" rel=\"noopener\">[4] RTL Project, no need to specify sources now.<\/a><\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/04-Create_Project_Step_3.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1261 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/04-Create_Project_Step_3.png\" alt=\"\" width=\"911\" height=\"676\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/04-Create_Project_Step_3.png 911w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/04-Create_Project_Step_3-300x223.png 300w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/04-Create_Project_Step_3-768x570.png 768w\" sizes=\"auto, (max-width: 911px) 100vw, 911px\" \/><\/a><\/p>\n<p>[5] &#8211; Pick your board, I am using the Arty Artix-7 100T board (around 250 USD)<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/05-Create_Project_Step_4.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1262 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/05-Create_Project_Step_4.png\" alt=\"\" width=\"911\" height=\"676\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/05-Create_Project_Step_4.png 911w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/05-Create_Project_Step_4-300x223.png 300w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/05-Create_Project_Step_4-768x570.png 768w\" sizes=\"auto, (max-width: 911px) 100vw, 911px\" \/><\/a><\/p>\n<p>[6] &#8211; Just click Finish<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/06-Create_Project_Step_5.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1263 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/06-Create_Project_Step_5.png\" alt=\"\" width=\"911\" height=\"676\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/06-Create_Project_Step_5.png 911w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/06-Create_Project_Step_5-300x223.png 300w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/06-Create_Project_Step_5-768x570.png 768w\" sizes=\"auto, (max-width: 911px) 100vw, 911px\" \/><\/a><\/p>\n<p>[7] Create a Block Design<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/07-Create_Block_Design.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1264 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/07-Create_Block_Design.png\" alt=\"\" width=\"256\" height=\"284\"><\/a><\/p>\n<p>[8] Note the Directory, click on it&nbsp;<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/08-Pick_Custom_Location.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1265 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/08-Pick_Custom_Location.png\" alt=\"\" width=\"419\" height=\"312\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/08-Pick_Custom_Location.png 419w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/08-Pick_Custom_Location-300x223.png 300w\" sizes=\"auto, (max-width: 419px) 100vw, 419px\" \/><\/a><\/p>\n<p>[9] Choose Location<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/09-Pick_Custom_Location_2.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1266 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/09-Pick_Custom_Location_2.png\" alt=\"\" width=\"408\" height=\"300\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/09-Pick_Custom_Location_2.png 408w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/09-Pick_Custom_Location_2-300x221.png 300w\" sizes=\"auto, (max-width: 408px) 100vw, 408px\" \/><\/a><\/p>\n<p>[10] &#8211; Pick the bd directory which is not beneath the directory where the project was created, this will prevent issues from happening later down the line.&nbsp; Do this for all other source files that you create, including constraints and test benches.<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/10-Pick_Custom_Location_3.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1267 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/10-Pick_Custom_Location_3.png\" alt=\"\" width=\"978\" height=\"426\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/10-Pick_Custom_Location_3.png 978w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/10-Pick_Custom_Location_3-300x131.png 300w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/10-Pick_Custom_Location_3-768x335.png 768w\" sizes=\"auto, (max-width: 978px) 100vw, 978px\" \/><\/a><\/p>\n<p>[11] I left the details out for creating the block design, but here is what my final block design looks like.&nbsp; I added the following components (in addition to the MicroBlaze and Quad SPI):<\/p>\n<ul>\n<li>AXI Timer<\/li>\n<li>LEDs<\/li>\n<li>Switches<\/li>\n<\/ul>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/11-Create_full_Block_Design.png\" target=\"_blank\" rel=\"noopener\"><br><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1268 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/11-Create_full_Block_Design.png\" alt=\"\" width=\"2193\" height=\"1052\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/11-Create_full_Block_Design.png 2193w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/11-Create_full_Block_Design-300x144.png 300w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/11-Create_full_Block_Design-1024x491.png 1024w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/11-Create_full_Block_Design-768x368.png 768w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/11-Create_full_Block_Design-1536x737.png 1536w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/11-Create_full_Block_Design-2048x982.png 2048w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/11-Create_full_Block_Design-1568x752.png 1568w\" sizes=\"auto, (max-width: 2193px) 100vw, 2193px\" \/><\/a><\/p>\n<p>[12] &#8211; I use the following directory structure &#8211; the ip folder is for importing external IP generated by the NI FPGA IP Export Utility (in the form of a vhdl wrapper and a design checkpoint .dcp file)<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/12-Create_these_dirs.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1269 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/12-Create_these_dirs.png\" alt=\"\" width=\"568\" height=\"213\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/12-Create_these_dirs.png 568w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/12-Create_these_dirs-300x113.png 300w\" sizes=\"auto, (max-width: 568px) 100vw, 568px\" \/><\/a><\/p>\n<p>[13] &#8211; Export the hardware, but this time I will pick a custom location.<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/13-Export_Hardware.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1270 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/13-Export_Hardware.png\" alt=\"\" width=\"500\" height=\"301\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/13-Export_Hardware.png 500w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/13-Export_Hardware-300x181.png 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>[14] I created a directory named sdk for this one.&nbsp; I also skip adding the SDK to source control, I will learn that at some other time. However, like before you can add a source file and make sure it exists outside the sdk workspace directory.<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/14-Again_outside_project_root.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1271 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/14-Again_outside_project_root.png\" alt=\"\" width=\"652\" height=\"312\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/14-Again_outside_project_root.png 652w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/14-Again_outside_project_root-300x144.png 300w\" sizes=\"auto, (max-width: 652px) 100vw, 652px\" \/><\/a><\/p>\n<p>[15] More details<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/15-Defaults_look_like_this.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1272 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/15-Defaults_look_like_this.png\" alt=\"\" width=\"538\" height=\"332\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/15-Defaults_look_like_this.png 538w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/15-Defaults_look_like_this-300x185.png 300w\" sizes=\"auto, (max-width: 538px) 100vw, 538px\" \/><\/a><\/p>\n<p>[16] &#8211; Find the COM port and connect with 9600 baud rate.&nbsp; Notice how sometimes you will get some invalid output at the top.&nbsp; Sometimes it is garbled text.&nbsp; Either way just restart your code.<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/16-Run_it.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1273 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/16-Run_it.png\" alt=\"\" width=\"835\" height=\"801\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/16-Run_it.png 835w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/16-Run_it-300x288.png 300w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/16-Run_it-768x737.png 768w\" sizes=\"auto, (max-width: 835px) 100vw, 835px\" \/><\/a><\/p>\n<p>[17] Click File-&gt;Project-&gt;Write Tcl&#8230; to generate the project export script.<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/17-Export_IP.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1274 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/17-Export_IP.png\" alt=\"\" width=\"599\" height=\"412\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/17-Export_IP.png 599w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/17-Export_IP-300x206.png 300w\" sizes=\"auto, (max-width: 599px) 100vw, 599px\" \/><\/a><\/p>\n<p>[18] I leave all options un-checked and make sure the tcl file is saved in the parent directory of where the project was created.<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/18-Nothing_Selected.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1275 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/18-Nothing_Selected.png\" alt=\"\" width=\"551\" height=\"518\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/18-Nothing_Selected.png 551w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/18-Nothing_Selected-300x282.png 300w\" sizes=\"auto, (max-width: 551px) 100vw, 551px\" \/><\/a><\/p>\n<p>[19] You can open this file to take a look<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/19-Success.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1276 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/19-Success.png\" alt=\"\" width=\"635\" height=\"174\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/19-Success.png 635w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/19-Success-300x82.png 300w\" sizes=\"auto, (max-width: 635px) 100vw, 635px\" \/><\/a><\/p>\n<p>[20] Notice the three sections, section 3 is for files that you created for the project, section 2 is for files that you import.<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/20-Files-to-Import.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1277 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/20-Files-to-Import.png\" alt=\"\" width=\"1486\" height=\"644\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/20-Files-to-Import.png 1486w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/20-Files-to-Import-300x130.png 300w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/20-Files-to-Import-1024x444.png 1024w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/20-Files-to-Import-768x333.png 768w\" sizes=\"auto, (max-width: 1486px) 100vw, 1486px\" \/><\/a><\/p>\n<p>[21] Use the git_add.py Python3 script to parse this tcl file and add only the required files to git.<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/21-Copy_git_add.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1278 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/21-Copy_git_add.png\" alt=\"\" width=\"661\" height=\"241\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/21-Copy_git_add.png 661w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/21-Copy_git_add-300x109.png 300w\" sizes=\"auto, (max-width: 661px) 100vw, 661px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/22-Use_my_git_add_script.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1279 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/22-Use_my_git_add_script.png\" alt=\"\" width=\"931\" height=\"381\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/22-Use_my_git_add_script.png 931w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/22-Use_my_git_add_script-300x123.png 300w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/22-Use_my_git_add_script-768x314.png 768w\" sizes=\"auto, (max-width: 931px) 100vw, 931px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/23-Use_my_script.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1280 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/23-Use_my_script.png\" alt=\"\" width=\"1352\" height=\"381\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/23-Use_my_script.png 1352w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/23-Use_my_script-300x85.png 300w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/23-Use_my_script-1024x289.png 1024w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/23-Use_my_script-768x216.png 768w\" sizes=\"auto, (max-width: 1352px) 100vw, 1352px\" \/><\/a><\/p>\n<p>Commit your changes, don&#8217;t worry about the other files that are marked as untracked.<\/p>\n\n\n\n<h2><strong>How to restore a Vivado Project from source control<\/strong><\/h2>\n<p>[1] Clone the repository in to a new directory &#8211; I chose vivado_scm.imp<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/01-Clone_Repo.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1282 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/01-Clone_Repo.png\" alt=\"\" width=\"602\" height=\"222\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/01-Clone_Repo.png 602w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/01-Clone_Repo-300x111.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><\/p>\n<p>[2] The Tcl console in Vivado normally escaped backslashes, you can get around this by wrapping a windows path in curly braces<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/02-Cd_from_tcl_console.png\" target=\"_blank\" rel=\"noopener\"><br \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1283 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/02-Cd_from_tcl_console.png\" alt=\"\" width=\"703\" height=\"523\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/02-Cd_from_tcl_console.png 703w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/02-Cd_from_tcl_console-300x223.png 300w\" sizes=\"auto, (max-width: 703px) 100vw, 703px\" \/><\/a><\/p>\n<p>[3] Source tcl script<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/03-Source_tcl_script-1.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1284 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/03-Source_tcl_script-1.png\" alt=\"\" width=\"467\" height=\"500\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/03-Source_tcl_script-1.png 467w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/03-Source_tcl_script-1-280x300.png 280w\" sizes=\"auto, (max-width: 467px) 100vw, 467px\" \/><\/a><\/p>\n<p>[4] &#8211; Wait a few minutes<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/04-Running_Create_Project.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1285 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/04-Running_Create_Project.png\" alt=\"\" width=\"740\" height=\"198\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/04-Running_Create_Project.png 740w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/04-Running_Create_Project-300x80.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/a><\/p>\n<p>[5] Depending on your project, you will have to Generate Output Products for your block design<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/05-Generate_Output_Products-1.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1286 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/05-Generate_Output_Products-1.png\" alt=\"\" width=\"595\" height=\"494\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/05-Generate_Output_Products-1.png 595w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/05-Generate_Output_Products-1-300x249.png 300w\" sizes=\"auto, (max-width: 595px) 100vw, 595px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/06-Out_of_Context_per_IP.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1287 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/06-Out_of_Context_per_IP.png\" alt=\"\" width=\"485\" height=\"663\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/06-Out_of_Context_per_IP.png 485w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/06-Out_of_Context_per_IP-219x300.png 219w\" sizes=\"auto, (max-width: 485px) 100vw, 485px\" \/><\/a><\/p>\n<p>[6] Go ahead and click Generate Bitstream, and Vivado will automatically call synthesis, implementation, place &amp; route&#8230;etc<\/p>\n<p><a href=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/07-Generate_Bitstream.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1288 size-full\" src=\"http:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/07-Generate_Bitstream.png\" alt=\"\" width=\"380\" height=\"355\" srcset=\"https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/07-Generate_Bitstream.png 380w, https:\/\/fpganow.com\/wp-content\/uploads\/2021\/02\/07-Generate_Bitstream-300x280.png 300w\" sizes=\"auto, (max-width: 380px) 100vw, 380px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Related Source Repository: https:\/\/github.com\/fpganow\/vivado_scm Xilinx Vivado does not come with built-in source control.&nbsp; If you are a Visual Studio user, or a IntelliJ IDEA or eclipse user, you may be familiar with using some sort of IDE-related source code control. Vivado has a different paradigm for source control: Export commands to re-generate the project as &#8230; <a title=\"Xilinx Vivado and Source Control\" class=\"read-more\" href=\"https:\/\/fpganow.com\/index.php\/2021\/02\/20\/xilinx-vivado-and-source-control\/\" aria-label=\"Read more about Xilinx Vivado and Source Control\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-1238","post","type-post","status-publish","format-standard","hentry","category-uncategorized","masonry-post","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50"],"_links":{"self":[{"href":"https:\/\/fpganow.com\/index.php\/wp-json\/wp\/v2\/posts\/1238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fpganow.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fpganow.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fpganow.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fpganow.com\/index.php\/wp-json\/wp\/v2\/comments?post=1238"}],"version-history":[{"count":10,"href":"https:\/\/fpganow.com\/index.php\/wp-json\/wp\/v2\/posts\/1238\/revisions"}],"predecessor-version":[{"id":1296,"href":"https:\/\/fpganow.com\/index.php\/wp-json\/wp\/v2\/posts\/1238\/revisions\/1296"}],"wp:attachment":[{"href":"https:\/\/fpganow.com\/index.php\/wp-json\/wp\/v2\/media?parent=1238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fpganow.com\/index.php\/wp-json\/wp\/v2\/categories?post=1238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fpganow.com\/index.php\/wp-json\/wp\/v2\/tags?post=1238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}