Process guys usually think of yield in terms of CPK (process capability index). It was designed to show how well the process is doing given its part performance. They designed a process, observed its spread of say gate thickness and came up with standard deviation number. Now, next time when they produce wafers with same process, they were like: “hmm I wonder if this process is still any good, if it is still capable“. Thus, they came up with this CPK index to give them a sense of how process is doing. They could have just checked the standard deviation again, but no they had to define a new index for them, and now we IC designers also are asked to use it, oh well. The CPK, standard deviation or % yield they are just different ways of saying how many parts are failing.
Ok, good to know CPK but still % number is more intuitive. How do I know % yield loss? If you wanna do this in your head, you would multiply CPK with 3 to get \(\sigma\), and you would recall +/- 3\(\sigma\) means 99.7% (i.e., only 0.3% yield loss), +/- 2\(\sigma\) means 95% (i.e., 5% yield loss) and +/- \(\sigma\) would mean 68% (i.e., 32% yield loss). Please see below section for more generalized way.
CPK is derived for normal distribution which is symmetric around its mean. Most of the numbers we measure are in dB which have asymmetric distribution (aka skewed). You have two options:
Your skewed distribution would become normal when you convert it to linear scale. You can either use factor of 10 or 20, does not really matter. I use 20:
Parameters like ACLR, LO leakage and image rejection etc. with skewed distribution in dB scale transform into normal distribution in linear scale. So now you can apply normal distributions statistics to get yield estimate. Before that, you standardize your data (meaning make its mean equal to zero, and standard deviation one), plot it and then start integrating from -inf until you reach your LSL. The area under the curve would be the probability of parts that failed. Microsoft Excel can do these both steps with one command:
If you have LSL: NORM.DIST(LSL , \(\mu\) , \(\sigma\) , TRUE)
If you have USL: 1 – NORM.DIST(USL , \(\mu\) , \(\sigma\) , TRUE)
If you have both LSL & USL: 1 – NORM.DIST(USL , \(\mu\) , \(\sigma\) , TRUE) + NORM.DIST(LSL , \(\mu\) , \(\sigma\) , TRUE)
Now how do you come up with \(\sigma_s\). You can take help from percentiles. For example, in standard normal distribution, 5th percentile lies at -1.6\(\sigma\) away from mean. How did I know this? you can integrate your standard normal distribution from -inf uptil you have accumulated 0.05 probability which means 5% of parts or in other words 5th percentile. You don’t want to integrate? No problem, there are tables available already online called z-tables, you can figure out for 0.05 probability what is z-score, and that z-score will mean you are this much \(\sigma\) away from mean. Now all you need to do is to compare mean – 5th percentile of your data to z-score (which is 1.6 for 5th percentile). If mean- 5th percentile is also 1.6, then it means your distribution is already standard normal with \(\sigma_s=\sigma=1\). Here is the general formula for pseudo sigma:
How do you go from here? Use linear yield estimate. If your distribution is still skewed, model it to normal distribution by \(\sigma_s\).
We show below some dB data with negatively distribution skewed. We have LPL spec of 62dB. About 200 parts were measured. Yield was calculate in three ways: by actually counting the parts which were failing (15.2%), by converting dB to linear and using normal statistics (15.6%), by estimating pseudo sigma using 5th percentile (16.8%). We see linear estimation is spot on and dB estimation is little off. We would trust 15.6% over 15.2%, why? because parts measured are still on low side (200, not millions). We also show how would dB estimation look like if you had chosen different percentiles.
Author: RFInsights
Date Published: 18 Dec 2022
Last Edit: 02 Feb 2023