在 FPGA 开发中,掌握 Git 等源码管理工具已是必备技能。但 Vivado 项目通常以 IP 为中心,包含 IP Integrator Block Diagram、各类 IP 实例及自动生成的包装文件,这让很多工程师困惑:Vivado 项目到底该怎么和 Git 一起用?
值得庆幸的是,从 Vivado 2022.1 开始,这一切变得清晰且容易。
源文件与生成文件分离
在 Vivado 2022.1 之前,源文件和生成文件全部混在同一个 .srcs 目录中。而从 Vivado 2022.1 起,工程目录被明确拆分为:
.srcs:源文件.gen:生成文件
这一点非常关键。只要保存 .srcs 目录加上 .xpr 工程文件,就可以在任何地方完整重建 Vivado 工程。
示例工程结构
本文使用 Vivado 2024.1 创建了一个新工程,目标板卡为 Avnet ZU Board。IP Integrator 设计包含 Zynq MPSoC Processing System、Smart Interconnect 和 AXI BRAM Controller,并加入了自定义 RTL 文件通过 UART 提供 AXI 访问,用于演示自定义 RTL 与 IP 设计共存的情况。
1. .srcs 目录
这是必须纳入 Git 管理的内容:
imports/:用户添加的 VHDL / Verilog 源文件bd/:IP Integrator 的 Block Diagramip/:各个 IP 的.xci配置文件
2. .gen 目录
.gen 中包含自动生成的顶层 wrapper、IP 的生成文件以及综合与仿真所需的中间文件。这些文件不需要提交到 Git。
将 Vivado 工程加入 Git 仓库
假设你已经在 GitHub 上创建了一个空仓库,下面是核心步骤。
初始化仓库
git init
添加 Vivado 工程文件
只需要添加两部分:
git add git_demo.srcs/* git_demo.xpr
提交到本地仓库
提交这些文件并附带一条消息:
git commit -m "initial issue"
此时你会看到 .xpr、RTL/VHDL 文件以及 IP .xci 文件都已被 Git 跟踪。
绑定远程仓库并推送
git remote add origin <url>
git push -u origin master
此时在 GitHub 网页上,就可以看到完整的 Vivado 工程源文件了。
从 Git 仓库重建 Vivado 工程
为了验证流程是否正确,我们新建一个文件夹并克隆仓库:
git clone <repo_url>
然后直接打开 .xpr 文件。我们需要重新生成顶层 wrapper,重新生成 IP,正常完成综合与实现即可。整个流程无需额外脚本,运行非常顺利。
小结
Vivado 2022.1 之后,工程结构已经非常适合 Git 管理。只需管理 .srcs + ,IP、BD、RTL 都能自然融入 Git 流程,Vivado 工程终于可以像软件工程一样被'正常管理'。后续可进一步探索 Vitis 与源码管理的协同方式。

