之前群里有一些关于在Vivado中IP综合时出现各种问题,大部分通过reset_project这个TCL命令解决,今天就简单分析一下reset_project这个命令的作用。
reset_project和reset_project -exclude ip作用
reset_project 用于重置当前项目重置为开始状态,清除在综合,模拟,实现和write_bitstream过程中创建的各种输出文件,包括临时文件。不会改动工程中的约束和源文件。一般不会影响功能,也不会改善时序。
-exclude_ips : 不去清理IP 目录下的文件。
通过上面的操作之后,一些IP的文件操作,比如从别人哪里拷贝的工程,一些文件权限不够、之前生成了一些文件新编译后不能替换源文件等操作、一些不知名的报错,无法解决等问题,都可以通过上面的操作尝试解决。
压缩工程
除了上面综述的作用以外,reset_project还可以压缩工程的大小,下面看下效果(演示示例,不代表所有工程)。
下图为某工程运行完成之后占用的资源,占用了176M。
对工程运行reset_project命令后如下图所示,资源占用105M,直接减少72M,也就是减少了40%!这个压缩量还是比较可观的。
影响
上面说了很多这个命令的优点,可以解决一些特殊错误,可以压缩空间,那么是不是所有情况我都可以使用这个命令呢?答案是。。。。
reset_project命令后就是把里面的综合和实现清空,包括ooc下面的IP核等都清掉,这样就只保留了最必要的文件,从而压缩了占用空间。但是这样也带来一个问题,如果要重新产生一个可用的版本,需要的时间会更长,这个操作实际上也就是用空间换取了时间,所以大家使用前要衡量下,不要随便用,如果你的工程比较大,那么恭喜你,可以获得一天的摸鱼时间。