this is a complex topic on which Chris responded very informatively, providing valuable insights. i'd like to provide some additional perspective, both as a Software Engineer having learned RTL, and as to why we picked nmigen rather than Chisel.
Chris is absolutely correct about Verilog being... tolerated (barely). somewhere (around the 80s-90s) it was initially developed as a way to do unit tests (on gate-level designs), however at some point i believe someone noticed that the actual designs could be expressed *in* that unit-test language and it took off from there. note: 80s and 90s. when Object-Orientated programming languages were an extreme rarity. it really has not progressed or evolved since.
now look at how programming is done, now. classes, exceptions, multiple-inheritance (unless you love java), these are all normal. except in HDL. question: why should HDL engineers be "punished" and told that they can only develop HDL using languages designed 30-40 years ago? you can't even load and process/use a CSV file in Verilog (but interestingly apparently you can in VHDL).
hence things like pyrtl, nmigen, myhdl and Chisel3 and many others came about.
the ability to use [multiple] inheritance has two immediate benefits:
1) code-reuse. saving huge amounts of time
2) incremental development when it comes to unit tests. you can have unit tests that test the base class... *and save code on the over-rides*. if you design it right you could even mirror the multiple inheritance, base-classing the *unit* tests along-side the code that it is testing.
here's the thing, though: one of the down-sides of [multiple] inheritance is that the code complexity goes *up* with the number of subdivisions. you risk changing the API of a base class at a fundamental level, breaking complex contracts, and spreading code out across dozens of files. so there is that to watch out for.
the other thing is: no matter what the language, if it is entirely devoid of comments it really does not matter how "good" or how "compact" the language is. this is one of the things severely holding rocket-chip back (the base for BOOM). the code is "compact"... *because it has zero comments*. by total contrast, the libraries to which Chris refers, (chisel3 io), the ones used *by* rocket-chip (BOOM) are exceptionally well-documented.
the last point is to look at the TIOBE index for python and for Scala. python is right at the top: scala only very recently even entered the top 20. with python being known by over 30% of all programmers and Software Engineers on the planet, the decision to use it instead of Scala (and Chisel3) was a no-brainer. that just left us with an evaluation process to pick a python-based HDL, and nmigen proved to be the best, with the largest most dynamic community.
the summary then is that it is not about the actual HDL language, at all: it's a suite of interlocking factors, and at the heart of those, the common theme linking them all is: communication.
l.