Hello, my name is Margaret Wilson-Moses,
and I work at Inpria Corporation as a Senior Product Engineer.
Inpria Corporation is up in Corvallis, Oregon.
Inpria designs and manufactures metal oxide photoresists
to unlock the full potential of extreme ultraviolet
or EUV photolithography.
At its most basic level,
Inpria is made up of chemists and engineers.
The chemists at Inpria are the ones developing and designing the chemistries,
testing them and refining them to behave how they want,
and then taking those small formulations
and giving the best designs to the engineers.
The engineers scale up those designs
to manufacture in our high- volume manufacturing facility
where we have tighter control over processing and higher purity,
and that finished product goes to our customers.
Both the chemists and the engineers at Inpria use JMP extensively.
The chemists use JMP to design their experiments
to analyze the results of those experiments,
often using hypothesis testing.
They also use JMP to build models, so they're better able to predict
how certain parameters will affect the response variables they're seeking.
They also use JMP to present their findings
within their teams and across Inpria.
Engineers use JMP to work up our process data.
We have sensors on our manufacturing facility
that are collecting data every two seconds.
We have a large amount of data and we use automated scripts from JMP
to pull out the pieces of that data that we need
to be able to analyze processing much more simply.
We use control charts
to look at process parameters for different batches
and also analyze QC metrics of our product over time for different formulations.
Those QC metrics end up on our certificates of analyzes.
We also use measurement system analyzes or MSA to perform gage studies
on the tools that we use to collect the quality control metrics.
We also join data from various sources, as do the chemists,
because different groups at Inpria are always collecting data,
so it's good to be able to have a way to join the data
and look for correlations between those data sets.
Finally, we also use JMP to present our data
both internally and to our customers.
A couple of years ago,
when we were bringing up our high- volume manufacturing facility,
I was tasked with the goal
of developing a cleaning scheme for our manufacturing facility.
Inpri a, at that time, and in a way today, cleans our manufacturing systems
by dilution to ensure lot-to-lot segregation.
To ensure that lot A does not end up in lot B
or it's limited to a very small amount.
I've modeled that here.
The top left, we have our finished product.
When we transfer that to bottles and we're done wasting,
we've taken all we can take out,
we're left with a little bit of heel in our system.
That heel cannot be drained or flushed out.
It's just unreachable by the pumps.
To that heel, we add a flush that doesn't contain any of the starting material
and we end up with a diluted heel.
We waste as much as we can and end up with the same volume of heel,
but at a lower concentration of X.
We repeat this process, flushing and wasting, flushing and wasting
until we have the concentration that we need at the end.
Further on, I'll model this by calling X₀,
the concentration of X in the finished product
or whatever the heel starts at,
so which is going to match the final product.
Then X₁ is the concentration of X after the first flush.
X₂ is the concentration after the second flush,
and so on up through Xₙ.
The flush volume here, called F, is the same volume repeatedly
throughout the process.
My objective when approaching this problem
was to develop a dynamic and user-friendly visual model
to show to my team how different variables in this problem
a ffect the potential cleaning schemes we could use with the overall goal
of supporting selection of a scheme that would fulfill all our criteria.
Flushing.
Cleaning by dilution can be modeled with this equation here,
which I just pulled from the math that comes out of the previous slide
taken to N flushes.
Xₙ, the amount of X remaining after N flushes
e quals to the variables on the right.
So where H is the volume of heel, F is the volume per flush in the cleaning,
N is the number of flushes, and X₀ is the initial amount of X.
This equation does importantly assume
that every flush and heel are perfectly mixed per flush,
but we do have experiential data
that supports that that is indeed the case, thankfully.
We are also assuming that the heel volume is consistent every time,
so we're wasting to the same exact heel,
and that the flush volume
is the same exact volume every single flush.
But again, we have experiential data that supports that,
so we're okay with these assumptions.
Functionally,
we are actually more interested in translating this equation
to be a function of N, the number of flushes,
and F, the volume per flush,
because the other variables in this equation are pretty much set.
Heel or H is constant per manufacturing system.
It may vary per system, but it is known
through the data we've collected in the past to calculate what it is.
X₀ and Xₙ vary per cleaning, but again, we have analytical methods
to understand both X₀ and Xₙ per cleaning.
Those are our known variables.
Flush volume and number of flushes are the two variables that we're varying
to figure out a cleaning scheme.
Those are the ones to be determined.
We have a few boundary conditions also.
The total amount of solvent used must be as low as possible.
We didn't come into this with a hard limit,
but more solvent used is higher cost both in raw materials and waste,
so we want to limit it as much as possible.
Another boundary condition is that we want to keep the number of flushes
less than or equal to 20 in order to be operational.
That's because we want to fit our cleaning within our production cadence.
Lower flushes is better operationally, but we have a hard limit at 20.
Flush volume also has a boundary condition.
It has to be less than or equal to the capacity of the system.
In this case, I've set our capacity equal to 60 gallons.
The maximum flush volume you could have is clearly 60.
If you take the equation I showed on the previous slide
and these boundary conditions
along with the fact that we know H, X, not an N,
you can actually solve this equation.
You can find F and N to satisfy the boundary conditions.
But that misses the goal that I had when I came into this process.
To explain a little bit more about that, there's many ways
why going with a visual model through JMP was more advantageous for me
when I approach this problem
than just working with this stagnant equation.
First off, this equation is not intuitive.
I'm pretty good at math,
and I can't see what this equation means in a graph form by just looking at it,
versus when you have a visual model,
you can see how different variables affect each other.
The equation is limited.
You may have one H, where you may have one H,
when you want to have one yield value per manufacturing system,
but you have different manufacturing systems.
You may want to vary H and see what the different cleaning schemes are.
This equation really fits.
You get one answer per one set of input variables.
With a visual model,
you have a very versatile relationship that you can see
and it covers infinite different cleaning schemes.
The equation is also very individual.
I crunch this math, I make the assumptions,
I put the input values in, and then I tell my team
how many flushes we should use and what the volume per flush should be.
They can check my math,
but they're not involved in that process at all.
They just say, "Okay."
Versus the visual model that I built is user-friendly and dynamic,
so they can tinker around with themselves
and see how the variables affect each other
and come to their own conclusions,
which also leads to more buy-in from the team
when we end up choosing a cleaning scheme.
Lastly, an equation is boring.
I like math, and it's still more fun for me to play around with the graph
than it is to use an equation.
The visual is much more interactive.
I'm going to move from here to sharing my model.
I started with just a simple data table with three table variables.
I have X ₀ here and Xₙ both in ppm.
And I've started X₀ to be 1 million ppm,
and Xₙ is the target end goal for the cleaning,
and heel is the heel of the system.
The number of flushes here is just an independent variable,
so it's just an integer value between 1 and 35.
I did go beyond the maximum number of flushes
just to get a better view of the relationship.
Then the flush volume column here
is built off the equation that I showed previously.
I open up this formula,
you can see that this is the same equation I shared in the slide,
and it's a function of the table variables.
It's a function of these table variables here that are brought into the equation.
I've also rounded it to one decimal place because our control system
only has that amount of sensitivity when adding flush volume.
Finally, I have a third column here which is the total solvent used.
This is simply a product of the first two columns.
It will show you
how much solvent you've used per cleaning scheme.
It just multiplies the number of flushes by the flush volume
to give the total amount of solvent used.
When I go into my cleaning model, it's built around Graph Builder.
I'm going to set my standard here to be 1 million ppm as the starting value.
Let's say our target is 10 ppm of residual X at the end of cleaning
and our heel is five gallons.
You can see here that we have an X on the graph of number of flushes
and then there's two different Y values.
There's the flush volume in gallons and the total solvent used in gallons.
I also have a reference line here at 20
to show the maximum flushes that are operable.
Each of these points reflected here is a full cleaning scheme.
If I select this point right here, this is saying 10 flushes.
With this starting value of X,
this goal end of X at this heel value,
and you're going to have the flush volume of 10.8 gallons per flush
in that cleaning scheme.
When you look at this graph,
all of the red points to the left of this black line
are valid cleaning schemes.
Some of them use more solvent, total solvent, and some of them use less,
but they're all valid per our boundary conditions.
Then I have at the right here the table variables in slider form,
these top three things, which are editable either by a slider
or by the number edit box here that are connected to the table variable.
Then I have a button box here which will take all this information
and compute it and give you a simple answer for the total solvent use.
If I click that right here, I get a box that says,
"Okay, if you have 20 flushes, the volume per flush will be 3.9
and you're going to use a total of 78 gallons in this cleaning flush."
There's a few things we can get without really even tinkering
with the slider variables over here
with this visual model that we couldn't get from the equation,
like I said before.
First off, you do see this negative correlation
between number of flushes and total solvent use.
When I said that you could solve the equation
using the boundary conditions and our known table variables,
I meant that if you are trying to use the least amount of total solvent
and you have a maximum of 20 flushes, then your best scheme,
assuming you're trying to minimize solvent used,
is going to be at 20 flushes.
That's due to this negative correlation here.
The more flushes you used, the less total volume you're using
because it's negative correlation.
You also see with this visual that it's an exponential decay.
While 20 flushes may be the least amount of total solvent you're using
with these boundary conditions,
18 flushes only uses 81 gallons,
which is only three gallons more than you use at 20 flushes.
This is where it becomes important to have this visual here
because it might be the case that the time we save in operations
by reducing flushes from 20 to 18
is actually worth the three gallons we lose in total solvent used.
All right, so with the sliders,
now we can start looking at the sliders,
with the sliders,
you can see how these variables affect the possible cleaning schemes.
The sliders here are in the range of,
maybe not as possible, but what's reasonable for this model.
So you can see.
You're looking at how these red dots change
with relationship to the Y-axis.
You're looking at both the steepness of this curve
because that'll show you
how important it is to maximize your flushes within these bounds.
You're also looking at the overall level.
You want to reduce total solvent.
The lower down your red dots are, the better off you're going to be.
By manipulating these,
I can show how much it matters to start at a lower or higher concentration.
You can see that, yes, the red dots are moving a little bit,
but it takes quite a while before they have an effect
on the height of those red dots in the lower graph.
Xₙ , you can see how much it matters
to have a goal of residual solvent in there.
If your goal is a higher amount of solvent,
if you have more buffer to reach your goal,
then you're going to need less solvent.
Whereas if you have higher criteria for residual solvent, so a lower goal,
you're going to use quite a bit of solvent.
You can see here you have fewer and fewer cleaning schemes that are viable
when you have that lower goal of residual solvent.
Let me just back to 10.
Then with heel,
you can tink around this and see how much the heel of a system
affects how much solvent and what cleaning schemes are possible.
A greater heel means you have to use
more and more solvent to achieve your goal criteria.
A smaller heel mean you need to use less and less solvent.
Beyond just selecting a cleaning scheme,
this visual model allowed our team to look for what we should focus on
if we're trying to reduce the overall amount of solvent
when we're cleaning.
We did that by looking at if we had some options
to change our variables of X₀ , Xₙ, and heel,
which one would give us the most bang for our buck?
Which one could we change with reasonable effort on our part
to get the biggest reduction in total solvent used per cleaning?
Here, I'll say we had three options.
I'll say that we had an option to reduce the starting value by 50%.
Say we could arrange our batch schedule.
Cleanings would only start at 50% of what they originally started at.
We could change our goal from 10 ppm to 50 ppm,
so multiply it by five.
That's because we had different sensitivity techniques
or different restrictions for material following a certain batch.
Then we could also reduce our gal, our heel by one gallon
by engineering improvements to the actual manufacturing systems.
Really quickly, we'll look for using this graph,
we'll see what happens
when you change from this standard set of input variables
and keep the number of flush to the 20 to the overall volume of cleaning,
solven t needed.
Again, our standard level is 78 gallons.
If you change from 100% of X i n your system
at the beginning to only 50%, so 500,000 ppm,
and I'll set the variable values there,
we're now only using 72 gallons to clean out.
But that's only a reduction of six gallons for cleaning.
That really didn't move the needle very much.
Next, we'll look at changing our Xₙ to 50
and then setting our variable values again.
That says that we will need 64 gallons of solvent to clean at the end.
That's a better improvement for the total solvent needed.
Finally, we'll look at reducing the heel in the system
from five gallons to four gallons
and see that the total solvent needed is 62 gallons here.
That's the greatest reduction in solvent needed to clean.
With this information,
and it was similar information that we used to actually pursue this option,
we did look at ways to reduce the heel in our system
to reduce the overall solvent needed
because we saw that variable is going to affect the total solvent used most
with the amount that we can change any of these variables.
That is reflected here.
These were the three options I just went over.
You can see that option A, the reduction in starting level,
you only are gaining yourself six gallons.
Option B, the increase of the end level,
you have 14 extra gallons, and option C was 16 extra gallons.
But really looking at these values, again, it's important that
a team is involved in this
because that's only two gallons different between option B and option C.
If option B were very easy compared to option C,
we probably would have gone with option B.
But a heel reduction of one gallon would be most effective
in these three options at reducing total volume for cleaning.
Some concluding remarks I have.
Basically, I just want to circle back to what I brought up originally.
It could be that mathematically-minded people
would look at the equation on the left and automatically know
that changing the heel is going to have the greatest effect
on the goal of solvent used.
That's not instinctive to me,
to know that just looking at this equation.
I know that the people I work with, that's not instinctive to them either.
In the case where I'm in a team trying to come to a conclusion
with consensus of all of us,
it's very helpful to have a visual model in JMP
where people can manipulate the variables themselves
and see how a variable like total solvent used is changed
by changing variables that we know what they mean.
I can see many applications
of using a visual model with slider variables,
even in my company.
Any multivariable process
where the relationship between those variables is known
has the potential to make use of a model with the slider variables
to give a visual model of how the process reacts to changes in those variables.
I'm thinking of there's predictable ways that fluid temperature affects
how hard a pump has to push fluid to reach a certain flow rate.
That could be helpful in selecting filters for a given process.
I believe it could be useful for many other applications as well.
Ease of generation.
I am not a coder and I was able to build this model relatively easily
with help from Jordan Hiller,
oh, shout out Jordan Hiller, thank you,
also from the scripting index,
which had many great examples, and the JMP user community.
Because I was able to look through historical questions
and piece together how I wanted to go about a certain problem.
It was relatively simple to make this model.
Having made this model,
it would be very easy to manipulate in the future for other purposes.
Room for improvement.
Again, there may be a place that I missed where it was possible to do this,
but in my exploration,
I couldn't find a way to make a reference line that connected,
basically intersected the graph at this point
and moved along with the graph to different points.
A reference line that is a function.
I wasn't able to do that.
I know I saw different examples of it, but I wasn't able to do it
with using table variables as part of that function.
But again, that's probably due to my not being a coder,
but it would be helpful if that were a simpler,
more accessible feature in modeling in JMP.
But really, I do think that the model I created,
it was very helpful for our purposes,
and it will be helpful for other applications in the future.
I hope it's helpful to other people. Thank you.