【Tcl脚本】Vivado工程文件结构、优化工程以及最小化打包
一、Vivado工程文件结构
vivado工程文件目录,如下所示:

说明:
-
project_name.cache:Vivado 软件的运行缓存
-
project_name.hw:所有波形文件
-
project_name.ip_user_files:用户关于 IP 的文件
-
project_name.runs:编译与综合结果 ,impl_1 文件夹存取布线后结果
-
project_name.sdk:SDK 环境代码,一般是 ZYNQ 设计中关于 PS 端的代码
-
project_name.sim:仿真结果
-
project_name.srcs:工程的源码、仿真文件与约束文件
-
project_name.xpr:Vivado 工程启动文件
其中,project_name.xpr和project_name.srcs是两个最重要的文件和文件夹,其它文件夹都可以删除。
根据后缀名不同,文件内容也不同:
1、dcp文件,dcp文件是Design CheckPoint的缩写,中文翻译为“设计检查点”,它是一种加密的、压缩的二进制文件类型,包含了完整的设计信息,如实例化层次结构、资源使用情况、时序分析数据、约束等重要信息。在Vivado设计中,DCP文件通常用于在不同的Vivado工程或版本之间共享设计,并简化设计修改和迁移,或增量编译。
2、xdc文件,vivado的约束文件,比如时序约束和IO引脚约束。
3、xci文件,定制ip产生的文件,里面包含了定制的ip核的所有信息。
4、rpt文件,vivado每个过程结束输出的一个report文件,用来记录各个过程中的一些信息
5、.Xil文件,是Vivado用来降低运行时内存使用量的临时目录,该文件无法移动到其他位置。
二、最小化保存Vivado工程
在进行保存之前,建议先使用reset_project命令,使.srcs文件夹更小。
1、只保留project_name.xpr文件和project_name.srcs文件
project_name.xpr和project_name.srcs是两个最重要的文件和文件夹,删除其它,存储空间可以大大减少,可以把这两个上传到服务器。下载到新位置时,直接双击project_name.xpr文件即可打开工程,vivado会自动生成其它文件,当然IP需要重新编译。(这种方法并不直观,更推荐用Vivado自带的打包指令)
2、使用TCL脚本
Vivado支持TCL脚本,可以只保留源代码文件夹并且生成TCL脚本,即可实现最小化存储。需要恢复工程的时候,在目的目录下,使用TCL脚本恢复即可。
(1)生成脚本方法一:使用tcl命令
打开vivado工程后,在“Tcl Console”窗口中,输入下面这个命令
write_project_tcl -force D:/test/test.tcl
其中D:/test是目录,执行的效果如下:

(2)生成脚本方法二:使用GUI界面
打开vivado工程后,通过“File->Project->Write Tcl”,打开“ Write Project to Tcl ”界面。

选择文件路径和tcl文件名,注意勾选Write all properties 和 Copy sources to new project,这个tcl文件中将存储着工程的源码和属性设置信息。方便将来恢复工程。
最后将原工程中的.srcs文件夹复制到.tcl文件的同目录下,如此就完成了一个工程的最小打包。
![]()
(3)通过Tcl恢复工程
打开vivado,在“Tcl Console”中,先使用“cd 目录”切换到tcl脚本和源代码文件所在的文件夹,再执行source命令,具体操作示例如下:
cd D:/test source test.tcl
注意:必须先切换到tcl文件所在的目录,再执行source。
也可以使用GUI界面的"Tools->Run Tcl Scripts",选择打开tcl文件即可。
三、清理vivado工程
在实际使用Vivado过程中,该工具会自动生成一系列文件,有些文件是不必时刻保存的中间文件,有些是为了提高编译效率而生成的(比如编译IP核后产生的文件)。然而在上传SVN或备份时,我们希望占用尽量少的存储空间。由于Vivado无法自动清理这些文件,因此需要手动清理。
清理vivado是有tcl命令可以帮助清理的,如:reset_project 和reset_project -exclude ip
reset_project 用于重置当前项目重置为初始状态,清除在综合,模拟,实现和write_bitstream过程中创建的所有输出文件,包括临时文件。但是要注意,这会清理所有的IP和缓存,如果是大工程的话,清理完后,第一次重新编译需要花费更多的时间。 使用“reset_project”命令可以显著减少工程占用的空间。输入后会发现所有的IP全部清掉了编译后的文件,工程的综合和实现也被清理掉了,所以会减少空间,下面举例对比。 其中.srcs文件夹从1.2G大小减小到了409M大小,效果显著。

reset_project -exclude ip 可复位整个项目,但不会清理IP 目录下的文件。
四、清理仿真工程结果
如果是使用vivado仿真器仿真,在仿真的过程中,将会产生很多数据缓存,将大量占据磁盘空间,在关闭仿真后,可以通过reset_sim这个TCL命令,用来清空项目的仿真目录下文件。
但要注意,在系统的temp文件夹中,可能也与仿真文件缓存存在,如果发现系统C盘的空间越来越小,可以定期清理下。

浙公网安备 33010602011771号