FPGA版本管理(二)Vivado自动版本号

本文详细介绍了如何在Vivado中实现自动版本号管理,包括使用宏定义赋值版本号寄存器、制作TCL脚本以及修改QSF文件的步骤。通过自动化脚本,每次综合开始前都会更新版本号,确保设计文件的版本控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相比于,上一篇FPGA版本管理(一)Quartus自动版本号所述,实现Vivado的自动版本号,会稍微麻烦一点点。

对比与Quartus的实现,Vivado的实现,前两步基本一模一样的,区别主要在Step 3.

  • Step 1.使用宏定义赋值版本号寄存器
  • Step 2.制作TCL脚本
  • Step 3.修改QSF文件

下面介绍详细的步骤:

Step 1. 使用宏定义赋值版本号寄存器

使用宏定义的方式写RTL中的版本号。

//版本号
assign version      = `VERSION;
assign compile_date = `COMPILE_DATE;
assign compile_time = `COMPILE_TIME;

将版本号的宏定义单独放在1个.h文件中,如:version.h

`define VERSION       32'hAAAA_BBBB
`define COMPILE_DATE  32'h2020_0423
`define COMPILE_TIME  32'hFF23_2325

Step 2. 制作TCL脚本

使用TCL自动化脚本,用于生成版本号。TCL每运行一次,重新更改一次version.h中的内容。
version_gen.tcl脚本如下:

#version_gen.tcl

set dat [clock format [clock seconds] -format{%Y-%m-%d %H:%M:%S}]
puts stdout $dat

set date [clock format [clock seconds] -format{%Y%m%d}]
set tiem [clock format [clock seconds] -format{%H%M%S}]

#注意修改version.h的路径
set file "./version.h"
set fileid [open $file w+]
seek $fileid 0 start
puts $fileid "`define VERSION       32'hAAAABBBB"
puts $fileid "`define COMPILE_DATE  32'h$date   "
puts $fileid "`define COMPILE_TIME  32'hFF$time "
close $fileid

Step 3. Vivado工程配置

Vivado要在综合前,运行tcl脚本,重点需要关注的是其脚本的路径问题。有两种设置方式:

3.1在VIVADO的GUI中设置

在vivado的Settings中,Synthesis一栏中的tcl.pre中设置需要执行的tcl的路径。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cXcbvk3Q-1589125735064)(_v_images/20200510232412628_6963.png)]
按上文设置后,每次综合开始前便会运行tcl脚本。但是这里有个问题,运行tcl脚本生成的version.h文件不在预想的位置。默认生成文件的位置在<project>/<project.runs>/<run_name>
在这里插入图片描述
所以需要更改version.h的位置。以我的工程目录结构为例:

my_fpga_prj
    -ipcore
    -src
    -xdc
    -prj
        -my_fpga_prj.runs
            -synth_1
        

默认的路径在synth_1中,但我需要verison.h放在src目录下。所以,在version.tcl脚本中需要修改version.h生成的路径为

#注意修改version.h的路径
set file "./../../../src/version.h"

或者说,不修改version.h的路径,在引用version.h的时候添加对应的路径亦可。

3.2直接在tcl脚本中进行设置

也可以不再GUI中设置,直接在工程的运行脚本中添加相应的tcl命令。

set obj [get_runs synth_1]
set_property -name "part" -value "xczu4cg-fbvb900-1-e" -objects $obj
set_property -name "strategy" -value "Vivado Synthesis Defaults" -objects $obj

#在这里添加
set_property -name "steps.synth_design.tcl.pre" -value "[file normalize "$origin_dir/../tcl/version_gen.tcl"]" -objects $obj
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值