Mod-24: The State of High-Level Synthesis in 2016

Celoxica was a very successful company that was bought out by a much larger competitor and immediately shut down. This left many customers who loved the product without any good options.

And this is why I refuse to use non open source tools no matter what advantages they claim to have. You can't know if they will still be available tomorrow. The exception (for now) is the vendor tools for generating the FPGA bitfiles.

-- Jecel

Reply to
Jecel
Loading thread data ...

At least with open source tools you can't be disappointed by a total lack of support. My installation of Lattice Diamond errors out when I perform synthesis and I can't get any help from the vendor support... at all!

--

Rick C
Reply to
rickman

Even with your example of a matrix multiplication, there is still a lot to figure out. For one thing, you usually have to fold the multiplication bec ause you don't have the resources to do the whole thing in parallel. The M atlab->gates tool that I used once is long gone.

I just spent several days implementing a design that I modeled in two lines of Matlab code. For a tool to have converted those two lines into a good hardware implementation would've been difficult.

Reply to
Kevin Neilson

The high-level design tools I've used weren't very abstracted. To make something work well, I had to keep moving to lower levels of abstraction. In tool that was supposed to be high-level I found myself instantiating DSP48s. Not very abstract.

Reply to
Kevin Neilson

I agree, you can't expect the tool to just do it - there are many things that need to be tweaked. But those are architectural design choices, which are different from writing Verilog or VHDL. By all means expose the tradeoffs to the designer in a way they understand, just don't make them write HDL. Software folks are familiar with the idea of different data structures having difference performance qualities. But by and large a serial 'program' isn't a helpful way to expose tradeoffs to either the software or hardware engineer.

As I said, this ignores the elephant in the room that is communication. Your C code has this illusion that it lives in a flat uniform memory space because it's behind a cache, an MMU, a prefetcher and a standard library, that do a lot of work (in terms of time, area and power) to make it look that way. To get good performance, you need both a way to write the compute and a way to move the data around to the right place at the right time. 'HLS' tools are usually poor at handling that: I don't know a HLS 'C to gates' tool that it would make sense to write a cache in, for example.

Theo

Reply to
Theo Markettos

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.