Vivado 工程 Git 版本管理实战指南
在 FPGA 开发中,掌握 Git 等源码管理工具已是必备技能。但 Vivado 工程通常以 IP 为中心,包含 IP Integrator Block Diagram、各类 IP 实例以及自动生成的包装文件与工程产物,这让很多工程师困惑:Vivado 项目到底该怎么和 Git 一起用?
好消息是,从 Vivado 2022.1 开始,这一切变得清晰且容易。
Vivado 2022.1 之后的关键变化
在 Vivado 2022.1 之前,源文件和生成文件全部混在同一个 .srcs 目录中,导致 Git 仓库臃肿且难以维护。
而从 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 设计共存的情况。
完成后的 Block Diagram 如下:

Vivado 工程目录结构解析
.srcs 目录

imports/ 下是用户添加的 VHDL / Verilog 源文件。

bd/ 下是 IP Integrator 的 Block Diagram。

ip/ 下是各个 IP 的 .xci 配置文件。

这些都是必须纳入 Git 管理的内容。
.gen 目录
.gen 中包含:
- 自动生成的顶层 wrapper
- IP 的生成文件
- 综合与仿真所需的中间文件
这些文件不需要提交到 Git。
将 Vivado 工程加入 Git 仓库
假设你已经在 GitHub 上创建了一个空仓库,下面是核心步骤。
初始化仓库
git init
添加 Vivado 工程文件
只需要添加两部分:
git add git_demo.srcs/*
git add git_demo.xpr
提交到本地仓库
提交这些文件并附带一条消息。
git commit -m "Initial commit"
你会看到 .xpr、RTL / VHDL 文件、IP .xci 文件都已经被 Git 跟踪。

绑定远程仓库并推送
git remote add origin <url>
git push -u origin main
此时在 GitHub 网页上,就可以看到完整的 Vivado 工程源文件了。

从 Git 仓库重建 Vivado 工程
为了验证流程是否正确,我们新建一个文件夹:

git clone <repo_url>
然后直接打开 .xpr 文件。

我们需要重新生成顶层 wrapper,重新生成 IP,正常完成综合与实现即可。
整个流程无需额外脚本,运行非常顺利。

小结
Vivado 2022.1 之后,工程结构已经非常适合 Git 管理。
只需管理 .srcs + .xpr,IP、BD、RTL 都能自然融入 Git 流程。Vivado 工程终于可以像软件工程一样被'正常管理'。

