Accuracy or fidelity?
Brian Bailey - December 6, 2012
Let’s face it – everything in the EDA industry is based on simplification, estimates and experience. If we took the time to deal with all of the data, all of the time, we would never get anything done. The industry has grown up, particularly in the digital domain, by taking ever more high-level views of the system that take into account 90 or 95% of the issues that would be encountered in the real silicon and dealing with the remaining issues in a more ad-hoc manner, such as timing closure, optical proximity correction, and more recently by pushing rules higher up into the development process. But chips are subject to random variability and because of the geometries these days, those random variations are becoming a bigger issue. We are creating devices where we can count the number of electrons or atoms that make up an active region of a device in the single digits. A difference of one atom suddenly makes a big difference in gate thickness and a corresponding change in its performance. In some cases it will result in a defective chip that impacts your yield and profit margin.
So while the smaller geometries are implying that we must take more detail into account, the size of the chips and systems is pushing us in the other direction. We must start designing systems at a much higher level of abstraction and by definition, abstraction is the removal of detail that is not necessary for that level of decision making. Removal of detail is a reduction of accuracy in that particular domain. As an example, in a virtual prototype, timing is abstracted and may even be removed such that order is the only notion of timing that is left. To use this effectively requires certain design styles or methods be adopted, otherwise ineffective or wrong decisions may be made and at this level of abstraction it is that notion, or fidelity, that is more important than accuracy. If I make design decision A rather than B, will I achieve a better design? This does not mean that either A or B is defined with any particular kind of accuracy.Consider two design options yield a value for A of 5 and for B of 18 based on runs using a virtual prototype and that a smaller number is considered better. The analysis is showing that A is clearly the better choice. Very little faith can be placed on the value of 5 being accurate, but there should be a high level of confidence that A is the better solution. If the differences between them are small, and within a certain level of tolerance, then it may be telling you that the two design options are undifferentiatable at that level and the choice is somewhat arbitrary. High-levels of abstraction should be used to find options that are highly differentiated. You are not looking for the 5% improvement; you are looking for the 50% improvement. Even if final results are significantly different, you should still be highly confident in the choices that you made.
Brian Bailey – keeping you covered
If you liked this feature, and would like to see a weekly or bi-weekly collection of related features delivered directly to your inbox, sign up for the IC Design newsletter.