[libre-riscv-dev] HDL selection

lkcl lkcl at libre-riscv.org
Tue Nov 20 23:46:37 GMT 2018


On Tue, Nov 20, 2018 at 10:34 PM Jacob Lifshay <programmerjake at gmail.com> wrote:
>
> On Tue, Nov 20, 2018, 04:28 lkcl <lkcl at libre-riscv.org wrote:

> >  so it's part of the compiler, not an actual variable??  it's like an
> > __intrinsic__ in gcc or something.
> >
> It is an actual Scala variable. You can think of Chisel as a Scala library
> that generates Verilog from the Chisel AST, which is built by compiling and
> running the Chisel code as a Scala executable. This is similar to how
> SystemC is really just C++ that is using the SystemC libraries.

 so essentially, chisel3 is a hack.  it wasn't thought through:
someone encountered (or knew about) scala, and went "that'll save some
time" as opposed to, "if we were to write a logical, obvious, clean
and useful HDL that was easy to learn, and fixed many of the problems
of the past and brought HDL up to modern OO software development
practices and standards, what would we do?"

 by contrast, with migen/litex, we get to use the full power of python
(which can't be done with myhdl, you have to use a subset of python),
its OO capabilities, all of the documentation-generating tools
(epydoc), all of the unit test infrastructure that exists (nose,
cocotb) all of the tutorials online that will allow us to bring new
developers up to speed extremely quickly, and its huge popularity and
readability will make long-term maintenance one hell of a lot easier.

l.



More information about the libre-riscv-dev mailing list