09-20-2020 03:07 AM - edited 09-20-2020 03:10 AM
Hi everyone. I have the VHDL and C++ knowledge at a good level but I am new to the Xilinx world. As you know there are so many Xilinx software products. Deciding what product should I use is really confusing for me because there are lots of interferences between them and sometimes I think they developed by rival companies to beat each other!
Please correct me if I am wrong about the application of the following software products:
Xilinx Vivado: To develop hardware functions. (Design customized IPs)
Xilinx SDK: To develop software functions
Xilinx Vivado HLS: To develop hardware functions using a C-like programming language.
SDSoC: To develop software functions and hardware functions
All these products and their interferences in the functionality are really confusing for me. For example, I can use "Xilinx Vivado + Xilinx SDK" for a SW /HW codesign. But this can also be done in SDSoC as well. So which one I should use? I can use Vivado HLS to generate HW hardware functions; this can also be done in SDSoC. Which one should I use? Are there points which I am missing? Any advantages?
In my special case, I want to develop my customized IP and also my specific algorithm so I can implement them on a Xilinx board for a traffic analysis system with a camera.
Thanks for your help in advance!
09-20-2020 03:42 AM
@king32 Youare absolutely correct about all of the tools.
SDSoC is basically a layer on top of HLS+SDK. It lets you develop code for both the processor and the FPGA, evaluate which parts will benefit most from hardware acceleration, and easily move parts between processor and FPGA. The advantages are that it simplifies combining processor and FPGA designs, and it allows for more flexibility in determining where the split occurs. The disadvantages are that it's not free (HLS and SDK are free for small chips, and included with the Vivado license for bigger ones) and as always, a higher-level tool gives you less low-level control.
Given your level of experience, I expect that you can already tell which parts of the system need to be on the FPGA (eg. camera input, if it's a raw sensor and not USB) and which parts need to be on the processor (if you want storage and network, just running Linux on the processor seems sensible). You'll need to evaluate whether you want to use HLS at all or just use VHDL for the FPGA part; as with SDSoC, HLS makes many high-level tasks easier while removing the ability to control very low-level aspects of the design.
If you have any plans to re-use the IP on non-Xilinx boards, forget HLS and SDSoC completely. VHDL is more-or-less transferrable, HLS code is not.
09-20-2020 06:57 AM
@u4223374 Thank you for your answer.
Actually, when I had a first glance at the abilities of SDSoC and reVision I was somehow shocked. In the introduction video by Nick Ni (product manager of SDSoC) he showed an example of the abilities of the SDSoC in real-time image processing systems and within less than 5 minutes there was a powerful system able to do parallel processing in 60 FPS. Then I asked myself why we are bothering to design complex systems in Vivado and XSDK when it can be done in less than 5 minutes in SDSoC. To be honest I became a bit disappointed as a hardware engineer so my knowledge is being replaced by SDSoC.
To this point in my researches, I find out that for my algorithms and other libraries (like OpenCV) I have to use the PS side, and for designing the HW accelerators I have to use the PL side. Then I have to use a powerful AXI protocol to communicate between PS and PL. I will use Xilinx boards. So do you have any recommendations for the project? Like using Vivado+XSDK or Vivado HLS + XSDK or SDSoC (I have access to the SDSoC license in the company I work) or any other recommendations?