Why aren’t EDA tools more precise?
| Summary: Why can't EDA verification tools, particularly circuit simulation and parasitic extraction/reduction tools, deliver precise results at the finest level of resolution supported by the computer architecture? For today's machines that would mean full double precision supporting 15 significant digits. And yet many products only give credence to the first few. What's up with that? |
Why can’t EDA verification tools, particularly circuit simulation and parasitic extraction/reduction tools, deliver precise results at the finest level of resolution supported by the computer architecture? For today’s machines that would mean full double precision supporting 15 significant digits. And yet many products only give credence to the first few. What’s up with that?
Parasitic reduction
If we hold the die size constant (for cost reasons) and walk down the process nodes (130nm, 90nm, 65nm, 45nm, etc), then to the first order, the number of MOS integrated increases with the square of the process node. The number of extracted parasitics, all things being equal, also increases in this squared relationship. However, all things aren’t equal. In order to increase the precision of post-extracted analysis, designers are performing extraction with finer and finer resolution, meaning finer-grained geometry fracturing. Additionally, power net extraction is now a mandatory step, and it won’t be too long before substrate extraction (it will depend at first on selection of epi or non-epi bulk material) is required in order to verify correct isolation between analog and digital stages. These two refinements are causing an explosion in the number of extracted parasitics present in the final netlist, and many traditional design tools are unable to cope. In fact, some new design tools are also unable to cope — I know of one current (recently released) SPICE-like simulator that permits only a single resistor and grounded capacitor pair per MOS. That’s about as much use as a chocolate teapot. The only alternative available to users of these tools is to apply aggressive parasitic reduction. Using this approach, you may be able to read the design into the tool, but you’ll miss subtle parasitic-induced effects. Indeed, you may see, as I have recently, results accurate only to the second significant figure. This just isn’t good enough.
Implementation limitations (efficiency, etc)
EDA has a mixture of innovations in both algorithms and the development of heuristics. The one thing they both have in common is that they’re subject to implementation by software engineers who are, like the rest of us, human. Sometimes they make mistakes, or pick sub-optimal data structures or algorithms - the results may be correct, but inefficient for a certain class of circuits. One example would be in the selection of a graph traversal algorithm, a widely-used component of many EDA tools - the common choice is between breadth-first search and depth-first search. Both will give the “correct” answer, but the most efficient one depends on the graph structure in question. Pick one, and it may work great (as measured by fast and memory efficient) for many, even most circuits. But not for all.
Heuristics, or “educated guesses”, can frequently give a fast near-optimal solution to a computationally intractable problem. The reasoning here is “good enough and fast is better than perfect and never.” And sound reasoning it is too. Placement and routing are areas where increasingly complex heuristics have been developed over the years. But again, they’re rarely universally applicable, and presenting poorly conditioned data can result in slow execution times and poor results.
In the situations where efficiency suffers, users are required to make trade-offs. As one example, during circuit simulation, users will often respond to slow run-times by increasing the time-step. This loss of timing precision causes transients to be missed; numerical precision can also be wildly thrown off by this. Thankfully, the implementation limitations are generally minimized over time - EDA companies spend a lot, post-release, on code optimization in a constant effort to improve performance. In my long experience in EDA, if it takes a week to write some new code, it’ll take a week to debug it to ensure it’s functionally correct, and a further two weeks to optimize it for real-life data. But in the early stages of the product lifecycle, implementation limitations abound. It’s the nature of the beast.
Algorithmic limitations
One of the first jokes I heard about engineering was the old saw about mechanical - I almost wrote maniacal - engineers: measure with a micrometer; mark with a carpenter’s pencil; cut with an axe. We’re not quite as bad in EDA, but sometimes we do end up picking an algorithm which while it delivers results, has limitations. Let me clarify with an example. Matrix solvers are a fundamental component of many EDA tools; consider the solver in SPICE as an example. There are two classes of solvers, direct and iterative (see
For very large problems, direct solvers may not be time or space efficient, and so even though they would give the precise answer (subject to underlying precision, and stability), iterative methods are used. The most significant advantage of iterative solvers in this scenario is that users can trade off the precision of the solution against run-time. Pick a loose criterion for convergence, and the solution will be fast. It may be “wrong”, but it will be fast. Tighten the convergence criterion and the solution may take longer to achieve than for a direct solver.
Bugs
Finally, the easy one. All software has bugs. They can affect functionality, performance (run-time or memory efficiency), ease of use, integration, reliability and a whole host of user-visible metrics. Many of these bugs relate to undocumented use cases, or lapses in the requirements captured by the product core team, and some of these may be relevant in defining the appropriate level of precision and performance desired in the final finished product.
You can see there are many reasons why EDA products fail to deliver absolute accuracy, as measured by precision at the finest level of resolution supported by the underlying machine architecture and compiler pair. Sometimes the trade-off is well-known, and designers understand the limitations and can still get some utility out of the tool (witness the success of Fast-SPICE over the last 15 years). This is all well and good when the trade-off is well-articulated, and it’s possible to compare results to a known-good reference during evaluation or acceptance testing. Too often in EDA these limitations are brushed under the carpet and hidden from the user. “You get what you get” seems to be the attitude of these companies, and I think this is wrong. Hiding limitations from designers can cause chip failures. These software limitations should be published, and the companies held accountable. I wouldn’t mind if the principals were publicly flogged or put in the stocks and ridiculed. Which would you prefer? Comments welcome.








Comment by PitchMonk
Hi Simon,
I will come to the defense of EDA.
Disclaimer:I am a ex-EDA employee (just like you). I still have some ties with EDA.
It is not that EDA players sweep the limitations under the carpet. More often, EDA falls into the trap of “averaging”. For example, if you take two test cases and if a tool shows +50% in one test case and -50% in another, the tool vendor could claim as average accuracy of 0%. While a tool that consistently gets +0.5% will appear bad. Another trap is that EDA vendors are making a general purpose solution that works for all cases. This is because the more applications they can run, they can attract a bigger market. Often times, even the most innovative companies fall into this trap. Focusing on a specific problem and solving to perfection may be the right approach but the tool is losing out on other markets. Today EDA is dominated by the big ones - C, S, M and M. These companies own probably 90% of the market. Any new player has to challenge this might in order to succeed. And the market is shrinking anyway. Big companies kill innovation through many means, popular are roadmap and lawsuit (You must be well aware of #2). Even for the customers there is no incentive for promoting innovation. Imagine, if you have a tool that provides orders of magnitude higher accuracy, do you think customers will start using this right away? Today, you need to read various SPICE netlists, must have ADE integration, support whole bunch of features before a customer even looks at the tool (believe me, this is based on personal experience). Even after you cross this hurdle, the customer will be saying, OK, we dont have any budget, because the ___(fill in your best EDA vendors’ name) sales guy tool the whole budget. This is even before the competitive tools play their roadmap/lawsuit card. The key thing is even brilliant algorithmic expert gets dragged into all these issues rather than providing highest accuracy or precision. It is no wonder that most EDA companies aspire their exit to be acquisition.
One last comment: You have discussed the need for precision/accuracy during extraction. But you havent explained the need for higher accuracy in solvers.
Comment by Simon
The big EDA companies certainly aim to hobble new technology. The primary reason, said to me pointedly many times, is to make it cheaper to acquire the technology/company if they’re successful. A secondary reason may be to give them (the big EDA companies) the chance to develop some competing technology. One day I may write a post about my experience working with sales in the big EDA companies. The only problem is I’ll have to go back into therapy to deal with opening that particular Pandora’s box…
What is the need for high accuracy in solvers? It’s really a case of how much precision is needed for the task at hand, no? If you’re designing a power grid, can you actually get your job done with 2 digits of precision? There are many design groups who’d say not. There are those who want SPICE to deliver more than the customary 6 digits (I know you can use a .OPTIONS card to print more significant digits if you wish.) Frankly, solvers that deliver fewer than 6 digits, or worse that vary the results depending on some unrelated parameter (number of threads is one that bugs me), are playing a shell game, just moving the error around.
I look at it this way: if you’re trying to determine a parameter that’s varying in the nth digit, you need to have tools accurate to the (n+2)th digit in order to have a chance of getting 1% accurate results. It’s not uncommon for n to be 6 today. Hence, solvers accurate to 8 significant figures are required. That’s non-trivial, and compute intensive. There’s some very interesting innovation in this area that should see the light of day some time before next DAC. Watch this space!
Comment by Kevin Cameron
Given that it’s hard to build anything small on Silicon with much accuracy, there isn’t a lot of market for a simulator that is super accurate. Manufacturing chips is pretty much a statistical game so for the simulator vendors it’s an exercise in providing enough performance for engineers to verify their design over a rather large design/manufacturing space - i.e the emphasis is on handling multi-rate issues and employing parallel processing.
Some circuits do require accurate simulators to get the correct behavior and noise characteristics, but who is prepared to pay the extra for a simulator guaranteed to do it right?