vivado vhdl项目的版本控制
我想知道对于一个VHDL项目,在vivado中是否有一种版本控制方法。 一种方法是将版本号添加到位流文件名中 那可能吗? 如果不可能,还有什么其他选择 提前感谢想想你需要什么vivado vhdl项目的版本控制,vhdl,vivado,Vhdl,Vivado,我想知道对于一个VHDL项目,在vivado中是否有一种版本控制方法。 一种方法是将版本号添加到位流文件名中 那可能吗? 如果不可能,还有什么其他选择 提前感谢想想你需要什么 版本信息格式和大小:版本是什么?这是一个自然数吗?一串真实的您是否保存日期或时间戳?你需要一个版本号吗?子单元版本需要额外空间吗 版本来源和设计流程:什么设置版本?它是源代码管理工具吗?是否手动设置版本?您是否需要自动化来更新部分版本信息(时间戳、版本号等) 版本可访问性/可观察性:您希望在何处读取版本号并使其可查看
- 版本信息格式和大小:版本是什么?这是一个自然数吗?一串真实的您是否保存日期或时间戳?你需要一个版本号吗?子单元版本需要额外空间吗
- 版本来源和设计流程:什么设置版本?它是源代码管理工具吗?是否手动设置版本?您是否需要自动化来更新部分版本信息(时间戳、版本号等)
- 版本可访问性/可观察性:您希望在何处读取版本号并使其可查看?在源代码中?外部文件?位流文件名?闪存文件的内容?您是否需要FPGA逻辑来访问版本信息(通过通信通道、嵌入式处理器等读取)
- 供应商工具/设备/系统/源依赖关系:版本信息的实现和自动化可能取决于几件事:每个供应商都有不同的工具(即使在同一供应商的工具中)。不同的设备可以让你做不同的事情。您工作的系统可能允许不同形式的自动化(操作系统、安装的脚本工具等)。源文件(VHDL、Verilog、System C等)和目录结构可能会影响解决方案的适用性
自动化选项 Makefile(生成器脚本)自动化 最灵活的方法是使用某种生成器脚本,这些脚本可能与您的源代码控制机制(makefile、perl、python等)挂钩,也可能不挂钩。考虑一下您的项目在设计人员甚至设计平台(Windows、Linux等)之间的可移植性 优点:
- 完全控制你想做的事情
- 可以连接到任何源代码管理自动化
- 当使用标准工具时,可以修改以在任何平台上工作(请确保特别注意不同操作系统之间的文件路径)
- 无法与GUI供应商工具配合使用(请参阅Vivado TCL挂钩)
优点:
- 与GUI流一起工作(当您单击“合成”时,会自动处理所有内容)
- (Vivado)依赖于工具
- 需要记住在Vivado项目中创建挂钩
实施方案 源代码修改 使用解析已知文件格式的脚本,可以自动修改版本号、内部版本号、时间戳以及基本上所有需要的内容(在VHDL/Verilog代码中)。我已经用Vivado TCL钩子和格式良好的VHDL文件包完成了这项工作。工作起来很有魅力
注意:当使用预合成TCL钩子更新源文件时,Vivado会认为文件被修改后,会考虑实现未更新。我在脚本中添加了一个命令来保存包文件的当前时间戳,对其进行更新,然后写回时间戳(这意味着包文件将永远保留其系统日期和时间)
优点:- 版本信息可供设计器轻松查看(包文件)
- 版本信息便于逻辑使用
- 与设备无关
- 无法通过检查位流文件读取版本信息
- 编写脚本可能需要一些工作,并可能迫使您对项目源目录结构进行标准化[这可能不是一件完全坏事;)]
- 与修改源代码相比,脚本编写不那么复杂
- 无法通过检查位流文件读取版本信息
- 您仍然需要将版本/内部版本号保存在某个位置(文件)
- 对于VHDL/Verilog,使用泛型比使用包更复杂,因为您需要通过层次结构连接泛型,直到到达将值写入寄存器的设计代码
- 合成工具依赖性。不同的工具具有不同的命令来更新顶级通用值
- 适合大多数设备
- 通过检查文件可以访问版本信息
- 没有极端程序,逻辑无法读取版本信息
- 信息大小有限(仅32位)