Executives from semiconductor companies regularly arrive in EDA companies convinced that their years of experience as customers mean that they understand the EDA business. Software people just need some of the discipline of semiconductor design, which the executive has plenty of, and a miraculous transformation will take place.
This view of the world makes the assumption that creating EDA software is just like creating a chip. After all, designing a chip is done in Verilog, which is just a language, so how different can it be?
On the business side, it makes the assumption that selling software is just like selling silicon. After all, it is a technical sale, you take an order, you ship a product, how different can it be?
A lot.
On the engineering side, a chip has a definitive event when it tapes out. Software is never done. There are probably parts of Design Compiler shipping today that is code written in the late 1980s. Intel’s latest microprocessor or TI’s latest GSM chip or whatever doesn’t contain stuff that old. Yes, IP blocks get reused, but not for decades. Even IP blocks have a different dynamic. If you need to cut a corner to get an IP block to work in your design, then you do it and tape out. If you find a bug in some software component then it needs to get fixed back at the canonical source. Otherwise, since the software lasts forever, there will forever be two versions, one containing your quick and dirty fix and one without. The result is that in software everything is much more inter-related than a semiconductor designer expects a lot of is it older than expected, and as a result there is also lots of code that works but is not well understood. Software development is just messier, and over time it gets worse. The de facto development methodology always deteriorates into big ball of mud.
There is also a different tradeoff in shipping a bug. Intel’s cost to fix the floating point bug or nVidia’s cost to fix their heating issues are hundred million dollar or billion dollar problems. While everyone has probably seen those tables showing that the cost of fixing a software bug once shipped is hundreds of times the cost of fixing it while the software is still in development, it is simply not a million dollar problem. Only products like the space shuttle guidance code can afford to spend astronomical(!) amounts on testing and have a long enough schedule to accommodate it. EDA software can’t support that on either economical or schedule grounds. As a result, IC design really is more disciplined and spends a large amount, upwards of 60% of effort, on verification and almost no software can do that. When software is released it is not a bet the company event since bugs can be fixed.
The scale of software is also bigger. There may be billions of transistors on a chip, but many of them are in regular structures of one sort or another. No software is in regular structures or else it would have been further abstracted to get rid of the repetition. The number one rule in software development is to keep each thing in only one place. Cisco’s IOS operating systems for routers is 25,000,000 lines of code. It is probably not clean but, by and large, there will not be a lot of duplication within it. It really is 25M lines of unique code. Chips do not consist of 25 million lines of Verilog.
On the business side there is an interesting difference between software and semiconductor. Firstly, semiconductor products typically have a lead time of the order of a quarter in length. This means that at the start of a quarter almost all the orders that will be produced that quarter are already in. Additional inventory might be built if there is spare capacity, in the hopes of selling it during the quarter (known as ‘turns business’). Software really can receive an order at 11pm on the last day of the quarter and ship it for revenue before midnight.
However, the more interesting different dynamic is in negotiating. When a purchasing agent negotiates with an EDA salesperson they both know the marginal cost of the software: zero. It really doesn’t cost any more to ship an additional copy of a software product. Semiconductor companies make sure that their salespeople do not know the manufacturing cost of the product (whether their cost models are good enough that they actually know it themselves is a different question). Marketing gives the salesman a price and perhaps some flexibility but neither the buyer nor the salesperson knows where the limits really are. Negotiations can be drawn out and nasty but there is a time aspect. If the buyer draws out the negotiations too long, they will not get their order submitted in time to get the product built. A software buyer knows that the biggest discount is likely as the quarter closes, and that the software company will still make incremental revenue no matter how big the discount.
There are probably other significant differences, but successful semiconductor experts can easily burn their fingers in the EDA business.