Threshold voltage CalculationI would like to add a new column 'Vth' in my table with the following calculation:-
First I need to find the index i of column 'IDS' where the 'IDS' is nearest to 1e-9 (or Log10[IDS] = -9); and then Vth = VGS(i). It should be grouped by Site, Measurement, SWP, Device, Wafer columns as well. That is, each unique combination of Site, Measurement, SWP, Wafer, Device will have one Vth value.
One technique to find exact VTH could be
Find VGS, logIDS, which is just above -9..-- Call it VGS_u, log(IDS)_u
Find VGS, logIDS, which is just below -9..-- Call it VGS_i, log(IDS)_i
calculate slope, m = abs(log(IDS)_u-log(IDS)_i)./abs( abs(VGS_u-VGS_i))
Exact VTH = VGS_i + 1/m*(9-abs(log(IDS)_i)))
Note the SWP column is sweep of VGS in forward (0) and reverse (1) direction; therefore the lower and higher values of VGS need to be taken care of in proper manner. Plot logIDS (y-axis) vs. VGS (x-axis) and overlay by SWP (for a given Site, Measurement, Wafer, Device), to know what I am talking about.
AnalyticsScriptingRe: Threshold voltage CalculationHi,
Maybe someone who works in semiconductor will know more about what you are trying to do and can help you.
I am struggling to understand what you need to do (I have never worked in semiconductor). So it would help if you could provide a table with just a few rows to illustrate what it is that you need to do with the larger data table. It is much easier when you can see what you are trying to achieve - describing in words is often difficult.
Regards,
Phil
Re: Threshold voltage CalculationIt's been a while since I thought about such things. I took a quick look at your data. In connection with the plot below, can you explain further how you would want to combine the results from the forward and reverse sweep to get one VTH value for each combination, please?

Having looked at a few other combinations, I know that their data is not always so nice. Is the '-9' value you mention universal?
Re: Threshold voltage Calculationian_Jmp, Yes exactly. But I want VTH value separately for forward and reverse sweeps. I just wanted to highlight that in 'forward' sweep, the row number would be increasing (as VGS increases) while for reverse sweep, the row number would decreasing (as VGS increases). You may have already noticed that already; I just added as a caution because upper and lower values of VGS values (around -9 current) can be confusing in forward and reverse sweeps.
Yes logIDS=-9 = universal.
Re: Threshold voltage CalculationHi,
Based on the graph below, it does not appear that it is always possible to find consecutive values of log10[IDS] straddling -9, (x5), so you'd have to decide how you'd like to report that. Also, in cases where log10[IDS] does cross -9, (x6) the closest values above and below -9 may not fall on consecutive rows, so care must be taken to define what you want there, as well.

Re: Threshold voltage CalculationYou could consider using this kind of approach (also saved in the attached table):
NamesDefaultToHere(1);
// Make sure :"Log10[IDS]"n has the 'Response Limits' property set appropriately
dt = DataTable("CC_JMP_Final.jmp");
// Perform a 'flexible fit' (knotted spline with ten knots) and use the profiler to optimise the response.
// Use a 'By' variable to get a fit for each distinct level
fm = dt << Fit Model(
Y( :"Log10[IDS]"n ),
Effects( :VGS & Knotted( 10 ) ),
By( :SWP ),
Run( Profiler(1, Maximize and Remember), :"Log10[IDS]"n )
);
// Collect optimised 'X' values into a table
firstReport = fm[1] << Report;
dt2 = firstReport[NumberColBox(24)] << makeCombinedDataTable;
It may or may not be a reasonable way to try to handle some of the issues mentioned by @brady_brady above. It's certainly not a recommendation, but it might get you thinking. It's also doing way more work than is required, but has the advantage that it's using inbuilt functionality and no real scripting. Using it on the full table took about three minutes on my laptop.
Re: Threshold voltage CalculationHi Pankaj,
I tried to do it this way and hope that it turns out to be a solution for your case.
First, select all 5 columns to be combined, right-click on one of the columns > New Formula Column > Character > Concatenate with Space. Secondly, right-click on this new column > New Formula Column > Group By.
Then create a new column to calculate Abs(Delta LogIDS to -9). Right-click on this newly calculated column > New Formula Column > Aggregate > Minimum.
Finally, create a new column (Vth) by using the IF condition. If Min Abs(Delta LogIDS) = Abs(Delta LogIDS) then return VGS value else return 0.
You can either clean up the table by removing Vth = 0 or subset rows with Vth value in it.
*Do take note that this method will not take care of double measurement with the same Min Abs(Delta LogIDS) value, at times you might find duplicated rows.
I also plotted Vth values on Wafer 8983-07, partition by Wafer / Device / Measurement / Site, and overlay by SWP.
You may refer to the attached table for details.
