TCL重建工程
vivado的工程一般都比较庞大,在github等平台上进行管理时,直接上传整体工程是比较麻烦的,这时候,使用TCL保存工程,并进行工程恢复就十分有必要了。
使用TCL保存工程十分简单,以笔者专栏中的USB2.0传输ADC数据的工程为例
点击Write Tcl即可,TCL生成完毕,会在当前的工程目录下保存。
这时候的TCL还不能直接进行使用,需要进行一些更改
以这部分为例,其加载的本地目录文件路径如图所示,我们可以将TCL和图中所示的这些文件直接放入一个文件夹中,但笔者为了重建工程的逻辑更加清晰,加这些文件分别放在了不同文件夹下,那么这些目录名字也要对应修改
其中ip文件夹存放ip核的xci文件,verilog文件夹存放源文件,tb文件夹存放仿真文件与仿真图,xdc文件夹存放约束文件。
相应的TCL文件中,也需要进行修改,进行文件路径对应,注意,所用用到的文件,都需要保证其路径的正确。
如果手动从每个ip文件夹下提取xci文件,会比较麻烦。可以通过TCL脚本完成这个工作,新建一个TCL脚本,将其放在图中所示的目录下进行运行,运行TCL可以使用vivado的TCL工具,也可以安装Active TCL进行脚本的运行
脚本中的具体内容如下所示
# 获取当前目录
set currentDir [pwd]
puts "当前目录是: $currentDir"
# 检索当前目录下的所有一级文件夹
set searchDirs [glob -type d -nocomplain "$currentDir/*"]
puts "检索到的文件夹: $searchDirs"
# 定义目标文件夹
set targetDir [file join $currentDir "ip"]
# 如果目标文件夹不存在,则创建它
if {![file exists $targetDir]} {
file mkdir $targetDir
puts "文件夹 $targetDir 已创建。"
} else {
puts "文件夹 $targetDir 已存在。"
}
# 遍历每个文件夹,搜索后缀为 .xci 的文件
foreach dir $searchDirs {
if {[file isdirectory $dir]} {
set xciFiles [glob -nocomplain "$dir/*.xci"]
foreach file $xciFiles {
set destFile [file join $targetDir [file tail $file]]
puts "正在复制: $file 到 $destFile"
if {[catch {file copy -force $file $destFile} err]} {
puts "错误: $err"
} else {
puts "复制成功: $file"
}
}
}
}
puts "操作完成!"
可以快速的提取所有XCI文件。
上述工作完成后,在vivado的Tcl Console下,进行工程恢复
如图所示,进入脚本所在文件夹
然后执行下图所示命令即可
TCL作为一门脚本语言,善加利用,会对我们的工程开发有许多帮助。