使用Git进行Vivado版本控制

前言

  学习FPGA也有一段时间了,现在工程相较于以前,一个工程的可能所需要占据的空间有几百兆甚至更大,也在想着有没有什么好的办法来管理这些工程。常见的版本控制就是git了,因此使用git来管理vivado工程,能够给工作提升一定效率(😋大概)。

1 目录结构

  使用git管理vivado工程的时候,需要使用到TCL,对于我这种小白,TCL是万万看不懂的。好在vivado就有那种可以生成这些脚本的命令,直接用就好了。但是,好的目录结构,才能让管理工作更加高效。
  刚好那天看到了fpgadeveloper的,一个vivado管理的博客,感觉写得很好,就照着他说的试了一下,确实可以起到管理工程的作用。目录结构如下:

  • Vivado
    • src
      • xdc
        • pinmap.xdc
        • ddr.ucf
      • hdl
        • module.v
      • bd
        • blockdesign.tcl
    • ip_repo
      • ad936x_cmos_if
      • fm_mod
    • build.tcl
    • bulid.bat (build.sh)

   Vivado 文件夹就是工作目录;
   src 文件夹下有多个子文件夹:包括存放约束文件的 xdc, 存放源码的 hdl 文件夹,存放block design的 TCL 脚本的 bd 文件夹。
   ip_repo 这个文件夹是用来存放IP的,用户自定义的IP,HLS生成IP等,都可以放在这个文件夹当中。
  在 Vivado 文件夹下还有用于生成整个工程的 TCL 脚本。


  在使用Vivado的GUI界面进行开发的时候,就按照这些文件夹来存放对应的文件就可以了。在之后,只需要使用Git对这些文件和文件夹进行管理就可以了。

2 生成与修改TCL脚本

2.1 简单的例子

  以一个简单的例子为例,这个例子里面,包含了用户自己的hdl文件,xdc文件,用户自定义的IP。block design如下:
  其中有一个HLS的IP,一个用户自定义的IP。
在这里插入图片描述
  文件结构如下:
有一个用户自己生成的顶层文件,一个用户的xdc文件,这些文件都是存放在上面说管理工程的对应目录里面。
在这里插入图片描述

2.2导出 bd脚本和工程脚本

  首先点击Export block design,导出block design的tcl脚本,脚本导出的路径就是前面的src/bd目录下。
在这里插入图片描述
在这里插入图片描述
  然后再导出整个工程的 TCL 脚本。点击file => project =>Write Tcl,将TCL导出到对应的工程目录下。
在这里插入图片描述
在这里插入图片描述

2.3 修改脚本


  将刚刚生成的整个工程的脚本打开对其中的一些地方进行简单的修改。

# Set the reference directory for source file relative paths (by default the value is script directory path)
set origin_dir "."

替换为

# Set the reference directory to where the script is
set origin_dir [file dirname [info script]]

将原始脚本中有关block design的文件删除,然后进行替换

# Import local files from the original project
set files [list \
 [file normalize "${origin_dir}/Lab_5_AXILITE/Lab_5_AXILITE.srcs/sources_1/bd/design_1/design_1.bd" ]\
 [file normalize "${origin_dir}/Lab_5_AXILITE/Lab_5_AXILITE.srcs/sources_1/bd/design_1/hdl/design_1_wrapper.v" ]\
]
set imported_files [import_files -fileset sources_1 $files]

# Set 'sources_1' fileset file properties for remote files
# None

# Set 'sources_1' fileset file properties for local files
set file "design_1/design_1.bd"
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
set_property -name "registered_with_manager" -value "1" -objects $file_obj

替换为:

# Create block design
 source $origin_dir/src/bd/design_1.tcl

 # Generate the wrapper
 set design_name [get_bd_designs]
 make_wrapper -files [get_files $design_name.bd] -top -import

  再之后就可以通过这些脚本和对应的文件,将工程恢复出来了。

3 重建工程

  新建一个文件夹,将这些源文件和脚本复制过来。准备开始复原工程。
在这里插入图片描述
  打开vivado,然后cd到对应的文件夹
在这里插入图片描述
  最后执行更改过后的脚本。
在这里插入图片描述

在这里插入图片描述
  最终就将工程复原了。到这里就证明使用脚本是可以恢复工程的。那么在之后进行vivao的版本管理的时候,只需要管理这些源文件和脚本就可以了。

4 使用git 进行管理

  使用git就没有什么太多说的。

git init
git add ip_repo src demo.tcl
git commit -m "vivado version control"

  现在就可以像管理软件那样来管理vivado工程了。


参考
fpga developer blog

  • 11
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值