cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Check out the JMP® Marketplace featured Capability Explorer add-in
Choose Language Hide Translation Bar
Neo
Neo
Level VI

How to get Process Parameter Group Yield per "Wafer ID in lot ID"?

The following example script gets the "Process Parameter" Yield per "Wafer ID in lot ID" using the sample Semiconductor Capability data table.

 

Names Default To Here (1);
clear log ();
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp"); // My actual data is similar
col_names = dt << Get Column Group("Processes");
ps = dt << Process Screening (Process Variables( Eval( col_names )),
Spec Limits Dialog( "No (skip columns with no spec limits)" ),
Control Chart Type ("Indiv and MR"),
Grouping (:Wafer ID in lot ID );
);
cdt_ps = Report(ps)[Outline Box( "Process Screening" )][Table Box( 1 )] << Make Combined Data Table;
Wait(1 );
ps<< SendToReport( Dispatch( {}, "Process Screening", OutlineBox, {Close( 1 )} ) );
Wait (1);
ps << close window;
cdt_ps << New Column( "PassingDie", Numeric, "Continuous", Format( "Best", 12 ), Formula(:Count - :Out of Spec Count));
cdt_ps << New Column( "ParaYield [%]", Numeric, "Continuous", Format( "Best", 12 ), Formula(100*(:PassingDie / :Count)));
cdt_ps:Column << Set Name( "Process Parameter" );

Now lets call a Process Parameter "PP", the Process Parameter Group "PPG" and a Wafer ID in lot ID "wfrIDinLotID" 

 

Next I want to extract the PPG yield per wfrIDinLotID where the PPG's are defined as:

  • All PNP's in one group
  • All NPN's in another group
  • All INM's are in another group and so on.
    i.e. all PPs generated by the line below but without the numbers at the end form the PPG names.

 

cdt_ps << Summary(Group( :Process Parameter ), Freq( "None" ), Weight( "None" ));

I do not yet know how to do get the PPG names in a new column in JSL. So, need some help here.

Some PPGs may have just one member which is fine.

The fail count of a given PPG is, I think, is the sum of fail counts of each of its members, later being available from the above script.

Therefore, for a particular wfrIDinLotID, the "Out of Spec Count" for a given PPG, is expected to have a single numerical value. This will go to a new column, lets call it OOSC_PPG.

The PPG yield for a given wfrIDinLotID would then be 100*(number of SITEs with OOSC_PPG = 0)/ Total SITEs tested.

Total sites tested per wfrIDinLotID is 5 in the example data table.

 

Finally, I would like to generate a report with 3 columns: wfrIDinLotID, PPG,  PPG yield.

Please could I have some direction on how to proceed with JSL?

 

When it's too good to be true, it's neither
22 REPLIES 22
Neo
Neo
Level VI

Re: How to get Process Parameter Group Yield per "Wafer ID in lot ID"?

@hogi I am now testing the script with my actual data table.

The parameter names in my case are of the form ABCD_1_X_Y_1_Z and the PPGs are defined by various combinations of ABCD...GH (A is always a letter while rest can be letters or numbers).

X and Y are numbers while Z can be number or letter or a combination.

Don't ask my why the naming is in such a form - not my doing. 

PPGs are formed in the following way

  • U33P_1_0_0.... will be contained in the PPG "U33P"
  • CASMAPUL23Out_1_0_1_...will be contained in the PPG "CASMAPUL23Out", and so on

So, to get the PPG name, I need to get the letter combination before the first underscore in the parameter name. How, to modify the following to work in my case.

colGroup = Filter Each({col}, col_names, Substr(col << getname(),1,3) == myName);
When it's too good to be true, it's neither
jthi
Super User

Re: How to get Process Parameter Group Yield per "Wafer ID in lot ID"?

Check out Word() and Words() functions, they are usually very useful for something like this.

-Jarmo
hogi
Level XII

Re: How to get Process Parameter Group Yield per "Wafer ID in lot ID"?

As @jthi says,

colGroup = Filter Each({col}, col_names, Word(1, col << getname(),"_") == myName);

will do the job : )