cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Discussions

Solve problems, and share tips and tricks with other JMP users.
%3CLINGO-SUB%20id%3D%22lingo-sub-539382%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%E6%9C%80%E8%BF%91%E9%84%B0%E6%99%B6%E5%9C%93%E5%9C%96%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-539382%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CBR%20%2F%3E%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E9%81%8E%E6%BF%BE%E7%89%B9%E5%AE%9A%E7%BC%BA%E9%99%B7%EF%BC%88%E5%9C%A8%E7%BC%BA%E9%99%B7%E5%88%97%E4%B8%AD%EF%BC%89%E5%92%8C%208%20%E5%80%8B%E6%9C%80%E8%BF%91%E9%84%B0%E5%B1%85%E4%B8%A6%E5%BE%9E%E4%B8%BB%E8%A1%A8%E4%B8%AD%E6%8F%90%E5%8F%96%E6%95%B8%E6%93%9A%E5%AD%90%E9%9B%86%EF%BC%9F%3CBR%20%2F%3E%3CBR%20%2F%3E%E8%AC%9D%E8%AC%9D%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-539382%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CLINGO-LABEL%3E%E9%AB%98%E7%B4%9A%E7%B5%B1%E8%A8%88%E5%BB%BA%E6%A8%A1%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3E%E5%85%A7%E5%AE%B9%E7%B5%84%E7%B9%94%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3E%E6%95%B8%E6%93%9A%E6%B7%B7%E5%90%88%E5%92%8C%E6%B8%85%E7%90%86%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3E%E6%95%B8%E6%93%9A%E6%8E%A2%E7%B4%A2%E5%92%8C%E5%8F%AF%E8%A6%96%E5%8C%96%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3E%E5%A4%A7%E8%A6%8F%E6%A8%A1%E5%AE%9A%E5%88%B6%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-540173%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9A%E6%9C%80%E8%BF%91%E9%84%B0%E5%B1%85%E6%99%B6%E5%9C%93%E5%9C%96%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-540173%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%E9%9D%9E%E5%B8%B8%E6%84%9F%E8%AC%9D%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-539451%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9A%E6%9C%80%E8%BF%91%E9%84%B0%E5%B1%85%E6%99%B6%E5%9C%93%E5%9C%96%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-539451%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%E4%BB%A5%E4%B8%8B%E7%A4%BA%E4%BE%8B%E4%BD%BF%E7%94%A8%20JMP%20%E7%A4%BA%E4%BE%8B%E8%A1%A8%E4%B8%AD%E7%9A%84%E6%99%B6%E5%9C%93%E5%A0%86%E7%96%8A%E6%95%B8%E6%93%9A%E8%A1%A8%E4%BE%86%E9%81%B8%E6%93%87%E6%9C%80%E8%BF%91%E7%9A%84%E7%9B%B8%E9%84%B0%E8%8A%AF%E7%89%87%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22txnelson_0-1662027495705.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22txnelson_0-1662027495705.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22txnelson_0-1662027495705.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F45125i166A1795A443B8E1%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22txnelson_0-1662027495705.png%22%20alt%3D%22txnelson_0-1662027495705.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3Enames%20default%20to%20here(1)%3B%0AdtMain%20%3D%0A%2F%2F%20Open%20Data%20Table%3A%20Wafer%20Stacked.jmp%0A%2F%2F%20%E2%86%92%20Data%20Table(%20%22Wafer%20Stacked%22%20)%0AOpen(%20%22%24SAMPLE_DATA%2FWafer%20Stacked.jmp%22%20)%3B%0AdtMain%20%26lt%3B%26lt%3B%20set%20name(%22Main%22)%3B%0AdtMain%3AX_Die%20%26lt%3B%26lt%3B%20modeling%20type(Ordinal)%3B%0AdtMain%3AY_Die%20%26lt%3B%26lt%3B%20modeling%20type(Ordinal)%3B%0A%0A%2F%2F%20For%20illustration%2C%20use%20only%20Wafer%201%20data%0AdtMain%20%26lt%3B%26lt%3B%20select%20where(%20%3AWafer%20%3D%3D%201%20%26amp%3B%20%3ALot%20%3D%3D%221%22%20)%3B%0AdtMain%20%26lt%3B%26lt%3B%20invert%20row%20selection%3B%0AdtMain%20%26lt%3B%26lt%3B%20delete%20rows%3B%0A%0A%2F%2F%20Create%20a%20separate%20data%20table%20that%20only%20has%20the%20die%20with%20defects%20in%20them%0AdtMain%20%26lt%3B%26lt%3B%20select%20where(%20%3ADefects%20%26gt%3B%200%20)%3B%0AdtDefects%20%3D%20dtMain%20%26lt%3B%26lt%3B%20subset(%20selected%20rows(%201%20)%2C%20selected%20columns(%200%20)%2C%0Aoutput%20table(%20%22Defects%22%20)%20)%3B%0A%0A%2F%2F%20Remove%20the%20defects%20column%20from%20the%20main%20table%0AdtMain%20%26lt%3B%26lt%3B%20delete%20columns(%20%3ADefects%20)%3B%0A%0A%2F%2F%20Create%20a%20table%20with%20the%20nearest%20neighbor%20data%20from%20the%20main%20table%2C%20based%20upon%20one%20of%20the%20%0A%2F%2F%20defect%20die%20that%20has%20a%20defect%20in%20the%20defect%20table.%0A%2F%2F%20For%20illustration%20we%20will%20pick%20the%20die%20in%20the%20Defect%20table%20in%20row%0ADefectRow%20%3D%201%3B%0A%0AdtMain%20%26lt%3B%26lt%3B%20select%20where(%20dtMain%3AX_Die%20%26gt%3B%3D%20dtDefects%3AX_Die%5BDefectRow%5D%20-%201%20%26amp%3B%20%0AdtMain%3AX_Die%20%26lt%3B%3D%20dtDefects%3AX_Die%5BDefectRow%5D%20%2B%201%0A%20%26amp%3B%0AdtMain%3AY_Die%20%26gt%3B%3D%20dtDefects%3AY_Die%5BDefectRow%5D%20-%201%20%26amp%3B%20dtMain%3AY_Die%20%26lt%3B%3D%20dtDefects%3AY_Die%5BDefectRow%5D%20%2B%201%20%0A)%3B%0A%0AdtNear%20%3D%20dtMain%20%26lt%3B%26lt%3B%20subset(%20selected%20rows(%201%20)%2C%20selected%20columns(%200%20)%2C%0Aoutput%20table(%20%22Nearest%22%20)%20)%3B%0A%0A%2F%2F%20Display%20the%20selected%20die%0AdtNear%20%26lt%3B%26lt%3B%20Graph%20Builder(%0A%20Size(%20512%2C%20448%20)%2C%0A%20Show%20Control%20Panel(%200%20)%2C%0A%20Variables(%20X(%20%3AX_Die%20)%2C%20Y(%20%3AY_Die%20)%20)%2C%0A%20Elements(%20Points(%20X%2C%20Y%2C%20Legend(%205%20)%20)%20)%0A)%3B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-539393%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9A%E6%9C%80%E8%BF%91%E9%84%B0%E5%B1%85%E6%99%B6%E5%9C%93%E5%9C%96%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-539393%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%E6%88%91%E5%BB%BA%E8%AD%B0%E6%AA%A2%E6%9F%A5%E4%B8%80%E4%B8%8B%3CA%20href%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2FJMP-Add-Ins%2FSemiconductor-Toolkit%2Fm-p%2F22460%23U22460%22%20class%3D%22lia-mention-container-editor-message%20lia-img-icon-tkb-thread%20lia-fa-icon%20lia-fa-tkb%20lia-fa-thread%20lia-fa%22%20target%3D%22_blank%22%3E%E5%8D%8A%E5%B0%8E%E9%AB%94%E5%B7%A5%E5%85%B7%E5%8C%85%3C%2FA%3E%E5%8A%A0%E5%85%A5%E3%80%82%20%E5%B1%A4%E6%AC%A1%E8%81%9A%E9%A1%9E%E4%B9%9F%E5%8F%AF%E8%83%BD%E6%9C%89%E6%95%88%E3%80%82%20%E4%B9%9F%E7%B8%BD%E6%98%AF%E5%8F%AF%E4%BB%A5%E9%81%B8%E6%93%87%E5%9F%B7%E8%A1%8C%E4%B8%80%E4%BA%9B%E5%9F%BA%E6%9C%AC%E4%B8%8A%E5%8F%AF%E4%BB%A5%E5%9F%B7%E8%A1%8C%E2%80%9C%E4%BB%BB%E4%BD%95%E6%93%8D%E4%BD%9C%E2%80%9D%E7%9A%84%E8%85%B3%E6%9C%AC%EF%BC%88KDTable()%20%E5%8F%AF%E8%83%BD%E6%98%AF%E4%B8%80%E5%80%8B%E5%A5%BD%E7%9A%84%E9%96%8B%E5%A7%8B%EF%BC%8C%3CA%20href%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2FDiscussions%2FNear-neighbors-mean-calculation%2Fm-p%2F345333%23U345333%22%20class%3D%22lia-mention-container-editor-message%20lia-img-icon-forum-thread%20lia-fa-icon%20lia-fa-forum%20lia-fa-thread%20lia-fa%22%20target%3D%22_blank%22%3E%E8%BF%91%E9%84%B0%E5%9D%87%E5%80%BC%E8%A8%88%E7%AE%97%3C%2FA%3E%EF%BC%89%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E
Choose Language Hide Translation Bar
Tiff
Level I

nearest neighbors wafer map

Hi
Is this possible to filter a specific defect (in defect column) and 8 nearest neighbor and subset the data from main table?

Thanks

1 ACCEPTED SOLUTION

Accepted Solutions
txnelson
Super User

Re: nearest neighbors wafer map

Here is an example using the Wafer Stacked data table from the JMP Sample tables that selects the nearest neighbor die

txnelson_0-1662027495705.png

names default to here(1);
dtMain =
// Open Data Table: Wafer Stacked.jmp
// → Data Table( "Wafer Stacked" )
Open( "$SAMPLE_DATA/Wafer Stacked.jmp" );
dtMain << set name("Main");
dtMain:X_Die << modeling type(Ordinal);
dtMain:Y_Die << modeling type(Ordinal);

// For illustration, use only Wafer 1 data
dtMain << select where( :Wafer == 1 & :Lot =="1" );
dtMain << invert row selection;
dtMain << delete rows;

// Create a separate data table that only has the die with defects in them
dtMain << select where( :Defects > 0 );
dtDefects = dtMain << subset( selected rows( 1 ), selected columns( 0 ),
output table( "Defects" ) );

// Remove the defects column from the main table
dtMain << delete columns( :Defects );

// Create a table with the nearest neighbor data from the main table, based upon one of the 
// defect die that has a defect in the defect table.
// For illustration we will pick the die in the Defect table in row
DefectRow = 1;

dtMain << select where( dtMain:X_Die >= dtDefects:X_Die[DefectRow] - 1 & 
dtMain:X_Die <= dtDefects:X_Die[DefectRow] + 1
 &
dtMain:Y_Die >= dtDefects:Y_Die[DefectRow] - 1 & dtMain:Y_Die <= dtDefects:Y_Die[DefectRow] + 1	
);

dtNear = dtMain << subset( selected rows( 1 ), selected columns( 0 ),
output table( "Nearest" ) );

// Display the selected die
dtNear << Graph Builder(
	Size( 512, 448 ),
	Show Control Panel( 0 ),
	Variables( X( :X_Die ), Y( :Y_Die ) ),
	Elements( Points( X, Y, Legend( 5 ) ) )
);

 

Jim

View solution in original post

3 REPLIES 3
jthi
Super User

Re: nearest neighbors wafer map

I suggest checking out Semiconductor Toolkit addin. Hierarchical clustering might also work. There is also always option to do some scripting which can do basically "anything" (KDTable() might be a good start,Near neighbors mean calculation).

-Jarmo
txnelson
Super User

Re: nearest neighbors wafer map

Here is an example using the Wafer Stacked data table from the JMP Sample tables that selects the nearest neighbor die

txnelson_0-1662027495705.png

names default to here(1);
dtMain =
// Open Data Table: Wafer Stacked.jmp
// → Data Table( "Wafer Stacked" )
Open( "$SAMPLE_DATA/Wafer Stacked.jmp" );
dtMain << set name("Main");
dtMain:X_Die << modeling type(Ordinal);
dtMain:Y_Die << modeling type(Ordinal);

// For illustration, use only Wafer 1 data
dtMain << select where( :Wafer == 1 & :Lot =="1" );
dtMain << invert row selection;
dtMain << delete rows;

// Create a separate data table that only has the die with defects in them
dtMain << select where( :Defects > 0 );
dtDefects = dtMain << subset( selected rows( 1 ), selected columns( 0 ),
output table( "Defects" ) );

// Remove the defects column from the main table
dtMain << delete columns( :Defects );

// Create a table with the nearest neighbor data from the main table, based upon one of the 
// defect die that has a defect in the defect table.
// For illustration we will pick the die in the Defect table in row
DefectRow = 1;

dtMain << select where( dtMain:X_Die >= dtDefects:X_Die[DefectRow] - 1 & 
dtMain:X_Die <= dtDefects:X_Die[DefectRow] + 1
 &
dtMain:Y_Die >= dtDefects:Y_Die[DefectRow] - 1 & dtMain:Y_Die <= dtDefects:Y_Die[DefectRow] + 1	
);

dtNear = dtMain << subset( selected rows( 1 ), selected columns( 0 ),
output table( "Nearest" ) );

// Display the selected die
dtNear << Graph Builder(
	Size( 512, 448 ),
	Show Control Panel( 0 ),
	Variables( X( :X_Die ), Y( :Y_Die ) ),
	Elements( Points( X, Y, Legend( 5 ) ) )
);

 

Jim
Tiff
Level I

Re: nearest neighbors wafer map

Thank you very much

Recommended Articles