cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
cerilet
Explorer
Explorer
2,582 Views
Registered: ‎08-26-2014

Unable to move functions to hardware in SDSoC

Hello,

 

I am having problems in moving a function to hardware in a C++ project.

 

I tried to build the function using Vivado HLS and it run the synthesis without any problem. This is the function call:

 

typedef float data_t; // I use data_t to change between double and single floating point quickly

void control_mmc(data_t (&ref)[9], data_t (&current)[6],
	const unsigned int n, data_t (&Vtop)[4], data_t (&Vbot)[4], data_t (&Ucu)[3], data_t (&Ucl)[3],
	 int (&Swtop)[4], int (&Swbot)[4], int branch);

ref, current, n and branch are inputs, whereas all others are inputs and outputs at the same time (I use the input value and update it inside the function).

 

The output of the console is this:

 

C:\Xilinx\Projects\HVDC_MMC\Release>exit /b 0 
INFO: [SDSoC 0-0] Performing accelerator source linting for control_mmc
INFO: [SDSoC 0-0] Performing pragma generation

C:\Xilinx\Projects\HVDC_MMC\Release>C:\Xilinx\SDx\2016.4\llvm-clang\win64\llvm\bin\clang.exe -E -IC:/Xilinx/Projects/HVDC_MMC/src -Wall -fmessage-length=0 -MMD -MP -D __SDSCC__ -m32 -I C:/Xilinx/SDx/2016.4/aarch32-none/include -IC:/Xilinx/Projects/HVDC_MMC/src -D __SDSVHLS__ -target arm-none-eabi -mcpu=cortex-a9 -mfpu=vfpv3 -O0 -g -w -I C:/Xilinx/SDx/2016.4/aarch32-none/include -I C:/Xilinx/SDx/2016.4/Vivado_HLS/include -IC:/Xilinx/SDx/2016.4/SDK/gnu/aarch32/nt/gcc-arm-none-eabi/arm-none-eabi/include/c++/5.2.1 -IC:/Xilinx/SDx/2016.4/SDK/gnu/aarch32/nt/gcc-arm-none-eabi/arm-none-eabi/include/c++/5.2.1/arm-none-eabi -IC:/Xilinx/SDx/2016.4/SDK/gnu/aarch32/nt/gcc-arm-none-eabi/arm-none-eabi/include/c++/5.2.1/backward -IC:/Xilinx/SDx/2016.4/SDK/gnu/aarch32/nt/gcc-arm-none-eabi/lib/gcc/arm-none-eabi/5.2.1/include -IC:/Xilinx/SDx/2016.4/SDK/gnu/aarch32/nt/gcc-arm-none-eabi/lib/gcc/arm-none-eabi/5.2.1/include-fixed -IC:/Xilinx/SDx/2016.4/SDK/gnu/aarch32/nt/gcc-arm-none-eabi/arm-none-eabi/include -IC:/Xilinx/SDx/2016.4/SDK/gnu/aarch32/nt/gcc-arm-none-eabi/arm-none-eabi/libc/usr/include C:/Xilinx/Projects/HVDC_MMC/src/main.cpp -o C:/Xilinx/Projects/HVDC_MMC/Release/_sds/vhls/main_pp.cpp 

C:\Xilinx\Projects\HVDC_MMC\Release>exit /b 0 
INFO: [SDSoC 0-0] Successfully generated tcl script: C:/Xilinx/Projects/HVDC_MMC/Release/_sds/vhls/control_mmc.tcl
INFO: [SDSoC 0-0] Moving function control_mmc to Programmable Logic
ERROR: [SDSoC 0-0] Problem detected in Vivado HLS run - unable to find solution implementation directory for control_mmc C:/Xilinx/Projects/HVDC_MMC/Release/_sds/vhls/control_mmc/solution/impl/ip. For possible causes, review C:/Xilinx/Projects/HVDC_MMC/Release/_sds/vhls/control_mmc/solution/solution.log or C:/Xilinx/Projects/HVDC_MMC/Release/_sds/vhls/vivado_hls.log.
C:/Xilinx/Projects/HVDC_MMC/Release/_sds/vhls/vivado_hls.log (last 20 lines):
INFO: [HLS 200-10] For user 'superviseur' on host 'po1-ne-gei-a106' (Windows NT_amd64 version 6.1) on Mon Jun 26 14:30:17 +0200 2017
INFO: [HLS 200-10] In directory 'C:/Xilinx/Projects/HVDC_MMC/Release/_sds/vhls'
INFO: [HLS 200-10] Creating and opening project 'C:/Xilinx/Projects/HVDC_MMC/Release/_sds/vhls/control_mmc'.
INFO: [HLS 200-10] Adding design file 'C:/Xilinx/Projects/HVDC_MMC/src/main.cpp' to the project
INFO: [HLS 200-10] Creating and opening solution 'C:/Xilinx/Projects/HVDC_MMC/Release/_sds/vhls/control_mmc/solution'.
INFO: [HLS 200-10] Cleaning up the solution database.
INFO: [HLS 200-10] Setting target device to ' xc7z020clg484-1 '
INFO: [SYN 201-201] Setting up clock 'default' with a period of 10ns.
INFO: [HLS 200-10] Analyzing design file 'C:/Xilinx/Projects/HVDC_MMC/src/main.cpp' ... 
Source processing failed.
    while executing
"source C:/Xilinx/Projects/HVDC_MMC/Release/_sds/vhls/control_mmc_run.tcl"
    invoked from within
"hls::main C:/Xilinx/Projects/HVDC_MMC/Release/_sds/vhls/control_mmc_run.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel 1 hls::main {*}$args"
    (procedure "hls_proc" line 5)
    invoked from within
"hls_proc $argv"
sds++ log file saved as C:/Xilinx/Projects/HVDC_MMC/Release/_sds/reports/sds_main.log
ERROR: [SDSoC 0-0] Build failed

make: *** [src/main.o] Erreur 1

Can someone help me find where is the problem?

 

Many thanks,

 

Cerilet

0 Kudos
0 Replies