我有几项已经完成的FPGA项目,目前的一项工作内容是,因为这些项目经常需要依据不同的应用场景对一部分代码功能进行定制化的微调(比如寄存器的地址与功能定义,某个外设的通信协议等等),因此版本记录与管理是一个问题。
这里通过TRAE制作了一个工作流脚本,可以通过输入项目用途之后,自动选择需要的verilog代码参加编译,得到编译结果,并生成记录文档。
目前采用的方案是用windows命令行cmd作为与人类的信息接口以及工作流的主干部分,用python脚本实现文档管理、大模型调用等具体功能,用tcl脚本实现vivado软件的使用。
脚本已制作完成,目前处于在实际工作中尝试使用,发现与解决bug的阶段,欢迎各位道友对这一实现思路与方案进行批评指正。
example_space 项目构建工具说明
1. 脚本功能概述
本项目实现FPGA项目代码的一键备份,记录差异,启动编译,备份编译结果,调用大模型编写修改记录等功能,用于管理项目模块和生成构建文件。
| 脚本名称 | 主要功能 | 输出文件 |
|---|---|---|
select_project.py |
从项目列表文件中选择项目 | build/temp_project_name.txt |
generate_change_log.py |
生成文件修改记录 | build/changelog/{project_name}/change_log_{timestamp}.md |
generate_detailed_change_log.py |
通过火山大模型生成详细修改记录 | build/changelog/{project_name}/detailed_change_log_{timestamp}.md |
generate_define.py |
生成模块宏定义文件 | modules/include/define.v |
generate_filelist.py |
生成项目文件列表 | 指定的输出文件 |
update_program_time.py |
更新程序时间信息 | modules/include/program.v |
update_version.py |
更新项目版本号 | modules/include/version_{project_name}_v1.v |
vivado_project.tcl |
Vivado工程创建和编译 | 编译结果文件 |
13. 完整构建流程
- 更新配置文件:根据项目需求修改对应的 JSON 配置文件
- 选择项目:运行
select_project.py从项目列表中选择项目 - 更新版本号:运行
update_version.py递增项目版本号 - 更新程序时间:运行
update_program_time.py更新程序时间信息 - 生成修改记录:运行
generate_change_log.py生成文件修改记录 - 生成宏定义:运行
generate_define.py生成define.v文件 - 生成文件列表:运行
generate_filelist.py生成项目文件列表 - 创建 Vivado 工程:在 Vivado 中执行
vivado_project.tcl脚本 - 监控编译:观察 Vivado 控制台输出,等待编译完成
- 生成详细修改记录:运行
generate_detailed_change_log.py生成文件修改详细记录
构建流程示例
# 1. 更新配置文件
# 根据项目需求手动修改对应的 JSON 配置文件
# 2. 选择项目
python scripts/select_project.py
# 3. 更新版本号
python scripts/update_version.py --project example_project
# 4. 更新程序时间
python scripts/update_program_time.py --project example_project --load_mode multiboot
# 5. 生成修改记录
python scripts/generate_change_log.py --project example_project
# 6. 生成宏定义
python scripts/generate_define.py --project example_project
# 7. 生成文件列表
python scripts/generate_filelist.py --project example_project --output build/temp/example_project/filelist.txt
# 8. 运行 Vivado 构建
vivado -mode tcl -source scripts/vivado_project.tcl
# 9. 为 example_project 项目生成详细修改记录
python scripts/generate_detailed_change_log.py --project example_project
这些脚本共同构成了 example_space 项目的完整构建系统,确保项目能够正确引用所需的模块文件,并保持版本信息的更新。