MyHDL: Using Python as a hardware description and verification language
github.com
github.com
Testing is usually where the claimed advantage is. That and being open source.
But as you say, SV is all about testing and verification. But the tools are closed source and expensive.
I think the big win is the open source tooling that comes along with these efforts.
Interesting that it hasn't been commented upon much, and the project seems to not have had any updates since 2018...
Just the fact that it's capable of translating to VHDL or Verilog makes it very useful. I'm surprised the industry doesn't care too much still.
In the end, on the most constrained workflows, one would have to verify first the python/HDL code using MyHDL, then verify the generated VHDL using the industry tools, then go through the synthesis and place and route processes, add some verification layers there then test the result.
Convincing a team to accept such a framework takes time and organization.
I actually really like Tcl, I like the simplicity of its command argument nature.
The thread "Why is Tcl syntax so weird" was posted a couple of weeks back, https://news.ycombinator.com/item?id=29143346. The first comment on the page includes "Tcl is still a wonderful language and I often lament how it’s mostly died out". Happily, for me at least, it's still going strong in HDL land :)
Brainfuck is stupidly simple but good luck writing reliable code with that!
I should make a TCL quoting quiz to prove how insane it is.
I guess Tcl is just one of things that divides opinion.
The one thing I'll give it is that the "function bodies are just eval'd strings, quoted using braces" is a kind of neat trick for implementing functions. Like if you want to make a language that supports functions with the minimum amount of code possible, that's a fun idea.
Not a good idea, but a fun one. The correct response is "ha that's a neat trick. Now please delete it and do it properly."
Same problem though - you have to transpile it down to Verilog to use it in anything beyond a simulation.
What I find surprising is how the industry seems to have dropped the ball in terms of languages. The biggest innovation in the last 20 years was SystemVerilog, but that combined relatively powerful verification advances with half-hearted improvements to the synthesizable subset of the language. All hardware designers really need is an improved way to abstract design composition - let me pass types, modules and instances around so that I can write composable designs. Instead we got multiple features with narrow special case definitions in the form of interfaces, packages and classes with the result that it’s still very hard to write a function that can be parameterized on type or width and will synthesise?!
The lack of clarity about what is synthesizable means different tools have different levels of language support. Any reasonably complex project will utilise multiple tools so you have to code to the lowest common denominator (after working out by some painful process which language features work reliably in each tool). The combined tax on the tool vendors (most of whom took the best part of a decade to get SystemVerilog support) and designers must total hundreds of thousands of developer hours in wasted productivity. I wish we had separated out verification from HDL a long time ago. Verification is essentially just software, why should it share the same language as the hardware design?