Tricky said:
Does anyone have much experience with this and Auto-VHDL generation of
algorithms? It seems some people have the idea that once they have the
algorithm specified in sumulink, they can just press the "to VHDL"
button and out pops some working code that will go straight into our
hardware, solving all of our problems (these are not hardware
engineers, who have so far been a little sceptical to say the least).
Am I going to be out of a job writing algorithm based VHDL in the next
5 years?
I doubt it. A while back, we evaluated several tools that claim to save
gazillions of man months when porting algorithms to FPGAs, but then
decided to stick to hand-coding for the time being.
1. Matlab -> RTL (the solution offered by mathworks): The downside is
that the blocks that are supported are very limited in number and
function. They have things like adders, subtractors, delay elements and
the like, all stuff that you can basically just write on-the-fly in VHDL
anyway. At that time, no really interesting things were available, like
FFTs or ready-to-use filters or so. To me it seemed like you would then
just use Simulink as a kind of "schematic editor" to connect very simple
primitives and have it spit out a HDL description. This could save you
some time and you get free "documentation" (meaning the block diagram)
as well, but to me it seemed it's not really worth the money (the
license is quite expensive). Besides, the algorithm people still have to
adapt to the limitations, i.e. the Matlab designer has to know exactly
which functions he can use and how the functions map to hardware when
writing the algorithm, or the HDL designer needs to adapt it afterwards.
So, in the end, I didn't really see how this would be a big time-saver,
except maybe for people new to HDL design.
2. Mentor Catapult C: To me this seemed the most "advanced", judging by
what it claims to be able to do, like loop unrolling and taking care of
BRAM at the input or outputs of your algorithm module. But it crashed
twice during one 2-hour presentation, running the examples supplied with
the program, and the price for a single license is higher than many a
project's entire budget, so this was out of the race quite fast.
Besides, it needs C code for the algorithm, whereas our people do their
stuff with Matlab. Plus, it also needs Precision Synthesis to work, so
that makes it even more expensive.
3. Xilinx AccelDSP: very cheap, works well, lots of available cores
(sometimes they require additional licenses), but only for Xilinx
devices. You can always try that out with a free 30-day test license. We
didn't get very far in testing this, since it was then decided not to
use a tool that only works with one manufacturer's devices.
So, in the end we decided not to follow this any further, at least for
the meantime.
cu,
Sean