VIVADO报错:ERROR: ‘2304171459‘ is an invalid argument. Please specify an integer value.

文章描述了一个在使用官方例程时遇到的Vivado编译错误,错误涉及core_revision参数。问题源于自2022年起HLS工具中ip_version的设置导致的32位整数溢出。官方提供了补丁包Y2K22_patch,用户需下载、解压并按照README指示在Vivado安装目录下运行Python脚本来应用补丁,从而解决IP生成失败的问题。

问题描述

使用官方例程时,编译发生报错

ERROR: '2304171459' is an invalid argument. Please specify an integer value.
    while executing
"rdi::set_property core_revision 2304171459 {component component_1}"
    invoked from within
"set_property core_revision $Revision $core"
    (file "run_ippack.tcl" line 976)
INFO: [Common 17-206] Exiting Vivado at Mon Apr 17 15:00:02 2023...
ERROR: [IMPL 213-28] Failed to generate IP.

问题解决

该问题已被官方修复,在官网论坛下载补丁并根据README进行操作即可。
下载地址:https://support.xilinx.com/s/article/76960?language=en_US

以下是官方描述的问题原因:

自 2022 年 1 月 1 日起,Vivado HLS 和 Vitis HLS 使用的export_ip命令将无法导出 IP。
在后台使用 HLS 的 Vivado 和 Vitis 工具也会受到此问题的影响。HLS 工具以 YYMMDDHHMM 格式设置ip_version,此值作为有符号整数(32 位)进行访问,这会导致溢出并生成下面的错误(或类似错误)。Xilinx 建议所有客户应用此补丁以确保安全。

具体步骤

1. 在上述网址下载patch包,可以参考patch包中的README,如何使用解释的也非常详细。

2. 解压到vivado的安装目录,注意解压后的y2k22_patch文件夹放在安装路径的根目录下,即<安装路径>/xilinx/下,放错了就无法成功安装了

<think>我们正在解决Vivado报错“cannot open include file 'sata.vh'”的问题。 根据之前的讨论,我们知道这个错误通常是由于Vivado在编译时找不到头文件(include文件)导致的。 解决方法主要是确保头文件的路径被正确添加到Vivado工程的包含路径中。 步骤: 1. 确认头文件'sata.vh'在工程中的位置。假设它位于以下路径之一: - 相对于工程根目录的路径:例如 `./include/sata.vh` 或 `../rtl/include/sata.vh` - 绝对路径:例如 `D:/project/rtl/include/sata.vh` 2. 使用Tcl命令将包含该头文件的目录添加到当前文件集的包含路径中。 具体操作: 方法一:在Vivado Tcl控制台中执行(或者在Tcl脚本中) set_property include_dirs { <包含sata.vh的目录路径> } [current_fileset] 例如,如果sata.vh位于工程根目录下的include文件夹中: set_property include_dirs { ./include } [current_fileset] 如果位于上一级目录的rtl/include中: set_property include_dirs { ../rtl/include } [current_fileset] 或者使用绝对路径(注意Windows路径使用正斜杠或双反斜杠): set_property include_dirs { D:/project/rtl/include } [current_fileset] 3. 重新运行综合。 方法二:如果工程还未创建,或者需要在重建工程时设置,可以在创建工程的Tcl脚本中添加设置包含路径的命令。 注意:该命令应在创建工程和添加文件之后,在综合之前。 4. 验证设置:在Tcl控制台中输入以下命令检查包含路径是否添加成功: get_property include_dirs [current_fileset] 另外,还需要检查源文件中`include语句的路径是否正确。在源文件中,应该使用相对于包含目录的路径,或者直接使用文件名(如果该文件就在包含目录中)。 例如,在源文件中有: `include "sata.vh" 这样,Vivado会在包含路径中查找sata.vh。 如果头文件在包含路径的子目录中,比如包含路径是`./include`,而sata.vh在`./include/sata`中,则应该写为: `include "sata/sata.vh" 注意事项: - 路径中不要有中文字符或空格,以避免不必要的问题。 - 设置后如果还有问题,可以尝试重启Vivado或重置综合。 根据引用[1]中的错误信息,我们看到是`spi_top.v`中包含了`spi_inc.vh`时出错。同理,对于'sata.vh',我们需要确保包含'sata.vh'的目录在包含路径中。 因此,针对用户当前的错误,我们按照上述步骤设置包含'sata.vh'的目录即可。 如果用户不确定头文件的位置,可以使用以下Tcl命令在工程中搜索文件(但需要先添加文件到工程): get_files -all -filter {NAME =~ *sata.vh} 或者使用操作系统命令在工程目录中查找(在Tcl中): exec dir /s /b *.vh (Windows) exec find . -name sata.vh (Linux,如果Vivado运行在Linux下) 但是,请注意,在Vivado Tcl中执行系统命令可能受到环境限制,建议在操作系统中搜索。 最后,重新综合工程。 相关问题: 1. 如何添加多个包含路径? 2. 如何为不同的文件集(如仿真文件集)设置包含路径? 3. Vivado中如何设置全局宏定义? 4. 如何解决Vivado中文件路径包含空格导致的问题? </think> ### 解决Vivado报错"cannot open include file 'sata.vh'"的方法 该错误表明Vivado在编译时无法找到头文件`sata.vh`。以下是逐步解决方案: #### 1. **确认头文件位置** - 在文件系统中定位`sata.vh`的物理路径(如`D:/project/rtl/include/sata.vh`) -Vivado Tcl控制台使用搜索命令验证: ```tcl get_files -all -filter {NAME =~ *sata.vh} ``` #### 2. **添加包含路径** 在Tcl控制台或脚本中执行: ```tcl # 单一路径设置 set_property include_dirs { D:/project/rtl/include } [current_fileset] # 多路径设置(空格分隔) set_property include_dirs { ./src/headers ../shared/includes D:/libs/common } [current_fileset] ``` **关键说明**: - 路径使用`/`代替`\`避免转义问题 - `[current_fileset]`通常指向`sources_1`(设计源文件集) #### 3. **验证路径配置** ```tcl # 检查已设置的路径 get_property include_dirs [current_fileset] ``` #### 4. **路径设置时机** - **工程已打开**:在综合前直接执行命令 - **Tcl重建工程**:在`add_files`之后添加包含路径命令: ```tcl create_project project_1 add_files { ... } ;# 添加设计文件 set_property include_dirs { ... } [current_fileset] ;# ← 关键位置 launch_runs synth_1 ``` #### 5. **特殊情况处理** - **路径含空格**:使用`{}`包裹路径 ```tcl set_property include_dirs { {C:/My Project/headers} } [current_fileset] ``` - **仿真专用路径**:指定仿真文件集 ```tcl set_property include_dirs { ./test_inc } [get_filesets sim_1] ``` #### 6. **源代码检查** 确保头文件引用格式正确(无多余路径): ```verilog `include "sata.vh" // 正确(搜索包含路径) `include "wrong_path/sata.vh" // 错误(硬编码路径) ``` > **典型错误原因**: > 头文件未被添加到工程搜索路径,导致编译器无法解析`include指令[^1]。 执行后重新运行综合,通常可解决该错误。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值