Xilinx Opens Up Vitis HLS Tool for FPGAs
eetimes.com
eetimes.com
It doesn't appear to know anything about bitstreams and works at a higher level that'll be synthesized by another tool.
https://github.com/Xilinx/HLS/blob/da538325ea9cb410672be6bb1...
Awesome, fairly reusable looking work being opened by them. A lot more than I expected from the title. Good work, Xilinx!
The full HLS tool that they ship does produce full verilog/vhdl, and doesn't go to the bitstream level. It would be a huge improvement if they would open-source the whole thing. I suspect they will not, however, as code generator likely has a fairly complex FPGA Fabric/Slice timing model used to schedule operations into clocks, and that is something they would probably consider proprietary. Hopefully they can strip out those bits out and release the rest.
I'm not even sure this is the correct abstraction layer for an HLS tool (even though it seems 2 out of the 3 mayor players use it, albeit it is precisely the leader who doesnt use LLVM).
"The Vitis HLS is a high-level synthesis tool that allows C, C++, and OpenCL functions to become hardwired onto the device logic fabric and RAM/DSP blocks." [1]
The link also has some code samples and timing diagrams.
[1] https://www.xilinx.com/html_docs/xilinx2020_2/vitis_doc/intr...
Maybe this is completely wrong, but I have this gut instinct that they must be extremely brittle. That's based on being a CPU/GPU compiler person and knowing, for example, how many difficult problems are still out there for automatic GPU code generation. I find it really hard to imagine that with all the additional challenges you get with FPGAs, that you'd be able to make this really work for anything beyond the most bare-bones examples. (But I'll admit that I don't really know what I'm talking about.)
Anyway, it's good that it's open source. Hopefully more of the magic will be open to public inspection now.
Same performance but the HLS made a smaller footprint
Add in the fact that CPUs and GPUs are expensive as fuck, in short supply, demand high power, while FPGAs are pretty cheap and efficient since they don't do much you're going to find a lot of designs that call for them over a beefy and expensive chip.
That said, arm and risc V cores are dirt cheap. If your algorithm isn't hitting the memory wall it probably isn't going to be faster via HLS.
I know it's working perfectly fine for us and even the strongest advocate of using Verilog directly was converted by now to only using HLS.
I got it explained like this: HLS has it's own class of problems and you definitively need some time to get used to how you need to write code that is actually synthesized in a way you intended it to be. However, once you got used to it, development using HLS is way faster than writing Verilog directly and our FPGA guys basically said that we would not be where we are if it weren't for HLS because of this.
So it seems that it's actually working quite fine in practice but obviously not without it's own problems.
But easily pluggable APIs for foreign SW languages are key as well. Hardware software co-design is only becoming more important.
AMD, or some gradual infusion of new staff and culture over time, might change their stance wrt to open source tools, or at least the documentatione necessary to write them.
This isn't that, but it's not nothing either. Maybe it's just a good first step.
Or maybe it's just the age old traditional way to be sticky. Get students addicted to a front end that only works with your locked up back end.
Does this actually generate bitstream, or it is a higher level tool than that? The diagram in the article suggests that proprietary software is still needed to target a specific FPGA.
Could it be https://symbiflow.github.io/? Symbiflow aims to be "gcc for FPGAs".
They support several families of FPGAs, to varying extents.
iCE40 was first. Now there's also full stack support for ECP5, QuickLogic (with manufacturer's help!) and a subset of Xilinx family 7 and GW1N (cheap chinese FPGAs!), among others.