- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Row selection
Hello JMP community,
A little challenging problem - I'm trying to write a code in jsl that can apply an exclusion to So basically, I want to select
Appreciate your help and suggestion.
BR,
Jack
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Highlight the 3 dies from the edge of the wafer map
This might be an iterative process. it is also tough, in a pixellated environment like this, to strictly define "3 from the edge".
You can get pretty close by using an ellipse to select.
1) find center x and center y
2) using eccentricity as needed, perturb a circle to get an ellipse parallel to the wafer edge.
3) choose a "radius" (dubious term here, I know) that selects the points you want.
4) use a formula column to flag points of interest.
Below are screenshots and a script to run against your data table
Names Default To Here(1);
dt = current data table();
dt << new column ("Cx", Formula( (Col Max( :X coord ) + Col Min( :X coord ) ) / 2 ) );
dt << new column ("Cy", Formula( (Col Max( :Y coord ) + Col Min( :Y coord ) ) / 2 ) );
dt << new column ("To Select", Formula( Root( Power( :X coord - :Cx ) * 0.57 + Power( :Y coord - :Cy ) ) > 100 ) );
dt << Select Where(:To Select == 1 );
dt << Run Script ("Wafer Map");
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Highlight the 3 dies from the edge of the wafer map
You're welcome. You can also do this with a rank-based approach, selecting the top and bottom 3 xs for a given y, and conversely.
That selection looks like this:
I've attached a table with columns supporting both approaches.
Cheers,
Brady
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Highlight the 3 dies from the edge of the wafer map
In that case, you would change the "select" formula (from my first example, where I used the formula of an ellipse) to this:
Abs( :X coord - Round( :Cx ) ) <= 1 & Abs( :Y coord - Round( :Cy ) ) <= 1
The reason I say to use the ellipse example is that unlike with the rank-based example, center x and center y must be determined. Once you've done that, you're looking for a difference of -1, 0 or 1 from the rounded value of center x, and a difference of -1, 0 or 1 from the rounded value of center y.
In general, for an NxN square, you'd need the formula to look as above, but with (N-1)/2 substituted in each place where I have the value "1" in the formula above.
EDIT: actually, that is for an NxN square when N is odd. If N is even, you would need to do a bit more work.
a) if Cx or Cy turn out to be integers, you'd have to decide whether you want to grab more dice left of (analogously, below) center, or more dice right of (analogously, above) center, then move slightly off center and capture N/2 dice on each side of this. When Cx or Cy is not an integer, you can just capture N/2 dice on each side of Cx or Cy, respectively.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Highlight the 3 dies from the edge of the wafer map
This might be an iterative process. it is also tough, in a pixellated environment like this, to strictly define "3 from the edge".
You can get pretty close by using an ellipse to select.
1) find center x and center y
2) using eccentricity as needed, perturb a circle to get an ellipse parallel to the wafer edge.
3) choose a "radius" (dubious term here, I know) that selects the points you want.
4) use a formula column to flag points of interest.
Below are screenshots and a script to run against your data table
Names Default To Here(1);
dt = current data table();
dt << new column ("Cx", Formula( (Col Max( :X coord ) + Col Min( :X coord ) ) / 2 ) );
dt << new column ("Cy", Formula( (Col Max( :Y coord ) + Col Min( :Y coord ) ) / 2 ) );
dt << new column ("To Select", Formula( Root( Power( :X coord - :Cx ) * 0.57 + Power( :Y coord - :Cy ) ) > 100 ) );
dt << Select Where(:To Select == 1 );
dt << Run Script ("Wafer Map");
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Highlight the 3 dies from the edge of the wafer map
Thanks Brady
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Highlight the 3 dies from the edge of the wafer map
You're welcome. You can also do this with a rank-based approach, selecting the top and bottom 3 xs for a given y, and conversely.
That selection looks like this:
I've attached a table with columns supporting both approaches.
Cheers,
Brady
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Highlight the 3 dies from the edge of the wafer map
Thanks a lot brady!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Highlight the 3 dies from the edge of the wafer map
Quick Question brady - What if I want to select a square matrix of 3 x 3 from the center of the wafer map?
Names Default To Here( 1 );
dt = Current Data Table();
Try( dt << Delete Columns( "RevX", "RevY", "RankX", "RankY", "Select" ) );
Try( dt << Delete Table Variable( "Par" ) );
Par = 135;
dt << New Table Variable( "Par", 4 );
dt << New Column( "RevX", Formula( (Col Number( :X coord, :Y coord ) - Col Rank( :X coord, :Y coord )) + 1 < Par ) );
dt << New Column( "RevY", Formula( (Col Number( :Y coord, :X coord ) - Col Rank( :Y coord, :X coord )) + 1 < Par ) );
dt << New Column( "RankX", Formula( Col Rank( :X coord, :Y coord ) < Par ) );
dt << New Column( "RankY", Formula( Col Rank( :Y coord, :X coord ) < Par ) );
dt << New Column( "Select", Formula( :RevX + :RevY + :RankX + :RankY > 0 ) );
dt << Select Where( :Select == 1 );
New Window( "",
H List Box(
Outline Box( "Control",
tb = Text Edit Box( 3 ),
Button Box( "Set",
val = Num( tb << get text ) + 1;
dt << Set Table Variable( "Par", val );
dt << Select Where( :Select == 1 );
)
/* sb= Slider Box( 0.001, 1, p,
dt:Par = p;
dt << Select Where(:To Select == 1 );
tb << Set text( p )
)*/
),
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :X coord ), Y( :Y coord ) ),
Elements( Points( X, Y, Legend( 3 ) ) )
)
)
);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: Highlight the 3 dies from the edge of the wafer map
In that case, you would change the "select" formula (from my first example, where I used the formula of an ellipse) to this:
Abs( :X coord - Round( :Cx ) ) <= 1 & Abs( :Y coord - Round( :Cy ) ) <= 1
The reason I say to use the ellipse example is that unlike with the rank-based example, center x and center y must be determined. Once you've done that, you're looking for a difference of -1, 0 or 1 from the rounded value of center x, and a difference of -1, 0 or 1 from the rounded value of center y.
In general, for an NxN square, you'd need the formula to look as above, but with (N-1)/2 substituted in each place where I have the value "1" in the formula above.
EDIT: actually, that is for an NxN square when N is odd. If N is even, you would need to do a bit more work.
a) if Cx or Cy turn out to be integers, you'd have to decide whether you want to grab more dice left of (analogously, below) center, or more dice right of (analogously, above) center, then move slightly off center and capture N/2 dice on each side of this. When Cx or Cy is not an integer, you can just capture N/2 dice on each side of Cx or Cy, respectively.