FPGA版本管理(一)Quartus自动版本号

FPGA开发,在实际工程应用中,会将每次编译的版本时间写在寄存器中,以便在上板测试时能够通过读寄存器的方式,获取版本号。传统的方式,我们会在每次综合前,手动去更改版本号和版本日期。下面介绍一种,Quartus每次综合时自动更改版本号和版本日期的方式。

这个方法,在Intel FPGA的官网中有介绍:

Quartus II Tcl实例
Quartus II Tcl实例:自动版本号
Quartus II Tcl实例:日期时间戳
Quartus II Tcl实例:数据和时间格式

上述介绍中,有一些链接无法点开,需要重新访问Intel的英文网站,即可点开,如下:

Quartus II Tcl Example: Automatic Script Execution
Quartus II Tcl Example: Automatic Version Number
Quartus II Tcl Example: Get Subversion Revision Number
Quartus II Tcl Example: Increment Version Number in File
Quartus II Tcl Example: Version Number in Verilog Register Bank


下面介绍详细的步骤:

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 time [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. 修改QSF文件

单独执行version_gen.tcl即可更改version.h文件。下面,我们需要做的是,在Quartus每次综合前,自动去调用这个脚本。那么,每次综合前version.h会自动刷新一遍。
在Quartus每次综合前,自动去调用这个脚本,需要在Quartus工程的QSF文件中,添加如下代码行。那么,在每次综合之前,脚本就会自动运行。

set_global_assignment -name PRE_FLOW_SCRIPT_FILE quartus_sh:version_gen.tcl

从此之后,再也不用手动去更改版本号了。Intel的示例中,还有很多更高级的用法,详见前文链接中的内容。

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值