Vivado提供了以IP为中心的设计流程。除了Vivado自带的IP Catalog之外,还可以通过以下途径扩展IP Catalog。比如:将System Generator模型以IP形式导入到IP Catalog之中;将Vitis HLS综合后的工程导入IP Catalog之中;通过Vivado IP Packager封装用户IP并添加到IP Catalog之中;将第三方IP导入IP Catalog之中。下图很好地体现了这一设计理念(图片来源:Figure 1-1, ug896)。
正因此,对IP的管理在Vivado工程中就变得很重要,无论是使用Project模式还是Non-project模式。在Vivado 2015.3之前的版本中,生成IP时,每个IP都有一个独立的文件目录。例如,设计中有两个IP:char_fifo和clk_core,那么在ip目录(<project_name> .srcs\sources_1\ip)下就会有如下图左测所示的两个目录。同时,如果是在Vivado图形用户界面下,可以看到下图右侧所示的目录,这些相关的文件其实就位于char_fifo这个文件夹下。在这些文件中,一个非常重要的文件是.xci文件,xci是Xilinx Core Instance的缩写。对于IP,我们添加入工程的其实就是.xci文件。
从Vivado 2015.3开始,IP开始支持.xcix文件。本质上.xcix是一个二进制压缩文件,包含所有原先.xci形式的IP生成的所有文件。此时,每个IP以.xcix的形式出现,不再有独立的文件目录,如下图左侧所示,但在Vivado图形用户界面下显示的内容并没有差异,如下图右侧所示。
使用.xcix的最大好处是简化了IP的管理,添加IP时,直接选中所有的.xcix添加即可,而不用一个目录一个目录地找到.xci然后添加。同时,由于只有.xcix文件,版本管理也变得容易了许多。采用.xcix时,Vivado会把一些支持文件如实例化文件、仿真用到的文件、第三方综合工具用到的文件等统一放到<project_name>.ip_user_files目录下。
如果需要使用.xcix文件,只需在创建工程后,点击Project Settings,如下图所示,选中其中的红色方框即可。.xcix的形式有个名称叫Core Containers。
对于已经生成的IP,可以很容易在.xci和.xcix两种模式下切换,如下图所示,只需选中相应的IP,点击右键,选择Disable/Enable Core Container即可。相应的Tcl命令是convert_ips。使用Tcl命令的好处是可以一个命令完成所有IP的转换。