我正在使用 Ubuntu 16.04、Xilinx Vitis(带有 Vivado 2019.2),以便通过综合等生成 xclbin 文件。
我根据 4x AXI 的需求创建了一个 Vitis,然后是 Vivado“空应用程序”项目。我已将 Verilog 代码文件添加到 GUI 中的 Vivado 项目中。
我已成功通过 GUI 生成 RTL 内核,然后在 Vitis GUI 中生成 xclbin 文件。
为了使用更新的代码文件,从命令行,使用 tcl 来执行此操作 - 我尝试从 Vivado 生成 RTL 内核进程中重复相同的 tcl 命令,并且在“package_project”运行几乎结束时,它失败了并且它写道: 错误:[常见 17-161] 为“对象”指定的选项值“无效”。信息:[常见 17-206] 于 2020 年 3 月 11 日星期三 20:22:01 退出 Vivado...
然后没有生成xo文件,整个Vitis xclbin生成无法启动。
如果我尝试在 GUI tcl 控制台中一一执行相同的命令,一切都会正常工作。
我缺少什么?
另一个问题,在“package_project”过程的开始,我的许多 Verilog 代码文件都没有被打包,因为它们没有被顶层模块引用:
WARNING: [IP_Flow 19-3833] Unreferenced file from the top module is not packaged: '/home/ubuntu/workspace/vitis_kernel_wizard_1/vivado_rtl_kernel/vivado_rtl_kernel.srcs/sources_1/ip/rtl_kernel_wizard_1/rtl_kernel_wizard_1.xci'.
WARNING: [IP_Flow 19-3833] Unreferenced file from the top module is not packaged: '/vitis_src/axi_infrastructure_v1_1_0.vh'.
WARNING: [IP_Flow 19-3833] Unreferenced file from the top module is not packaged: /vitis_src/rtl_kernel_wizard_1.v'.
WARNING: [IP_Flow 19-3833] Unreferenced file from the top module is not packaged: ......
WARNING: [IP_Flow 19-3833] Unreferenced file from the top module is not packaged: ......
WARNING: [IP_Flow 19-3833] Unreferenced file from the top module is not packaged: ......
WARNING: [IP_Flow 19-3833] Unreferenced file from the top module is not packaged:
还有很多..
我已经正确设置了顶部文件,它们都在顶部和向下引用..它也通过GUI“生成RTL内核”过程工作..
可能是什么问题?
注意:我也在 Xilinx 论坛中发布了这个问题。仍然没有得到答复。一定能在这里找到它。
非常感谢您的帮助。
根据 70646 - 2018.2 Vivado IP 流程 - 打包的用户 IP 不提供在条件语句下实例化的子核 IP
This is a side effect of the issue covered in (Xilinx Answer 69320). The hierarchy parser evaluates the conditional statements when determining which files are to be sent to the IP Packager.
解析器代码仅使用基于当前层次结构级别的泛型和参数的默认值。
因此,如果 IP 核的使用依赖于非默认值,则它不会被发送到 IP Packager 以添加到文件组中。
在大多数情况下,您可以通过将“层次结构更新”选项设置为“自动更新,手动编译顺序”来解决此问题。
要在 Tcl 脚本中执行此操作,请使用以下命令:
set_property source_mgmt_mode 仅显示 [当前项目] 使用此选项,Vivado Hierarchy Source View 中的层次结构仍将根据泛型和参数的默认值显示,但项目中的所有源文件都将发送到 IP 打包器。
使用此参数的缺点是,如果项目中有任何文件未用于所有参数值,它们也会被添加到打包的 IP 中。
您应该手动将这些未使用的文件从打包IP中的文件组中删除。
我发现,当我尝试上述操作时,打包程序严重失败,因此我让打包程序执行它想做的任何操作,然后在最后添加类似于以下内容的内容(假设环境变量包含文件列表,但该位可以替换带设定变量):
foreach ip_file [lib_var_from_env "IP_SRCS"] {
ipx::add_file $ip_file [ipx::get_file_groups xilinx_anylanguagesynthesis -of_objects [ipx::current_core]]
ipx::add_file $ip_file [ipx::get_file_groups xilinx_anylanguagebehavioralsimulation -of_objects [ipx::current_core]]
}
foreach ip_file [lib_var_from_env "IP_SIM_SRCS"] {
ipx::add_file $ip_file [ipx::get_file_groups xilinx_anylanguagebehavioralsimulation -of_objects [ipx::current_core]]
}