Jump to content
  • 0

HLS fox simulation


sarpadi

Question

Hi guys,

I am trying to bring up the HLS edge detection design using Vitis HLS 2022.2 on ubuntu 22.04.02. I saw that there are some issues regarding the newer versions of HLS.

So far I believe I managed to synthesize the edge_detect core. I believe the vision library was added correctly with CFLAG (although I haven't tested it on an FPGA) but I keep having trouble with the simulation part. I tried using opencv 4.4.0 and 3.4.16 an I keep getting the same errors

INFO: [SIM 2] *************** CSIM start ***************
INFO: [SIM 4] CSIM will launch GCC as the compiler.
   Compiling ../../../edge_d_test.cpp in debug mode
   Compiling ../../../edge_detect.cpp in debug mode
   Generating csim.exe
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: obj/edge_d_test.o: in function `main':
/media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:11: undefined reference to `cv::imread(cv::String const&, int)'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:12: undefined reference to `cv::Mat::Mat(cv::Mat const&)'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:15: undefined reference to `cv::Mat::Mat()'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:15: undefined reference to `cv::Mat::Mat()'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:15: undefined reference to `cv::Mat::Mat()'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:15: undefined reference to `cv::Mat::Mat()'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:15: undefined reference to `cv::Mat::Mat()'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:16: undefined reference to `cv::cvtColor(cv::_InputArray const&, cv::_OutputArray const&, int, int)'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:17: undefined reference to `cv::Sobel(cv::_InputArray const&, cv::_OutputArray const&, int, int, int, int, double, double, int)'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:18: undefined reference to `cv::Sobel(cv::_InputArray const&, cv::_OutputArray const&, int, int, int, int, double, double, int)'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:19: undefined reference to `cv::convertScaleAbs(cv::_InputArray const&, cv::_OutputArray const&, double, double)'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:20: undefined reference to `cv::convertScaleAbs(cv::_InputArray const&, cv::_OutputArray const&, double, double)'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:21: undefined reference to `cv::imwrite(cv::String const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:22: undefined reference to `cv::imwrite(cv::String const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:38: undefined reference to `cv::imwrite(cv::String const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:41: undefined reference to `cv::imwrite(cv::String const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:15: undefined reference to `cv::Mat::~Mat()'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:15: undefined reference to `cv::Mat::~Mat()'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:15: undefined reference to `cv::Mat::~Mat()'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:15: undefined reference to `cv::Mat::~Mat()'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: /media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:15: undefined reference to `cv::Mat::~Mat()'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: obj/edge_d_test.o:/media/data/work_sarpadi/HLS/edge_detection/edge_detect/solution1/csim/build/../../../edge_d_test.cpp:12: more undefined references to `cv::Mat::~Mat()' follow
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: obj/edge_d_test.o: in function `cv::String::String(char const*)':
/usr/local/include/opencv2/core/cvstd.hpp:602: undefined reference to `cv::String::allocate(unsigned long)'
/emea/mediadata/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/bin/ld: obj/edge_d_test.o: in function `cv::String::~String()':
/usr/local/include/opencv2/core/cvstd.hpp:648: undefined reference to `cv::String::deallocate()'
collect2: error: ld returned 1 exit status
make: *** [Makefile.rules:323: csim.exe] Error 1
ERR: [SIM 100] 'csim_design' failed: compilation error(s).
INFO: [SIM 3] *************** CSIM finish ***************

Has anybody seen these error before? Did anyone manage to run the simulation on the core? Any help would be useful at this point.

thanks,

Sergiu

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 1

Hi @sarpadi,
Double check your environment to see if OpenCV is referenced correctly inside Vitis HLS.
This Answer Record goes into detail on how to reference OpenCV after installing it:
https://support.xilinx.com/s/article/75727?language=en_US

From my experience, setting this up is way easier using a tcl script.
I have attached an example for setting up a Vitis HLS 2020 project (should be the same for 2022). Note that I set this up using windows, so double check the library includes.
 

run_hls_standalone.tcl

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...