Designing Billions of Circuits with Code
asianometry.substack.com
asianometry.substack.com
On the analog side you have a lot of custom transistors and hand drawn layout.
On the digital side it is Verilog RTL, synthesis to logic gates, and automated place and route.
The CAD flow is literally tens of thousands of lines of Tcl code gluing tools hundreds of libraries and tools from multiple vendors into something that just crashes once a day and not constantly.
There is still a lot of manual work involved even on the digital side. The number of PVT (Process / Voltage / Temperature) timing corners has exploded over the last decade. The design can have no logical bugs and timing closure still takes 6 months on big chips. Hundreds of clocks, new DRC violation types with every new process shrink. More tools to check IR drop, electromigration, yield enhancement.
One engineer is able to do something that would have taken 25 engineers 25 years ago but the chips have grown in size and complexity. We have over 50 physical design engineers on my current 20x20mm 5nm chip. Probably another 50 RTL designers, 10 DFT, an army of verification engineers. I'm ignoring the lab debug and software teams which I don't know as much about.
Designing with code is the only way to realistically do this on the schedules we have which are usually 1.5 to 2 years.
The culture had a sort of "old boys club" feel. A lot of the folks working there had been there for 15 to 20 years or more - maybe this was what contributed to that, I'm not sure.
At any rate, EDA is a very interesting area to work in if you're a software engineer because there's a lot of advanced algorithmic work to do that you don't get much of working in other industries. But the way they approached that work was just not very interesting (old tools, old methodologies, etc). I suspect things are different in EDA startups, but unfortunately, they tend to be perpetually starved for cash - it's not an area that most VCs are familiar with; the time to payoff is much longer than for web startups. What tends to happen is that a startup EDA company will develop a product that falls outside of (but complementing) what's currently offered by big EDA and then they will try to get the attention of Big EDA and get bought by one of the Big 3 - that's the measure of success, not going public as would be in other industries because it's been extremely rare for EDA startups to go public since the big 3 have become established.
Hypothesis: the importance of EDA to chip design makes it change-averse.
I once had to chase down a delta between two triangle mesh files that resulted from two different builds of the same compiler, running on two slightly different hardware configurations, compiling the same source into different floating-point code that calculated a result of -0 instead of 0, which resulted in a no-difference rotation on the indices of every vertex on every triangle in the entire file.
Given that it's basically impossible to mathematically validate C++ code, if any change could cause a difference in output in a million-transistor layout, how would an engineer confirm that difference didn't matter? That kind of problem drives the cost way up for changes to the codebase.
I agree that EDA companies are unnecessarily siloed and dated in many places.
Weren't it for the moat of hundreds of PhD's working on the algorithms, it'd have been disrupted to hell by startups.
LoL this seems par for the course.
That's a really, really, REALLY wide moat.
There's a tradeoff between software skills and algorithmic skills. These guys are really really serious about algorithms, it figures their software isn't as good, none of that recent fancy shit, git at best. And it has to be PERFECT within its context, no fucking up or patching the fuckups with an if-else for that bug.
Has it occured to you that maybe their field is just so much more complicated than the run of the mill web crap we do, that they just can’t be bothered to care about which language their tooling is written in, or which line the braces should go?
Frontend frameworks move faster than backend frameworks, which move faster than programming languages which move faster than operating systems which move faster than processor architectures which move faster than the technology used to create them.
I’d argue that the parts of the stack that connect with other levels move more slowly than those that don’t. They need to be stable so that the whole stack continues to work together.
That being said, better tools for design and verification would still win out since developer time is more valuable/scarce than computational time. However, hardware tends to differs from software in that the computational requirements for designing and verifying a chip design are far greater than the average product in the software industry.
Literally everyone I know in my industry hates the current state of EDA tools, and fees like they're stuck in the past, yet most of them defend the use of Perforce over git, Cron over Jenkins, XML over JSON, TCL over Python, Cisco Any-connect over Tailscale, and running their remote terminals in a VNC session instead of using SSH like normal people. I feel like the pot is calling the kettle black here.
On the other hand, users of software compilers are starting to talk about link time optimisation and guided optimisation, techniques that I had much more control with dc-shell than any modern software tool chain.
LTSpice looks dated, but at least the developer takes the simulation speed and the convergence to solve the circuits as a really important matter (specially compared to OrCAD PSpice): It can use multiple cores, it has 64-bit compiled binaries, and the developer uses a lot of tricks to get the maximum performance on every machine it runs.
Without knowing how is Cadence Virtuoso and other more specific products, I don't imagine myself paying what this software does and having those problems. They aren't bad or they aren't improving, for sure, but I feel those companies are so specific that they simply don't care.
I can't think of single a time where old code or tools were a barrier to innovation. We updated when there was a real need, but otherwise left working code alone to focus on adding innovative engineering features. The code was so heterogenous that it was modular by default, so the pain of one library's tooling was limited to that one library.
There might be money to be made starting a startup that starts the revolution, but I don't know enough about the industry to figure out any business plan more detailed than that.
I've seen this claim many times before, but I never see any proposals about exactly how that would happen.
All open source FPGA tools that exist today are good enough for fun hobby projects (I use them every once in a while), but none of them have the additional features that are needed in the real world.
When pressed about it, people point to 50GB downloads, bad GUIs, and bugs in the tooling. Not that these aren't issues, but if that's all you can point to, then I don't see where the disruption will come from? In order to have that many bugs and 50GB of tools download, you need tons of code to begin with, and the functionality that it implements.
Right now, that's not there, and it very likely never will. It's such a niche domain.
Just build a modern design rule checking (DRC) engine with parasitic extractor. That's all you have to do. I eagerly await your release on github.
I agree with you that open source really is the only valid path forward. However, you have to convince some very smart people to join your cause and they expect to be paid up front.
I never used their products, but having consulted inside Mentor Graphics I can tell you they were positively toxic. Couldn't get out of there fast enough as it was pretty clear there was no way we were going to be able to clean up that mess and they didn't like to listen to change.
Other possible explanations for the longevity of workers include: 1) It's rewarding, interesting work. If it's not directly improving peoples' lives, at least it's improving something. 2) It's based on principles that are hard to learn and don't change very rapidly, such as math and physics. The engineers who are given the hardest math and theory problems to solve tend to have the grayest hair. 3) The people who know the value of their domain knowledge and experience are also capable of controlling the pace of work so they don't burn out.
My experience doing this has physical designers working on cell libraries in parallel with logic designers working on designs, then both working on layout and then the physical designers leading the final tapeout - logic designers need those cell library timings early on to drive synthesis
There's just a lot of scope for the physical designers and logic designers to work together ("we really need a cell that does X"/"this cell doesn't route well, I want to remove it") to produce good results
So certainly there are human developers, but they are (mostly) writing code that get's turned into working silicon... after a bunch of other less automated checks to make sure it won't break in less obvious ways.