千家信息网

如何使用Git进行Vivado工程的管理

发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,这篇文章将为大家详细讲解有关如何使用Git进行Vivado工程的管理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  git有多好用我就不用多说了,可
千家信息网最后更新 2025年02月06日如何使用Git进行Vivado工程的管理

这篇文章将为大家详细讲解有关如何使用Git进行Vivado工程的管理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

  git有多好用我就不用多说了,可谓是程序员必备技能之一。对于一般的软件代码来说,只需把源文件进行git管理即可。但对于FPGA工程师来说,使用git多多少少有些蛋疼,主要有下面几个问题:

  1. 有bd文件的工程中,只把bd文件加入git是不行的;

  2. 很多公司都会有一些积累下来的hdl文件,放到某个文件夹中,所有的工程目录下都会有这个文件夹,因此这个文件中会有很多不是当前工程的文件,因此git的文件中,必须包含当前工程的files list,否则就得重新添加文件;

  3. 如果把整个Vivado工程都放入git,非必要文件太多,既浪费git服务器的空间,Push和Pull的速度也会很慢;

  4. 很多FPGA工程师有自己的一套git管理Vivado的流程,但每次push前和Clone后都需要做很多操作。

  最近我也一直在研究Vivado工程git的管理方式,查了网上很多方法,但有些操作略复杂,有些方法完全不起效,但好在最终综合整理出了一种相对简单的方式进行,也许这种方式不是最合适的,如果你有更好的方法,希望能分享出来。

我们只讲Vivado的工程,不包括HLS或者Sdk工程,因为这这两个工具都是纯C/C++/TCL的,git管理起来比较简单

1. 工程目录

  我们采用如下的目录结构,这种方式也是Xilinx官网某个教程上推荐的,

  • Work目录:Vivado的工程全都放在Work目录下,包括bd以及它的相关文件;

  • Src目录:放hdl的源文件以及IP Core的源文件;

  • Doc目录:放跟工程相关的文档,如果没有的话可以不加;

  • Mcs目录:放工程生成的bit和mcs文件,这个文件也看个人用途,如果觉得bit文件太大不想放在git上也无所谓,但个人觉得在调试的时候经常会用到之前测试好了某个bit;

  • Scripts目录:也是进行git管理的关键,里面放各种Tcl脚本;

  • 如果工程中有SDK/HLS/SsyGen,可以在该目录下再增加文件夹专门放置对应的工程文件。


image


2. 操作步骤

  1. 在打开的Vivado工程中,通过Tcl Console将目录切换到Work目录:

cd [get_property directory [current_project ]]
  1. 生成新建工程的Tcl脚本,执行:

write_project_tcl {./Scripts/s1_recreate_project.tcl}
  1. 依次生成bd文件的tcl脚本,比如工程中有两个bd文件aa.bdbb.bd,打开aa.bd,并执行:

write_bd_tcl {./Scripts/s2_aa_bd.tcl}

打开bb.bd,并执行:

write_bd_tcl {./Scripts/s3_bb_bd.tcl}

这样,在Scripts文件夹中,就会多出三个文件:


image


替换为:

image


  1. 切换到Scripts目录

image


  1. 依次执行:

source ./s1_recreate_project.tcl
source ./s2_aa_bd.tcl
source ./s3_bb_bd.tcl


OK,到这里工程就Clone完成了!!!

下面说一下我操作的过程中碰到的几个问题:

  1. 如果是DDR3的MIG IP Core,会有Configuration Files,如果我们修改了MIG,并重新生成后,就会经常出现这个Configuration Files找不到的情况,像下面这样:

image


这样就要我们在导出s1_recreate_project.tcl前要先把这个文件替换成正确的文件。如果MIG是放在到bd中,那么在上述的第6步修改s1_recreate_project.tcl中,也要把mig_*.prj文件删掉,因为这个文件是在新建MIG时自动生成的。

  1. 有些朋友用bd的时候喜欢用wrapper.v的文件来封一层,这个wrapper.v是Vivado自动生成的,而且默认目录就是在Work的工程目录下,我们可以不用管这个wrapper.v的文件,等bd文件添加进去后,再手动生成一下即可;也可以不使用wrapper.v,直接例化bd文件。

  2. 上面这种方法是在Vivado2017.2上进行的测试,如果是2017.4及以上的版本,write_project.tcl指令中需要增加-use_bd_files选项,也就是:

write_project_tcl -use_bd_files {./Scripts/s1_recreate_project.tcl}

如果不加这个选项,默认会把bd文件信息也导出,这样在运行时会提示么有发现bd文件的错误。

  1. 如果是低版本的工程进行git后,要用高版本的Vivado打开,我们可以在导出bd时去掉IP的版本信息,也就是:

write_bd_tcl -no_ip_version {./Scripts/s2_aa_bd.tcl}

  我尝试了网上很多方法基本都不能直接使用,但他们既然把方法放到网上,说明是经过测试的,但可能测试的并不是特别全面,就是MIG的IP一样,如果我的工程中没有这个IP,那我也不知道在git时会出现这种问题。我也不能保证在使用别的IP时不会出现问题,但思路都是一样的,就是把工程的tcl脚本和bd的tcl脚本分开,先新建工程把非bd文件的内容加进来,再把bd的文件内容添加进来。

关于如何使用Git进行Vivado工程的管理就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

文件 工程 目录 管理 生成 方法 脚本 内容 文件夹 方式 版本 测试 就是 源文件 不用 两个 个人 也就是 信息 几个问题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 e5系列服务器已停产 羊水穿刺结果数据库全国通用吗 数据库和运维那个比较吃香 物联网软件开发工资 软件认证服务器 网络安全预警模型 网络安全每年检测几次 中专软件开发毕业有什么证书 如何在数据库报表中显示日期 数据库可以什么项目 戴尔塔式服务器t3650 高新区运营网络技术哪家好 网络安全法关于赌博的内容 如何交换一个服务器 zoo软件开发 如何安装数据库服务 买阿里云的服务器需要充流量吗 襄樊软件开发 公司 数据库自乘 手机版我的世界西瓜星球服务器 计算机网络技术尔雅超星答案 吉安企业服务器找哪家公司 关护苗网络安全教育有感 上海市场金融网络技术服务哪家好 如何在数据库报表中显示日期 打开sql数据库的方法 浙江慧政软件开发有限公司 太仓哪里有管家婆软件开发 软件开发费用可以一次 软件开发服务与软件销售
0