FPGA的版本管理

本文转载自: FPGA的现今未的微信公众号

说明:本文说的版本管理都是基于FPGA开发实践讨论的,并不是广义上的版本管理。

搞FPGA的人可能都遇到过这样的问题:以前对外发布的版本的代码找不到了;忘记以前发布的版本究竟解决了什么问题或者升级了什么功能;版本无法退回到上一个没有问题的版本等等。这些问题其实都是版本管理的问题。到底什么是版本管理,怎么管理会相对比较简单高效呢?本文就自己的经验做一个简单的记录,欢迎交流。

前提

现在假定有一个FPGA的开发团队,5-10个人的样子,目前同时开发2-3个项目,每个项目有一个负责人,即一共有3个项目负责人。有的人员同时参与2+个项目。
具体要求
一、要做到版本管理,首先要有版本管理工具。在很多的小型公司是没有使用版本管理工具的,一般靠execl记录,如果团队只有1-2个人可能也还行,但是在上述的团队,显然是不可行的。所以版本管理的首要条件就是有管理管理工具,可以是SVN,也可以是git,或者其他的工具都可以。
二、发布的版本和版本库上的代码要一一对应。前面说的问题,以前对外发布的版本的代码找不到了就是因为没有一一对应,时间长了以后,不记得发布的版本的源代码究竟是哪个版本。这里介绍一个简单的方法。
FPGA的开发一般都会提供一些寄存器供用户读取,我们充分利用这个特性来管理版本。我们提供2个寄存器,一个是编译时间寄存器,一个是版本号寄存器。什么是版本号?对于git来说,每次上传更新的时候,系统都会提供一个hash校验值,这是一个由 40 个十六进制字符(0-9 和 a-f)组成的字符串,大概是这个样子:

24b9da6552252987aa493b52f8696cd6d3b00373g

三、做有意义的上传。有的人平时不怎么上传代码,一次上传大量的代码;有的公司对上传的次数有要求,那么有的人就攒代码,攒到解决一定量的bug后再一起上传……,个人觉得这都不是特别好的方式。在项目开发前期,怎么上传代码可以不做要求,但是到了系统仿真阶段以后,建议蚂蚁搬家式的上传。即每次解决一个具体的小问题后就上传一次,commit的时候说明解决了什么问题。如果有3个bug需要解决,那么解决第一个bug后就上传一次代码,解决第二个后再上传一次,这样做的好处就是版本思路清晰,也非常方便版本回退和查看版本的演进。

四、对外发布的版本,一定是从版本管理库上拉取的源代码编译生产的。如下图所示:

版本管理.JPG

当我们从版本A修改代码得到A2,通过验证解决了某个bug,此时A2的bit文件从功能上讲是解决问题了的,但是不能发布,必须讲A1和A2的修改上传版本管理库后,再拉去版本生成bit文件,“多此一举”的目的就是为了上述第二点,做好代码和版本寄存器的一一对应。

五、有了版本管理也要做好记录。虽然上述的方法解决了版本和代码一一对应问题,但是对外发布的版本,也要做好记录并上传版本管理工具。比如给客户A发布了3个版本,我们都需要记录好发布版本的时间寄存器,版本号寄存器的值,方便后续查阅。同时也要记录好每个版本的功能,解决了什么问题等等。

关于FPGA项目的版本管理,你有什么更好的方法呢?欢迎留言交流。

最新文章

最新文章