AR# 70646

|

2018.2 Vivado IP 流 — 打包的用户 IP 不提供在条件语句下实例化的子核 IP

描述

我把设计打包在 Vivado 2017.x 中,采用默认自定义参数工作正常。 但如果使用非默认参数,似乎就无法提供 IP 核文件 (.xci),

并报告了那些似乎已经从层级中移出的模块的黑盒。

在 Vivado 2016.4 中完全可以打包和使用该设计,一点问题都没有。


该问题似乎与条件语句有关。丢失的 IP 核只能基于一个类属值或参数值使用。

例如,如果类属为真,代码就会生成一个实例化 IP_CORE_A 的模块 A,如果为假,它就会生成实例化 IP_CORE_B 的模块 B,而且“真”是类属的默认值。


打包设计后,我发现 IP_CORE_B.xci 没有添加至数据包 IP 的任何文件组中。

如果使用需要该 IP 核的非默认自定义值,实现方案就会失败,因为没有封装该内核,无法提供。

解决方案

这是(Xilinx 答复 69320)中所涵盖的问题的负面影响。 在决定将哪些文件发送至 IP 打包器时,层级解析器会对条件语句进行评估。

解析器代码只基于当前层次的层级使用类属及参数的默认值。

因此,如果 IP 核的使用依赖于非默认值,那它就不会被发送至 IP 打包器中,也就不会被添加至文件组。

在大多数情况,您可以通过将“层级升级”选项设置为“自动升级、手动编译命令”来解决该问题。

要在 Tcl 脚本下设置该选项,请使用以下命令:

set_property source_mgmt_mode DisplayOnly [current_project]

有了这个选项,Vivado 层级源视图中的层级仍然会根据类属和参数的默认值显示,但项目中的所有源文件都将被发送给 IP 打包器。

使用该参数的不足之处是:如果项目中有任何文件未用于所有参数值,它们也会被添加至打包的 IP 中。  

应该手动将这些未使用的文件从打包 IP 中的文件组中删除。


在 Vivado 2018.1 中,在参数控制下添加了针对此问题的解决方案。  

要在 Vivado 2018.1 或 2018.2 中使用此修复,请在打开要打包的项目之前,在 Tcl 控制台或 vivado_init.tcl 文件中运行以下命令。

set_param project.handleIPBDInactiveUnits 1

该参数将在 Vivado 2018.3 中设置为默认值。

链接问答记录

相关答复记录

AR# 70646
日期 06/18/2018
状态 Active
Type 已知问题
Tools More Less
People Also Viewed