Oh I guess, while I’m on the topic of “bringing software paradigms into the hardware world”, let me also talk about CirctIR briefly.
I also believe LLVM was a bit of a boon for the software security world, enabling some really cool symbolic execution and/or reverse engineering tools. CirctIR is an attempt to basically bring this “intermediate representation” idea to hardware.
This “generator for intermediate language representation”, by the way, is similar to what Chisel currently does w.r.t generating verilog. But CirctIR is a little more generic, and frankly Chisel’s generator (called FIRRTL) is annoying in many ways.
Chris Lattner worked at SiFive for a bit, and made these same observations, so he spearheaded the CirctIR movement. Partially as a result, there are many similarities with FIRRTL and CirctIR (Chisel’s goal is to make hardware design easier, and CirctIR’s goal is to make designs portable and/or decouple these toolchain flows. Related goals, but still differentiable)
.
I’ve wanted for some time to play with this as well, but the fuzzing work has gotten me more interested currently and something I’m trying to make an MVP for at work.
Oh I guess, while I’m on the topic of “bringing software paradigms into the hardware world”, let me also talk about CirctIR briefly.
I also believe LLVM was a bit of a boon for the software security world, enabling some really cool symbolic execution and/or reverse engineering tools. CirctIR is an attempt to basically bring this “intermediate representation” idea to hardware.
This “generator for intermediate language representation”, by the way, is similar to what Chisel currently does w.r.t generating verilog. But CirctIR is a little more generic, and frankly Chisel’s generator (called FIRRTL) is annoying in many ways.
Chris Lattner worked at SiFive for a bit, and made these same observations, so he spearheaded the CirctIR movement. Partially as a result, there are many similarities with FIRRTL and CirctIR (Chisel’s goal is to make hardware design easier, and CirctIR’s goal is to make designs portable and/or decouple these toolchain flows. Related goals, but still differentiable)
.
I’ve wanted for some time to play with this as well, but the fuzzing work has gotten me more interested currently and something I’m trying to make an MVP for at work.