Skip to content

How to Run SYCL Binaries with ASE: Handling UR_RESULT_ERROR_INVALID_BINARY #170

Description

@hakunom

When using ASE for co-simulation with a SYCL-based FPGA application, which binary should be executed?

I successfully started the ASE hardware-side simulator using run-ase.sh:

$ ./ase/run-ase.sh /hls-samples/Tutorials/Features/ac_int ofs_my_board
:::
To compile manually:
/opt/Altera/oneapi/2025.0/compiler/2025.0/bin/icpx -I../../../../../hls-samples/include -fintelfpga -Wall -qactypes -DFPGA_HARDWARE -c ../../../../../hls-samples/Tutorials/Features/ac_int/src/ac_int.cpp -o CMakeFiles/fpga.dir/src/ac_int.cpp.o

To link manually:
/opt/Altera/oneapi/2025.0/compiler/2025.0/bin/icpx -fintelfpga -qactypes -Xshardware -Xstarget=xxx:ofs_my_board -Xsno-env-check -reuse-exe=xxx/ase_sim-my_board-6t1pa9/kernel/ofs_my_board/ac_int.fpga -o ac_int.fpga CMakeFiles/fpga.dir/src/ac_int.cpp.o
:::
  [SIM]  ASE lock file .ase_ready.pid written in work directory
  [SIM]  ** ATTENTION : BEFORE running the software application **
  [SIM]  Set env(ASE_WORKDIR) in terminal where application will run (copy-and-paste) =>
  [SIM]  $SHELL   | Run:
  [SIM]  ---------+---------------------------------------------------
  [SIM]  bash/zsh | export ASE_WORKDIR=xxx
  [SIM]  tcsh/csh | setenv ASE_WORKDIR xxx
  [SIM]  For any other $SHELL, consult your Linux administrator
  [SIM]
  [SIM]  Ready for simulation...
  [SIM]  Press CTRL-C to close simulator...

Since the SYCL compiler (oneapi-base-toolkit 2025.0) uses the -Xsno-env-check flag during ASE compilation (visible in compile-kernel.sh), I assumed I could directly run the *.fpga binary.

However, upon doing so, I encountered the following SYCL host exception:

$ cd ase_sim-my_board-6t1pa9/kernel/ofs_my_board
$ export ASE_WORKDIR=xxx
$ export CL_CONTEXT_MPSIM_DEVICE_INTELFPGA=1
$ export INTELFPGA_SIM_DEVICE_SPEC_DIR=ac_int.fpga.prj
$ ./ac_int.fpga
Running on device: SimulatorDevice : Multi-process Simulator (aclmsim0)
Caught a SYCL host exception:
Native API failed. Native API returns: 7 (UR_RESULT_ERROR_INVALID_BINARY)
terminate called after throwing an instance of 'sycl::_V1::exception'
  what():  Native API failed. Native API returns: 7 (UR_RESULT_ERROR_INVALID_BINARY)

What is the correct binary to run when performing co-simulation with ASE?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions