1

We're considering the approach on a new project. Our target is developing image processing algorithms and implement them on FPGAs.

Matlab HDL Coder converts matlab code to HDL code, and Xilinx Vitis HLS synthesizes C/C++/SystemC to HDL code.

We can make a quick judgment that algorithm development using Matlab is much less painful than lower level programming languages such as C/C++/SystemC.

Is there any things else about these tools which we should know?

Thank you in advance.

1 Answer 1

1

Vitis HLS pro

Vitis HLS can provide:

  • A packaged IP already for you with no further modifications
  • The generated code might use primitives and structures to facilitate the synthetizer when generating the netlist.
  • AXI interfaces (Stream, Lite, Full) ready for integration in your block design.
  • Nice RTL/C cosimulation to detect early bugs.

So if you are targeting Xilinx devices I would suggest C++ HLS with Vitis.

HLS challenges

Be aware that HLS is quite difficult to master, and that's because the procedural nature of C++ is fundamentally different from HDLs. This makes generation of conditional branches not clear. Be wary of using too many branches in your code.

Try to keep a "dataflow" style in mind, where data is streamed in and an output is produced in a clear, pipelined, streamed fashion.

Be wary also of memory accesses and latency throughout your system, sometimes the bottlenecks aren't where you think they are.

Alternatives

Lastly, a suggestion about using HLS at all. There are many libraries in FPGA already done (for instance here) that use native FPGA HDL but provide you accelerators for the basic blocks of computer vision to use within your software. You might just want to use them without need to reinvent the wheel.

I hope it helps!

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.