cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Try the Materials Informatics Toolkit, which is designed to easily handle SMILES data. This and other helpful add-ins are available in the JMP® Marketplace
Choose Language Hide Translation Bar
Chily
Level III

Q: composite stack wafers map but missed to show zero count in location

Hi

I have one question to stack muti wafers Bin1 count to  a single composite wafer map.

As you can see, I stack 23 pcs wafers Bin1 to see each XY location Bin1 counts.

The question is,

there are 3 location (X0,Y8)(X0,Y14)(X1,Y16) Bin1 total count is zero, but this chart can't show it.

How can I solve it? Thank you.

 

Chily_1-1667800534899.png

Regards,Chily

1 ACCEPTED SOLUTION

Accepted Solutions
jthi
Super User

Re: Q: composite stack wafers map but missed to show zero count in location

That is exactly what I mean by them not having any data. After using Local Data Filter those rows are being removed from the graph builder.

Point between 8 and 9 does not have data for bin ??? (0) or 1. JMP won't show 0 because there is nothing to show as those coordinates do not existin bins ??? (0)  and 1. Those missing points seem to have values in bin 10 for example though.

 

I built shape file based on those coordinates in your example data. It is a bit annoying to show labes with map shapes with this type of data, but these do have other benefits. Below are few examples:

How different bins look on all wafers:

jthi_0-1667842817113.png

How bins appear on different wafers:

jthi_1-1667842849042.png

 

With some splitting and replacing missing values you can end up with something like this:

jthi_2-1667843390175.png

I did exclude rows with missing bin, but it isn't really necessary as you could just replace values on those rows with missing values (excluding is easier).

 

Below is the script:

View more...
Names Default To Here(1);

dt = Open("$DOWNLOADS/StackX.jmp");

/* create calculation column */
dt << New Column("Ones", Numeric, Continuous, <<Set Each Value(1));

/* split */
dt_split = dt << Split(Split By(:Bin), Split(:Ones), Group(:LOT_NO, :WAFER_ID, :Y_AXIS, :X), Sort by Column Property);

/* replace missing values with 0*/
For Each({col_name}, dt_split << Get column names(Continuous, String),
	missing_vals = Loc(dt_split[0, col_name], .);
	If(N Items(missing_vals) > 0,
		dt_split[missing_vals, col_name] = 0
	);
);
/* could try plotting here but we join table back */
dt_joined = dt << Join(
	With(dt_split),
	Merge Same Name Columns,
	Match Flag(0),
	By Matching Columns(:LOT_NO = :LOT_NO, :WAFER_ID = :WAFER_ID, :Y_AXIS = :Y_AXIS, :X = :X),
	Drop multiples(0, 0),
	Include Nonmatches(1, 0),
	Preserve main table order(1)
);
Close(dt_split, no save);
Close(dt, no save);

/* exclude rows with missing bins */
dt_joined << Select Where(Is Missing(:Bin)) << Hide and Exclude(1) << Clear Select;

Graph Builder(
	Size(673, 716),
	Variables(X(:X), Y(:Y_AXIS), Wrap(:LOT_NO), Color(:"1"n, Summary Statistic("Sum"))),
	Elements(Heatmap(X, Y, Legend(2), Label("Label by Value"))),
	Local Data Filter(Width(181), Add Filter(columns(:WAFER_ID, :LOT_NO), Display(:WAFER_ID, N Items(15)))),
	Column Switcher(
		:"1"n,
		{:"1"n, :"10"n, :"11"n, :"12"n, :"16"n, :"17"n, :"20"n, :"21"n, :"23"n, :"27"n, :"31"n, :"32"n, :"33"n, :"50"n, :"53"n, :"66"n, :"69"n,
		:"70"n, :"74"n, :"76"n, :"77"n, :"79"n, :"80"n, :"82"n, :"83"n, :"87"n, :"88"n, :"94"n, :"104"n, :"106"n, :"107"n, :"114"n, :"202"n,
		:"245"n}
	),
	SendToReport(
		Dispatch({}, "X", ScaleBox, {Min(0), Max(26), Inc(1), Minor Ticks(0), Label Row(Show Major Grid(1))}),
		Dispatch({}, "Y_AXIS", ScaleBox, {Min(23), Max(0), Inc(1), Minor Ticks(0), Label Row(Show Major Grid(1))}),
		Dispatch(
			{},
			"400",
			ScaleBox,
			{Legend Model(
				2,
				Properties(-1, {gradient({Color Theme("Green Yellow Red"), Reverse Gradient(1), Width(12)})}, Item ID("Count", 1))
			)}
		),
		Dispatch({}, "Graph Builder", FrameBox, {Background Color(32)})
	)
);

Hopefully these give some ideas.

-Jarmo

View solution in original post

4 REPLIES 4
jthi
Super User

Re: Q: composite stack wafers map but missed to show zero count in location

Heatmap won't show those places as there isn't anything to show as those points are missing from data. Below are few options:

  1. Use Custom Maps. Then you can enable Show Missing Values.
    1. If you plot lots of wafer maps, I would suggest building these
  2. Add rows for the missing coordinates and add new column which you use to calculate sum of bins. Set those "missing" rows values to 0 and other rows to 1
    1. This will create many useless rows of data to your table as you need to have all coordinates for each of the bins
  3. I'm not sure if Semiconductor Toolkit  could plot a graph which would show them.
  4. You could split the data and then use column switcher for bins instead of local data filter. This could be scripted, but it will not show the amount of bins in the column switcher like Local Data Filter will. This data could be stacked back to get what you need in option 2, but not sure if it will be any more helpful
    1. jthi_0-1667806092106.png
  5. Use background in the graph builder which would show the outlines of the wafer / each of the coordinates

Best option is in my opinion to build custom maps and use those.

-Jarmo
Chily
Level III

Re: Q: composite stack wafers map but missed to show zero count in location

Thanks your reply, jthi.

I can't catch up your demo....

Semiconductor Toolkit seems need to draw a custom map shape which is too complicated to a beginner like me.

 

I learn to draw wafer map from here:

How-to-make-a-wafer-map-in-JMP-in-under-30-seconds/ba-p/348607

 

"Heatmap won't show those places as there isn't anything to show as those points are missing from data"

These 3 points(locations) are not mising data, they do have data but not Bin1.

To prevent your concern of some raws missing data,

I set those missing Bin raws values to 0, they are outside wafer locations which can be ignored.

Anyway,  I select Bin 0 and 1 to stack count 23pcs wafers in locations.

As you can see in below pic2,

It's strange those 3 location shows empty in white and why can not show zero?

 

Chily_0-1667814539608.png

Chily_1-1667814636682.png

 

 

 

jthi
Super User

Re: Q: composite stack wafers map but missed to show zero count in location

That is exactly what I mean by them not having any data. After using Local Data Filter those rows are being removed from the graph builder.

Point between 8 and 9 does not have data for bin ??? (0) or 1. JMP won't show 0 because there is nothing to show as those coordinates do not existin bins ??? (0)  and 1. Those missing points seem to have values in bin 10 for example though.

 

I built shape file based on those coordinates in your example data. It is a bit annoying to show labes with map shapes with this type of data, but these do have other benefits. Below are few examples:

How different bins look on all wafers:

jthi_0-1667842817113.png

How bins appear on different wafers:

jthi_1-1667842849042.png

 

With some splitting and replacing missing values you can end up with something like this:

jthi_2-1667843390175.png

I did exclude rows with missing bin, but it isn't really necessary as you could just replace values on those rows with missing values (excluding is easier).

 

Below is the script:

View more...
Names Default To Here(1);

dt = Open("$DOWNLOADS/StackX.jmp");

/* create calculation column */
dt << New Column("Ones", Numeric, Continuous, <<Set Each Value(1));

/* split */
dt_split = dt << Split(Split By(:Bin), Split(:Ones), Group(:LOT_NO, :WAFER_ID, :Y_AXIS, :X), Sort by Column Property);

/* replace missing values with 0*/
For Each({col_name}, dt_split << Get column names(Continuous, String),
	missing_vals = Loc(dt_split[0, col_name], .);
	If(N Items(missing_vals) > 0,
		dt_split[missing_vals, col_name] = 0
	);
);
/* could try plotting here but we join table back */
dt_joined = dt << Join(
	With(dt_split),
	Merge Same Name Columns,
	Match Flag(0),
	By Matching Columns(:LOT_NO = :LOT_NO, :WAFER_ID = :WAFER_ID, :Y_AXIS = :Y_AXIS, :X = :X),
	Drop multiples(0, 0),
	Include Nonmatches(1, 0),
	Preserve main table order(1)
);
Close(dt_split, no save);
Close(dt, no save);

/* exclude rows with missing bins */
dt_joined << Select Where(Is Missing(:Bin)) << Hide and Exclude(1) << Clear Select;

Graph Builder(
	Size(673, 716),
	Variables(X(:X), Y(:Y_AXIS), Wrap(:LOT_NO), Color(:"1"n, Summary Statistic("Sum"))),
	Elements(Heatmap(X, Y, Legend(2), Label("Label by Value"))),
	Local Data Filter(Width(181), Add Filter(columns(:WAFER_ID, :LOT_NO), Display(:WAFER_ID, N Items(15)))),
	Column Switcher(
		:"1"n,
		{:"1"n, :"10"n, :"11"n, :"12"n, :"16"n, :"17"n, :"20"n, :"21"n, :"23"n, :"27"n, :"31"n, :"32"n, :"33"n, :"50"n, :"53"n, :"66"n, :"69"n,
		:"70"n, :"74"n, :"76"n, :"77"n, :"79"n, :"80"n, :"82"n, :"83"n, :"87"n, :"88"n, :"94"n, :"104"n, :"106"n, :"107"n, :"114"n, :"202"n,
		:"245"n}
	),
	SendToReport(
		Dispatch({}, "X", ScaleBox, {Min(0), Max(26), Inc(1), Minor Ticks(0), Label Row(Show Major Grid(1))}),
		Dispatch({}, "Y_AXIS", ScaleBox, {Min(23), Max(0), Inc(1), Minor Ticks(0), Label Row(Show Major Grid(1))}),
		Dispatch(
			{},
			"400",
			ScaleBox,
			{Legend Model(
				2,
				Properties(-1, {gradient({Color Theme("Green Yellow Red"), Reverse Gradient(1), Width(12)})}, Item ID("Count", 1))
			)}
		),
		Dispatch({}, "Graph Builder", FrameBox, {Background Color(32)})
	)
);

Hopefully these give some ideas.

-Jarmo
Chily
Level III

Re: Q: composite stack wafers map but missed to show zero count in location

Hi Jthi:

Thanks your detail explain and script works.

May I learn how to create to build shape file base on this exisit X-Y matix?