【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工程
1、只保留project_name.xpr文件和project_name.srcs文件
project_name.xpr和project_name.srcs是两个最重要的文件和文件夹,删除其它,存储空间可以大大减少,可以把这两个上传到服务器。下载到新位置时,直接双击project_name.xpr文件即可打开工程,vivado会自动生成其它文件,当然IP需要重新编译。
2、使用TCL脚本
Vivado支持TCL脚本,可以只保留源代码文件夹并且生成TCL脚本,即可实现最小化存储。需要恢复工程的时候,在目的目录下,使用TCL脚本恢复即可。
(1)使用tcl命令生成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文件名,用默认参数就行,点击“OK”。
最后将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 -exclude ip 可复位整个项目,但不会清理IP 目录下的文件。
四、清理仿真工程结果
如果是使用vivado仿真器仿真,在仿真的过程中,将会产生很多数据缓存,将大量占据磁盘空间,在关闭仿真后,可以通过reset_sim这个TCL命令,用来清空项目的仿真目录下文件。
但要注意,在系统的temp文件夹中,可能也与仿真文件缓存存在,如果发现系统C盘的空间越来越小,可以定期清理下。