Companies often rely on outdated software for statistical process control (SPC) to monitor manufacturing processes. Numerous other SPC programs are in use by industry, but companies often stick with legacy programs that make data analysis and presentation difficult for users.
This poster presents a method to create SPC charts to present film thickness data for furnaces that are commonly used to run large batches of wafers in the semiconductor industry. These large-batch furnaces have a multitude of factors that can influence thickness results. There are severeal advantages of relaying this information in JMP Graph Builder, including:
- All equipment can be displayed on the same chart.
- All zones of the furnace can be readily evaluated.
- It is easy to filter through multiple parameters that contribute to thickness outputs.
Since JMP can readily displaying information and has great interactivity to identify issues, it helps engineers make decisions with greater confidence.

Hello. My name is Cody Sandquist, and I am a Process Engineer here at NXP in Austin, Texas. I got into JMP Scripting a few years ago, and it's been both a challenge. I found it to be just really useful in my everyday job. What I have here today is a… I made an interface using JMP for SPC or statistical process control.
Anyone in any kind of manufacturing, I'm sure that you are familiar with what SPC is. I've used a few different SPC systems in my day. Some are better than others, but all of them have some… They're all lacking in some kind of way, or they lack the interactivity or the ability to rapidly just switch through information that JMP has.
What I have for you today is a way to make SPC charts and JMP to allow for quicker engineering decisions and sharing of that information. One of the problems that we have with some of the SPC programs out there, if we take what we use not to grade NXP here, we have a pretty old SPC system. I have these at work.
Just a quick note on these, we use these furnaces, large vertical furnaces, so they hold up to 150 production wafers, that's an important detail, or 6 lots. There are 25 wafers per lot, and there are multiple zones in the furnace, and we use test wafer monitors in different zones to keep track of the film thickness throughout not just one batch in this furnace but each individual zone in this furnace.
The SPC program that I am using, first of all, displays one furnace at a time whereas it's preferable to look at all of the furnaces on the same chart, so you can see if one stands out, and it doesn't display the individual zone thicknesses. It displays the mean of all the zones. If you have some kind of individual issue in one zone, it's really hard to pick that out if you're just sticking to this SPC program.
In addition to this, it's really difficult to analyze for some of the other common factors that cause issues. This may include how many production lots are in a batch. The different load size, if you have 25 wafers versus 150, you can get different thickness results. The metrology equipment that measures your thickness, it could have had a bad qualification, and it's not uncommon to see metrology equipment that's off. It's sometimes difficult to see that information if we just stick with the SPC system.
Using JMP Scripting as a solution, I created my own custom dashboard where I could display all the furnaces on one graph. I can display by furnace position, so top of the furnace, bottom of the furnace, and see if something is going on in that individual location of the furnace.
Again, the other thing I alluded to is that for a lot of common factors, I can see if something else is going on. Maybe it's a measurement from metrology. Maybe it's load size. I can even join in this table other information such as wafer vendor information and see if we got a new wafer vendor and something is happening there to cause thickness variations. These are the functionalities I'm talking about that really make JMP a little easier to use, gives you a little more ability than some of the common SPC programs out there.
The way I have this set up, I like to quickly get to the desired process recipe. If you're not familiar with recipes, we have a lot of different types of processes with different thickness targets. I want to identify, I want to get down to whichever process recipe is desired real quick. So I designed a pop-up window where I simply just type in the name and hit Okay.
When I do that, it takes that name and it matches it with one file for that process. It'll filter down to the thickness limit and target for that process recipe name. I have a raw thickness file. The data from our SPC system, I'll have the thickness data for multiple recipes in there. So fill again, filter down to our desired recipe, and it will plot this all in Graph Builder.
Graph Builder, I'm a fan of again because it's very interactive. You'll notice the juxtaposition of both of these charts where I just have one furnace up here, and now down here, I have multiple furnaces and I can display the data in all the different zones. I actually have this set up to do calculations where I don't just want the mean thickness, I want the standard deviation, I want the range for each individual zone. So I can customize it in that way as well.
Then if I want to filter by some of those common factors such as metrology equipment or load size, I can quickly filter by those. I can filter by individual furnace. Yeah, the advantage of it, of course, greater customizability, greater flexibility in making SPC charts, and you can quickly analyze different factors causing variation and then screen capture that, send it out to people, and start to identify solutions or maybe a zone is off and I need to make some kind of adjustment, I can do that.
Really only disadvantage of this, I have to manually pull the thickness data and save it as a CSV or text file. Ideally, I would be able to connect directly to our database here at NXP, but I don't have privileges to do that. So not JMP's fault, but I just don't have the ability to do that at my company.
Getting into a little more detail on the script, I know it's not super exciting to go through a long script and each individual point, but I'll just keep it very simple and focus on the key points and how it works. Already mentioned I have a raw thickness file that I have to pull, so all the thickness data from multiple process recipes in there. I will also have another file that I just save with the SPC limits and targets and I use the modal function in JMP to have a pop-up window. That's a pop-up window. I type in the desired recipe name and that filters down to the information in the raw thickness file and for the file and the limits.
From that, it will save the limits and target as variables, and these variables will later be used to create those lines, those targets and limits, and also the increment and size in Graph Builder. They just show the flexibility that scripting in JMP has, is that these data files we have, not all the rows are equivalent. Each individual batch will vary. Sometimes our test wafer monitors, there will be two wafers, and they'll run in the top and bottom zone. Sometimes there will be three wafers. Sometimes there will be five wafers. So one row will have two columns filled out, another row will have three, another row five, and it changes every time.
With a series of if statements, again, I won't get quite into the detail on that, but with a series of if statements, I can identify based on which columns are filled out, what individual zone each of those individual cells is referencing, and therefore assign it the correct position so there aren't mistakes or confusion, no getting it in the wrong zone when I display that in Graph Builder.
Just to follow-up on a quick point here on ending the script in Graph Builder, those variables are placed into Graph Builder to make the lines, and I can customize Graph Builder to display information however I want. Quick example of problem-solving that I had at work is that on the SPC, our main SPC chart, we had one furnace for one of the process recipes that was failing for standard deviation. Remember, our SPC system doesn't really show any detail.
Using my JMP Script, I was able to split the information for all the different zones, and in the bottom zone was where something bimodal was seen. So two of something going on right here. Then I was able to filter down this individual furnace to just show this individual furnace and I filtered by some of the common factors. In this case, it was load size. A six-lot load, again, this is a full batch, meaning the furnace is completely full with 150 production wafers. So we were able to really narrow down exactly what the problem was.
The problem was happening at the very bottom of the furnace with full production batches, the range spiked. Then I was able to join this with coordinates from our metrology to make wafer maps and even look into what individual… which part of the wafer, which section of the furnace was causing problems.
In sharing this information with our equipment technicians, we will take action knowing exactly where the problem was in the furnace, replace parts, and get the furnace back into good, stable condition again. That's just a quick example there, and thank you for your time. Hope you got something from this, and see you at the conference.
Presenter
Skill level
- Beginner
- Intermediate
- Advanced