Other than that, it’s fine…
Other than that, it’s fine…
I first encountered Tcl when tinkering with Quartus, and initially hated it with a passion. Once I eventually figured out which types of brace to use in which context, and started to appreciate having variables and conditionals available in .sdc files, the loathing started to give way to a grudging respect.
Now I really appreciate the elegant simplicity, the ridiculous ease with which it can be integrated into a C/C++ project, the ability to script JTAG communication with a running project (complete with Tk-based UI), the lack of dependence on any online repository or source of truth.
But especially I appreciate the lack of churn, which means the same scripts will work with the current release of Quartus as well as a version from more than a decade ago (needed because newer versions dropped support for newer devices.)
The problem with EDA automation software is that it has been historically written by people with low skill in software development. Their domain of expertise is hardware. These shops also have not had for the most part a cohesive culture that spanned projects. For an org that focuses on digital design, the other 80% of that task is verification, but this has been prone to outsourcing and has had more churn on project to project.
I could be wrong, as I am outsider in this industry but this is what I see from my interaction with the EDA space. It puts up with horrible bugs, tools are hard to compose, the installers are crufty and target ancient OS versions. The secrecy within in the industry itself has made it a very late participant in open source.
So much conspires against any language that EDA would adopt.
I think they mainly just don't really care about improving the scripting interfaces. TCL is an industry standard at this point and it is a shit language but it's not the main thing you're doing.
In my experience it's really the customers have low skill in software, so they won't even be asking for anything better than TCL. Hacky Bash scripts are the standard here so if anything TCL is an upgrade.
This is an industry where CI is a novelty. I still have to deal with people who think CI should be a very quick sanity check and the testing should mainly be manual.
But it is also the reason why I don't use any dynamic language without JIT for production code, unless I have no say in the matter.
We took advantage of being a MSFT gold partner, moved into .NET when it wasn't yet known to the world, and our founders eventually moved on, and OutSystems was born out of our learnings.
The other irony is, considering that article, that the Cadence analog tools (Virtuoso, Allegro) are using a nice Scheme dialect called "Skill" for that purpose. So not the whole EDA world is centered around Tcl.
History of TCL, https://web.stanford.edu/~ouster/cgi-bin/tclHistory.php
Maybe it's a similar situatuon with these expensive proprietary EDA tools often being quirky?
I can live with it: these tools are very complex and they don't have a lot of users. It's hard to make the bug free.
But you don't make software buggy deliberately. It's different for Tcl. Some people made a conscious decision to create that POS language and others thought it was a great idea to add it to their software.