I've been studying the sources of Chisel and also various Lavas (Kansas, Chalmers and Xilinx flavors) and CLaSH. I'm trying to understand what's the main selling points of Chisel versus the others. The main one I've identified is fast simulation.
I was wondering if people who have studied more in-depth can point out other advantages, disadvantages and trade-offs.
(Sorry if it's too much of a discussion question. I tried posting to chisel-users but apparently you need to be accepted as a member to do that.)
First, a disclaimer that I'm a heavy Chisel user but have only passing familiarity with the Haskell-based DSELs that you mention.
I think the ability of Chisel to target multiple backends (C++, Verilog, etc.) is a significant advantage. The generated C++ allows cycle-accurate simulation at many times the speed of Verilog/VHDL simulators, because it avoids the event-driven model inherent to those languages.
This is not an intrinsic limitation, but Lava and CLaSH seem to be mostly targeted at FPGA implementations, while Chisel has been used for work on both FPGAs and ASICs. Chisel may also be a bit better supported; code, instructions, and examples are all available on GitHub, and the language remains under active development.
There are also differences between Haskell and Scala (the parent languages); if you're more comfortable in one or the other, it might make getting started a bit easier. (I'll leave the "language wars" to the experts.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With