vivado vhdl项目的版本控制

vivado vhdl项目的版本控制,vhdl,vivado,Vhdl,Vivado,我想知道对于一个VHDL项目,在vivado中是否有一种版本控制方法。 一种方法是将版本号添加到位流文件名中 那可能吗? 如果不可能,还有什么其他选择 提前感谢想想你需要什么 版本信息格式和大小:版本是什么?这是一个自然数吗?一串真实的您是否保存日期或时间戳?你需要一个版本号吗?子单元版本需要额外空间吗 版本来源和设计流程:什么设置版本?它是源代码管理工具吗?是否手动设置版本?您是否需要自动化来更新部分版本信息(时间戳、版本号等) 版本可访问性/可观察性:您希望在何处读取版本号并使其可查看

我想知道对于一个VHDL项目,在vivado中是否有一种版本控制方法。 一种方法是将版本号添加到位流文件名中

那可能吗? 如果不可能,还有什么其他选择

提前感谢

想想你需要什么
  • 版本信息格式和大小:版本是什么?这是一个自然数吗?一串真实的您是否保存日期或时间戳?你需要一个版本号吗?子单元版本需要额外空间吗

  • 版本来源和设计流程:什么设置版本?它是源代码管理工具吗?是否手动设置版本?您是否需要自动化来更新部分版本信息(时间戳、版本号等)

  • 版本可访问性/可观察性:您希望在何处读取版本号并使其可查看?在源代码中?外部文件?位流文件名?闪存文件的内容?您是否需要FPGA逻辑来访问版本信息(通过通信通道、嵌入式处理器等读取)

  • 供应商工具/设备/系统/源依赖关系:版本信息的实现和自动化可能取决于几件事:每个供应商都有不同的工具(即使在同一供应商的工具中)。不同的设备可以让你做不同的事情。您工作的系统可能允许不同形式的自动化(操作系统、安装的脚本工具等)。源文件(VHDL、Verilog、System C等)和目录结构可能会影响解决方案的适用性


自动化选项 Makefile(生成器脚本)自动化 最灵活的方法是使用某种生成器脚本,这些脚本可能与您的源代码控制机制(makefile、perl、python等)挂钩,也可能不挂钩。考虑一下您的项目在设计人员甚至设计平台(Windows、Linux等)之间的可移植性

优点:

  • 完全控制你想做的事情
  • 可以连接到任何源代码管理自动化
  • 当使用标准工具时,可以修改以在任何平台上工作(请确保特别注意不同操作系统之间的文件路径)
缺点:

  • 无法与GUI供应商工具配合使用(请参阅Vivado TCL挂钩)
Vivado TCL挂钩 Vivado有TCL钩子,您可以在合成、实现等时使用它来运行

使用预合成TCL钩子将允许您在合成之前连接要运行的脚本,并实现版本信息更新机制

使用post bitstream TCL钩子将允许您连接一个脚本,以便在创建比特流文件后立即运行,并创建一个与更新的版本信息匹配的文件名,或者您可能需要的其他最终操作

更多信息:

优点:

  • 与GUI流一起工作(当您单击“合成”时,会自动处理所有内容)
缺点:

  • (Vivado)依赖于工具
  • 需要记住在Vivado项目中创建挂钩

实施方案 源代码修改 使用解析已知文件格式的脚本,可以自动修改版本号、内部版本号、时间戳以及基本上所有需要的内容(在VHDL/Verilog代码中)。我已经用Vivado TCL钩子和格式良好的VHDL文件包完成了这项工作。工作起来很有魅力

注意:当使用预合成TCL钩子更新源文件时,Vivado会认为文件被修改后,会考虑实现未更新。我在脚本中添加了一个命令来保存包文件的当前时间戳,对其进行更新,然后写回时间戳(这意味着包文件将永远保留其系统日期和时间)

优点:

  • 版本信息可供设计器轻松查看(包文件)
  • 版本信息便于逻辑使用
  • 与设备无关
缺点:

  • 无法通过检查位流文件读取版本信息
  • 编写脚本可能需要一些工作,并可能迫使您对项目源目录结构进行标准化[这可能不是一件完全坏事;)]
顶级实体/模块通用 顶层设计模块/实体中的泛型可以通过合成工具进行修改,并通过设计逻辑进行访问

优点:

  • 与修改源代码相比,脚本编写不那么复杂
缺点:

  • 无法通过检查位流文件读取版本信息
  • 您仍然需要将版本/内部版本号保存在某个位置(文件)
  • 对于VHDL/Verilog,使用泛型比使用包更复杂,因为您需要通过层次结构连接泛型,直到到达将值写入寄存器的设计代码
  • 合成工具依赖性。不同的工具具有不同的命令来更新顶级通用值
JTAG用户代码 大多数FPGA支持IEEE标准1149.1 JTAG功能用户代码,该代码为用户提供一个32位值来标识位流。创建比特流文件时,可以使用供应商工具设置此值。但是,FPGA的逻辑无法读取该值(除非实现逻辑来读取闪存并跟踪该值的正确地址,这是一个很大的过度杀伤力)

优点:

  • 适合大多数设备
  • 通过检查文件可以访问版本信息
缺点:

  • 没有极端程序,逻辑无法读取版本信息
  • 信息大小有限(仅32位)
Xilinx USR_访问寄存器 与JTAG用户代码类似,Xilinx为Virtex-5实现了一个USR_访问寄存器