Today, Cadence announced the Spectre FX Simulator, a next-generation FastSPICE circuit simulator with up to 3X the performance of anything else in the market (at the same accuracy or better). It solves large-scale verification simulation challenges for complex analog and custom digital blocks and subsystems, including memories.

When I heard that, my first thought was "wait, I ran Custom IC twenty years ago and we had a FastSPICE product back then". The Spectre FX team told me that my memory is not faulty, and in fact we still have customers today who use UltraSim. And the more recent technology, Spectre XPS, plays a big role in the development of Spectre FX. With Spectre FX, we decided it was time to make a big leap forward, as we did two years ago with Spectre X (which you can read about in my post Spectre X: Same Accuracy, New Speed).

Spectre FX is the latest FastSPICE product, built from the ground up by a new team of experts. It normally gets results about 3X faster than other products. Our press release has to say "up to 3X," which is terminology I hate. Partially, because I hate sloppy writing ("perhaps the best"). But also because it could mean anything. When you see a sign saying "up to 50% off on the whole store", you know it actually means most of the store is normal price, or has a tiny discount, and a few things you don't want are 50% off. Anyway, Spectre FX is around 3X faster. Across the whole store.

But don't listen to me, listen to MediaTek who have been using it for for characterization of advanced-node SoCs, where it tripled productivity, or listen to Renesas who have used it for characterization of flash memory IP, where it doubled productivity.

So what is a FastSPICE simulator? Well, firstly it does exactly what it says on the can. It is a SPICE-type circuit simulator that makes different tradeoffs in order to produce results much faster. Also, as a result, it can effectively handle much larger designs like memories.

### How Does SPICE Work Anyway?

Feel free to skip this whole section if you just want to drive the car and have no interest in how a four-stroke engine works (or an electric motor if you have a Tesla).

Circuit simulators work by encoding all the circuit connectivity, voltages, coupling, current/voltage relationships, capacitance, and so forth in a matrix. A big matrix. A time increment is picked, and the differential equations captured in the matrix are solved to work out what the voltage (and other) values will be at the end of the time increment. Then a new time increment is picked, and the algorithm is repeated until the entire simulation has been run. Big matrix. Small time increments. Lots of them. This is why circuit simulation is slow. If you need every little detail of every node through the whole simulation, there is not really any alternative to this. To paraphrase Levi's, accuracy never goes out of style. But if you only care about higher-order effects, functionality, timing, power, this is overkill.

The FastSPICE approach taken by Spectre FX breaks the design into partitions. How well this partitioning is done is part of the secret sauce that makes Spectre FX a good FastSPICE simulator. Each of these partitions can be solved largely in isolation. I say "largely" because the partitions are still electrically connected and a node that appears in two partitions only really has one voltage, so that has to be resolved as the simulation proceeds. One immediate advantage of the partitioning approach is that different partitions can use different time increments. In fact, it sometimes gets better since some partitions may not be changing at all (so we can re-use values without doing any re-calculation) or in a very predictable way (so we can pre-compute values into a table and use interpolation).

One of the drivers for advanced packaging is that multiple small die yield much better than one big die. And so it is with circuit simulation matrices. If a matrix algorithm is O(n^{2}), then splitting the matrix into four and running the algorithm on the four quarter-sized matrices ends up four times as fast. Moreover, those different partitions can be assigned to different cores across multiple machines, in the limit going another four times as fast. Of course, communication cannot be ignored. There is always a balance between gaining on the swings of performance from partitioning, and losing on the roundabouts of communication between the partitions.

Using all these tricks, Spectre FX can run much faster at only a small decrease in accuracy. Where do the inaccuracies creep in? Two obvious places are letting a node that appears in two partitions have two voltages that are close rather than precisely the same. Another is that when interpolating in a table, there is always some inaccuracy compared to doing the exact, but much slower, precise calculation.

### Spectre FX

Spectre X delivers the highest accuracy, but at the cost of runtime. Spectre FX delivers the highest performance and capacity but at a cost of a slight decrease in accuracy. You can think of it as a dial—like in the above diagram—giving you the choice. For analog characterization, there is no substitute for accuracy. For memory characterization, there is no substitute for speed. In between, there are designs where capacity is the most important, such as characterizing a large digital block

Spectre FX can take advantage of up to 32 cores. As you can see from the above graph, the speedup is 3X (except for the smallest designs that are dominated by overhead). It fits seamlessly in the Virtuoso ADE Product Suite and can use all the same Spectre industry-certified device models and syntax. So if Spectre X can run a design, then so can Spectre FX.

### Learn More

See the Cadence Spectre FX product page.

**Sign up for Sunday Brunch, the weekly Breakfast Bytes email.**