Knowledge Base Article
Why does the Intel® HLS compiler crash when the explicitly requested Load-Store Units (LSUs) is used within a 3-deep nest?
Description
Due to a problem in the Intel® High Level Synthesis Compiler version 20.1 and earlier, you may see the fatal error message below when you run the make files. This is because the Intel HLS compiler will crash if the variable-latency master is accessed using an explicitly requested Load-Store Units (LSUs) in the 3-deep loop nest.
Stack dump:
/lib64/libc.so.6(__libc_start_main 0x100)[0x7f6e050d6d20]
/<quartus_install_directory>/../../llvm/bin/aocl-opt( 0x2b701)[0x7f6e0cc47701]
HLS Main Optimizer FAILED.
make: *** [dut] ƒGƒ‰ [ 1
Resolution
To workaround the problem, add the keyword “volatile” to the function argument. For example:
void
function <name>(hls_stable_argument <name> <argument>,
const volatile *<nested_argument>, // “volatile” added here)
{ … }
This problem is fixed starting with the Intel® High Level Synthesis Compiler version 20.2.