barbedo / vivado-git Goto Github PK
View Code? Open in Web Editor NEWA git-friendly Vivado wrapper
License: Other
A git-friendly Vivado wrapper
License: Other
As it stands currently, vivado-git doesn't seem to properly handle block designs in the TCL script it generates, at least for Vivado 2022.2 (the only version I currently have access to).
While I'm not terribly familiar with TCL scripting, I was able to modify the script generated for one of my own projects. The necessary changes are described below, in case they prove useful for development purposes (or for other users to reference when making their own modifications).
# Set IP repository paths
set obj [get_filesets sources_1]
if { $obj != {} } {
- set_property "ip_repo_paths" "" $obj
set bCheckIPs 1
if { $bCheckIPs == 1 } {
set list_check_ips "\
- xilinx.com:user:my_design"1.0\
"
set obj [get_runs synth_1]
-set_property -name "incremental_checkpoint" -value "$proj_dir/my_project.srcs/utils_1/imports/synth_1/my_design_wrapper.dcp" -objects $obj
set_property -name "auto_incremental_checkpoint" -value "1" -objects $obj
@barbedo I am interested in using this repo, but I wasn't able to find information on licensing. Are you providing this as a freeware service to humanity, or did you plan to use an existing open source license?
Hello,
is there is a way to use the scripts with existing vivado projects in order to migrate them to git ? some sort of copying sources and organizing everything to create it ?
Thanks
I am having problems with Vivado 2017.4.
git add .
runs fine, but git commit -m "message"
no.
git add .
Not in project directory
Changing directory to: /home/cruiz/repositorios/gitVivado2017/p1
git commit -m "p1"
invalid command name "get_dashboards"
Thank you for the scripts, they are really helpful! I noticed that generating the BD tcl fails when spaces are present in the project path in Windows. I couldn't pin it down to where exactly it fails, but multiple errors and warnings are thrown which indicate the path is split at the spaces:
INFO: [BD 5-453] Writing out BD creation steps for design_1 as a TCL proc
WARNING: [BD 5-452] The block design design_1 has not been validated, therefore, a block design created using this Tcl proc may result in errors during validation.
WARNING: [Vivado 12-818] No files matched 'C:/Users/<username>/Downloads/Contains'
WARNING: [Vivado 12-818] No files matched 'Space/vivado_project/Test.srcs/sources_1/bd/design_1/design_1.bd'
WARNING: [Vivado 12-818] No files matched 'C:/Users/<username>/Downloads/Contains'
WARNING: [Vivado 12-818] No files matched 'Space/vivado_project/Test.srcs/sources_1/bd/design_1/design_1.bd'
ERROR: [Common 17-55] 'get_property' expects at least one object.
Resolution: If [get_<value>] was used to populate the object, check to make sure this command returns at least one valid object.
The BD is placed in path C:/Users/<username>/Downloads/Contains Space/vivado_project/Test.srcs/sources_1/bd/design_1/design_1.bd
in this example. Without the space, everything runs smoothly.
I followed the instructions on the README file, and when the command git commit
is executed on the Tcl console, VIvado gets stuck (see image below), even tough the Tcl script is generate and can afterwards recreate the project.
After clicking on cancel, nothing changes. I am using:
Would you have any hints on how to avoid/fix or debug it?
Thanks.
I have an existed bd file, and i put it into src directory, which are expected to be included in the project.
However it is not in the project after running the generated tcl.
I also tried to add the bd file into the newly created project, and use wproj command to update the tcl.
It still did nothing.
How can i let the bd file be generated automatically through the tcl script?
I've been looking for a good way to use git with Vivado and came across this today. I was excited to try it today, but am having issues. I setup the folders like you said, I create a new project via the GUI, and then when I run git init in the tcl console, it does it in the project subfolder that won't be tracked. I am sure I am missing something stupid, but I am having issues finding a write up that walks through things in more detail than the README. I am using Vivado 2020.1. Are you aware of any other write ups on your tools? TIA
After copying the related files into the src folder and modifying the resulting myproject.tcl, i could generate a project from this without errors. The modfications were:
set imported_files [import_files -fileset sources_1 $files]
withadd_files -norecurse -fileset $obj $files
(= option "no_copy_sources").set file [file normalize $file]
after file definitons, but i am not sure this was necessary.When using git commit
on a project with a blockdesign, the newly written project_name.tcl file does not contain the steps to directly regenerate the blockdesign part. Instead, the tcl file refers to a *.bd file (due to the option -use_bd_files).
However, the file *.bd is in the vivado_project
directory, which is excluded from the git repository.
I removed the -use_bd_files option for the git commit command, but the script throws the error:
"This design contains BD sources. The option -no_copy_sources cannot be used without -use_bd_files. Please remove -no_copy_sources if you wish to write out BD's as procs in the project tcl, otherwise add the option -use_bd_files to directly include the *.bd files to the new project"
My questions:
src/bd
and how to split the bd directory intosrc/bd
(version control)vivado_project/ ,srcs/sources_1/bd/ /
(generated) ?I have this error with I create a project with IP INTEGRATOR:
ERROR: [Vivado-projutils-19] This design contains BD sources. The option -no_copy_sources cannot be used without -use_bd_files. Please remove -no_copy_sources if you wish to write out BD's as procs in the project tcl, otherwise add the option -use_bd_files to directly include the *.bd files to the new project
ERROR: [Common 17-39] 'send_msg_id' failed due to earlier errors.
Hello,
I have this error when I run git commit
:
ERROR: [Common 17-153] Param 'project.enableMergedProjTcl' does not exist
Hello!
First, thank you so much for these scripts! They really help me every day at work and home)
I have noticed a small, but annoying issue with IP repo path generation in TCL. As you know, this path is set in Vivado this way: Project Manager - Settings - Project Settings - IP - Repositoty.
My hierarchy:
│
├── My_IP_repo
├── projects
│ ├── project_0
│ ├── project_1
│ │ ├── src
│ │ ├── vivado_project
│ │ ├── project_1.tcl
So, when IP dir in hierarchy is "higher", that the project_1 origin dir, the path in the project_1.tcl remains empty after wproj
run.
What I supposed see:
# Set IP repository paths
set obj [get_filesets sources_1]
if { $obj != {} } {
set_property "ip_repo_paths" "${origin_dir}/../../My_IP_repo/" $obj
# Rebuild user ip_repo's index before adding any source files
update_ip_catalog -rebuild
}
What I actually see:
# Set IP repository paths
set obj [get_filesets sources_1]
if { $obj != {} } {
set_property "ip_repo_paths" "" $obj
# Rebuild user ip_repo's index before adding any source files
update_ip_catalog -rebuild
}
Best regards,
VGN
I'm using vivado-git with a block design project that includes several BRAM modules, each of which has an associated COE file to set its contents. When calling wproj
to generate a project TCL script, the absolute paths of these COE files are kept, instead of being replaced with relative ones. Here's an example snippet, for reference:
# Create instance: blk_mem_gen_1, and set properties
set blk_mem_gen_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:blk_mem_gen:8.4 blk_mem_gen_1 ]
set_property -dict [list \
CONFIG.Coe_File {c:/<project path>/src/design/coe/ram_init_1_1.coe} \
CONFIG.Enable_32bit_Address {false} \
<...more properties, trimmed for brevity>
] $blk_mem_gen_1
Does Vivado even support using relative paths here? If so, can that be implemented as part of this project, or is it preferable to just type the relative path into Vivado in the first place?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.