哪种配置管理工具最适合 FPGA 设计,特别是 Xilinx FPGA 使用 VHDL 和 C 编程的嵌入式(microblaze)软件?
7 回答
没有“最好的”,但适用于软件的配置控制解决方案对于 FPGA 来说是可以的——流程非常相似。我在工作中使用 Subversion,在家里使用 git,并在我的博客上写了一些关于“为什么”的文章。
在其他答案中,不断提到二进制文件 - 我处理的唯一二进制文件是编译产品(相当于软件对象和可执行文件),所以我不将它们保存在版本控制存储库中,我为每个版本保留一个 zipfile/我创建的所有重要的(并且复制速度非常慢)的标签。
我建议支持版本标签和二进制文件的 CM 工具。大多数软件 CM 应用程序都可以处理 ASCII 文本文件。他们可能只存储一个“差异”文件而不是整个文件以进行更新。
我的建议:PVCS、ClearCase 和 Subversion。不要使用 Microsoft SourceSafe。我不喜欢它,因为它每个版本只支持一个标签。
我见过一些 FPGA 密集型公司使用 Perforce 和 Subversion。
我个人在 FPGA 项目中使用过 Perforce、Subverion、git 和 ClearCase。由于 VHDL 和 C 只是文本文件,任何工作都很好。但是请务必捕获其他项目和约束文件以及您使用的任何库。
还要考虑如何处理输出,例如日志文件和比特流。两者都很大,并且比特流是二进制文件。
我们使用 Perforce,它很棒。您可以让位于 Linux 领域的代码与位于 Windows 领域的规范和文档并排检查。你会得到分支、标签等。
我见过从 Clearcase 到 RCS 的所有东西,这种东西真的没问题。重要的是为您的团队制定一套好的签到政策,并确保他们坚持下去。
并有自动化的夜间回归。这样,当有人违反规则时,他们可以被识别并公开羞辱。
以前我使用 Subversion,但两年前改用 git。Git 处理 FPGA 设计文件与处理所有其他文本和二进制文件一样。Git 是您对文件和工件进行版本控制所需的一切。
为了构建设计,我建议只使用一个名为“ise”的 ISE 项目(位于名为“ise/”的子目录中)。您可以查看我在 github 上的(非常普通的)FPGA 开源项目的文件布局。我根本不费心存储 ISE 文件,因为它们很容易重新生成。我唯一保存的是 Verilog 文件和一些 ISIM 波形配置文件。在使用 coregen 的其他项目中,我保存了 coregen.cgp 项目文件和所有用于重新生成内核的 *.xco 脚本。然后我使用 Makefile 在 *.xco 文件上实际运行 coregen。您还应该对其他一些 Xilinx 特定文件进行版本控制:*.ucf、*.coe、*.xcf 等。
我尝试使用 Makefile 和 Xilinx 命令行工具,但发现 ISE 在跟踪依赖关系和使用正确参数调用工具方面做得更好。只是不要错误地尝试对您的 ise/项目文件进行版本控制,否则您会发疯的。Xilinx 有大约 300 种不同的文件类型,每个版本都会更改。如果要保存文件,可以尝试使用 .xise 扩展名的 ISE 项目文件本身。任何难以重新创建的东西,例如您知道可以工作并花费 6 小时构建的黄金位文件,您可能想要复制它并明确地对其进行配置管理。
我认为你使用什么版本控制工具并不重要——你认为一般来说好的任何东西在这里都可能没问题。我个人将 Git 用于一个相当大的 Verilog + 软件项目,我对此非常满意。
什么会咬你 - 无论你使用什么版本控制 - 是这样的:Xilinx 工具通常不尊重“输入”和“输出”之间或(人工编辑的)“源”和(不透明)“二进制”。许多工具喜欢在它们的“输入”文件中存储一些状态信息,例如上次运行时间或哈希值,这意味着您会得到很多错误的更改。Coregen 对其 .xco 文件执行此操作,项目导航器(主 GUI)对其 .xise 文件执行此操作。此外,这两种工具都有一个习惯,即插入或删除默认值参数的行,似乎是随机的。
我遇到的最大问题是 Coregen 的工作流程:在许多情况下,以下至少一项是正确的:
- 您必须手动编辑 Coregen 生成的 HDL 文件。
- 进入 Coregen 的参数存储在 .xco 文件以外的其他地方(通常在看起来像输出文件的地方)。
- 您必须将 Coregen 的输出复制并粘贴到您的顶层设计中。
这意味着您对核心生成过程的输入没有单一的逻辑源/主位置。因此,即使您将 .xco 文件置于版本控制之下,也不期望您正在运行的设计与它相对应。如果您从其标称输入重新生成“相同”的核心,您可能不会得到正确的输出。甚至不要考虑合并。