逻辑设计新人
除了上面大家说的文件管理,再补充几个工程管理上的实践和容易踩的坑:
1. 目录结构要清晰。建议按功能模块分目录,比如rtl/, sim/, const/, ip/, scripts/。每个模块的rtl和testbench放一起。.gitignore放在项目根目录。
2. 使用Tcl脚本自动化。这是硬件项目版本控制的灵魂。一个主构建脚本(比如build.tcl)应该能:创建工程、添加源码、添加约束、配置IP、运行综合实现、生成比特流。这个脚本要提交。这样新人拿到代码,一键重现。
3. 注意约束文件(.xdc)的版本管理。有时候工程师在GUI里修改约束后忘记保存到.xdc文件,导致版本库里的约束不是最新的。一定要养成在保存.xpr前“Write XDC”的习惯,或者直接用脚本管理约束。
4. 仿真文件管理。测试激励、验证环境代码当然要提交。但仿真脚本(比如用Makefile或Python脚本编译仿真库、运行仿真)也要提交。仿真产生的波形、覆盖率数据库等巨大文件必须忽略。建议在sim目录下也放一个.gitignore。
5. IP核的“锁版本”问题。特别是Vivado,IP升级可能导致接口变化。在团队协作中,最好在Tcl脚本里固定Vivado/IP的版本号。提交.xci文件可以锁定大部分配置,但工具大版本升级时仍可能有问题。
6. 二进制文件(如初版比特流、ROM初始化文件.coe/.mif)要不要提交?如果很小且是设计输入的一部分,可以提交。如果很大或可由脚本生成,则只提交生成脚本。
7. 考虑使用Git LFS(大文件存储)来管理偶尔需要版本控制的超大文件(比如大型的coe文件或早期参考的比特流),但不要滥用。
最后,找个时间给实验室做个简短培训,统一工作流程,不然每个人提交的东西不一样,还是乱。
