Hacker News new | ask | show | jobs
by ohazi 1838 days ago
There are other options as well: nMigen (python), Chisel (Scala), SpinalHDL (Scala), Bluespec (Haskell).

It's worth taking a quick glance at all of them (maybe making a toy or two) to see if any of them strike your fancy. Being able to do metaprogramming and parameterization in an actual programming language rather than a not-quite C-preprocessor pass makes a lot of things easier.

Just about anything feels "nicer" to me than VHDL or Verilog, but I particularly like nMigen, and find SpinalHDL to be at least somewhat readable.

1 comments

Thanks, I will give them a try. Right now I've done enough with Clash to feel very comfortable with it. Having already done a lot of Haskell before helps, because I tend to know what's available in general. You can use almost the entirety of Haskell's functional toolbox, including Monads and Arrows. But it certainly won't hurt checking all the other options out.

I agree, metaprogramming and parameterization (both enabled by polymorphism) is the key, and also what enables me to just "plug in" a function that essentially implements e.g. an AXI4 enabled register, or a whole burst transfer.

I shudder having to do that by hand every time in Verilog/VHDL now, tightly coupled to the rest of the logic.