oneapi-src / oneapi-src/oneAPI-samples

FPGA tests don't all work using Quartus

Abierto
#1,355 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug
Lenguaje dominante
C++
Estrellas
1.2k
Forks
745
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Summary

The board_test example (and other examples I've tested) from DirectProgramming/C++SYCL_FPGA/ReferenceDesigns fails on the part of the test that tries to extract the reference frequency using the aocl binedit functionality.

Version

Report oneAPI Toolkit version and oneAPI Sample version or hash.

oneAPI version 2022.0.2
quartus version 20.4
oneAPI sample hash f6660eef7007d0acb7de1bce9c6e5844c6615a80

Environment

Intel Stratix 10, Bittware N520 MX

Steps to reproduce

cd ~/oneAPI-samples/DirectProgramming/C++SYCL_FPGA/ReferenceDesigns/board_test
mkdir build
cd build
cmake .. -DFPGA_BOARD=s10mx:p520_hpc_m210h_g3x16
make fpga
./board_test.fpga

Observed behavior

When compiled and run the board_test.fpga executable fails, with this output at the end of the run:

*****************************************************************
*******************  Kernel Clock Frequency Test  ***************
*****************************************************************

terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_M_construct null not valid

Digging into the code it is because this functionality:

   std::string temp_cmd = "aocl binedit " + kBinaryName + " print .acl.quartus_report";
   const char *open_cmd_rep = temp_cmd.c_str();

Doesn't actually work. The executable (board_test.fpga) does not have anything to report when using 1aocl binedit board_test.fpga list, i.e. it produces an empty output:

Sections in package file:

This can be fixed by changing the command to this:

   std::string temp_cmd = "aocl binedit " + kBinaryName + ".prj/base.aocx" + " print .acl.quartus_report";
   const char *open_cmd_rep = temp_cmd.c_str();

Which then can be used to extract the reference FPGA frequency.

I can commit this as a pull request.

Expected behavior

The board_test to run without issues.

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comience en DirectProgramming/C++SYCL_FPGA/ReferenceDesigns/board_test y busque el uso de kBinaryName o aocl binedit mostrado en el informe. Reproduzca el problema con los comandos de CMake y make proporcionados en la configuración de FPGA indicada y, después, verifique que board_test.fpga complete el Kernel Clock Frequency Test sin el logic_error e informe de la frecuencia de referencia.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
cmake, cpp
Área
embedded-iot, testing-qa
Tipo de issue
Error
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.