I can see why a functional language is more straightforward and safer at specifying data paths than an imperative language (though abstraction is what compilers are for), but how are you modelling time?
High-level synthesis had promised huge gains in productivity, and it's indeed quicker for simulating simple data-focus modules, but the paradigm has completely failed in practice because of its inability to handle control logic and the difficulty to reach timing closure—not to mention the increased resources, but that could have been solved in the future with better HLS-synthesis co-optimizations, I suppose.
I don't see how Haskell would differ from C in that regard.
According to the docs this isn't 'high level synthesis' in the sense of translating a block of C style logic into a verilog implementation that is structurally quite different. This is more of a one-to-one correspondence between the haskell functions and the generated verilog.
3
u/Blueglyph 1d ago
I can see why a functional language is more straightforward and safer at specifying data paths than an imperative language (though abstraction is what compilers are for), but how are you modelling time?
High-level synthesis had promised huge gains in productivity, and it's indeed quicker for simulating simple data-focus modules, but the paradigm has completely failed in practice because of its inability to handle control logic and the difficulty to reach timing closure—not to mention the increased resources, but that could have been solved in the future with better HLS-synthesis co-optimizations, I suppose.
I don't see how Haskell would differ from C in that regard.