Intel® High Level Design
Support for Intel® High Level Synthesis Compiler, DSP Builder, OneAPI for Intel® FPGAs, Intel® FPGA SDK for OpenCL™
663 Discussions

Error after first successful run of OpenCL application: acl_hal_mmd.c:1393:assert failure: Failed to initialize kernel interface

JButt5
Novice
1,307 Views

I implemented an example application followed the approach that is described in this publication which is to modify the board_spec.xml file to make some external FPGA I/O ports available to the OpenCL kernel via a channel.

First of all it works like a charm, however just for a first run. After having reconfigured the FPGA with the configuration, I'm unable to re-run it or to even run aocl diagnose. The error I receive is:

 

FAILED to read auto-discovery string at byte 0. Full auto-discovery string value is   acl_hal_mmd.c:1393:assert failure: Failed to initialize kernel interface

I guess that this might be because after loading the modified FPGA configuration, it is not recognized by the aocl runtime anymore. Can anyone shed some light on what has to be done to make it work? Always re-powering the FPGA board is a quite bad workaround ;)

 

I'm using a Terasic DE10 Standard board, below you'll find the modified board_spec.xml and Qsys System:

 

<?xml version="1.0"?> <board version="14.1" name="de10_standard_sharedonly">   <compile project="top" revision="top" qsys_file="system.qsys" generic_kernel="0"><generate cmd="ip-generate --component-file=system.qsys --file-set=QUARTUS_SYNTH --output-directory=system/synthesis --report-file=qip:system/synthesis/system.qip --jvm-max-heap-size=3G"/><synthesize cmd="quartus_sh --flow compile top -c top"/><auto_migrate platform_type="c5soc" ><include fixes=""/><exclude fixes=""/></auto_migrate></compile> <device device_model="5csxfc6d6f31c8es_dm.xml"><used_resources><alms num="1080"/><!-- ALMs used for LUT logic + ALMs used for LUT logic and registers--><ffs num="1908"/><dsps num="0"/><rams num="20"/></used_resources></device>   <!-- One DDR3-800 DIMM, 256-bit data --> <global_mem max_bandwidth="6400"> <interface name="acl_iface" port="kernel_mem0" type="slave" width="256" maxburst="16" latency="240" address="0x00000000" size="0x40000000"/> </global_mem> <host> <kernel_config start="0x00000000" size="0x0100000"/></host><interfaces> <interface name="acl_iface" port="kernel_cra" type="master" width="64" misc="0"/> <interface name="acl_iface" port="kernel_irq" type="irq" width="1"/> <kernel_clk_reset clk="acl_iface.kernel_clk" clk2x="acl_iface.kernel_clk2x" reset="acl_iface.kernel_reset"/> </interfaces>   <!-- Modification: Adding channels --> <channels> <interface name="user_led_ctrl" port="kernel_in" type="streamsink" width="8" chan_id="ch_user_led_ctrl"/> </channels> </board>

DE10ModifiedSystemLEDExamle.png

0 Kudos
3 Replies
Fawaz_Al-Jubori
Employee
993 Views

Hello,

I will investigate the root case of this case and let you know the result once we get a feedback.

 

Thanks

0 Kudos
Fawaz_Al-Jubori
Employee
993 Views

Hello,

If the ACL_PCIE_USE_JTAG_PROGRAMMING environment variable is set (to force JTAG programming), does the issue still occur?

 

Also which version of the OpenCL SDK is being used here?

 

That could give a further clue if we have seen this issue with certain versions in the past. This might have something to do with the board containing a bitstream built from a previous version of Quartus.

 

Thanks

0 Kudos
JButt5
Novice
993 Views

Hello,

 

Thank you for your support. However, the problem went away after the project was changed a bit from the first test to the actual target implementation – I can't reproduce the error anymore. However for the records, I'm working with the current 18.1. Standard Version SDK

0 Kudos
Reply