首页 >> 大全

基于Git和Tcl脚本的Vivado工程管理

2024-01-08 大全 34 作者:考证青年

参考文章: for , 2014—— Jeff

用Git做的版本控制,早在2014年就已经有人做了相关的工作。网上也有很多相关的文章介绍这个,但总感觉不是很方便。用Git做版本控制,主要就是对工程存档备份,在需要的时候方便回退版本。综合实现后的工程动辄上百兆,不方便直接用Git管理,工程中大部分都是生成的文件,所以用Tcl脚本重建工程是主流的选择。本文主要分享我的工程管理方法。

工程目录 (工程)build.tcl (重建工程的Tcl脚本)build.bat (双击开始重建工程).

看上面这个工程目录结构,可以看出来我这里的做法就是把所有用户生成、用户配置的文件都放到工程目录的上一层。工程目录下都是生成的文件,这样做的一个好处就是,一旦我想要回退版本,只要把这个工程文件夹删了就好了。然后git回档之后,用build.tcl重建工程。

一些准备

在的Tcl 里,可以看到我们在图形界面上做的所有操作都是一条条Tcl命令,的Tcl命令可以参看上面的文档。我们不一定要都熟悉,在要用到的时候去查阅就行。Git版本管理的相关资料网上也很多,大概了解之后多用了自然就熟悉了。

导出创建Block 的Tcl脚本

首先我们要有一个工程,目录结构和前面我列的那个类似就行,所有用户编写的文件放在和工程文件夹同级的目录下。

如果工程中有Block ,先打开Block ;如果没有就可以直接导出用于创建工程的Tcl脚本了。

“File->-> Block …”

把文件导出到事先约定的/src/bd/目录下。在工程中调用这个Tcl脚本就可以创建Block 。

导出创建工程的Tcl脚本

导出这个脚本和前一个创建Block 的脚本没有前后依赖关系,先导出哪个都行。

“File->->Write Tcl”

这里勾选Copy to new 或者不勾选都可以,因为这个选项只对那些Local to 的源文件有效。

勾选的话,那些Local to 的源文件都会复制一份到新的工程里。怎样算是Local to 呢?就是那些在xxxx.srcs目录下的,在创建源文件是默认的路径。如果按照我们前面的工程目录规划,我们的工程里只有Block 相关的文件是Local to 的,所以那些文件会以的方式复制到新的工程里;不勾选的话,所有Local to 的源文件都会以的方式被添加到新的工程里。不管是哪种方式,我们都不想要,因为我们要重新创建Block ,而不是用原来的。

就是这个地方不太人性化。最理想的情况下其实是勾选Copy to new 并且勾选 Block using Tcl,这样的话按理说就能一步到位,只用一个Tcl文件重建整个工程。但实际使用发现,它不仅会把原来的文件一份,然后又自己生成了一份,非常不友好。

有一个简便的方法,就是把那个“一步到位”的文件里的 Block 相关的文件都删掉。但我不太喜欢这个做法,我觉得把创建 相关的Tcl单独存放更加便于维护。因为如果工程结构稳定了,build.tcl这个文件基本就不需要改了,每次Block 的更新,我们只要维护那个用来创建Block Deign的Tcl脚本就好了(重新导出build.tcl并进行修改的工作量远大于更新Block 的Tcl)

修改build.tcl

要修改的地方主要就是和Block 相关的内容,不要把创建Block 生成的bd文件、.v文件进来就行。

创建Block

将 Block 相关的命令用 Block 的Tcl脚本来替换,如有需要的话可以用命令将Block 打包。

# create block design
source $origin_dir/src/bd/git_vivado_demo_bd.tcl; # use your bd tcl name# create wrapper
make_wrapper -files [get_files $design_name.bd] -top -import

脚本工程师是做什么的__脚本管理系统

和工程创建路径

build.tcl有一个隐患就是,如果运行的路径不在build.tcl所在目录,它就找不到源文件了,因为路径的相关位置关系错了。build.tcl中默认是将新的工程创建在运行的路径下,更好地选择应该是将新的工程创建在和build.tcl同一路径下。因此需要做下面的修改:

set origin_dir "."

替换为

set origin_dir [file dirname [info script]]

create_project ${_xil_proj_name_} ./${_xil_proj_name_} -part xc7vx690tffg1927-2

替换为

create_project ${_xil_proj_name_} $origin_dir/${_xil_proj_name_} -part xc7vx690tffg1927-2

build.bat

build.bat通过命令行的方式调用重建工程,这个要求的路径添加到PATH环境变量里。也可以先打开,然后在Tcl 中运行build.tcl。

vivado -mode batch -source build.tcl

工程示例 补充说明

今天才看到在ug892的第五章中介绍了在对版本管理已经有了更好的支持,我的文章里的管理方法只适用于以及更早以前的版本。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了