posted by Bryon Moyer
As a newly-developed process is prepared for delivery into the production world, one of the last things that has to happen to effect a transition is the development of compact models for use in design simulation. And, of course, these days, such a model must account for process variations, which means covering the wide range of corners that a process can have to capture the statistics.
We’ve seen some of this before with Solido, but according to newcomer GSS, whom my colleague Dick Selwood explored at some length back when GSS was getting started, most other tools model processes as Gaussian, and the world isn’t actually Gaussian. Also, the existing tools help with simulation, but they don’t create a model.
Well, GSS has now released their tool. It works as a “wrapper” to a simulator, as these tools are wont to do. So it doesn’t do the actual simulation; you pick whatever simulator you want to work with, along with the circuit and model strategy, and the GSS tool creates the corners to be run – on the order of a couple thousand runs. Because of the independence of the runs, this scales perfectly with additional processors; you specify the number of processors and it handles the load management.
It then builds a model with statistical features that no other models have; the model itself has time-dependent capabilities for characteristics that evolve over time. In this manner, they say that it bridges TCAD and production EDA in a way that no other tool does.
They announced their tool in a somewhat indirect fashion, focusing on the possibility of unforeseen SRAM yield issues at the 20-nm node. You can see more about the details of that discussion in their release.
posted by Bryon Moyer
If you’re new to the world of motion and navigation (as I feel I still am, even after a couple of years of digging in), there are a couple words that come up a lot. And they’re usually tossed about casually in that, “If you have to ask, you’re not cool enough for the answer” kinda way. (Mostly, when I sport that attitude, it’s because I don’t really know what I’m talking about and I want to dissuade anyone from calling me on it…)
Those two words are “quaternion” and “Kalman.” I’ll give you a few seconds to repeat them quietly to yourself, Mr. Rogers style.
Let’s take them one at a time, since they’re not really related.
The context in which you might find “quaternion” is in the output of a motion sensor. Now, with the increase in sensor fusion and higher-level abstraction, many of you might not need that output – you’ve already got software that hides this low-level information.
But here’s what it’s about: the math of rotations, although that’s not how it started. Way back in the 1800s, a guy named Hamilton noted that, using standard three-dimensional math, points were easy to add and subtract in space, but multiplication and division were cumbersome. He invented a way of handling this by adding a fourth dimension and, effectively, extending the complex numbers as we know them to include a j and k along with the more familiar i*.
The defining characteristic is
i2 = j2 = k2 = ijk = -1
But, as the tale is told, vector calculus overtook this method and it dropped out of sight until much more recently. Because, among other things, rotations – which require three moves using standard Euler angles and rotation matrices – can be accomplished in a single move using quaternions. This mathematical efficiency allows calculation of rotations in less time.
There’s another problem that quaternions solve: that of “gimbal lock.” There seem to be a bunch of ways of describing this, but mathematically it means more or less that one of your independent dimensions becomes degenerate with another.
From a practical standpoint, here’s how it feels to me. Let’s say you’re watching an airplane pass nearly overhead. You tilt your head back as it approaches, and, if it passes to your left, your head (and body) rotate around towards your left until you’re facing the opposite direction as the plane continues on, with your head now descending gradually as the plane disappears.
All of those movements are “predictable” (for lack of a better word). But assume the plane goes right over your head. You tilt your head back with no rotation (because it’s neither to the left nor the right of you). But once you’re looking straight up as it passes over your head, what do you do? You effectively have to make an infinitely fast rotation to face backwards, and it’s not well defined (or “predictable”) what that rotation should be (because it’s infinite) nor whether you would do it to the right or the left. That is one manifestation of gimbal lock: at that point when you’re looking straight up, you effectively lose a dimension.
Therefore, once expressed in quaternions, it becomes easier to calculate orientation as objects move and rotate through space.
What about that Kalman dude? You typically hear about a Kalman filter, and you typically hear it in contexts that make no sense for what you might think a filter does. Like figuring out where you are based on where you’ve been and whatever move you just made. How the heck does a filter get involved with that?
Well, I’m not sure I can justify the word “filter” so I won’t try (I’m sure there’s a good – probably historical – reason). But here’s what it’s about, and to make sense of it you have to own up to a couple of realities that might shake your faith a bit.
- The models we have for how the world works are approximate. Using them unquestioningly (like doing anything unquestioningly) will lead to errors. This one you probably knew already.
- Real-world measurements of things, which you would assume to reflect the “gold standard” for what’s real (as opposed to a model), are riddled with errors. At best, there’s going to be noise in the measurement, and you don’t really know which part of a given measurement is the noise and which part is accurate.
In other words, you can’t trust your model and you can’t trust your measurements. You might as well toss up your hands and go home.
But… not so fast.
A Kalman filter can act as an arbiter between model and measurement. Generically speaking, you build an engine that takes a current value – let’s say it’s a position – and evaluates both the model and the last measured position (or “update”) and, from that information, calculates what it thinks the next position will be. The filter operation is a steady sequence of predict/update steps. You might imagine that this has figured large in space exploration (which I believe was the first solid use).
The concept is very generic: the models and next-state prediction are specific to a problem (which might have nothing to do with position), and numerous parameters might be involved. For instance, your model might not simply predict position using x, y, and z coordinate measurements; it might come from double-integrated acceleration measurements, cross-checked by gyroscope measurements to guard against gravity leakage, which is itself cross-checked by a magnetometer, and you might toss a pressure gauge in there as well as a second-opinion indicator of the z dimension.
These can all be munged together in the model and calculation. The “gain” of the filter has to do with how much trust is placed in the actual measurement. A high gain indicates highly credible measurements; a gain of 0 means the measurement is ignored.
Those are my takes on quaternions and Kalmans. Feel free to amplify, contradict, or whatever in the space below.
* i, for some reason, got transmuted to j in all of my engineering studies… one of those things that just happens in some class, you scratch your head wondering what happened, and no one else – not even the prof – appears to notice or explain why we suddenly made this arbitrary change.
posted by Bryon Moyer
No one ever got fired for using PrimeTime to sign off a chip. Actually, I don’t know if that’s true, but from an EDA buyer’s point of view, it might as well be. PrimeTime has been treated as the gold standard of accuracy. To the extent that, if you have a new tool that’s more accurate than PrimeTime, then it’s wrong. Why? Because PrimeTime says so.
And most everyone has backed down from that challenge. After all, if you’re going to displace the thing against which you’re being judged and which is judging you, then you have to have something besides accuracy to sell. And just like anytime you go up against a strongly entrenched incumbent, you can’t just be kinda better: you have to be enormously overwhelmingly undeniably better. Cutting some cost by 50% (or doubling some benefit) won’t cut it. I’ve always felt you have to be at least 10 times better to overcome incumbent stiction.
Well, based on a new from-the-ground-up tool done by some ex-Magma experts, Cadence has just announced Tempus, their new sign-off timing tool. And what number improvement are they touting for performance? 10x. No, I didn’t earn any consulting fees for that number. It’s enabled to a large extent by unlocking more parallelism – dozens of CPUs (multi-threaded and distributed) rather than the usual 4-8 or so.
Accuracy is still part of the deal; they’re touting path-based analysis – 10x faster than competition, around 3M nets per hour – as a more accurate approach. It is likely, though, that designers will stick with a methodology of using graph-based first (because it’s faster than path-based) and then re-doing the failures with path-based to narrow down those areas that really need work. But it’s the 10x thing they’re touting. Technically, “up to 10x.” But they also claim that they’re being conservative in their claims.
We’ll look into some more aspects of this announcement in future posts, but for now it bears noting that temerity is afoot. It will be truly interesting to see if this really takes off or ends up as a Tempus in a teapot…