如果觉得这篇内容对你有帮助,点个赞、收藏一下吧!你的支持是我最大的动力!
一、vivado设置
打开vivado,找到setting,按照图片所示方式添加tcl文件
二、tcl文件放到代码目录
将tcl文件放到verilog文件相同目录下
# 获取脚本所在目录
set script_dir [file dirname [info script]]
# 使用相对路径构建文件路径
set filename [file join $script_dir "xxxxx.v"]
# 打开文件读取内容
set file [open $filename r]
set data [read $file]
close $file
# 定义版本号、日期和时间的正则表达式
set version_regex {parameter\s+VERSION_NUMBER\s*=\s*32'h([0-9A-Fa-f]+);}
set date_regex {parameter\s+VERSION_DATE\s*=\s*32'h([0-9A-Fa-f]+);}
set time_regex {parameter\s+VERSION_TIME\s*=\s*32'h([0-9A-Fa-f]+);}
# 获取当前日期,并格式化为所需的16进制日期格式:YYYYMMDD
set current_date [clock format [clock seconds] -format {%Y%m%d}]
set date_hex $current_date
# 获取当前时间,并格式化为所需的16进制时间格式:HHMMSS
set current_time [clock format [clock seconds] -format {%H%M%S}]
set time_hex $current_time
# 匹配并提取当前版本号
regexp $version_regex $data match current_version_hex
set current_version [scan $current_version_hex %x]
set new_version [expr $current_version + 1]
set new_version_hex [format "%08X" $new_version]
# 用新的版本号、日期和时间替换旧的版本号、日期和时间
set new_data [regsub $version_regex $data "parameter VERSION_NUMBER = 32'h$new_version_hex;"]
set new_data [regsub $date_regex $new_data "parameter VERSION_DATE = 32'h$date_hex;"]
set new_data [regsub $time_regex $new_data "parameter VERSION_TIME = 32'h$time_hex;"]
# 重新写入文件
set file [open $filename w]
puts $file $new_data
close $file
# 打印版本更新信息
puts "version_number has been update---------------- $new_version_hex"
puts "date has been update-------------------------- $date_hex"
puts "time has been update-------------------------- $time_hex"
三、添加参数
对要修改的文件,添加以下三个参数,执行vivado编译时,便会自动修改这三个参数