2010-06-05 53 views
3

哪种配置管理工具最适合FPGA设计,尤其是Xilinx FPGA采用VHDL和C编程的嵌入式(microblaze)软件?FPGA设计的配置管理

+2

您将需要一个伟大的二进制处理。我相信git是这种情况下的领导者之一。 – 2010-06-10 18:39:13

回答

1

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

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

1

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

1

我个人使用Perforce,Subverion,git和ClearCase进行FPGA项目。由于VHDL和C只是文本文件,任何工作都可以。但是一定要捕获其他项目和约束文件以及您使用的任何库。

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

1

我们使用Perforce,它很棒。您可以将您的代码存放在Linux环境中,并与您的Windows环境中的规格和文档并行检查。并且你得到分支,标签等。

我已经看到了从Clearcase到RCS的所有使用过程,而且对于这类事情确实没问题。重要的是要为您的团队制定一套完善的登记政策,并确保他们坚持不懈。

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

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/project文件的错误,否则你会发疯。赛灵思拥有300种不同的文件类型,每种版本都有所不同。如果你想保存一个文件,你可以用.xise扩展名尝试ISE项目文件本身。任何难以重新创建的东西,比如你知道的黄金位文件需要花费6个小时才能生成,你可能需要复制它并且配置会明确地进行管理。

5

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

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

1

我不认为你使用哪种版本控制工具并不重要 - 你认为一切都很好在这里可能会好起来的。我个人使用Git进行大规模的Verilog +软件项目,对此我感到非常满意。不管使用何种版本控制,什么都会使你受到影响:Xilinx工具通常并不尊重“输入”和“输出”之间或(人为编辑的) “源”和(不透明)“二进制”。许多工具喜欢在他们的“输入”文件中存储一些状态信息,例如上次运行时间或散列值,这意味着您会得到很多错误的更改。 Coregen会将其用于.xco文件,而项目导航器(主GUI)会将其用于.xise文件。而且,这两种工具都有插入或删除默认值参数的习惯,这似乎是随机的。

我遇到的最大的问题是工作流与Coregen:在许多情况下,以下至少有一个为真:

  1. 您必须手动编辑由Coregen产生的HDL文件。
  2. 进入Coregen的参数存储在除.xco文件之外的其他位置(通常看起来像输出文件)。
  3. 您必须将Coregen的输出复制并粘贴到您的顶层设计中。

这意味着没有单个逻辑源/主位置输入到核心生成过程。因此,即使您在版本控制下使用.xco文件,也不会期望您运行的设计与其相对应。如果你从标称输入重新生成“同一个”核心,你可能不会得到正确的输出。甚至不考虑合并。