解决 Vitis HLS 无法找到源文件的错误

解决 Vitis HLS 无法找到源文件的错误

错误分析

根据您提供的日志,Vitis HLS 在执行时遇到了以下关键错误:

WARNING: [HLS 200-40] Cannot find design file 'resnet18_0325.cpp'
WARNING: [HLS 200-40] Cannot find source file resnet18_0325.cpp; skipping it.
ERROR: [HLS 200-70] Cannot find any design unit to elaborate.

错误原因:Vitis HLS 无法找到您在 hls_run.tcl 脚本中指定的源代码文件 resnet18_0325.cpp。由于找不到任何源文件,HLS 无法进行综合设计,导致编译过程失败。

诊断步骤

在解决问题之前,让我们先进行一些诊断步骤:

1. 检查文件是否存在

首先,检查 resnet18_0325.cpp 文件是否存在于您的项目目录中:

dir E:\0Project\ResNet18_FPGA_Design\HIDA_0325\HIDA_0325\solution1\resnet18_0325.cpp

如果文件不存在,这就是问题的根源。

2. 查看 hls_run.tcl 内容

检查 hls_run.tcl 文件中是如何指定源文件路径的:

type hls_run.tcl

特别注意文件中的 add_files 命令,它指定了 Vitis HLS 应该在哪里寻找源文件。

3. 理解工作目录和相对路径

您当前在以下目录中运行 Vitis HLS:

E:\0Project\ResNet18_FPGA_Design\HIDA_0325\HIDA_0325\solution1

如果 hls_run.tcl 中使用了相对路径,Vitis HLS 将相对于这个目录来解析文件路径。

解决方案

解决方案 1:修改 hls_run.tcl 文件中的路径

打开 hls_run.tcl 文件,找到类似于以下的行:

add_files resnet18_0325.cpp

将其修改为使用绝对路径:

add_files E:/0Project/ResNet18_FPGA_Design/HIDA_0325/HIDA_0325/resnet18_0325.cpp

或者,如果文件位于项目的特定目录中,使用相对于当前目录的正确路径:

add_files ../resnet18_0325.cpp

解决方案 2:创建或移动源文件

如果您确实需要使用 resnet18_0325.cpp 文件,但文件不存在或位于错误的位置:

  1. 创建一个简单的测试文件
    创建一个最小的 C++ 文件,确认路径配置是否正确:

    echo void forward() {} > resnet18_0325.cpp
    

    然后再次运行 Vitis HLS:

    vitis_hls -f hls_run.tcl
    
  2. 移动现有文件
    如果文件已存在但位于其他位置,将其复制或移动到 Vitis HLS 期望的位置。

解决方案 3:修改工作目录

如果您不想修改 Tcl 脚本,可以更改运行 Vitis HLS 的目录:

cd E:\0Project\ResNet18_FPGA_Design\HIDA_0325\HIDA_0325
vitis_hls -f solution1/hls_run.tcl

确保您切换到包含 resnet18_0325.cpp 文件的目录,或者其相对路径能够正确解析的目录。

完整的 hls_run.tcl 示例

以下是一个可能的 hls_run.tcl 文件示例,使用绝对路径确保文件能够被正确找到:

open_project HIDA_0325
set_top forward
add_files E:/0Project/ResNet18_FPGA_Design/HIDA_0325/HIDA_0325/resnet18_0325.cpp
open_solution solution1 -flow_target vivado
set_part xcvu11p-flga2577-1-e
create_clock -period 10 -name default
csynth_design
exit

Vitis HLS 项目结构最佳实践

为了避免将来出现类似问题,建议采用以下项目结构:

ProjectName/
├── src/                  # 源代码文件
│   ├── resnet18_0325.cpp
│   └── resnet18_0325.h
├── tb/                   # 测试台文件
│   └── tb_resnet18.cpp
├── scripts/              # TCL 脚本
│   └── hls_run.tcl
└── solution1/            # 解决方案目录

然后在 TCL 脚本中使用相对路径:

add_files ../src/resnet18_0325.cpp
add_files -tb ../tb/tb_resnet18.cpp

这种结构使项目更加清晰,并且易于维护。

验证解决方案

完成上述任何解决方案后,再次运行 Vitis HLS 命令:

vitis_hls -f hls_run.tcl

如果成功,您应该不会再看到 Cannot find design file 错误,而是会看到 Vitis HLS 开始进行设计综合的消息。

如果问题仍然存在

如果尝试上述解决方案后问题仍然存在,请检查:

  1. 文件名拼写:确保文件名的大小写和拼写完全正确
  2. 文件权限:确保 Vitis HLS 有权限读取该文件
  3. 项目设置:使用 Vitis HLS GUI 检查项目设置中的源文件配置
  4. Vitis HLS 版本:确认您使用的 Vitis HLS 版本与项目兼容

通过以上步骤,您应该能够解决 Vitis HLS 无法找到源文件的问题,并成功进行设计综合。

错误分析

根据您提供的日志,Vitis HLS 在执行时遇到了以下关键错误:

WARNING: [HLS 200-40] Cannot find design file 'resnet18_0325.cpp'
WARNING: [HLS 200-40] Cannot find source file resnet18_0325.cpp; skipping it.
ERROR: [HLS 200-70] Cannot find any design unit to elaborate.

错误原因:Vitis HLS 无法找到您在 hls_run.tcl 脚本中指定的源代码文件 resnet18_0325.cpp。由于找不到任何源文件,HLS 无法进行综合设计,导致编译过程失败。

诊断步骤

在解决问题之前,让我们先进行一些诊断步骤:

1. 检查文件是否存在

首先,检查 resnet18_0325.cpp 文件是否存在于您的项目目录中:

dir E:\0Project\ResNet18_FPGA_Design\HIDA_0325\HIDA_0325\solution1\resnet18_0325.cpp

如果文件不存在,这就是问题的根源。

2. 查看 hls_run.tcl 内容

检查 hls_run.tcl 文件中是如何指定源文件路径的:

type hls_run.tcl

特别注意文件中的 add_files 命令,它指定了 Vitis HLS 应该在哪里寻找源文件。

3. 理解工作目录和相对路径

您当前在以下目录中运行 Vitis HLS:

E:\0Project\ResNet18_FPGA_Design\HIDA_0325\HIDA_0325\solution1

如果 hls_run.tcl 中使用了相对路径,Vitis HLS 将相对于这个目录来解析文件路径。

解决方案

解决方案 1:修改 hls_run.tcl 文件中的路径

打开 hls_run.tcl 文件,找到类似于以下的行:

add_files resnet18_0325.cpp

将其修改为使用绝对路径:

add_files E:/0Project/ResNet18_FPGA_Design/HIDA_0325/HIDA_0325/resnet18_0325.cpp

或者,如果文件位于项目的特定目录中,使用相对于当前目录的正确路径:

add_files ../resnet18_0325.cpp

解决方案 2:创建或移动源文件

如果您确实需要使用 resnet18_0325.cpp 文件,但文件不存在或位于错误的位置:

  1. 创建一个简单的测试文件
    创建一个最小的 C++ 文件,确认路径配置是否正确:

    echo void forward() {} > resnet18_0325.cpp
    

    然后再次运行 Vitis HLS:

    vitis_hls -f hls_run.tcl
    
  2. 移动现有文件
    如果文件已存在但位于其他位置,将其复制或移动到 Vitis HLS 期望的位置。

解决方案 3:修改工作目录

如果您不想修改 Tcl 脚本,可以更改运行 Vitis HLS 的目录:

cd E:\0Project\ResNet18_FPGA_Design\HIDA_0325\HIDA_0325
vitis_hls -f solution1/hls_run.tcl

确保您切换到包含 resnet18_0325.cpp 文件的目录,或者其相对路径能够正确解析的目录。

完整的 hls_run.tcl 示例

以下是一个可能的 hls_run.tcl 文件示例,使用绝对路径确保文件能够被正确找到:

open_project HIDA_0325
set_top forward
add_files E:/0Project/ResNet18_FPGA_Design/HIDA_0325/HIDA_0325/resnet18_0325.cpp
open_solution solution1 -flow_target vivado
set_part xcvu11p-flga2577-1-e
create_clock -period 10 -name default
csynth_design
exit

Vitis HLS 项目结构最佳实践

为了避免将来出现类似问题,建议采用以下项目结构:

ProjectName/
├── src/                  # 源代码文件
│   ├── resnet18_0325.cpp
│   └── resnet18_0325.h
├── tb/                   # 测试台文件
│   └── tb_resnet18.cpp
├── scripts/              # TCL 脚本
│   └── hls_run.tcl
└── solution1/            # 解决方案目录

然后在 TCL 脚本中使用相对路径:

add_files ../src/resnet18_0325.cpp
add_files -tb ../tb/tb_resnet18.cpp

这种结构使项目更加清晰,并且易于维护。

验证解决方案

完成上述任何解决方案后,再次运行 Vitis HLS 命令:

vitis_hls -f hls_run.tcl

如果成功,您应该不会再看到 Cannot find design file 错误,而是会看到 Vitis HLS 开始进行设计综合的消息。

如果问题仍然存在

如果尝试上述解决方案后问题仍然存在,请检查:

  1. 文件名拼写:确保文件名的大小写和拼写完全正确
  2. 文件权限:确保 Vitis HLS 有权限读取该文件
  3. 项目设置:使用 Vitis HLS GUI 检查项目设置中的源文件配置
  4. Vitis HLS 版本:确认您使用的 Vitis HLS 版本与项目兼容

通过以上步骤,您应该能够解决 Vitis HLS 无法找到源文件的问题,并成功进行设计综合。

你可能感兴趣的:(HLS,fpga开发,c++)