1、现象
Vivado2020版本之后,为了便于版本管理,减少IP占用存储空间,Xilinx将IP的源文件xci和OOC综合后生成的文件分开存储,xci存储在设计者选择的文件路径,OOC综合结果存储在.gen文件夹中。当设计者将一个工程的IP拷贝到另一个工程使用是,由于xci文件的OOC综合结果存储路径不会重新修改,导致工程会出现多个.gen文件夹。
如下图所示,将原来gch_130t8工程的IP拷贝到fff工程后,对IP进行OOC综合就会产生两个.gen文件,gch_130t8.gen存放的是拷贝IP的OOC结果,fff.gen存放的是在fff工程新建IP的OOC结果
注:以上问题只在IP采用xci格式存在,如IP采用xcix压缩包格式,则没有该问题。
2、原因
通过分析IP的xci文件,发现Vivado2022生成的IP xci文件中,outputdir的路径对于Vivado2018有更改。
VIvado2018的xci路径如下:
说明Vivado2018 OOC综合的文件存放在xci所在目录,这与工程实际是相符的。
Vivado2022的xci路径如下:
说明Vivado2022 OOC综合的文件存放在工程文件下.gen目录,与xci文件不在同一个目录,而在拷贝IP后xci文件中的outputdir不会更改,所以会出现OOC综合后产生原工程的gch_130t8.gen文件
3、解决方法
以下方法无效:
- 尝试reset IP后重新OOC,无效;
- 尝试reset IP后remove IP再重新添加,无效;
- 尝试reset projet后重新编译,无效;
以下方法有效:
1、按2中的描述修改xci文件中的outputdir,将路径修改。如:
改为:(vivado2019及之前版本默认路径)
或者(vivado2022及之后版本工程内默认路径)
设计者可根据OOC存放路径的需求更改,但该方式不适合大量IP修改,如工程中有大量IP来自于另一个工程,那得累死。
2、 采用xcix模式,该模式下vivado直接将IP得xci和OOC综合的文件生成为一个xcix压缩包,只有一个文件,IP的管理变得更为简洁,但其文件大小比较大,压缩包不是文本文件,不利于版本管理(如git进行管理)。同时设计者需要查看IP内部文件状态比比较麻烦,必须改为rar格式再解压。
xcix的打开方式:勾选下图中的Use Core Containers for IP
点击应用后一般软件会提示是否转换,点击是即可。如软件未提示,可在tcl命令中输入convert_ips命令进行转换,转换后IP全部改为xcix文件,并且没有文件夹,
未转换之前版本如下:
3、如需要采用xci模式,先用2的方法将IP转为xcix,再设置关闭Use Core Containers for IP,改为xci模式并完成转换,查看ip xci中的outputdir,已全部改为当前工程.gen路径。后在进行代码库管理时,就不需要将.gen文件进行管理,IP就只有一个xci文本文件,极大的缩小了代码库。