Skip to content

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

@hakunom

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?

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