FPGA设计的配置管理

时间:2010-06-05 01:04:37

标签: c vhdl fpga xilinx

哪种配置管理工具最适合FPGA设计,特别是Xilinx FPGA采用VHDL和C编程,用于嵌入式(微光泽)软件?

7 个答案:

答案 0 :(得分:5)

没有“最佳”,但适用于软件的配置控制解决方案对于FPGA来说也是可以的 - 流程非常相似。我在工作中使用Subversion,在家中使用git,wrote a little on 'why' at my blog

在其他答案中,二进制文件不断被提及 - 我处理的唯一二进制文件是编译产品(相当于软件对象和可执行文件),所以我没有将它们保存在版本控制存储库中,我保留了一个zipfile文件我创建的每个发布/标记都包含所有重要的(并且极其缓慢地重现)。

答案 1 :(得分:1)

我建议支持版本标记和二进制文件的CM工具。大多数软件CM应用程序都适用于ASCII文本文件。它们可能只存储“差异”文件而不是整个文件以进行更新。

我的建议:PVCS,ClearCase和Subversion。请勿使用Microsoft SourceSafe。我不喜欢它,因为它每个版本只支持一个标签。

答案 2 :(得分:1)

我见过Perforce和Subversion用于几个FPGA密集型公司。

答案 3 :(得分:1)

我个人使用Perforce,Subverion,git和ClearCase进行FPGA项目。由于VHDL和C只是文本文件,所以任何工作都可以。但是请务必捕获其他项目和禁令文件以及您使用的任何库。

还要考虑如何处理输出,例如日志文件和比特流。两者往往都很大,比特流是二进制文件。

答案 4 :(得分:1)

我们使用Perforce,它很棒。您可以将生活在Linux中的代码与生活在Windows中的规范和文档并排检查。你会得到分支,标签等。

我已经看过从Clearcase到RCS的所有内容,而且这种事情真的很好。重要的是要为您的团队制定一套良好的签到政策,并确保他们坚持下去。

并进行自动夜间回归。这样,当有人违反规则时,可以识别并公开羞辱他们。

答案 5 :(得分:1)

之前我使用的是Subversion,但两年前已经改用git。 Git处理FPGA设计文件以及处理所有其他文本和二进制文件。 Git是控制文件和工件的版本所需的全部内容。

为了构建设计,我建议使用一个名为“ise”的ISE项目(位于名为“ise /”的子目录中)。您可以查看我的(非常适度的)FPGA open-source project on github文件布局。我根本不打算存储ISE文件,因为它们很容易重新生成。我保存的唯一内容是Verilog文件和一些ISIM波形配置文件。在使用coregen的其他项目中,我保存了coregen.cgp项目文件和所有* .xco脚本以重新生成内核。然后我使用Makefile在* .xco文件上实际运行coregen。还有一些其他Xilinx特定文件你也应该控制版本:* .ucf,* .coe,* .xcf等。

我尝试使用Makefiles和Xilinx命令行工具,但发现ISE在跟踪依赖关系和使用正确参数调用工具方面做得更好。只是不要试图控制你的ise /项目文件的错误,否则你会发疯。 Xilinx有300种不同的文件类型可以改变每个版本。如果要保存文件,可以尝试使用扩展名为.xise的ISE项目文件。任何难以重新创建的东西,比如你知道的黄金位文件,需要花费6个小时来构建,你可能想要复制它并配置明确管理它。

答案 6 :(得分:1)

我认为您使用的修订控制工具并不重要 - 一般来说,您认为好的任何东西都可能在这里。我个人使用Git进行大规模的Verilog +软件项目,我很满意。

无论你使用什么版本控制,你会咬你的是什么 - 这是:Xilinx工具通常不尊重“输入”和“输出”之间或(人工编辑)之间的清晰划分“源“和(不透明)”二进制。“许多工具喜欢将一些状态信息(如最后运行时间或哈希值)存储在“输入”文件中,这意味着您将获得大量的错误更改。 Coregen对其.xco文件执行此操作,而项目导航器(主GUI)对其.xise文件执行此操作。此外,这两种工具都习惯于插入或删除默认值参数的行,似乎是随机的。

我遇到的最大问题是Coregen的工作流程:在很多情况下,至少有以下一种情况属实:

  1. 您必须手动编辑Coregen生成的HDL文件。
  2. 进入Coregen的参数存储在.xco文件以外的某个位置(通常看起来像输出文件)。
  3. 您必须将Coregen的输出复制并粘贴到顶级设计中。
  4. 这意味着您的核心生成过程输入没有单个逻辑源/主位置。因此,即使您在版本控制下使用.xco文件,也不会期望您运行的设计与之对应。如果从标称输入重新生成“相同”核心,则可能无法获得正确的输出。甚至不要考虑合并。