Download 1 - Electrical Engineering & Computer Sciences

Transcript
.
4
THE BCAM CONTROL AND MONITORING
ENVlRONM E-NT
by
Bart J. Bombay
Memorandum No. UCBERL M92/113
11 September 1992
.
I
,
'I.
THE BCAM CONTROL AND MONITORING
ENVIRONMENT
by
Bart J. Bombay
Memorandum No. UCBERL M921113
11 September 1992
THE BCAM CONTROL AND MONITORING
ENVIRONMENT
by
Bart J. Bombay
Memorandum No. UCBERL M92/113
1 1 September 1992
~
I
THE BCAM CONTROL AND MONITORING
ENVlRONMENT
by
Bart J. Bombay
Memorandum No. UCBERL M92/113
11 September 1992
THE BCAM CONTROL AND MONITORING
ENVIRONMENT
by
Bart J. Bombay
Memorandum No. UCBERL M92/113
11 September 1992
ELECTRONICS RESEARCH LABORATORY
College of Engineering
University of California, Berkeley
94720
The BCAM Control and
Monitoring Environment
Bart J. Bombay
September 11, I992
Abstract
I
~
i
Accurate control and monitoring of manufacturing equipment is essential o integrated
circuit production. Such a control scheme can take advantage of equipment models for the
I
various steps involved in the production process. Unfortunately, the equipkent used in
integrated circuit manufacturing often changes with time and is always subjebt to various
disturbances which in turn introduce significant fluctuation in performance. This report
includes an adaptive regression model which evaluates itself and determinq whether it
should be corrected to better reflect equipment behavior. The model is modified through
recursive estimation based on in-line wafer measurements. Decisions for mqdel changes
are based on formal statistical tests which use the principles of the regression hontrol chart
[l]. This strategy has been tested on the photolithography sequence in the Berkeley
Microfabrication Laboratory [5][21]. In addition, a control scheme has been implemented
which uses equipment models for feedback and feed-forward control of a minufacturing
workcell. Included in this implementation are editing and generation fqnctions for
equipment setting recipes, a model editor, and interfaces to other Berkele9 ComputerAided Manufacturing (BCAM) applications. This implementation, named the BCAM
Control and Monitoring Environment, is described in this thesis. Also included in this
I
report are an instruction manual for use of the environment and a programmin manual for
further development of the code.
TableOf Contents
1
ii
Table Of Contents
Acknowledgments
V
Chapter 1 Introduction
1
Chapter 2 Theory of Discrete Process Control
2.1 An Intioduction to Discrete Process Control
2.2 The Form of the Equipment Model
2.3 The Model Update Algorithm
2.4 Recipe Update Algorithm
2.5 Application of the Model Update and Recipe Update Algorithms
3
3
4
5
11
17
Chapter 3 BCAM Implementation
3.1 Introduction
3.2 The Ingres Database
3.3 The Role of X Windows in the BCAM Environment
3.4 Operations on Individual Machines
The Recipe Editor
The Model Editor
Connections
3.5 Process Analysis Functions
3.5.1 Deduction of Process Order
3.5.2 Workcell Performance Prediction
3.5.3 Workcell Sensitivity Analyses
3.6 The Workcell Operations
Basic Functions
Workcell Controller
3.7 The Interface to Other BCAM Applications
Alarm Generation
Statistical Process Control
Diagnosis
Response Surface Plots
18
18
19
20
20
Chapter 4 BCAM Environment User’s Manual
4.1 Introduction: Starting the BCAM System
4.2 The Equipment Window
4.2.1 General Description
24
24
25
25
21
21
22
22
22
23
iii
Table Of Contents
4.2.2 The Equipment Recipe Menu
4.2.3 The Equipment Model Menu
4.2.4 The Equipment Window-Defining Equipment Connections
4.2.6 The Equipment Connections Menu
4.2.7 The Equipment Applications Menu
4.2.8 The Equipment Window-Editing Values
4.3 The Workcell Window
4.3.1 The Workcell Recipe Menu
4.3.2 The Workcell Wafer Menu
4.3.3 The Workcell Graph Menu
4.3.4 The Workcell Alarm Menu
4.3.5 The Workcell Options Menu
26
26
27
29
30
30
31
32
32
33
33
33
Chapter 5 BCAM Environment Programming Manual
5.1 Introduction: The Basic Program Structure
5.2 The Creation of the Main Windows
5.3 Naming Conventions
5.5 Structure Declarations
5.5.1 class machineclass
5.5.2 class modelClass
5.5.3 class processNode
5.5.4 class inputclass
5.5.5 class inputStepValueClass
5.5.6 class outputclass
5.5.7 class historyClass
34
34
35
35
37
38
38
39
40
40
41
42
Chapter 6 Conclusions & Future Work
6.1 Conclusions
6.2 Database Storage of Wafer Measurements
6.3 Alternate Storage Formats
6.4 Installation in Integrated Circuit Fabrication Facilities
6.5 Process Capability (Cpk) Evaluation and Process Simulation
6.5.1 Comparison of Control methods
6.5.2 Alarm Generation through Cpk Prediction
43
43
43
43
44
44
44
45
Appendix A Acronyms
46
Appendix B Symbols
47
Table Of Contents
1 iv
Appendix C Adjoint Derivations of the Recipe Update Equations
.50
Appendix D Ingres Table Formats
52
Appendix E Alphabetical Library Function Listing
i50
Appendix F Description of the Source Files
'70
Appendix G Principal Library Functions Listed by Hierarchy
G. 1 The Beginning of the Program
G.2 Main BCAM Menu Actions
G.3 Activation of a Machine
G.4 Equipment Model Analyses
G.5 Workcell Operation
'7 5
'75
'7 5
'7 6
'77
'77
Appendix H Source Code Listings
Appendix I Known Bugs
Appendix J A G2 Formulation of Measurement Queuing Effects
J. 1 Introduction
5.2 Methodology
J.3 Results
5.4 Conclusions
5.5 Future Work
References
V
Acknowledgments
Acknowledgments
I
1
I cannot begin to express the magnitude of my appreciation and grat tude to my
research advisor, Professor Costas J. Spanos. His constant support and
invaluable to the success of my studies. I also thank Professor Seth
1
my dissertation committee. In addition, I thank Dean David A. Hodges for is profound
advice to me during both my undergraduate and graduate studies, and also fo his support
and leadership of CIM research at Berkeley. I am also most grateful to Profe sor Eugene
Wong, Professor Martin Graham, Dr. Sheila Humphreys, Winsor Letton, Dr. Shahab
Shiekholeslam, and David Wagner for their sage counsel through my years at berkeley.
For their generous assistance in the proofreading of this thesis, I thankiDr. Shahab
Shiekholeslam, Donald Zwakenberg, Sherry Lee, Eric Boslun, Sovarong Lea@, and John
Thomson.
I am also most appreciative of the efforts of Professor Gary May for his development
of equipment model structures and his work on the BCAM LPCVD diagndstic system,
Hao-Cheng Liu for his development of an equipment recipe editor, the BCAM diagnostic
system and the database tables used by the BCAM Environment, Edward h e n for his
work on statistical process control and response surface plotting, Sovarong Qeang for his
experimentation and development of photolithography equipment models and alarm
generation algorithms, Sherry Lee for her work on the BCAM diagnostic gystem, Eric
Braun for development of the BCAM response surface plotting application, q i - M i n Ling
for his development of microprocessing equipment models, and Lauren Masda-Lochridge
for her plentiful assistance with the Ingres database software.
During my years at Berkeley, my participation on the 155 crew team ha4 a profound
effect upon my studies. The training assisted my development in all aspects
01 my life. At
the heart of my rowing experience was my coach Jeff Wilk. His inspiration 8nd spiritual
Acknowledgments
vi
guidance gave me strength which allowed my studies to flourish. I must also acknowle !F
my teammates whose camaraderie and efforts contributed to my rowing experiences.
Also essential to the success of my research here at Berkeley have been the o er
members of the C I W C A M groups at Berkeley: Professor Lawrence Rowe, Raym id
Chen, Haifang Guo, Annika Rogers, Steven Smoot, Kwan Kim, Zeina Daoud, Mc di
Hosseini, and Soheila Bana.
I give my special thanks to Carol Block, Christopher Hylands, Ken Nishimura, Kat in
Voros, Bob Hamilton, Genevieve Thiebaut, Heather Brown, Cheryl Craigwell, and le
staff of the Berkeley Electronics Laboratory for their continual assistance in a multitud of
matters during my stay at Berkeley.
For their unfailing support and knowledgable advice throughout my life, I am etern
grateful to my parents John and Barbara Bombay, my sister Helen Bombay, ‘Y
grandparents Hunter and Annie Flores, and my cousins Michael Minatrea, Jeannie id
Joseph Miller, John Minatrea, Richard Buford and Janine Minatrea, and the rest of
lY
family. It is the great devotion and generosity of my family whom I must credit for a1 of
my successes.
I thank the National Science Foundation for their support of my graduate studie at
Berkeley. I thank also the Regents of the University of California, the Alumni Associa in
of the University of California, Warren Dere, and Edward F. Kraft, and Cornel1 C. M er
for their support of my undergraduate studies.
This research has been jointly sponsored by the Semiconductor Research Corporat In,
the National Science Foundation, Texas Instruments, National Semiconductor, and le
California MICRO program.
1
Chapter 1
Introduction
Chapter 1 Introduction
X
Until recently, IC fabrication facilities have relied mostly upon human e perience to
develop equipment recipes through trial and error. But as today’s designs push the borders
a
of existing technology, even the slightest maladjustment in equipment can drastically
undercut production. The industry has therefore experienced extremely long st rt-up times
when bringing a new product into regular production and costly cuts in production when
maintaining or replacing manufacturing equipment. This problem is further cbmpounded
by frequent unanticipated changes in equipment performance. Today these dhanges are
identified through Statistical Process Control (SPC), and sometimes a human operator
9’
attempts to re-adjust the process. Integrated circuit manufacturing tech ology can
therefore reap great benefit from the application of a more advanced control system.
A control system which can meet the stringent demands of IC fabricatibn must be
rather sophisticated. Simple feedback control applied to individual machines i6 unreliable
due to the low inherent capabilities (the ratio of specification limit ranges to noise
, standard
error) of the individual steps. A fabrication line control system must therefore have a solid
base in statistical analysis of equipment performance. A control system must @sobe able
to predict the equipment performance and adjust equipment settings whenever the
predicted performance deviates from specifications. In order to establish this capability, a
control system must use some sort of equipment models. Furthermore, in order to
compensate for equipment changes, the models must allow themselves to be updated
according to current manufacturing conditions. Statistically based models a e desirable
because analysis of equipment performance through regression techniques w 11 allow the
models to be updated efficiently.
Chapter 1
Introduction
2
The implementation of the control sclleme includes regular checks of equipml It
models and recalculation of appropriate machine settings whenever those models
e
updated. This is the feedback portion of the controller. Whenever a process consists If
several interdependent steps, e.g. the photolithography workcell, feed-forward cont ,1
may be implemented to compensate early deviations in equipment performance Y
adjusting the settings of subsequent processing steps.
So that this control scheme may be integrated into the factory environment, it inter2
Ls
with a database facility to store measurements and maintain a record of control recipes i d
equipment models. In addition, the control environment includes interfaces to ala n
generation, diagnosis, and statistical process control applications.
The implementation of this control environment and the underlying analysis functii 1s
have been realized using C++ and X windows. This realization is named the Berke Y
Computer Aided Manufacturing (BCAM) Control and Monitoring Environment an( is
described in this thesis.
After this introduction, the thesis devotes a chapter to the mathematical theory beh d
the controller’s model update and recipe update algorithms. This is followed by a chaI :r
describing the implementation of the BCAM environment. The BCAM user’s manual : d
the BCAM programming manual constitute the next two chapters. Finally, the conclusi
of this thesis are presented, and the possibilities for future development are discussed.
IS
3
Theory of Discrete Process Control
Chapter 2
I
Chapter 2 Theory of Discrete Process Contro
2.1
An Introduction to Discrete Process Control
The characterization of IC processes through equipment modeling
necessity in semiconductor manufacturing. Equipment models may be
or a combination thereof. Further, equipment-specific models are
the changing status of the equipment [7]. The Berkeley Computer-Aided Mabufacturing
(BCAM) group has developed several statistically based polynomial models that describe
the behavior of some important IC manufacturing equipment: the Tylan lob-pressure
I
chemical vapor deposition (LPCVD) furnace, the Lam plasma e t c h + - , and the
photolithography workcell [8][9][ 101.
The equipment models described in this work consist of mathematical expfpssions that
can predict the outcome of a manufacturing step (e.g. the thickness of the photoresist)
given the settings of that step (e.g. spin speed, spin time, etc.). Such models qre based on
the statistical analysis of the results of designed experiments; manufacturing ehuipment is
subjected to a well structured sequence of experimental recipes, and the resulting data is
analyzed through stepwise linear regression. This leads to models which accumtely reflect
the operation of the equipment. The development of these models is asisisted by a
theoretical understanding of the physical behavior of the equipment [3].
The basic equipment model has been designed as a polynomial expression with a
flexible representation so that it may operate efficiently within a comprehen$ive control
system. Several input and output transformations (exponential, logarithm, roqts, etc.) are
also supported.
I
Since equipment characteristics change with time, a complete model str cture must
allow for updates of the model. This is accomplished by means of creating n adaptive
Theory of Discrete Process Control
Chapter 2
4
model which has two parts: an original model which represents the original state of the
equipment, and a correction model which describes the deviation from that original stat?.
These models are used for performance prediction, the generation of descriptive
response surfaces, and other control needs. Given its prediction capability, the model may
also be used by optimization algorithms to deduce the required machine settings to m :et
target performance specifications. T h e optimization presented herein uses a
multidimensional Newton-Raphson algorithm subject to inequality constraints on the
machine controls.
2.2 The Form of the Equipment Model
Initially, an equipment model is derived using a designed experiment.
model represents the general structure of the equipment behavior, i.e.
1
polynomial terms used in the model equation; these terms represent the ways in which he
machine’s settings influence its outputs. For example, such a model has been develo
for the photoresist spin-coat and bake equipment of the Berkeley
Laboratory [3]. The four settings of the machine are spin speed xl,
temperature x g , and bake timex,. The output is photoresist thickness
a representative model is
z =
Co
+ CIXz + C2X4 +
1
1
1
where the symbols c,, ...c j represent the coefficients of the terms of the model. Altho
the models are highly nonlinear with respect to the settings, they are linear with
the coefficients. This property allows us to use linear regression techniques to
the coefficients which best fit the machine in question. All equipment
general format, although the number of terms (and the form of those
machine to machine. Several transformations (such as the logarithm
5
Theory of Discrete Process Control
Chapter 2
1
are also supported on the inputs and outputs. As described next, the ada tive model
always retains the basic structure defined by the terms of its original model, lthough the
~
coefficients may be updated according to need.
2.3 The Model Update Algorithm
~
i
When, over time, a model fails to accurately represent a machine, correct ons may be
applied to the coefficients of the model. These corrections make up the
and are calculated by means of an update algorithm. The correction
with the original model make up the complete adaptive model. The m
algorithm is initiated by means of a statistical process control alarm which
whenever the machine outputs differ significantly from those predicted by
The model update algorithm is designed to modify the equipment model 4s necessary
during routine equipment operation. Using historical records from a machine$ operation,
,
the update algorithm performs statistical regressions to determine the optimuh correction
model. This algorithm performs well in either a single product or a mdlti-product
environment.
Because the adaptive model maintains a correction model while leaving /the original
model unchanged, it will never lose the information gained in the original designed
experiment. For example, a correction model may evolve to compensate dor a failing
machine part; when that defective part is replaced, the adaptive model can quickly
abandon the obsolete correction model and return to the original model.
Finally, each processing step has several outputs which can be controlled; hence,
several models must be used to describe each step. The spin-coat operation,
is characterized by the thickness and the reflectance of the applied
each output is represented by a separate model equation, the
each of these outputs separately.
Chapter 2
Theory of Discrete Process Control
6
The model update algorithm is based on a weighted linear stepwise regression; it m Jst
therefore transform the historical records into a form suitable for such an analysis. Tiis
transformation procedure is as follows:
The values of the machine's past control settings are placed in the
K
x n matrix1 X,
each row of which contains the values of those settings corresponding to one run. This,
for k = 1.. .K and i = 1.. .n, xg is the value of the i* setting used for the k* run. Sir ce
performance records become obsolete with time, a forgetting factor is applied in the
weighting of the regression calculations in order to emphasize the most recdnt
t
observations. In addition, a strict limit is placed on the number of observations to incl de
in the model update calculations. This limit is called the window size, and is the maxim m
number of rows in X. (When the number of data points available is less than the wind w
size, then the number of rows in X is equal to the number of data points.) The appropri
choice of the window size depends on the rate at which machine performance is expec
to drift and also the inherent capability of the machine.
The matrix X is then transformed into a
Kx
t matrix
T that contains the
values of the t model terms, as defined by the basic model structure. T
number of rows as X,although it may have a different number of columns. For example,
given the model described by equation (l),each row of T would have the form:
tF
where [xk,
=
lk.2
xk, xk,
xk,4
1
&
1
Xk,3&
13
,
k = I...&
:2)
xk,l
43
xk, is the corresponding row of X which contains the values of
t
1. In this report bold-faced capital letters are used for matrices and bold faced lower case letters for column arrays. ow
arrays are obtained by applying the transpose operator CT) to a column array.
7
Theory of Discrete Process Control
Chapter 2
The update algorithm applies the current model (original model plus corr
to the machine setting corresponding to each run and predicts the respective
It then takes the machine’s corresponding historical output record z and
the vector containing the predicted output values, thus yielding the
vector A z . The elements of A z are defined by:
nt
where co is the current model’s constant term coefficient, and’c is the colu n vector of
1
the current model’s remaining term coefficients. This discrepancy vector wil be used in
order to determine the coefficients of the correction model.
The machine’s performance records have been transformed into the term matrix T and
the discrepancy vector A z . These data, however, are not the result of 8 designed
experiment, but rather the result of routine equipment operation; this fact Mill limit the
number of correction coefficients which can be evaluated. If, for example, the machine has
run with the same temperature setting throughout its relevant history, the data will not
contain any information to determine if the effect of the temperature setting hks changed.
Similarly, if all the machine’s settings have been held constant, then the correction model
should only include a correction to the constant term coefficient.
In general, the data may support a correction to some, but not all, of the coqfficients. In
order to determine which coefficients can be corrected and how to correct them, a
principal component transformation [6] is applied to the matrix T. This transfonnation has
the added benefit that the transformed data is also orthogonally distributed-a
property
which greatly facilitates the subsequent stepwise regression.
However, before executing the principal component transformation, the terms matrix
T must be properly numerically conditioned. This is accomplished by a tradsformation
Chapter 2
Theory of Discrete Process Control
8
which divides each column of T by the range of the corresponding term (defined as he
difference of the maximum and the minimum values of the terms over the experime :a1
space used to derive the original model):
4)
where D is the t x t diagonal matrix whose nonzero elements are the ranges of the ter
and V is the
K
IS,
x t normalized term array. This converts the terms into unitless numl rs
with comparable variances.
The principal component transformation starts with the evaluation of the weigl :d
variance-covariance matrix of the data in the normalized terms matrix:
Sv = weightedcovariance ( V ) =
v:. w -v,
U T -w - u
’
where S , is the t X t variance-covariance matrix, W is an K x K diagonal mat
containing the weighting coefficients
K
Wkklk =
(off diagonal elements of W are zero),
5)
X
is
a t-dimensional vector whose elements are all ones, and V , is the centered V array wk se
elements are given by:
5)
where V.j is the weighted average of the elements in thej* column of V . This variar
E-
covariance matrix is then factored:
7)
Theory of Discrete Process Control
9
Chapter 2
6.
where A is the t x c diagonal matrix containing the t eigenvalues of S y , and
is the t x t
orthonormal matrix' whose columns are the corresponding eigenvectors2 f S,. The
matrix BT is then used to transform V to its principal component space as foll
Vpc = V . B ,
i
where V,, has the same dimensions, n x t , as V and T,and it contains the nput terms
B
data transformed into the principal component space. The output discrepanci s may now
be represented by rewriting (3) as:
I
or equivalently:
k =
where
l.'..K,
(10)
vp,- are the rows of V p c ,and y = B T .D . c represents the vector Of the term
coefficients of the original model, transformed into the principal component sdace.
Next, a weighted stepwise regression is performed, considering each principal
component separately in order to obtain a model correction coefficient Ay[ ( I
= 1 .. .t ) for
that component. Only principal component directions showing significant variance should
be considered; therefore, the algorithm examines only the principal components whose
corresponding eigenvalues h, of S, satisfy the inequality
1 = l...t,
t?
(11)
where r is the magnitude of the range of possible values that the output may t e, and a is
a unitless empirical quantity taken to be
for the BCAM application. (T e factors in
1. An orthonormal matrix has orthogonal columns (and rows),each of which has a magnitude of one.
orthonormal matrix is simply its transpose.
e inverse of an
2. Because S, is symmetric positive definite, this factorization is equivalent to the singular value deco@position of S,.
Chapter 2
Theory of Discrete Process Control
(1 1) are necessary to ensure that both sides of the inequality have compatible units.)
each considered correction coefficient Ay,, a p-value' is calculated. If this p-value is
enough, the calculated value for that correction coefficient is accepted, Otherwise
correction coefficient is set to zero. The regression analysis takes the form of the syste
where A y is the column vector of model correction coefficients in the
component space. The significance of each correction coefficient is established
at the variance of each estimator. This variance is related to the standard
the machine output:
var(Ay) = [ VFc. W . V,,]
The standard deviation
CT
-2
[Vi,.
I$. V,,] . u
CT*.
is estimated from the residuals of the regression
the creation of the original machine model. Additional estimates of
CT
during replicated runs.
In order to ensure the stability of the algorithm, an additional test is applied to
extreme corrections to the model. During an update procedure, no model coefficient
change by more than 60% of its previous value.
Once all significant principal components have been examined, the terms array V ,
multiplied by the new correction coefficients Ayl, and the resulting vector is
from the output discrepancy vector Az. The weighted average of the
resulting vector, if significant, is the constant term correction coefficient
1. The pvalue is the probability of obtaining an estimate of the correction coefficient whose magnitude is greater
the considered estimate, assuming that the true value of the correction coefficient is zero. Typically, if the pvalue is
than 0.05, then the correction coefficient is accepted as significant.
1 10
11
Theory of Discrete Process Control
Chapter 2
.K,
(14)
Wkk
k= 1
w.The correction coefficients
:e then put
through the inverse transforms which bring them back into the original terms
lace, where
where the
Wkk
are the diagonal elements of
they become the correction model's term coefficients
AC = D - ' - B -Ay.
(15)
Finally the updated model coefficients are c + A c and co + A co, and the c )del update
procedure is complete.
2.4
Recipe Update Algorithm'
The implementation of a feedback control system to integrated circuit manufacturing
requires that the controller be able to update machine settings whenever equipment
models change. The implementation of feed-forward control similarly rkquires the
calculation of machine settings. For these purposes, a settings recipe update hlgorithm is
required.
The unconstrained recipe calculation problem reduces to the following:
Solve for x such that
f ( x ) =2
where x
E
1
X c % n , the n-dimensional input space, 2 E Z c tKm, the rn-dimensional
output space, and f : X
+ 2.An iterative algorithm is presented which starts with an
1. Note that some symbols in this section do not correspond directly with those of the previous section
Chapter 2
Theory of Discrete Process Control
12
initial xo and generates a sequence x,,, xl, x2, ... converging to the best cornprom se
solution 2.Convergence properties of this method are discussed in [ 181.
Denote the j* component of f: as f ’ : X
+ 31. Then at each iteration k, f
can )e
linearized’ about x, to get
7)
where
This leads to the modified problem: find a compromise solution x,+ such that
9)
If n 2 rn and A A f is invertible, then a solution2 to this modified problem is
0)
Using a Euclidean norm, this solution is as close as possible to the previous solution xk If
n < rn and AIAk is invertible, then the least square error solution to the modified probl :m
is
1. The models used in the BCAM recipe generation algorithm are such that the solution to the modified problem (1 ) is
at each iteration close enough to the best compromise solution 2 , so that the sequence of solutions x,,, x,, x2, ... m-
verges to 2 . In general, the convergenceproperties of this method require hounds on the minimum and maximum si gu-
Jf
lar values of the derivative matrix ax
( 0 )
over X.
2. See Appendix C for a derivation of these equations.
Chapter 2
Theory of Discrete Process Control
13
(21)
Equation (21) is equivalent to the solution produced by a Local Newton c timization
method using the cost function G, : X
+ 3,where
m
G,(x)
=
[&x)
-21 ',
j = l
2' is the j* component of 2, and
(i.e. the linearization off
about x k ) .Equation (20) similarly results from the roblem
(24)
Of course any practical implementation of this algorithm must not c ly require
invertibility of the relevant matrices, but also put finite limits on the conditior ig of those
matrices.
The cost function G, is simply the sum of squares of the deviations fro& the target
values
f ,j
= 1...rn. Different scales of measure for the target values 2' and the recipe
values x'can be accommodated by placing scaling factors into the cost fun
obtain
Theory of Discrete Process Control
Chapter 2
where the d ( j = 1...rn) scale the target values' and R is a diagonal n x n mi
containing the scaling factors for the recipe values2 so that y
and
E R-'x.
Thus &)
=g
h)= m y ) .
Let
-Ak-R,
2k'S-l
where S is the rn x rn diagonal matrix containing s', j = 1...rn. This leads to
following modified equations3
where
6Zk
=
fot,> - 2 .
Thus the new problem at iteration k is
min
{Gk(y) I ~y
E
XI.
-
If n = rn and A k is invertible, then the solution to (29) is
-
-T
If n > rn and AkAk is invertible, then a solution to (29) is
-1
Xk+ 1
=
Xk
+ Axk = X k -RA:[AkAy s-' I f ( X k ) -21
,
1. For the calculation of machine settings, s' = 2 . min(USL' - target', target' - LSL')
2. For the calculation of machine settings, is the range of valid scttings for control i, Le. the maximum valid 1
value minus the minimum valid setting value.
3. The notation (., ) represents the scalar product.
Theory of Discrete Process Control
15
and this solution as close as possible to the prcvious solution
xk.
i
Chapter 2
-T-
If n < rn nd A k A kis
invertible, then the least square error solution to (29) is
si
Because the above algorithm uses approximations to f ( * ) , a more robu t algorithm
uses the above equations to calculate a search direction hk (in equations (30) through (32)
e
substitute xk+ by hk),and then uses an Armijo step size algorithm [20] to d termine the
,
actual A x k = h,h,, where
zx{7
...
1
L
1Cfj(Ry)-z/] } ,
(34)
;= 1
so that
(35)
Whenever there are problems with performing the matrix inversion in (30), (3 l), or (32), a
steepest descent method can be used to find thc search direction':
For most systems, the set of valid input rccipes X is constrained. Consiider a set of
constraints
i = l...n
report.
(37)
Chapter 2
where x
Thcory of Discrete Process Control
~is the
~ minimum
,
~ valid value for setting i, and x
16
~is the
~ maximum
,
~ vi id
value for setting i. Whenever a recipe is calculated, the algorithm must be able to rem in
within the constraints given by (37). To handle these constraints, a feasible modificatil 11
to the above algorithms freezes any constraint violating input value (at the minimun or
maximum according to the nature of the violation), and reduces the dimension of the in ut
space by one. Thus the optimization can continue with the remaining inputs. For a m re
robust system, a more general constrained optimization algorithm could be applied [20
1. The reliability of this modification -;pen& on the assumption that all of lhc modeled output values are monotoni JlY
either increasing or decreasing with respect to each individual setting value, an assumption which is satisfied by ost
semiconductor processing equipment.
17
2.5
Theory of Discrete Process Control
Chapter 2
Application of the Model Update and Recipe Update Algorithms
The presented methods for checking and updating equipment
calculating a new equipment setting recipe are built into the BCAM
The model update algorithm is used as part of the feedback system
models for processing equipment. The recipe update algorithm
purposes; it is used for initial setting calculations, for recipe
equipment models change, and for feed-forward cdculation of workcell contr 1s.
(i
Recipe
Update
Wafers
I
1
I
Model
Update
I
BCAM Implementation
Chapter 3
18
Chapter 3 BCAM Implementation
3.1
Introduction
Because the accurate control of manufacturing processes is critical to the producl in
of integrated circuits, a control scheme is needed so that deviations from prod ct
specifications may be compensated by automatic adjustments to the process. This con 31
must exploit the interdependence of the various steps involved in production. Software
IS
been developed to utilize equipment models for supervisory control. The software uses le
models for process simulation and recipe generation. This recipe generation is use(
:0
accommodate product specifications and to implcmcnt ked-forward control; in orde
:0
compensate for deviations in the middle of a process run, fced-forward control adjusts
le
settings of subsequent process steps.
Feedback control is initiated by a model-based control and monitoring schei e.
Alarms using statistical analyses [5] are employed to detect consistent departure: .n
equipment performance from the performance predictcd by the equipment models. 0 :e
this departure has been established, the model is modified through a model upd te
algorithm [7] and the equipment control settings arc correspondingly adjusted. 1 .e
workcell controller has several process analysis functions which examine equipm n t
interconnection information to determine the order of processing steps, to prec st
performance of an entire workcell, and to perform sensitivity analyses on the workc 1.
Feed-forward control is initiated whenever the projected properties of a wafer lot
11
outside of specifications. It is implemented by adjusting the recipes (control settings If
subsequent processing steps. If projections predict that fecd forward control cannot bi 'g
the lot back within the acceptance limits [13], the lot will be discarded or re-processed
19
Chapter 3
BCAM Implementation
This chapter gives an overview of the implcmcntation of the BCAM E
L o w level implementations details are described in the B C A M
Programming Manual presented in Chapter 5.
,t 4Fp
Statistical
Diagnosis
I
Ingres Database
Recipe Editor
&
Model Editor
e 2 TheBCAMEnviro-
3.2
The Ingres Database
The BCAM environment must operate in a multiple user system with security
1
precautions and the ability to avoid conllicts when more than one user ccesses the
database simultaneously. The environment therefore makes use of the Ing es database
program. This program allows multiple users to interact with a central database. Ingres
Chapter 3
BCAM Implementation
20
also allows different levels of permissions, such as those of an operator or an engineer.
Ownership and time stamps are maintained for all tables stored in the database, there by
preserving security and preventing access conflicts. Thc BCAM Environment uses Ingres
library functions to store and retrieve equipment recipes and models in the database. In
order to enhance the portability of the BCAM Environment, the code has been developed
to allow easy modification for use with other databasc programs.
3.3 The Role of X Windows in the BCAM Environment
The X window system provides a means to implcmcnt an aesthetically pleasing, user
friendly interface to the BCAM environment. X windows were chosen because they ixe
available throughout the industry and are standardized to work on most workstations, A
commercially available graphical interface packagc was also investigated, but it was
determined to be inappropriate for the BCAM Environmcnt. This study is described in
Appendix J.
3.4 Operations on Indihdual Machines
The most basic function of the BCAM environmcnt is the selective activation of
individual machines. Once activated, the BCAM system can interact with each machine: in
a variety of ways.
By accessing the system database, a recipe editor' allows machine settings to be
retrieved, edited, and saved as desired. Ownership and time stamps are maintained on all
recipes. Recipes may also be calculated to meet specified targets.
Analytical models f o r the machine are also loaded from the database. T h e
implementation allows full interaction with these models, including editing, automz.tic
model updates, response surface viewing, and storage of all models in the database. As
1. The recipe editor has been developed by Hao-Cheng Liu of the Bcrkclcy Computer-Aided Manufacturing group.
21
BCAM Implementation
Chapter 3
N
models are updated, corrections are also stored in the database’. Owners ip and time
a
stamps are maintained on all models. The operator may use these models f r prediction
and recipe generation.
l
1
Several types of equipment connection information may also be addr ssed by the
operator. Inputs which must remain constant or are uncontrollable can be d signated as
uncontrollable. Outputs which are considercd important, or for which speci cations are
given, can be designated asBnal outputs. Often the output of one machine affects the
I
performance of the following processing step. Therefore, the operator can /connect the
t”
of the addressed inpu4output pair.
output of any machine to the input of any othcr machine. The BCAM environ ent checks
for validity of such connections by comparing thc units
3.5 Process Analysis Functions
3.5.1 Deduction of Process Order
After the user has designated the equipment intcrconnections, the workcall controller
must deduce the order in which the machines will operate. The controller does this by
following connection paths to determine which machine depends on the greatqst hierarchy
of other machines for its input values. This machinc is placed at the end of th$ processing
line. The controller then checks for the machinc with the next greatest depqndence and
places it second to last. The method is continued until all connected machin
1
have been
included. This method can handle any conligurcltion of machines and will a tomatically
detect misconfigurations which lead to loops. Once the workcell configurati n has been
determined, the controller may consider thc wholc workcell (or parts of iti as a single
operation.
1. Automatic storage of model corrections has not yet hwn implcmented.
Chapter 3
BCAM Implementation
22
3.5.2 Workcell Performance Prediction
For several applications, the workcell controller must be able to predict the fi
outputs of a workcell based on the individual controls applied to all machines in
workcell. This is accomplished by first predicting the outputs of the first machine, feed
these outputs to the inputs of the following machinc, and continuing until the predicti
for the last machine have been calculated, thus yielding the desired result.
3.5.3 Workcell Sensitivity Analyses
In order to determine the sensitivity of any workcell final output to any workcell in]
the controller uses a recursive algorithm. This algorithm uses the workce
interconnection information to implement a multidi mcnsional evaluation of differential
of composed functions. The level of hierarchy for thc composition (and thus the leve
recursion) depends on the number of machines bctwccn the machine receiving the in
and the machine whose output is considered.
3.6 The Workcell Operations
In addition to providing control over a processing line, the controller must be ablc to
conduct simulations of the process. This will allow opcrators to perform preliminary ti StS
of new process configurations or control schemes without expensive and time consum ng
wafer processing.
The run-by-run control system under development by the BCAM group uses moc 9s
for the individual machines in a process to build a model o C the entire process. A proc :ss
specifications menu enables the user to set the product's desired characteristics, and t en
the controller will automatically calculate the optimum equipment settings to meet 1 iat
product's specifications. These settings make up thc process recipe. Once this has b en
accomplished, the controller may begin processing wafers.
23
BCAM Implementation
Chapter 3
6
As wafers are processed, the BCAM Environment makes a record of eac machine's
performance. This record is used by the alarm generation module, the m del update
algorithm, and the graph generation module.
3.7 The Interface to Other BCAM Applications
i
0
The Berkeley Computer-Aided Manufac luring research group has devel ped several
applications for manufacturing. These applications can be invoked for use w i k a piece of
equipment through the BCAM environment.
I
Formal alarm generation algorithms have bccn developed by Sovarong p a n g [22].
I
They will be integrated into the monitoring systcms of the BCAM environmedt.
i
Real time statistical process control (SPC) algorithms have been imp1 mented by
Eddie Wen [22][23]. This implementation includes graphical displays. The SPC
application functions for measurements taken from the Berkeley Micrdfabrication
Laboratory's Lam Autoetch 490.
An application which performs diagnoses on equipment malfunctio& has been
1
developed by Dr. Gary May, Hao-Cheng Liu, and Sherry Lee [16][17]. Th s diagnosis
I
module is available for the Berkeley MicroPabrication Laboratory's Lam iAutoetcher
through the BCAM environment.
An application to create two and three dimensional response surface plots of
equipment models has been developed by Eddie Wen and Eric Braun for use with the
BCAM environment' ~221.
,
~
1. This model plotting algorithm is currently in the proccss of inkgration into the BCAM environment.,
BCAM 13nvironment User’s Manual
Chapter 4
24
Chapter 4 BCAM Environment User’s Manual
4.1
Introduction: Starting the BCAM System’
To enter into the BCAM environment, first change directories to “-bcamdev/t
7”
then enter the command “source -bcam/src/main/.bcam” and then enter the comm, id
‘‘./BCAM”
An introductory widow will appear. Click on “Ok” to continue. At this point the n: in
menu will appear. To activate some equipment, click on the “EQUIP” selection and a ml
IU
of available equipment will appear. Clicking on an equipment name activates 1 at
equipment, and a window for the equipment will appear. Several machines may
3e
activated at any given time.
The individual equipment windows allow a multitude of operations. Equipment set1 ’g
recipes may be edited, stored, and retrieved from the BCAM database. Simila Y,
equipment performance models may be edited, stored, and retrieved. The equipm nt
window also facilitates the definition of equipmcn t interconnections for use with ie
BCAM workcell controller application. In addition to the workcell controller, the BCA M
environment supports Diagnosis and Statistical Process Control (SPC) applications; tk se
applications are also activated from the equipment window.
1. These instructions are for the current experimental implementation on 11. C . Berkeley’s radon Sun4 computer.
25
4.2
Chapter 4
BCAM Environment User’s Manual
The Equipment Window
e 3 The GCA SteaQer Eqybment Windoq
4.2.1 General Description
Most operations of the equipment window are accessed through the medu bar at the
top of the window. This menu bar has four components: Recipe, Model, Connect, and
Application. In addition, values for inputs, outputs, and model coefficients may be directly
edited in the equipment window, and connection information may be de$ignated by
clicking on the names of the inputs and outputs.
I
Chapter 4
BCAM Environment User’s Manual
26
4.2.2 The Equipment Recipe Menu
The Recipe Menu is used to access all functions associated with the currently sto ed
recipe of control and input values for a machine. The machine is also deactivated throi gh
this window.
0
0
0
0
0
Load Recipe...-Select and load a recipe from the BCAM database.
Load Default Recipe-Load the user’s default recipe from the BCAM database; if he
user has no default recipe, the BCAM system default is loaded.
Save Recipe-Save the current recipe into the BCAM database under the current n a le.
Save Recipe As...-Specify
a name for the current recipe and save it into the BCt ,M
database.
Restore Recipe-Restore the recipe to the values it had at the last operation.
Delete Recipe-Delete a recipe from the database.
Output Targets-Set target values and tolerances for all final outputs of this machint
Output Specifications-Set target values and specification limits for all final outpuu of
this machine.
Calculate Recipe-Generate a recipe to produce the final output values specified by
targets.
Download Recipe-Download a recipe of controls to the physical equipment.
Deactivate this Machine-Eliminate this equipmcnt window and deactivate he
corresponding machine.
4.2.3 The Equipment Model Menu
The Model Menu is used to access all functions which deal with equipment models
Load Model...-Select and load a model from the BCAM database.
Load Default Model-Load the user’s default model from the BCAM database; if .he
user has no default model, the BCAM system default is used.
Save Model-Save the current model into the BCAM database under the current n a le.
Save Model As...-Select a name for the current model and save it into the BCt LM
database.
Display Original Model-Display the model as it existed before any feedbi ck
corrections.
Display Current Model-Display the current adaptive equipment model (origi la1
model plus correction model).
Confirm Current Model-Confirm the currently edited and displayed model and tak :it
as the current adaptive model.
Predict-Predict the outputs generated by the current input recipe.
27
BCAM Environment User’s Manual
Chapter 4
I
Check Model-Using equipment performance data, execute statistical re ressions to
check (and if needed, correct) the current adaptive model.
Response Surface Plots-Activate the response surface plotting facility fo equipment
models.
Load Simulator Model...-Select
and load a simulator model from he BCAM
database.
i
Load Default Simulator Model-Load the simulator with the user’s
the BCAM database; if the user has no default model, the
used.
Display Simulator Model-Display the model currently
equipment simulator.
Confirm Simulator Model-Confirm the currently edited
it as the current simulator model.
Note that there are two distinct models used in the
P
the current (controller) model. This model is used for all prediction and contr 1 purposes,
including the feedback and feed-forward control algorithms. The original vedsion of this
controller model is also maintained and may be viewed with the Display Ori$inal Model
command. The Check Model command is used to manually initiate a check arid update of
this model. The other model is the simulator model; this model is usedl purely for
demonstration purposes. Unless the simulator is explicitly specified, all ref&rencesto a
model are to the controller model.
4.2.4 The Equipment Window-Dejning Equipment Connections
To connect the input (setting, control, or incoming measurement) of onelmachine to
the output (usually a post-processing measurement) of another machine, click
I
successively upon the appropriate input name and output name. The display will then
change to describe this connection. To remove the connection, click upon the name of the
input side of the connection (i.e. where that paramekr shows up as an input).
For control purposes, not all outputs are critical to the final product of
To designate an output value to be of final importance, double click upon
output. The window will then show that output to be a “final output.”
Chapter 4
B C M Environment User's Manual
28
automatically prompted for specifications whenever a linal output is designated. Anol ier
two clicks upon the output name return the output to normal status. Multiple final out1
Uts
may be designated.
In many cases, input parameters which affect machine performance may no1 be
controllable. Furthermore, it may sometimes be desirable to hold specific machine con rol
inputs constant. In such cases, the relevant inputs may be designated as uncontrollable To
declare an input uncontrollable, double click upon the name of the input. The display d l
then reflect this designation. Another single click revcrscs the designation.
Because the workcell configuration depends on cquipment interconnectic
IS,
connection information may not be changed while the BCAM Workcell Controlle is
active.
4.2.5 Example: The Interconnection of a Photolithography Workcell
The following figure shows a photolithography workcell using three piece: of
equipment. Two measurements are taken on the wafcrs exiting the photoresist spini er:
photoresist thickness (T) and reflectance (R). Thc photoresist reflectance is ag iin
measured after exposure (the thickness is not affcctcd'by the exposure). Finally, he
critical dimension (CD) is measured after the devcloprnent. Since the thickness nd
reflectance measurements are considered inputs to thc following processing steps (t eY
appear in model equations used by the BCAM controller), they are connected as depic ;ed
Chapter 4
f
3
Eaton
Photoresist
SP’
inner
R . R
f
GCA
Photoresist
Exposure
R
v
R
MTI
Photoresist CD (fin
Developer
output),
r
Once the three machines have been activated, the following sequence of
ouse clicks
will set up the connections in the BCAM environment:
Double click on the developer’s output CD to dcsignate the final output.
Click on the developer’s input thickness, and click on the spinner’s output thickness to
connect.
Click on the exposure’s input thickness, and click on the spinner’s output thickness to
connect.
Click on the developer’s input rcflcctancc, and click on the exposuke’s output
reflectance to connect.
Click on the exposure’s input reflectance, and click on the spinner’s output reflectance
to connect.
The workcell connection information is thus completed. The workcell controller may
now be invoked through the Equipment Applications Menu described in 4.2.7.
4.2.6 The Equipment Connections Menu
Connect Input-Change the status of an input or connect the input to the output of
another machine.
Connect Output-Xhange the status of an output or connect the output to ‘the input of
an0ther machine.
Chapter 4
BCAM 13nvironment User’s Manual
30
4.2.7 The Equipment Applications Menu
This menu is used to access other major BCAM applications.
Workcell Controller-Activate the BCAM Workcell Controller using curr
equipment interconnection information. (see below ‘The Workcell Window’)
Statistical Process Control-Activate the BCAM Real-Time Statistical Process Con
monitoring system [22][23]. This application is not available for all machines.
Diagnosis-Activate the BCAM Diagnosis module [ 161[ 171. This application is
available for all machines.
Response Surface Plots-Activate the response: surface plotting facility for equipm
models [22].
nt
01
ot
nt
4.2.8 The Equipment Window-Editing Values
The values shown for input values, output values, and model coefficient values re
editable. To edit these values, click the mouse pointer upon the value to be edited.
le
value may then be changed using the usual editing keys. All commands from le
equipment window check these editing fields for ncw values before executing.
le
workcell controller, however, does not automatically check model coefficient values, id
it is therefore desirable to manually confirm these values (from the Model pulldown me u)
after editing. This is necessary, for example, whenever the simulator model is changed
31
4.3
BCAM Environment User’s Manual
Chapter 4
The Workcell Window
re 5 ThePhotoli t h o w h v Workcell Window
The Workcell Window is used to manipulate a group of machines connkcted into a
processing workcell. This window is activated from the Equipmenti Window’s
Applications Menu by choosing the Workcell Controller. Equipment interconn
be defined before invoking the workcell window, and they cannot be chang
workcell window is present. To disengage the workcell window, use the
Workcell command from the Workcell Recipe Menu.
BCAM Environment User’s Manual
Chapter 4
4.3.1 The Workcell Recipe Menu
32
.
This menu accesses functions for manipulating workcell recipes. The Workc ?11
Window is also disengaged through this menu. In addition, this menu can be used to
specify target values for the final outputs of the workcell. Upon receipt of he
specifications, the controller automatically attempts to calculate a recipe of controls wh ch
will yield the desired results.
Edit-Edit
the current workcell controls.
Load...-Load
a new recipe for the workcell controls from the database.’
Load Default-Load default controls for the workcell
Save-Save current controls into the database.
Save As...-Save current controls under a specified name.
Final Output Targets-Specify final output targets and tolerances.
Final Output Specifications-Specify final output targets and both upper and 107 rer
specification limits.
Calculate Recipe-Calculate a recipe to meet output specifications.
Exit Processing Workcell-Exit the workcell mode and Workcell Window.
4.3.2 The Workcell Wafer Menu
This menu is used to initiate actions upon or about wafers, including actual operat on
of the workcell.
Run Wafer Through Workcell-Send a wafer to the workcell for processing.
Simulate a Wafer Run-Simulate the workcell’s operation on a single wafer (used For
demonstration).
Simulate N Wafer Runs...-Simulate a series of wafers through the workcell (used for
demonstration).
Predict Final Outputs-Predict the final outputs of the workcell using the curr :n t
recipe.
Sensitivities-Display the sensitivities of the final outputs to the workcell’s controls 2
Evaluate Cpk Capability-Evaluate the Cpk capability of the ~ o r k c e l l . ~
1. Database operations for the workcell have not yet been implemented. These operations are, however, available rom
the individual equipment windows.
2. Sensitivity displays have not yet been implemented.
3. Cpkevaluation has not yet been implemented.
BCAM Environment User’s Manual
33
4.3.3 The Workcell Graph Menu
Chapter 4
1
This menu accesses the graphical utilities associated with workcell operatihn.
1
Outputs-Graph the recorded output measurements of all workcell machin s.
Final Outputs-Graph the final output measurements of the workcell.
Prediction Errors-create regression control chart on prediction errors.
Autocorrelation-Graph the autocorrelations of prediction errors.
CUSUM-Show a CUSUM graph of final output measurements.
Inputs-Graph the controls used versus wafer numbers.
Normalized Inputs-Graph all inputs normalized to fit on a single graph.
I
Adaptive Models-Graph the coefficients of the adaptive models.
4.3.4 The Workcell Alurm Menu
This menu is used to access BCAM alarm utilities. Manual alarms can be $sued using
this menu 1.
Invalidate History-Specify that all previously recorded measurement$ should be
ignored by the model update algorithms.
Discard History-Purge all recorded measurements from memory.
I
4.3.5 The Workcell Options Menu
The workcell controller allows the user to specify several optional parameters for
dealing with the workcell. These parameters are accessed through the Workaell Options
Menu.
Turn Ordoff Feed-Forward Control
Turn OrdOff Feedback Control
Turn Ordoff EVO$
1. This menu will be expanded in the future [22].
2. Evolutionary operation has not yet been implemented.
Chapter 5
BCAM Environment ProgrammingManual
Chapter 5 BCAM Environment Programming Manual
5.1
Introduction: The Basic Program Structure
To aid in the ongoing quest to improve integrated circuit manufacturing techniqu s,
the BCAM group has developed an object-oriented software library describing 1 Le
fabrication equipment. The library provides a set of functions for interacting w ;h
equipment and databases and for manipulating various models of machine performan1 e.
Once the BCAM software has loaded equipment information into memory, it can perfo n
predictions, sensitivity studies, simulations, recipe generation and statistical proct
;S
control. Also included in the software arc procedurcs for updating machine performar :e
models, alarm generation, and diagnostic analyses. The BCAM software is organized a a
library which can be accessed by all modules in the BCAM architecture (e.g. workc 11
controller, recipe editor, malfunction diagnosis, and statistical process control). The ent :e
library is written in C++, an object-oriented superset of the C programming language. C
.+
extends the normal capabilities of C by adding features such as data abstraction, messal :passing, polymorphism, inheritance, and class hierarchy [ 111.
The BCAM environment is built around a C++ class called machineCZass. This d; ta
structure includes all the information necessary to interact with the physical machii
Y.
I
Member functions of this class or its member classes are used for BCAM actions relal :d
to the individual machine. For every equipment activated, a separate instance o a
machineCZass structure is created. When the BCAM Environment is active, ea h
machineCZass structure manifests itself on the screen in an Equipment Window.
Although the greatest care has been taken to keep this information current, herein m
be discrepancies with the current code. For the most recent information, please refer to 1
source code.
BCAM Environment Programming Manual
35
5.2
Chapter 5
The Creation of the Main Windows
The program first creates an entrance window which introduces the operator to the
system. When the operator is ready to begin, a mouse click will bring up the main menu
f o r the environment. T h i s main menu i s created using t h e f u n c t i o n Widget
MakeMainMenu(). Callbacks are set up from this menu to access the highest level
operations, most importantly the activation of equipment. The functions w iich handle
these actions are located primarily in the files ‘controllerEntrance.cc’, ‘equ..pSetup.cc’,
and ‘mainMenu.cc’.
4
Whenever a machine is activated, an instance of machineClass is reated and
information from the database is loaded into this structure. Then a calh to Widget
machineClass::MakeEquipWindow() creates the actual equipment window. Initegral in the
creation of the equipment window is the creation of the bar of pulldown menus from
which most operations are accessed. This is accomplished through use of the functions
Widget MakePulldownBar() and Widget MukePulldownMenu(). The functions which
handle these actions are located primarily in the files ‘equipWindbw.cc’ and
‘mainMenu.cc’ .
The workcell controller window is created in a similar fashion to tha equipment
window. The functions which handle these actions are located primarily1 in the files
‘process.cc’ and ‘mainMenu.cc’.
5.3 Naming Conventions
Except in cases of imported code, the following naming conventions have been
adhered to:
Macro names are all capital letters (e.g. MACRO).
Function names are lower case with all individual words beginning with c
for ease of reading (e.g. FunctionName).
BCAM Environment Programming Manual
Chapter 5
8
8
8
36
Variable names (except for those of Widget type) are lower case with imbedded wc -ds
beginning with capital letters for ease of reading (e.g. variableName).
Variable names of type Widget are lower case with imbedded words separated by he
underscore character (e.g. widget-variable-name).
Type and class names follow the same conventions as variable names.
5.4 Source Code File Hierarchy
The source code file hierarchy (from top down) is approximately organ zed in he
following order:
BCAM.cc controllerEntrance.cc
mainMenu.cc
equipSetup.cc
machineRW.cc
modelRW.cc
modelIngres.scc recipeIngres.scc
equipWindow.cc functions.cc messageWidget.cc makeWarning.cc
connections2.cc connections.cc modelChoice.cc
process.cc interfaces.cc .
generateRecipe.cc
modelUpdate.cc
graphsBCAM.cc graphRM.cc
diagnosis.cc
modelEval.cc
steps-cc
modelSpecFn.cc
mymath-cc
'
37
Chapter 5
BCAM Environment Programming Manual
5.5 Structure Declarations
Descriptions of most data classes and thcir mcmber functions are conti ined in the
declarations file ‘machineTypes.h’.The principal classes have the following hi :rarchyl :
historyClass
historyClass
inputclass
inputclass
1
inputStepValueClass
inputStepValueClass
connectionClass
t
outputclass
outputclass
Figure 6 BCAM C++ Data Structures
The principal members of some of the important structures are as follows:
d
1. Arrows indicate pointers (horizontal arrows form linked lists); vertical bars indicate membership: an horizontal bars
indicate consecutive members of an array.
Chapter 5
BCAM Environment Programming Manual
I8
5.5.1 class machineclass
The core of the BCAM environment is the class machineclass. It has many mem :r
data structures and functions, only the most important of which are described here. Sa le
of these members are themselves classes, and these classes are also described in
1
is
document.
The equipment window displayed on the screen.
The current models for machine performance. Incluc
a r e the models both for control purposes and
simulation.
A linked list of historical equipment performance data.
historyClass* history
The identification number of the wafer currently be
int waferNum
processed by this machine.
int GetInputIndex(char* inputName)
Return the array index (into modeZ.inputs) of the in
named inputName.
int GetOutputIndex(char* outputName)
Return the array index (into modeZ.outputs) of the out
named outputName.
double predict(int outputNum)
Evaluate and return the value predicted for output num
outputNum using the controller machine performai
model and the current rccipc for inputs.
Simulate all outputs of this machine including Gauss
void simulate()
noise. Simulated o u t p u t v a l u e s a r e s t o r e d in
model.outputs array.
Look at the historical pcrformance data of this mach
int ModelUpdate()
and determine if an update to the machine's contro
model is statistically justified. If a correction is justifiec
is made, and the function returns a positive val
Otherwise the function returns zero. A negative ret
value indicates an error.
machineclass* next
A pointer to the next machine in the linked list
machines.
Widget window
modelClass* model
d
)r
It
It
:r
m
e
n
e
le
:r
it
d .
s
'n
)f
5.5.2 class modelClass
This class contains most of the information ncccssary for modeling or simulatin a
machine's performance.
Chapter 5
BCAM Environment Programming Manual
39
char* equipName
char* formalName
The abbreviated name of the machine.
The formal name of the machine
~
~
The login name of the current BCAM user.
A matrix containing the exponents for the inp ts in all the
terms used in the equipment model. Each row orresponds
to one term. Column indices correspond to inp t numbers.
This member is private.
A matrix containing special function codes fo the inputs
int** s p e c 3
in all the terms used in the equipment mode . Each row
corresponds to one term. Column indices co espond to
input numbers. The code zero indicates tha no special
function is to be used. Special functions ard applied to
inputs before cxponcnts. This member is privak.
inputclass inputs[MAX-INPUTS]
The array of input descriptors of the machine. khe current
recipe is located within.
I
The number of inputs for the machine.
9 int input-cnt
outputClass outputs[MAX-OUTPUTS]
Thc array OK output descriptors of the machine,
The number of outputs for the machine.
int output-cnt
double simulate(int outputNum)
Simulate and return the value f o r o u t p u t number
outputNum using the simulator performancei model and
the current recipe for inputs.
double predict(int outputNum)
Predict and return the value of output numberloutputNum
using the controller’s current adaptive model and the
current recipe for inputs.
9
char* user
double** exp-mat
1
9
5.5.3 class processNode
Another important class is the class processNode. This class is used tol describe a
workcell containing several machines. This class is used extensively by ithe BCAM
Workcell Controller. W h e n the workccll controller is invoked, th/= machine
interconnections are analyzed and a linked list oKprocessNodes are created to bescribe the
order in which the machines operate, i.e. describe the process. Each process dode has the
following members:
BCAM Environment Programming Manual
Chapter 5
40
muchineClass * machine
A pointer to the machineC1a.m structure corresponding to
the machine at this node in the process workcell.
processNode * preceding
A pointer to the preceding process node in the workcell
processNode *following
processNode * start
processNode * end
void CalcControls()
A pointer to the following process node in the workcell
A pointer to the first process node in the workcell.
A pointer to the last process node in the workcell.
Calculate the values for the controllable inputs for t is
machine and all following machines in order to rea :h
target output values. Calculated values are automatica lY
stored in the inputs member.
5.5.4 class inputclass
The class inputclass contains all the information about an input for a machine a id
functions for manipulating that input. Descriptions of some members follow:
char* name
The name of the input.
An abbreviation of thc name of the input.
char* abbr
char* units
The unit of measure associated with values of this inpui
double min
The minimum recommcndcd value for this input.
The maximum recommcndcd value for this input.
double mux
inputStepValueClass* valueList
A list of values that this input takes at each step in 1
operation of this machine. This is a private member.
double Value(int step)
Return the value of this input at step step.
double SetValue(int step, double newVulue)
Assign a new value for this input at step step. Also reti n
this new value.
boolean Connected()
Return TRUE if t h i s input is connected to anotk :r
machine. Otherwisc return FALSE.
5.5.5 class inputstep Valueclass
This class is used to form a list which stores the current rccipe values of an input at 111
relevant steps in the equipment operation. Connection inl'ormation is also stored here.
double value
int step
T h e value of an input a t this step. This is a privi te
member.
The step number for this step.
BCAM Environment Programming Manual
41
Chapter 5
True if this is a critical step for a machine' operation.
False otherwise. Only one step should be cri ical for any
input. This information is used by the mode evaluation
routines.
connectionClass connection
Connection information for this input.
inputStepValueClass* next
The next step in this linked list.
boolean critical
5.5.6 class outputClass
The class OutputClass contains all the information about an output for a I iachine and
functions for manipulating the outputs. Descriptions of some members follow
The name of this output.
An abbrevialion of the name of this output.
The unit of mcasurc for the values of this out€ ut.
The current value of this output. This is a priv ite member.
The minimum feasible value for this output.
The maximum feasible value for this output.
The upper specification limit for this output inla particular
manufacturing application.
double 1owerSpecLimit The lower spccilication limit for this output in a particular
manufacturing application.
The original controller model coefficients for this output.
coeffsType coeffs
This is a private member.
The controller modcl correction coefficients for this
coeffsType corr-coeffs
output. This is a private member.
coeffsType simul-coeffs The simulator modcl coefficients for this output. This is a
private mem her.
Return the current value of this output.
double Value()
double SetValue(doub1e newvalue)
Assign a new value to this output. Also return this new
value.
boolean Connected()
Return TRUE i f this output is connected to another
machine. Otherwisc return FALSE.
char* name
char* abbr
char* units
double value
double min
double max
double upperSpecLimit
.
9
BCAM Environment Programming Manual
Chapter 5
42
5.5.7 class historyclass
An instance of this class stores information about the processing of a particular wi er
on a machine. Each machineclass structure includes a linked list of these histc ‘Y
structures.
int waferNum
double* recipe
double** modelCoeffs
*
double* outputValues
double* upperSpecLimits
The wafer identification number
The controls used to proccss this wafer on this machint
The coefficients that the adaptive model used when 1 lis
wafer was processed
The output values mcasurcd for this wafer
The upper specification limits on the output measureme
of this wafer
double* desiredOutputValues
The targeted values for thc output measurements of 1
wafer
double* 1owerSpecLirnits
The lower specification limits on the output measureme
of this wafer
double* predictedOutputValues
The output values which were predicted by the adapt
model at the time this w d c r was processed
double* trueOutputValues
In the case where a simulator was used, the true state
the simulator is rcllcctcd here by recording noise1
output values of the simulator.
historyclass* next
A pointer to the next oldcst wafer record
Its
lis
Its
ve
of
ss
43
Conclusions& Future Work
Chapter 6
Chapter 6 Conclusions & Future Work
6.1 Conclusions
An implementation of an integrated circuit manufacturing control and nonitoring
environment has been realized using C++ and X windows. This environment j named the
Berkeley Computer Aided Manufacturing Environment. The environme t provides
interfaces to a variety of manufacturing applications, including statistical proc :ss control,
malfunction diagnosis, and response surface visualization of equipment r 3dels. The
environment also provides a complete control system for processing wordtcells. The
environment interfaces with an Ingres d313hUc for maintenance of machide operation
recipes and equipment model records. In ordcr to provide automated equipdent control,
the controller uses an optimization algorithm for recipe updates and a statistically based
algorithm for model updates.
6.2 Database Storage of Wafer Measurements
Currently, the BCAM environment maintains wafer measurement recqrds only in
memory while running. These measurement records, along with the machine cmtrols used
to process the wafers, must also be stored in the database so that they may be accessed
whenever the BCAM environment is re-started after a shutdown.
6.3 Alternate Storage Formats
Development will be performed to allow thc RCAM Environment to store ]information
in text files or other databases than Ingres.
Chapter 6
Conclusions & Future Work
44
6.4 Installation in Integrated Circuit Fabrication Facilities
The connections to the physical equipment m u s t hc implemented. The Berke
EY
Process-Flow Language[ 141 (BPFL) and the SECS I1 protocol will be instrumental in lis
development.
The BCAM Environment will be installed at the DEC manufacturing facilit: in
Boston, Massachusetts.
6.5 Process Capability (Cpk) Evaluation and Process Simulation
When the process prediction capability of thc controller is combined with an anal sis
of the measured standard errors of the equipment (as stored in the equipment models), he
controller will be able to determine the total process cxpccted standard error (incluc ng
any errors which propagate along the process and for which feed-forward control car lot
compensate), and thus the controller will be able to dctermine the expected yield of he
process. Hence, whenever a new product is proposed, automated yield prediction for he
proposed product may determine whether it is technologically or financially feasible.
6.5.1 Comparison of Control methods
Cpk prediction and process simulation can also he used to evaluate the control sys :m
itself. By simulating various process problems such as equipment drift or maintena ce
disturbances, the response of the control system can he examined, and this informa on
can be used to adjust various settings of the controller or even to change the configura on
of the process line itself. For example, an engineer may wish to use process simulatio to
compare the controller responses with feed-t'orward control to the responses without ft rdforward control, and thereby evaluate the henelit oC thc added control. This simula on
may also be used to set forgetting factors for the modcl update algorithms.
45
Conclusions & Future Work
Chapter 6
6.5.2 Alarm Generation through cpkPrediction
Cpk prediction, when used during production, may also provide a metl- d of alarm
generation. When a predicted Cpk becomes too low, it can be a signal that :w recipes
should be created for the equipment, or that some cquipment needs servicing.
Appendix A
Acronyms
Appendix A Acronyms
A.l Acronyms
BCAM
BPFL
CIM
CL
CUSUM
DEC
EECS
EVOP
ERL
ISMSS
LCL
LPCVD
LSL
SECS
SPC
SRC
UCB
UCL
USL
WIP
Berkeley Computer Aided Manufacturing
Berkeley Process Flow Language
Computer Integrated Manufacturing
Center Line
Cumulative SUMmation
Digital Equipment Corporation
Electrical Engineering & Computer Sciences
EVolutionary Operation
(Berkeley) Electronics Research Laboratory
International Semiconductor Manul'lictul-ingScience Symposium
Lower Control Limit
Low Pressure Chemical Vapor Deposition
Lower Specification Limit
SEMI Equipment Communications Standard
Statistical Process Control
Semiconductor Research Corporation
University of California at Berkeley
Upper Control Limit
Upper Specification Limit
Work In Progress
Appendix B
Symbols
47
Appendix B Symbols
In this report bold-faced capital letters arc uscd for matrices and bold face
letters for column arrays. Row arrays are obtained by applying the transpose
to a column array.
0
The set containing only the zero vector.
A unitless empirical quantity uscd in the model update a l g F h m .
A derivative matrix of a function f evaluated at a specific1point in an
input space.
An empirical constant used in an Armijo step size calculatibn.
A matrix of normalized eigenvectors.
An empirical constant used in an Armijo step size calculati
A term coefficient value in a modcl equation.
A correction to a tcrm coefiicicnt value in a model equatiod.
A vector of term cocflicicnt values in a model equation (not including
the constant term).
A correction to a vector of tcrm coefficient values in a moqel equation
(not including thc constant term).
A diagonal matrix used to numerically condition vectors oflterm values
used in a model update algorithm.
A function mapping an input space into 3.
A function mapping an input space into an output space.
A cost function used in an recipe update algorithm.
A linear approximation to a function mapping an input spaae into 3.
A linear approximation to a function mapping an input space into an
output space.
An approximation to a cost function used in a recipe updat&algorithm.
A search direction used in a recipe update algorithm.
A vector of transformed term coefficient values.
A correction to a vector of transformed term coefficient values.
An index of an equipment inpu t sctting as in x, .
An index for an output value.
An index into a sct of data uscd for regression, OR an iteration index
for an optimization algorithrn.
The number of data points in a data set used for regression.
An index for a tcrm coeflicicnt value, OR an index for an
size calculation.
~
U
A
a
B
P
C
Ac
C
Ac
D
f
f
F
-3
g
G
h
Y
AY
1
j
k
K
1
Appendix B
L
h
A
m
n
N
N
r
R
x
31
S
S
(3
t
t
T
e
U
V
V
W
W
X
X
Ax
X
X
5
Y
Z
Z
Symbols
A linear operator.
An eigenvalue of a variance-covariance matrix.
A diagonal matrix of eigenvalues.
The dimension of an output space.
The dimension of an input space.
The set of nonnegative integers.
A null space of a linear operator.
The magnitude of the range of valucs that an output may take.
A diagonal matrix used to transform recipes of input settings.
The range space of a linear operator.
The set of real numbers.
A scaling coefficient used to transform an output value.
A variance-covariance matrix used in the model update algorithm, c
diagonal matrix used to transform vcctors of output values in the rec
update algorithm.
The standard deviation of a random variable.
The number of terms (not including the constant term) in a mo
equation.
A vector of term values for a model equation.
A matrix, each row of which is a vector of term values for a mo
equation.
The zero vector.
A vector, each element of which is I .O.
A numerically Conditioned vector of term values for a model equatic
A matrix, each row of which is a numerically conditioned vectoi
term values for a model equation.
A weighting coefficient for a regression algorithm.
A diagonal matrix containing thc weighting coefficients f o
regression algorithm.
An equipment input setting.
A vector (recipe) of equipment settings.
A correction to a recipe of equipment settings in a recipe upd
algorithm.
An input space (the set of valid recipes for a machine or a workcell)
A matrix, each row of which corresponds to a set of input settings.
A vector in a linear space.
A transformed recipe of input settings.
An output value.
A vector of output valucs.
48
*a
Pe
el
el
1.
of
a
.te
Symbols
49
6Z
Az
Az
z
~
AppendixB
1
A difference of a predicted sct of output values and a se of desired
output values.
A discrepancy between a mcasurcd output value and a pred' ted output
value.
A vector of output discrepancy values.
An output space (the set of possible output value vectors).
Adjoint Derivations of the Rccipc Updatc Equations
Appendix C
0
Appendix C
Adjoint Derivations of the Recipc Update Equations
Consider the linear operator L : X + 2, whcrc L(x)= A x , A
E
'3m x n . Then
c.
1 "
adjoint operator L* : Z+ X is given by L*(z) =ATz, AT E 31" x m . These operators sati Y
(z, L(x)) = (L*(Z),x), vx E x,vz E 2.
Denote the null spaces and range spaces of L and L* by
%=
q
=
( 2 12
%*
q*=
{x
I L(x) = 0) c%"
= L(X),XE %"I C W t
= {z IL*(Z) = 0 ) c9Im
{ x Ix = L*(Z),Z E ."'}
c9<"
From the properties of the adjoint [ 151,
5f@RL*'9&@%{~ =%",
%* I%,%* e%=%",
and both L : $*
-+ q and L* : % -+ q*are one-to-one onto mappings. Thus a
vector x E 91n can be expressed as
x = x'+x",
where x ' E
%* and X "
E
(,
%, and any vector z E 3"'can hc expressed as
z
= z'+z'',
(
51
Adjoint Derivations of the Recipe Updatc I;xlualioiis
where z' E $ and z"
E
Appendix C
I
!A$,* .
~
S
Now examining an optimization problem, givcn is a 2 E 31'" and it is de ired to find
the 2 E
5Rn such that IIL (2)-211 2 is minimized.
Consider the case when rn > n . Then the system is overdetermined. It is dsumed that
% = 0 ,which implies that
[ATA] is invcrtihlc. From (45), the optimum~solutionf
If rn < n, the system is underdetcrmined. It is assumed that
%* = 0,which implies
that [AAT] is invertible and that there is a set of' solutions of dimension n - h. Suppose
2
that a solution P is required which minimizes 1 1 i 1 1 . From (44),
so that using (42), the optimum solulion 2 satislies it'
= 8 (the zero vector), i.e. 4 E RC .
Therefore it must be of the form P = ATC, I'or some
AAT{ = 2 so that
5
T
6 E 31".
Plugging into (48),
-'
= (AA ) 2, which yields
Now by translating and scaling the coordinate systems, the equations (47) and (49)
lead to equations (32) and (31), respectively.
52
Ingrcs l’ablc 1:onn;iLs
Appendix D
Appendix D Ingres Table Formats
D.l Tables describing the Ingres tables used by the SCAM environment.
This appendix describes the structure and contents of the tables used by the BCL M
environment. The table structures are first described by listing their column names and he
types of data stored in those columns. These table structure descriptions are identical to
those provided by the Ingres database manager. The meanings of those columns are tl =n
briefly described, and an example table is provided.
The data type abbreviations used in the tahlc slruc lure descriptions translate as
follows:
i4
f8
varchar(n)
date
Four byte integer.
Eight byte floating point number.
A variable length charackr string of maximum length I
A date and time.
D.2 The Equipment Index Table
The ‘equipment-index’ table basically lists the equipment which is available to he
operator. This table is used to create the BCAM environment Equipment Activat 7n
Window.
Table 1: Ingres table information for ‘ccpipment-index’
Column Name
Data Type
Key ##
Nulls
Defaults
name
varchar(20)
yes
n/a
formal-name
varchar(50)
ycs
n/a
process-description
varchar( 100)
yes
n/a
The column ‘name’ contains abbreviated namcs ol’ all available equipment. E; ch
abbreviated name is also used as an affix to thc tahlc namcs of the other Ingres tat es
which apply to that particular piece of equipment (c.6. thc MTI Photoresist Developc r’s
Ingres Table Formats
53
Appendix D
si
abbreviated name is ‘mtil,’ and the namc of the table describing it’ recipes is
‘mtil-recipe.’ The column ‘formal-name’ contains the full names of the equipment, and
the column ‘process-description’ contains clcscriptions of the functionhlity of the
equipment.
~
Table 2: Contents of ‘equipment-index’ database table
formal-name
name
~~
I Tylan16 Wafer Furnacc
I Lam Autoetch
I Eaton Photorcsist Spinncr
I MTI Photoresist Developer
I GCA Photorcsist Exposurc
~
tylanl6
lam1
eaton
mtil
gca
I
process-description
LPCVD of undoped polysi(licon
Plasma etching of polysilidon
Photoresist spinning
Photoresist exposure
D.3 The Eqyipment Input/Output Table
The ‘equipment-io’ table describcs the inputs (settings, controls, or incoming
measurements) and outputs (post-proccssing mcasurcments) of a machine.
Table 3: Ingres table information for ‘equipment-io’
minimum
maximum
parameter
abbreviation
units
io
f8
Yes
n/a
The name ol’ an input or output.
Thc abbreviation ol’the name of an input or odtput.
The unit of measure for an input or output.
Thc string ‘input’ or ‘output’ to distinguish th&two.
Appendix D
54
Ingres Table Fonnals
The minimum valid value for an input or the minin .m
expected value for an output.
The maximum valid value for an input or the maxin .m
expected value for an output.
minimum
maximum
Table 4: Example of ‘mtil-io’ table
parameter
abbreviation
units
io
maximum
minimum
thickness
T
Angstroms
input
1 IOOO
15000
reflectance
R
%
input
60
90
seconds
input
50
develop time DEVTI
CD1
I CD1
I microns
*
I output I 0.65
225
I 1.05
D 3 The Equipment Recipe Table
A ‘equipment-recipe’ table contains recipes for the operation of a particular mach:
Y.
Table 5: Ingres information on ‘equipment-recipe’
step
critical
parameter
value
recipe-name
recipe-owner
The operation step (for multistep operation).
A boolean value; onc s y m b o l i z e s true, and z ro
symbolizes false. True if this input at this step is Critic; to
values of the machine’s outputs. Each input can onl! be
critical at a single stcp.
The name oC this input.
The value of this input at this step.
The name of this recipe.
The owner of this recipe.
Ingres Table Formats
55
Appendix D
The date and time at which this recipe was last modified.
date
D.5 The Equipment Model Structure Table
The ‘equipment_model_structurc’ table dcscrihcs the terms which are /used in the
4
output models for this machine, i.c. thc ways that the inputs can affect the out uts. If there
are any transformations on the outputs, they arc also described in this table.
Table 7: Ingres information on ‘equipment-model-structure’
Column Name
Data Type
term
i4
parameter
varchar( 20)
Kcy ##
Nulls
yes
DefaL Its
n/a
exp-matrix
special-func tion
term
parameter
exp-matrix
special-func tion
varchar( 10)
yes
The tcrm name (all tcrm names are required ta be positive
integers). A ncgativc term name indicates tuat this row
describes an oulput transformation.
The name of an input which shall appear in his term or
the name or an output which is being transfo ed.
An cxponcnt to which this parameter will be raised.
A spccial transformation function for this lparameter.
Thcsc special functions are applied to a paradeter before
taking it to thc powcr of its exponent.
4
Appendix D
Ingrcs Table Fonnrits
i6
Terms which include more than one input paramctcr arc: dcscribed by multiple line, .n
the table.
Table 8: Example of ‘tylanl6-model-structure’ table
exp-matrix
spccial-func tion
thickness
1.o
cxp
temperature
1.o
time
1.o
silane flow
-1.0
temperature
1.o
silane flow
-1.0
pressure
1.o
silane flow
-1.0
pressure
1.o
temperature
1.o
silane flow
-1:o
7
silane flow
-1.0
7
time
1.o
8
pressure
1.o
8
silane flow
-1.0
8
time
1.o
9
silane flow
-2.0
10
temperature
1.o
10
silane flow
-2.0
parameter
~~
none
Th = ex
II
I
Appendix D
Ingres Table Formats
57
Table 8: Example of ‘tylanl6-model-structure’ table
term
I
parameter
exp-matrix
11
I temperature
2.0
11
silane flow
-2.0
time
2.0
pressure
1.o
temperature
-1.0
12
15
I
I time
iqq
~
special-function
none
none
I I tz
none
I I
h
1.o
D.6 The Equipment Models Table
I
The ‘equipment-models’ tablc contains for cach machine output the codfficients for
terms described in the ‘equipment-model-structure’ to make up the model for‘ that output.
Table 9: Ingres information on ‘equipment-models’
.
output
term
I
I
The output paramctcr name.
The term name.
The tcrm namc ‘0’ (zcro) is reserved for the c nstant term
of the modcl.
The term namc ‘std err’ refers to the estima ed gaussian
standard error 01’ the machine for this output.
T h e term name ‘prcd e r r ’ refers t o thelestimated
prediction error of the output model.
The tcrm namc ‘Forget fct’ refers to the forgetting factor
u x d by this modcl I’or modcl updates.
Appendix D
58
coefficient
model-name
model-owner
date
The term name ‘window siz’ refers to the maxim im
window size used by this model for the model updates
The coefficient value Tor this term.
The name of this model.
The owner of this model.
The most recent modification date of this coefficient.
Table 10: Example of ‘tylanl6-models’ table
stress
4
44.8
dcfaul t
hcam
07-apr- 1992
stress
5
105.27
default
hcam
07-apr-1992
stress
6
-0.112
default
hcam
07-apr-1992
stress
7
15.644
default
hcam
07-apr-1992
stress
8
-0.039
dcfaul t
beam
07-apr-1992
Ingres Table Formats
59
Appendix D
Table 10: Example of ‘tylunl6-models’ table
ir- 1992
a Although not shown here, this column also conlains the time of day.
The equations represented by the abovc tablcs ‘tylan16-model-stri cture’ and
‘tylan 16-models’ are:
47.97
15189.2
+ logt)
Th = exp (20.65 - -+ 0.291ogP T
Q
+ 44.87’ + 105.27P ...
Q
e
Q
42108
S = 126.71 -0.172T+0.532t-
-
... - 0.1 12PT + 15.644t - 0.039Pt + 2725650 - 6070.ST + 3.3812 -0.003
Q
~
Q
Q
Q2
Q2
Q2
Appendix E
Alphabctical Library Funclion 1.isling
Appendix E Alphabetical Library Function Listing
The following is an alphabetical list O C thc C++ functions used in the BC
environment. After each function is listed its source filc namc. All source files are loc
in the directory "-bcamdev/BCAM/bombay-code", cxccpt the files "diagnosis.cc"
"recipelngresscc" which are located in the dircctory "bcamdev/BCAM/hcliu-code".
choiceList choiceClass::AddChoice(char* textPtr)
"modelChoic
choiceList choiceClass::AddChoiceAlpha(char* textPtr)
"modelChoic
choiceList choiceclass:: AddChoiceToEnd(char* textPtr)
void AddEquipment(Widget w, equipNameClass*equipNamel'tr, caddr-t call-data)
"modelChoic
"equipSeti
Widget Addowidgetwidget io-box, int ioNum, char* text, machiiichndIntPtrsType*ioTargetPtr)
"connectioi
machineList machineClass::AddMachine(char* cquipNme)
"machineK
void inputClass::AddStep(intstep, double value. booiean critical)
"Ste]
Widget AddTextWidget(Widget parent, Widget last-widget, char* interrogative, char* information, char* u
"connectioi
void machineclass: :AddToHistory()
"machineR'
boolean machineclass: :AreThereConnections()
"machineR'
wdouble ArmijoStepSize(doub1e alpha, double beta. int peggedInputPb;double initialcost, double
initialDirectional 1)erivativc. douhlc* scmhDirection, double* inputs,
connectionClass*processhputs. int illputcount, connectionClass*
processOutpub, irit output('ouiil. IwoccssNode* processPtr, double*
desired0utput.s. douhlc* s p c H iiiigc~)
"generateReci1
void AskForFinalSpecs(Widget parent, processlist process, catldr-t ciill-data)
"proce
void AskForFinalTargets(Widgetparent, processlist process, cuddr-t cull-data)
"proce
"in terfacc
void AskForOutputs(processNode* processl'tr, Widgct parent)
"proce
void AskForRecipewidget parent, processList process, caddr-t call-diltu)
void AskForSimulationRepCnt(Widget parent, processList process, cuddr-t call-data)
void processNode::AssignControls(int waferNum, char* intcrfucel~pc)
"proce
"interfacl
double Average(doub1e data[], int dataCnt)
"myma
void BCAMentrance(intargc, char** argv)
"controllerEntranc
void BCAMhelp(Widget w, caddr-t client-data, caddr-t call-datu)
"controllerEntranc
void BCAMinfoWidget w,caddr-t client-data, caddr-t call-tliita)
"controllerEntranc
void BcarnQuit(W1dget w, caddr-t client-data, caddr-t call-data)
"controllerEntranc
void BCAMXtInitialize(intargc, char** argv)
"controllerEntranc
void bsubs(doub1e matrix[][MAXDIM], double column[], int dim, short* good)
void processNode::CalcControls()
"myma
"generateReci1
void CallConnect(Widgetw, connectionInfoTypc* ci~nnectic~nln~ol'tr,
cwltlr-t call-data)
"connectioi
void CallDisconnect(Widget w, connectionInfol'ypc*connectionlnfoPtr,cuddr-t call-data)
"connectioi
void CallGetOutputs(Widgetw,processNode* processPtr, caddr-t cull-data)
void CallOldConnect(Widgetw,machineclass* machinePtr, cadclr .t call-data)
void CallF'ropagateWidget w,processNode* prowssl%r,cuddr-t cull-datu)
"interfaci
"equipWindo
"interfXl
void CallRemoveAsGoal(Widget w,connectionlnfo'rype*conii~~tioii1~i~c)i'tr.
caddr-t call-data) "connectioi
61
Alphabetical Library Function I,isting
Appendix E
void CallSetAsCoal(W1dget w, connection1nfoI)pe* contiwtionInfoPtr,, caddr-t call-data)
"/connections.cc"
char* capitalize(char*string)
"
nachineRW.cc"
void Center(doub1e data[][MAXDIM],in1 dim, in1 dataCnt, douhle center[][MAXDIM])
"mymath.cc"
double cerfjrm(doub1e y)
"mymath.cc"
double chebyshev(doub1e a, double b, int
11, int
"mymath.cc"
i)
void CheckModel(Widget w. machineclass* machincl'tr, cuddr-t call-data)
"ecuipWindow.cc"
int choiceclass: :ChoiceListLength()
"IT odelChoice.cc"
void machineclass: :ClearHistory()
".nachineRW.cc"
void processNode::ClearHistory()
"process.cc"
void ClearProcessHistory(Widget pruent. processl.ist pniccss, cuddr-t call-data)
"process.cc"
void ClearProcessHistoryW~ing(Widge1
parent. process1,is1 process, caddr-t call-data)
"process.cc"
double outputClass::Coeff(int coeffNum)
boolean CompatibleUnits(char*unitsl, char* unilsl)
"modelEval.cc"
"
nachineRW.cc"
wvoid Con6rmModelCoeffs(Widget w. muchincClusn* iiiuchiiicl'lr. cad&-t call-data)
"ecuipWmdow.cc"
void ConfirmRecipe(W1dget w, machinc('lass* mucliiticl'b. cittlclr-t call-data)
"equipWmdow.cc"
void ConfirmSimulCoeffs(Widgctw. tnacltincClass* tnachiticl'lr. caddr-t call-data)
"ecuipWindow.cc"
boolean inputclass::Connected()
I'
nachineRW.cc"
boolean outputclass: :Connected()
void ConnectIngres(char*datahascName)
'kat
void ConnectMachines(machineClws* inputMachinch, int itiputNum, machineclass* outputM chinePtr, int
outputNum)
hineRW.cc"
void ConnectMachines(machineClass* inputMachincl'lr. int inputNum, int step, machineClass*
"
achineRW.cc"
outputMachinePtr. int outpulNum)
f*
void machineClass::ConnectMachinesByName(char*inputMuchineName, int inputNum, int ste
outputMachineNune, int outputNum)
achineRW.cc"
void machineClass::CopyOutputsToInputs()
achineRW.cc"
void processNode::CopyOutputsToInputs()
double* CopyVector(double* target, double* sourcc, int dimension)
void CopyWidgetLabel(W1dgetw, Widget target, catltlr-1 call-data)
double outputClass::ConCoeff(int coefNum)
double cosine(doub1e x)
int inputClass::CountSteps()
int modelclass: :CountTotalInputs()
achineRW.cc"
'
"mymath.cc"
"r&delChoice.cc"
"'modelEval.cc"
I
"mymath.cc"
"steps.cc"
I
"steps.cc"
I
void CovMatrix(doub1e data[][MAXDIMI, in1 dim. itit ilata('iit. douhlc result[][MAXDIM],douyle weights[])
' "mymath.cc"
wdouble inputClass::CriticalValuc()
void CreateMainBCAMmenu()
inputstepValueClass*inputclass::CriticalStcp()
"steps.cc"
"controllerEntrance.cc"
"steps.cc"
'
int inputClass::CriticalStepNum()
"steps.cc"
processList DeduceProcessFromConn~li~)ns(machiii~l~ist
mwhines)
"process.cc"
void choiceClass::DeleteChoiceList()
"&delChoice.cc"
void choiceClass::DeleteChoiceListAndTcxt()
"dodelChoice.cc"
void modelNameClass::DeleteModelNamcList()
I'
modelRW.cc"
machineList machineclass: :DeleteMachine(machine('luss* dcwmedMachinePtr)
processNode* processNode: :DeletcProccss()
"process.cc"
void recipeNameClass: :DeleteRecipeNameList()
void inpuClass::DeleteValueList()
"steps.cc"
Appendix E
Alphabetical Library Funcdon I M n g
void DeleteWidgetList(widgetListwidgets)
"connections.cc"
"process.cc"
int DependenceLength(machineClass*machinch, int rccursionlsvcl)
void Desensitize(Widget w, Widget numb, caddr-t call-data)
"
functions.cc"
void DestroyParentOfParentQVidget w, caddr-t client-data. caddr-1 cull-dah)
"
functionssc"
void DestroyParentOfPofPofPoff(Widgetw, caddr-t client-datu, cad&-( call-data)
"
functions.cc"
void DestroyWidgeYWidget w, Widget doomed, cluldr-t call-datu)
"
functions.cc"
double determinant(doub1e Mfl[MAXDIM], int dim)
void Diagnosis(W1dget w, machineclass* machinePtr, caddr-t call-datu)
void DiagQuit(Widget w, mahcneClass* machinePtr, caddr-t call-data)
"mymath.cc"
"diagnosis.cc"
"diagnosis.cc"
Widget DialogBelowRight(Widget parent, Widget above, Widget l e f t char* title,char* information, int v e r a st)
" functions.cc"
void DictateControls@rocesNode* pmcessptr, Widget parent)
void DisconnectIngres()
void machinec1ass::DisconnectInpuyint inputNum, int step)
,*interfaceS.cc"
"modelIngres.scc"
"machineRW.cc"
void DisconnectMachines(machineClass* inputMachincPtr. int inpulNuiri, machineclass* outputMachinePtr,int
outputNum)
"machineRW.cc"
void DisconnectMachines(machineClass* inpulMachinel'tr. in1 inputNum, i nt step, machineclass*
outputMachinePtr, int outputNuin)
"machineRW.cc"
void machineClass::DisconnectOutput(int outputNurn)
"machineRW.cc"
Widget DisplayInputs(machineClass* machine, Widget c q u i ~ ~ ~ l i iWitlgct
r n ~ . last-widget)
"equipWmdow.cc"
Widget DisplayOutputs(machineClass* machine. Widget equip-forin, Widget last-widget)
"equipWindow.cc"
Widget DisplayTerm(machineClass*machine, Widget quip-form, Widget last-widget, Widget left,
int termNum, int vertnist)
"equipWindow.cc"
Widget DisplayModel(machineClass* machine, Widget quip-form, Widget last-widget)
"equipWmdow.cc"
void DisplayOrigCoeffs(Widget w, machincClass* InachincPtr, caddr-t cull-data)
"equipWindow.cc"
void DoCalcControls(Widget w, processList process, cad&-( cull-dah)
wdouble DotProduct(double*vectorl, double* vector2, int dimension)
void dumpInputs(modelClass*m o d e l k )
"process.cc"
"mymath.cc"
"generateRecipe.cc"
void eigen(doub1e matrix[][MAXDIM], double eigenvalues(1, doul~lceigcnvcctors[][MAXDIM], int dim)
"mymathd'
void EquipPredict(Widget w, machineclass* machincl'tr, caddr-t ciill-datu)
double erfgrm(doub1e x)
"equipWindow.cc"
"mymath cc"
double modelClass::eval(int outputNum, boolean useSimulCoclTs)
void ExitProcess(Widgetparent, processlist* proccsslistl'tr, cilddr-t cull-data)
"modelEva1.cc"
"process.cc"
double exp-div- 10000(double_input)
"modelSpecFn.cc"
double exp-div- 1oooO-inv( double input)
"modelSpecFn.cc"
double exp-div_lOOOO-deriv(double input)
"modelSpecFn.cc"
double exp-div-l0000-deriv2(double
"modelSpecFncc"
input)
int factoflint k)
"mymath cc"
void fsubs(doub1e mahix[][MAXDIM], double column[ 1, in1 dirii)
"mymath cc"
double Gauss()
"modelEvalcc"
double GetDiscrepancies(double* discrepancies,conncctionClasx* prtxessOutputs, int outputCount,
processNodc* prixessl'tr, douhlc tlesirdOutputs, double* specRanges)
"generateRecipecc"
int GetFialOutputs(connectionC1ass $naiOutputs[], machincLis1 miichines)
"process CC"
int machineClass::GetInputIndex(char* name)
"modelEval cc"
int machineclass: :GetModelIO()
"modelIngres.! cc"
int machineclass: :GetModelStructure()
"modelIngres.qcc"
63
Alphabetical Library Function Listing
Appendix E
int machineClass::GetModelCoeffs(char* modelSelector)
void GetNewModelName(W1dget w, machineclass* muchinel'tr. caddr-t call-data)
void GetNewRecipeName(W1dgct w, machineCluss* mactiiiicl'tr, caddr-t calld-data)
int machineclass: :GetOutputIndex(char* nume)
'modelEval.cc"
void processNode::GetOutputs()
"interfaces.cc"
int processNode::GetRemainingConbols(conneclion<'luaN*pirwssInputs)
"process.cc"
int processNode::GetRemainingFinalOutputs(connection<'I
"process.cc"
IINH*
processoutputs)
int GetSpecialFunctionIndex(char* namc)
int modelClass::GetTermIndex(char* nwnc)
'modelEval.cc"
int modelClass::GetTermlndex(char* namc)
'modelEval.cc"
double* modelClass::Gradient(double* gradient. in1 outpulNuin)
double* processNode::Gradient(double* gradient, connectionCluss* processInputs, int
processoutpu t)
void machineClass::Graph(char*graph'bpe)
"gr:%phsBCAM.cc"
void machineClass::Graph(char* graphrypc, int index)
void processNode::Graph(char* graphQpe)
"gr,aphsBCAM.cc"
void GraphAutocomelation(machineClass* machincl'lr. li1Lli* tcmpFile, int outputNum)
"graphsBCAM.cc"
void GraphCUSUM(machineClass*machincl'k, FIl .I i* kin pl'i IC. int outputNum)
"gr,3phsBCAM.cct'
"process.cc"
"process.cc"
void GraphFinalOutputs(W1dget parent, process1.ist prtmas. cutltlr-t call-data)
void GraphInput(machineClass* machincl'lr, l~II,li*templ~ilc,int inputNum)
void GraphMachineNormalizedInpuLF(muchineCluss*machincl'tr, FILE* tempFile)
void machineClass::GraphN(char* graphlype. in1 indcx('oun1)
void GraphOutput(machineClass* machinePtr, FILE* temp17ile. int outputNum)
void GraphOutputs(W1dget parent, pmcessl-ist process, caddr-t call-data)
void GraphNormalizedInputs(Widgctparent. prowsnl .IN[ lir(wcss, caddr-t call-data)
void GraphPredictionError(machinKliws* inacliiiid'tr, 1'1 1 .I;* leinpl'ile, int outputNum)
void GraphUnconnectedInputs(W1dget parent, pn,cessl h t p ) c c s s , caddr-t call-data)
void HandleConnectAsFinalOutput(Widgct w, muchinc('lriss* InachiiiePtr, caddr-t call-data)
"cbnnections2.cc"
void HandleConnectAsUncontrollahlc(Widgct w, riiuchincC71iiss*machineptr, caddr-t call-data)
"cbnnections2.cc"
void HandleInputClick(Widget w, rnachinKlass* machiiiel'tr. cuddr-t call-data)
"c~nnections2.cc"
void HandleIOClick(machineClass*clickcdMuchinel'lr. int clickcdIoNum, int clickedstep, booleb
&nnections2.cc'*
clickcdlsInput, hcxilcun oiicSidcdConnectStoredI0)
void HandleOutputClick(Widget w. rnachineClass* rnachincl'h; caddr-t call-data)
boolean HasAFinalOutput(machin~Class*machincl'lr)
'*+nnections2.cc"
"process.cc"
1
void HighlightOConn(Widget w, Widget io-menu. cudtlr-1 cull-data)
"bonnections.cc"
void HighlightWidget(Widget w, Widget command, cudtlr-t cull-data)
, "functions.cc"
"bachineRW.cc"
historyClass::historyClass()
historyC1ass::-historyclass()
"tnachineRW.cc"
int machineClass::HistoryLength()
"bachineRW.cc"
void Inline(Widget w, Widget diagnosis, caddr-t call-data)
1 "diagnosis.cc"
Widget IOBelowRight(W1dget parent, Widget ahove, Widget Iclt, char* title, char* message, boo ean isInpuf int
vcrtllist, machincClass* InachinePtr)
"e uipWindow.cc"
inputClass::inputClass()
'modelEval.cc"
inputClass::inputClass(inputClasss& input)
"modelEval.cc"
inputclass: :-inputclass()
double machineClass::inputRangc(intinputlrluni)
I
"modelEva1.w"
"modelEval.cc"
Appendix E
0
Alphabetical Library 1;unclion I .isling
double machineClass::inputRange(ioName5pe inputName)
"modelEva1cc"
inputstepvalueclass::inputStepValueClass()
int modelClass::InsertInputs(double* inputvector)
"steps cc"
"modelEvalcc"
"process cc"
void InvalidateHistory(Widgetparent, processList prtxcss, cud&-1 call-data)
boolean IsAMember(char** unitlist, char* unit)
"machineRWcc"
Widget LabelBelowRight(Widget parent, Widget ahove, Widget left, char* title, char* message, int vertDist)
"functions cc"
boolean LegalInputs(connectionClass* processlnpuls. int inputCouot)
"generateRecipecc"
short linear(doub1e mahix[][MAXDIM], douhle column[], short done, short pivt, int dim)
void linermr(short* good)
"mymath cc"
"mymath cc"
int machineClass::LodAllNewRecipe(char*newRecipeNamc, char* ncwKecipeOwner)
"recipe1ngres.scc"
void LoadCntrlModelWmdow(Widgetw, rnachineClu.s* niwhincITr, cutldr-t call-data)
"modelRWcc"
void LoadDefaultModelCoeffs(machineClass* rnachinel'k, char* inotlclSclcctor)
"modelRWcc"
void LoadDefaultModelToCntrl(Widget w. rnachineClass* machiiiel'tr, cuddr-t call-data)
void LoadDefaultModelToSiul(Widget w.
in achincClass
* niacliinc Ptr, ciiddr-t
call-data)
void LoadModelWindow(Widget w, char* modclSclector, inuchindlluss* InuchinePtr)
"equipwindow cc"
"equipWmdow cc"
"modelRWcc"
int machineClass::LoadNewRecipeValues(char* new KccipcNtrinc, chiu* newRecipeOwner) "recipeIngres.scc"
void LoadRecipeWindow(Widget w, machineclass* machinel%r. cudtlr-t calld-data)
void LoadSimulModelWmdow(Widgetw, machinc('lass* iiitichiiicl'tr, ciltldr-t call-data)
"recipeIngres.zcc"
"modelRWcc"
double log_deriv(doubleinput)
"modelSpecFn cc"
double logderiv2(double input)
"modelSpecFncc"
equipNameList equipNameClass::LookupEiquipNamc(equipName'~pe equipName)
"modelRW cc"
int choiceClass::LookupChoiceIndex(char* selection )
"modelChoicecc"
choiceclass* choiceclass: :LookupChoicePtr(int sclcctNum)
"modelChoicecc"
char* choiceClass::LookupChoiceText(int selectNum)
"modelchoice cc"
machineclass* machineClass::LookupMachine(char*cquipNarnc)
processNode* processNode::LookupMachinc(machineCluss* inucIiinc)
"machineRWcc"
"process cc"
modelNameListmodelNameClass::LookupModelNlunc(nicdelNaine'1)pc modelName, userNameType
modelowner)
"modelRWcc"
modelNameListmodelNameClass::LookupModclNamc( cquipNmnc'lYpc equipName, modelNameType
modelNamc, uscrName'lYpc nit iclc I< )wner)
"modelRW cc"
void ludec(douh1e matrix[][MAXDIM], douhle coluinn[ 1, in1 diiii, nliort* p o d , short pivt)
machineClass::rnachineClass(char* equipNamc)
"mymath cc"
"machineRWcc"
int MachineCount(machineListmachinePb)
"process cc"
boolean processNode::MachineInProcess(machiiie('lass* inacliincl'tr)
"process cc"
main(int argc, char* argv[])
void Maint(Widget w,Widget diagnosis, caddr-t call-data)
void MaintRankwidget w, Widget diagnosis, caddr-t call-data)
Widget MakeAddEquipMenu(Widget parent, cquipName1,ist choices)
"BCAM cc"
"diagnosis cc'l
"diagnosis cc"
"equipSetup cc"
Widget machineclass ::MakeEquipWindow(Widge t parent )
"equipWmdow cc"
Widget MakeIOMenuWidget(Widget connections-menu, A r g * argl ist, int urgNum, char* io-menu-title, boolean
inNotOut Widget io-title-cql'tr, niiicliiiicAndIntPtrsType*ioTargetPtr)
"connectionscc"
choiceList modelClass::MakeIOChoices(boolcan inNotOu1)
"modelChoicecc"
choiceList machineClass::MakeMachineChoices()
"modelChoicecc"
Widget MakeMainMenu(Widget parent, char* mcnu'litlc, iiicnu('oinmiind'llpe* menuCommands, int
commandCnt )
"mainMenu cc"
Alphabetical Library Funclioii I .isling
65
, Appendix E
void MakeOldConnectionsMcnu(Widgct purcnl, muchin~Clunw*
"process.cc"
Widget MakeProcessPulldownBar(Widge1parent, proaswl .is1 pmcess)
Widget MakePulldownBar(W1dget parent. char* inenu'litle,
commundCnt, int hdornmandWidth)
"mainMenu.cc"
Widget MakePulldownMenu(Widgc1parent, char*
commandCnt )
Widget MakefDCommandButton(Widgct parcnl.
"
functions.cc"
"
functions.cc"
void MakeWarning(Widget parent, char*
void MapWidget(W1dget w, Widget shell, caddr-t call-dutu)
"mymath.cc "
void matinvert(doub1e maMx[][MAXDIM], in1 dim)
void matmultip(doub1e lefq][MAXDIM], double right(l(MAXIlIM], double result[][MAXDIM]iint m, int n,
' "mymath.cc"
int I)
double maximum(doub1e numl, douhlc 11urn2)
int maximum(int numl, int num2)
void MessageWidget(char* messagcSlring )
double minimum(doub1e numl, douhlc ttitin2)
' "mymath.w"
"mymath.cc"
1
"me$sageWidget.cc"
1
"mymath.cc"
"mymath.w"
int minimum(int numl, int num2)
modelClass::modelClass()
i"modelEva1.w"
char* modelClass::ModelName()
hodelEval.cc"
char* modelClass::ModelOwnr()
PmodelEval.cc"
int machineclass: :Modelupdate()
v*II.jodelUpdate.cc''
int machineclass: :Modelupdate(int outputNum)
*ln/odelUpdate.cc"
boolean modelclass: :NoiseState()
hnodelEva1.cc"
int modelClass::NonzeroTermCoeffsCnL(inl outputNuin)
pmodelEval.cc"
"mymath.cc"
double* NormalizeVector(double* vector. in1 duncnsioti)
void OfferTcGenerateRecipe(Widgct puretit, processlht pn)ccss)
I
void Online(W1dget w, Widget diagnosis, caddr-t call-diitii)
I "diagnosis.cc"
void OpenCntrlModel(W1dgetw, modelNurneClass* mcxlclNiirncP&,caddr-t call-data)
I
void OpenRecipe(W1dget w, recipeNameClass* rccipeNiimcI)lr.caddr-t calld-data)
"process.cc"
"modelRW.cc"
l*r&peIngres.scc"
"modelRW.cc"
void OpenSimulModel(Widget w, rnodclNarncClass* modelNlmlel'tr, cad&-t call-data)
void processNode::operate(char* intcrfacc'rype)
I
void processNode::operateNtimes(chur* interfaccTypc, in1 wiild'nt)
1
"process.cc"
"process.cc"
"process.cc"
void OperateProcess(W1dgetparent, pmccssl .is1 pmcess. cadilr-t call-data)
void inputclass: :operator=(inputClassLinput)
vmodelEval.cc"
double outputClass::OrigCoeff(int cocffNutn)
pmodelEval.cc"
"modelEval.cc"
.
outputClass::outputClass()
outputclass::-outputclass()
boolean machineClass::OutputIs<:onnwted( iiil ou tputNuin)
double machineClass::outputRangc(int outputNuin)
double machineclass:: outputRangc( ioNainc'lype ou tpu tNaiiie )
void pivot(int i, double matrix[][MAXDIM/,double collunnll, in1 dim, short* good)
pmode1Eval.w"
"@achineRW.cc"
kmodelEval.cc"
i"modelEval.cc"
"mymath.cc"
"diagnosis.cc"
void PloqWidget w, int num, caddr-t call-data)
"diagnosis.cc"
void PlotBelief(W1dget w, Widget diagnosis. caddr-t call-dah)
void PopdownParentOfParent(Widgct w. caddr-t client-data. cuddr-t call-data)
1
"ti.mctions.cc"
Appendix E
0
Alphabetical Library Funclion ,isting
void Popdownshell(Widget w, Widget downshell. caddr-t call-datu)
"function
void PopupLocationShell(Widget shell, Position x. Position y)
void PopupLocationShell(dget w, Widget shell, Position x. Position y. caddr-t call-data)
"function
void PopupMessageShell(char*messageText, Widget pucnt)
"function
"function
void PopupShell(Widget parent, Widget child. caddr-1 call-dutir )
"function
void Popupshell (Widget parent, Widget child, caddr-t call-datu. XtGriilrKiiid grab-kind)
"function
void PopupShellGrabNone(Widgetparent, Widget child, cud&-1 cull-drrlu)
double power(doub1e x, int n)
"function
"mymatl
double modelclass: :predict(int outputNum)
"modelEva
double machineClass::predict(int outputNum)
"modelEva
void processNode::predict()
"proces
double processNode: :predict(connectionClass output)
"modelEva
void F'redictProcess(Widget parent, processlist process. caddr-t call-dutu)
"proces
void PrepareToAddEquip(W1dget parent, void* garbage, cud&-t cull-data)
"equipSetul
Widget PrintBoldInformation(Widget parent, Widget last-widgcl. char" incssage)
void choiceClass::PrintChoices()
"function
"modelChoicc
void PrintEquipNames(equipNameListequipNames)
"modelFW
Widget PrintInformation(W1dget parent, Widget last-widget, ch;ir* mcssiigc)
"function
Widget PrintInformation(W1dget parent, Widget last-widget. char* nicssiigc,chu* title)
"function:
void PrintMatrix(FILE*outputfiile, double matrix1 11 MAXIXMJ. iiit riiw(M, int colCnt)
"mymatl
Widget PrintPermaInformation(Widget parent, Widget last-widget. char* incssage)
void PrintVector(FILE* outputFile, double vectod], int dun)
''function:
"mymatl
void ProcessAlaxms(Widget parent, processlist process. cud&-1 cull-diitu)
"proces
void ProcessAutocorrelation(Widget parent. proccssl .is( ~ I X ) C C N Nciiiltlr
.
t call-data)
"proces
void ProcessCUSUM(Widget parent, processl.ist process. cutltlr-t c~ill-dcrta)
"proces
void ProcessNoiseHistory(dget
"proces
parent, processl.ist process, cudtlr-t ccill-tlat:i)
processOptionsClass::processOptionsClass()
"proces
void ProcessSetup(Widget parent, void* garbage, ciiddr-t cull-dutch)
"proces
void processNode::propagate()
"interface
double PvalueFromTstatistic(doub1et, int df)
void Quityidget w, caddr-t client-data, cad&-t call-data)
void QuitWaming(Widget w, cad&-t client-duta, cad&-t call-data)
equipNameList ReadEquipNamesO
void ReadMatrix(char*fileName, double matrix1J[ MAXIIIM]. in1 row('rrt, int colCnt)
modelNameList ReadModelNames(char*equipNanme)
"mymatl
"function
"controllerEntranci
"modelIngres
"mymatl
"modelIngres
recipeNameList ReadRecipeNames(char*equipNiunc)
"recipehgres
void ReadTextIntoDouble(dget
void ReadTextIntoInputValue(Widget w, inputStcpValucClass* target. caddr-t c-d)
"modelChoici
"modelChoici
void ReadTextIntoOutputValue(Widget w, outputCluss* target. caddr-t ciill-data)
"modelChoici
void ReadTolerance(W1dget w, outputclass* twgct. caddr-t call-data)
"modelChoici
w, double* target, caddr-t call-tlrrlil)
void ReadVector(char* fileName, double* vector, iiit dim)
"mymatl
void Regress(double*x, double* y, double* weighls. in1 dun, double* slopcl'tr, double* pValueSlopeF'tr, dou
interceptl'tr. doulrlc* pKilucliitl'tr. tlouhlc* sigmaSqHatPtr)
"mymatl
void Realkeyidget w, Widget shell, caddr-t call-data)
void RernemberRepCnt(Widget w, int* repCnlPtr, cuddr-1 call-tlu111)
char* modelClass::RecipeName()
"function
"pr0CeS
"modelEva
67
Alphabetical Library Function 1,isting
Appendix E
'modelEvakc"
char* modelClass::RecipeOwner()
void machineclass: :RefreshOutputConnectionMenu(in t outputNum)
achineRW.cc"
void RefreshWidget(W1dget w, Widget shell, caddr-t cull-datu)
"functions.cc"
void machineClass: :RemoveAsGoal(int outputNum)
void machineClass::RemoveAsUncontrollable(int inputNum. in1 slep)
equipSetup.cc"
void RemoveMachine(Widget w, machineclass* doomcdMachine. caddr-t call-data)
void Resensitize(Widget w, Widget numb, caddr-t cull-duta)
"
functions.cc"
void RestoreRecipeWidget w, machineClws* machincl'tr. cecldr-t call-data)
"mymath.cc"
double root(doub1e x, int n)
int modelclass:: SaveCoeffs()
int modelclass:: SaveModel()
void SaveModel(Widget w, machineClass*machincl'tr, caddr-1 cull-data)
void SaveModelAs(Widget w, machincClass* muchinePtr. cudtlr-1 call-data)
"modelRW.cc"
"e uipWmdow.cc"
~
' "modelRW.cc"
(I
void SaveModelWarning(Widget w. machiiieClass* machincl'lr, caddr-t call-data)
"e uipWmdow.cc"
void SaveRecipe(Widget w, machineClass* machinel'tr, catldr-1 cdld-data)
"rqcipeIngres.scc"
void SaveRecipeAs(Widget w, machinc<'lass* machincl'tr, ciitlclr-t calld-data)
"rqcipeIngres.scc"
double modelClass::sens(int outputNum. int inpulNum)
:modelEval.cc"
double processNode::sens(connectionClnss output, conncctionCluss input)
"modelEval.cc"
void machineclass: :SetAsGoal(int outpu tNum)
"@achineRW.cc"
void machineClass::SetAsUncontrollable(int inpulNum, int step)
"@achineRW.cc"
void SetChoice(Widgetw, returnChoicc'I)pc* rcturnChoicei'tr. caddr-t call-data)
"modelChoice.cc"
double outputC1ass::SetCoefint coeffNum, douhlc newvuluc)
hodelEval.cc"
double outputClass::SetCorrCoeff(int coeffNum. douhle newVulue)
r'modelEval.cc"
"steps.cc"
double inputclass::SetCriticalValuc (dou hIc new Val uc )
void SetEquip2(Widget w, connectionInfolypc* connect ionhifol'tr, caddr-t call-data)
"connections.cc"
void machineClass: :SetHistoryTolnvalitl()
"plachineRW.cc"
void processNode::SetHistoryTo1n va I id()
void SetIoNum(Widget w, machine Andlntl'trslLpcC ltirgcl, ciitltlr-L call-data)
"process.cc"
"connections.cc"
void SetIoNumToZero(Widget w, in(* ioNuml'tr, cuddr-1 call-tlutu)
"connections.cc"
char* modelClass::SetModelNamc(char*ncwNurnc)
"modelEval.cc"
char* modelClass::SetModelOwner(char* ricwNunie)
/'modelEval.cc"
char* modelClass::SetRecipeName(char* newName)
I'modelEval.cc"
char* modelClass::SetRecipeOwncr(chur* ncwNamc)
hnodelEval.cc"
double outputClass::SetSimulCoeff(intcoeffNum, douhlc ncwVdue)
VmodelEval.cc"
char* modelClass::SetSimulModclNamc(chu* ncwNamc)
char* modelClass::SetSimulModelOwncr(char* newNunie)
f'modelEval.cc"
void SetTextWidgetString(Widgetw, char* string)
'modelEval.cc"
"
functions.cc"
void SetToFalse(Widget w, int* targeUntPtr, cad&-t cull-datil)
void SetToTrue(Widget w,int* targeUntl'tr, cuddr-t cull-data)
double inputClass::SetValue(int step, doulde newVulue)
double inputStepValueClass::SetValue(douhlcnewvalue)
double outpuClass::SetValue(douhle newvalue)
"steps.cc"
"steps.cc"
/'modelEval.cc"
68
Appendix E
void SetWidgetLabel(Widget w, char* lahel)
"
functions.cc"
void ShowConnections(Widget parent, u ~ n n e c l i o n l n f o ' l ~connectioiilnfol'tr.
p~
caddr-t call-data)
"connections.cc"
"process.cc"
void processNode: :ShowProcessOrder(Widget parent, Widget command-hu)
"process.cc"
void processNode::ShowPredictedFinalOutputs(Widgetparent )
double machineClass::simulate()
"modelEval.cc"
double modelClass::simulate(int outputNum)
"modelEval.cc"
void SimulateProcessNtimes(Widgetparent, process1,ist process, cuddr-l call-data)
"pr0cess.cc"
"process.cc"
void SimulateProcessNtimes(Widget parent, processList process. caddr-t call-data)
"process.cc"
void SimulateProcess(Widget parent, processList pn~cess,cddr-t call-dula)
double outputClass::SimulCoeff(int coeffNum)
"modelEval.cc"
char* modelClass::SimulModelName()
"modelEval.cc"
"modelEval.cc "
char* modelClass:: SimulModelOwnefO
Widget SiDialogBelowRight(W1dget parent, Widget ahwe, Widget left. char* title,char* information,int size,
" functions.cc"
int vertDist)
Widget SizedLabelBelowRight(Widget parent, Widget ahove, Widget left, char* title,char* message, int size, int
" functions.cc"
vertDis t)
SpecialFunctionType spec-fns[SPEC-FN-CNll
"mode1SpecFn.a"
"control1erEntrance.cc"
void StartBCAM(W1dget w, Widget bcam, cuddr-t call-dalu)
"steps.cc"
inputStepValueClass* inputclass:: Step(in t step)
boolean inputclass::StepExists(int step)
"steps.cc"
char* stridchar* sh-ing)
"modelIngres..+x"
double Sum(doub1e data& int dataCnt)
"mymath.cc"
double SumOfSquares(doub1e data[], int dataCnt)
"mymath.cc"
void svd(doub1e matrix[][MAXDIM],douhle left[ 11 MAXIIIMI, douhle sittgularValues[], double
right[][MAXDIMI, int rowCtit, irit colCnt)
"mymath.cc"
double modelClass::term(inttermNum)
"modelEval.cc "
double modelClass::termDeriv(int termNum, int inputNum)
"modelEval.cc"
double modelClass::termMax(int termNum)
"modelEval.cc"
double modelClass::termMin(inttermNum)
"modelEval.cc"
void modelClass::termMinMax(intterrnNum, in1 position, double* niinl'b, double* maxPtr)
"modelEval.cc"
double modelClass::termRange(int termNum)
"modelEval.cc"
void Tuneseed()
"modelEva1,cc"
douhle Tmtegral(doub1e t, int df)
"mymath cc"
double Tmtegral(doub1e t, double ai, douhle n)
"mymath,cc"
void ToggleFeedback(W1dget w, processLis1 ~
K I ~ ~ caddr-t
S S ,
call-duln)
void ToggleFeedForward(Widget w, processlist pnicess. ciiddr. 1 ciill
tlri~ii)
double Transform(doub1e plain, transformTypc xforin)
void TransformInputs(double*inputvector, douhle* inputKungcs. itil diincnsion)
void Transpose(doub1e matrix[][MAXDIMI, in1 rows. int coluninrs. douhle
int trunc(doub1e x)
void machineclass: :TurnOffFeedback()
void processNode::TumOffFeedback()
void modelClass::TumOffNoise()
void processNode::TumOffNoise()
void machineclass: :TurnOnFeedback()
void processNode::TumOnFeedback()
"process.cc"
"process.cc"
"modelEval.cc"
69
Appendix E
Alphabetical Library Function Iisling
void modelClass::TumOnNoise()
void processNode::TumOnNoise()
void UnhighlightWidget(get
w, Widgct command, critldr-.t cull-duta)
void UnmapWidget(Widget w,Widget shell, cadclr-1 cnll..diihi)
void Unrealize(Widget w, Widget shcll. cuddr-t cull-dulii)
double Untransform(doub1e fancy, trwsforin'l~pcxform)
void UntransformInputs(double* inputvector, douhle inpulKungcs, in1 dimension)
l"modelEval.cc"
,
1 "functions.cc"
it
boolean ValidConnection(machineClasr* inputMuchincPb. int inputNum, machineclass*
outpulNum)
"
functi0ns.w"
'modelEval.cc"
"steps.cc"
"steps.cc"
"modelEval.cc"
inputStepValueClass* inputClass::ValueI.ist()
double VectorLength(double* vector, in1 diincnsioii)
double WeightedAverage(doub1e datal 1. douhle wcightsl 1. in1 tlutuCnt)
functi0ns.w"
achineRW.cc"
'
double inputStepValueClass::Value()
double ouQutClass::Value()
"
achineRW.cc"
int machineclass: :ValidHistoryLength()
double inputClass::Value(int step)
"process.cc"
"steps.cc"
1
"mymath.cc"
"mymath.cc"
void modelClass::ZeroCwffs()
"modelEval.cc"
void modelClass::ZeroCoeffs(intoutputNuin)
"mode1Eval.w"
void ZemMatrix(matrixType matrix, int row<'iit. int col<'iit)
"mymath.cc"
void ZemVector(vectorType vector, in1 dim)
"mymath.cc"
Appendix F
Description of h e Source Files
70
Appendix F Description of the Source Files
All source files are located in the directory "-bcamdev/BCAM/bombay-cod
?If,
except the files "diagnosis.cc" and "recipelngres.scc" which are located in the direct ry
I'
bcamdev/BCAM/hcliu-code". The source files are accessed through the UNIX revis 3n
control system rcs. To check out a file, an authorized user must issue the command
co -I filename
which will give that user write permission to the lilc. Oncc changes have been made to he
file, the user must check the file back in using the command
ci -u filename
To put a new source file under rcs control, the owner must issue the command
ci newfilename
To add authorization to access a source Glc for a particular user, the following comm; nd
must be issued
rcs -ausername
Note that the user name immediately follows the -a switch. For further details on
I :S,
reference the UNIX manual pages.
F.l BCAM.cc
The is the location of the main function. All the m .in
function does is call the BCAMentrancc function. The purpose of this separate m .in
function is to allow that BCAMentrancc can in the future be called from higher le le1
software.
main(int argc, char* argv[])
{
Description of the Sourcc Files
71
Appendix F
extern void BCAMentrance(int,cha**);
BCMentrance(argc,argv);
1
F.2 connections.cc
This file contains the code for the old style
window which is accessed through the Equiprncnt Window’s
code in this file is somewhat outdated; newer code for
written in the future.
F.3 connections2.c~
This lile contains the code for interpreting
input and output names in the Equiprncnt Window. ‘l’hcse clicks are used to in
interconnection information.
E4 control1erEntrance.cc
This lilc contains the functions used to dtart up the
BCAM environment, including the initialization of the X Windows, and the crdation of the
entrance window and the main BCAM mcnu. This file also contains the declar tions of the
?
global variables of the BCAM environment.
F.5 diagnosis.cc
This file contains the functions for accessinglthe BCAM
diagnosis application [16][ 171. This source code is written and maintained by Hao-Cheng
Liu.
F.6 equipSetup.cc
This lile contains the higher level functiqns used to
activate and deactivate equipment. With activation (deactivation), an iinstance of
machineclass is created (deleted).
F.7 equipWindow.cc
This Lile contains all the code for creating anlEquipment
Window, and most of the code for the Equipment Window’s callback functions.
Appendix F
F.8 functions.cc
Description 01 Ihe Source Files
I 72
General lunctions (mostly callback) to deal with X
windows.
F.9 generateRecipe.cc
This lilc contains the code for calculating equipm
setting recipes. Most of this code is mathematical in nature.
F.10 graphsBCAM.cc
This file contains code to present graphs for the BC
environment. These graphs concern themselves with thc analysis of
The functions in this file make use of the unix command
contain the source code for response surface plotting of equipment models.
F.ll interfacescc
This lilc contains code lor using different
run or simulate wafer processing. This is where code should be inserted for automatic
communication to processing equipment and mcasurcmcnl equipment.
F.12 machineRW.cc
This lilc contains a variety of functions dealing w:.th
machineclass instances.
F.13 mainMenu.cc
This file contains the [unctions used to
BCAM menu and the bars of pulldown menus at ~lictops of the equipment
the workcell window.
F.14 makeWarning.cc
This lile contains thc [unction which creates a BC
warning window.
F. 15 messageWidget.cc
message window.
This lilc contains the I'unction to create a BC
73
Appendix F
Description of the Source Files
F.16 modelChoice.cc
This lilc contains functions for creating
in a widget format. The functions in this file are referenced primarily
'connections.cc' file. This code is providcd primarily for use
connections window.
F.17 modelEval.cc
This lilc contains low level functions fo
models, accessing private members of the nzotfelCloss, and other basic
operations on machines and modcls. This lilc also contains constructor and destructor
,
functions for several classes.
F.18 modelIngres.scc
'equipment-index' as well as the Ingres tables for cquipment inputloutput inf
equipment models. This code requires an lngrcs pre-processor (esqlc).
F.19 modelRW.cc
c
This file contains Ihc code for accessing the Ingres table
ation and
This file contains functions dealing with the lreading and
writing of models (i.e. loading them and saving them), as well as functions dealing with
the reading of the available cquipmcnt list. These functions are one level up from the
functions which actually handle the database opcriilions.
F.20 modelSpecFn.cc
This lilc contains the code for implementing several
special functions. The needed functions arc dcfincd hcrc, as well as an array of pointers to
those functions. Another function is used to find indices into this array.
I
E21 modelUpdate.cc
t
This lilc contains the code used for updatin equipment
models. The model update algorithm uses scveral mathematical function$ defined in
"mymath.cc" .
Dcscripriou ol‘ihc Sourcc I’iles
Appendix F
F.22 mymath.cc
This file contains mathematical functions. Most of .he
functions in this file were written by Professor Costas Spanos. The statistical analysis
functions were added by the author.
F.23 process.cc
This Glc contains most ol‘ the functions which handl: a
processing workcell, including the functions which define the Workcell Window.
F.24 recipeIngres.scc
This file contains code for the BCAM Recipe Editor’s
interface to the Ingres database. This codc was written by Hao-Cheng Liu and Bart
Bombay and is now maintained by Hao-Chcng Liu. This codc rcquires an Ingres preprocessor (esqlc).
F.25 steps.cc
This tile contains functions for accessing the recipe
values at individual steps in the operation of a machine.
F.26 xgraphRM.cc
This lilc contains a function which creates an xgri Ph,
and then when the xgraph exits, automatically removes the lile which was used for iat
xgraph. This file is self contained (except for the lihraries <stdio.h> and <stdlib.h>) nd
compiles to its own executable.
main(int argc, char* argv[])
{
if(argcc2) {
fprintf(stderr,”xgraphRM error: no file name spec i lied !\n”);
exit(0) ;
1
char system String [2501 ;
sprintf(systemString,”xgraph -bg white -hw 1 0 -tk -bb %s”,argv
system(systemS tring);
sprintf(systemString,”rm %s”,argv[ 11);
system(systemString);
1
75
Principal Library Functions Listcd by Ilicrarchy
4ppendix G
Appendix G Principal Library Functions Listed by Hi rarchy
This appendix describes the basic program Llow of several important sec 3ns of the
BCAM program. Function nesting is indicated by the number of bullets
=ceding a
function name; each bullet represents a lcvcl of nesting. Only the most import (tfunction
calls are listed in this description; minor functions calls can be referenced ii .he source
code.
G.l The Beginning of the Program
BCAMentrance
Create BCAM cntrancc window with ‘Contini ’, ‘Quit’.
Initialize X windows for BCAM.
BCAMXtInitialize
XtMainLoop
Loop for cvcnts (mouse clicks, keyboard strikes).
G.l.1Click on Entrance Window: ‘Continue’
StartBCam
ConnectIngres
XtUnrealizeWidget
CreateMainBCAMMenu
MakeMainMenu
Bring up the main 13CAM menu.
Connect to the Ingrcs database.
Bring down the BCAM entrance window.
Define and creatc he main BCAM menu ~ i n d o wand
realize it to the screen.
Create the main menu command buttons an4 set up the
callbacks for these huttons.
G.1.2 Click on Entrance Wndow: ‘Quit’
BcamQuit
Shut down the BCAM Environment.
G.2 Main BCAM Menu Actions
G.2.1Click on ‘EQUIP’
PrepareToAddEquip
ReadEquipNames
Bring up window with equipment activation qenu.
Read the list o f availahle equipment from the atabase and
store in mcinory (glohal linked list avaiZabZeE uipment).
MakeAddEquipmentMcnu
I
Define and create thc window for equipment activation.
Xtpopup
Pop up the equipment activation window to thi: screen.
1
Appendix G
Principal Library I:unclioas 1,istCcl by I Iierarchy
76
G.2.2 Click on ‘HELP’
BCAMhelp
Pop up the main RCAM hclp window.’
G.2.3 Click on ‘INFO’
BCAMinfo
Pop up the BCAM information window.
G.2.4 Click on ‘EXIT’
Quitwarning
BcamQuit
Ask the user for verilication before quitting.
Shut down the BCAM Environment.
G.3 Activation of a Machine
Add a machine to the current setup and bring up le
AddEquipment
corresponding equipment window.
AddMachine
Creatc a new itic*hinrClcrssinstance and load the mad le
data from the database.
MakeEquipWindow
Define, create, and pop up the equipment window for ,is
m ach i nc.
G.3.1 Function AddMachine
Constructor for machineCkms. Load machine informa In
from the database.
Look up machine in list of available equipment.
LookupEquipName
Load up machine informatioii from the database.
GetMachine
GetModelIO
Get the machine’s input and output information.
GetModelStructure
Load the machine’s model structurc from the database
GetDefaultModelCoeffs
Load the machine’s model coefficients from the datab:
LoadAllNewRecipe
Load the machine’s default recipe from the database.
machineClass
4.
3
G.3.2 Function MakeEquip Window
XtCreatePopupShell
MakePulldownBar
MakePulldownMenu
DisplayInputs
Displayoutputs
Create the window shell for the equipment window.
Make the bar of pulldown menus along the top of le
equipment window.
Make a pulldown mcnu within the pulldown bar.
Put all the input information in window.
Put all the output information in window.
1. The BCAM environment help facility has not yet hccii dcvclopctl
77
Principal Library Functions I ,istcCl by I Iicnuchy
DisplayModel
PopupshellGrabNone
DisplayModelCoeffs
, AppendixG
Put all the model information in window.
Pop up the equipment window.
Set the cquipmcnt window to show the controller’s
current adaptive model.
6.4 Equipment Model Analyses
1
G.4.1 Controller’s Current Adaptive Model Evaluation
I
processN0de::predict
machineC1ass::predict
modelC1ass::predict
modelC1ass::eval
modelC1ass::term
Predict the outputs of all machines in the wo
with this machine, and use current input value
Predict an output of this machine.
Evaluate the controllcr’s current model for an
Evaluate the cquipmcnt model.
Evaluate a tctm in the equipment model.
G.4.2 Simulator Model Evaluation
machineC1ass::simulate
modelC1ass::simulate
modelC1ass::eval
modelC1ass::term
Simulate all machine outputs using the Simulator model.
Evaluate the equipment simulator model for an output.
Evaluate the equipment model.
Evaluatc a tcrm in thc equipment model.
G.4.3 Controller’s Current Adaptive Model Sensitivity Calculation
processNode::sens
modelC1ass::sens
Calculate the sensitivity of one machine’b output to
another machine’s input.
Calculate thc sensitivity of an output to an input.
(Evaluatc the derivative of the equipment model.)
modelC1ass::termDeriv
modelC1ass::eval
modelC1ass::term
Evaluate the derivative ol’a tcrm in the equipdent model.
Evaluate the equipment model.
Evaluate a tcrm in tlic equipment model.
G.5 Workcell Operation
G.5.1 Simulating the Operation of the Workcell ($or demonstration and deb gging
purposes)
t
SimulateProcess
Workccll window menu command button call
processNode: :operate(“simu la tor”)
Opcratc workccll in simulator mode.
Principal Library 1;unclions Listed by Ilierarchy
Appendix G
processNode::propagate
Deal with the results of the simulation.
machineC1ass::CopyOutputsToInputs
Send the rcsuks on to othcr machine inputs as specified 5y
connections.
machineC1ass::AddToHistory
Store the results in the machine’s historical record.
machineC1ass::ModelUpdatc
Check thc machine’s model and update if necessary.
processNode::AssignControls
If not done, start simulation ol‘ the next processing
in the workcell.
processNode::CalcControls
If done with the last machine in the workcell
models have bccn updatcd and feedback
then calculate a ncw workccll recipe if necessary.
G.5.2 Wafer Processing in the Workcell
Workcell window menu command button callback.
processNode::operate(“screen in tcrl‘acc”)
Operate workccll in screen intcrface mode.
processNode::AssignControls
Assign the current controls to a machine.
OperateProcess
I
I
processNode::DictateControls
Pop up a window dictating the current controls fo * a
machine.
*****CallGetOutputs D i c t a t c C o n t r o l s callhack f u n c t i o n t o c ~ l l
processNodc: :GctC)utputs.
processNode::GetOutpuLs
Fetch the rcsults o f the simulation.
AskForOutputs Pop up a window asking t h e operator for the results
(measurements) after the machine is finished.
Callpropagate A s kFo r 0u t p u t s c a1 1h a c k f u n c t i o n t o c i.11
processNodc: :propagate.
79
Principal Library Functions 1,isled by Ilicrarchy
Appendix G
machineC1ass::CopyOutputsToInputs
Scnd the results on to other machine inputs as specified by
connections.
machineC1ass::AddToF-listory
Scow thc results in lhc inachinc’s historical record.
machineC1ass::ModclUpdatc
Chcck the machine’s model and update if necessary.
processNode::CalcControls
Handle k e d forward control calculations.
processNode::AssignControls
If not done, start operation of the next proceqsing station
Appendix H
Source Ctxlc Listings
80
Appendix H Source Code Listings
Source code for the BCAM Environment is available upon request by electronic IT ail
to bcamQradon.berkeley.edu.
81
Appendix I
Known Bugs
Appendix I Known Bugs
Unit compatibility is checked whcn connections are made (e.g. micr
compatible with Angstroms). The BCAM Workccll Controller, howev
support unit conversions along conncctions. 5/92
~
Appendix J
A G2 Formulation of Mcasurcment Qiiciiing Effects
82
Appendix J
A G2 Formulation of Measurement Queuing Effects
J.l Introduction
Recent developments in integrated circuit design call I'or the improvement of le
performance of photolithography workcells. In order to accomplish this improveme It,
computer aided manufacturing techniques are being applied to the process, and thc se
techniques require regular measurcmcnts of cquipmcnt performance. With thc se
measurements, however, are the associated costs of additional hardware, time, and lat 1r.
Hence the industry is faced with the prohlcm of implementing these measurements i a
manner which will minimize the cost per u n i t product produced yet improve prod Ct
quality. The most obvious goals arc to incrcasc product yield (decrease the fract in
nonconforming) and improve product performance. Because measurements will sl
W
down the manufacturing process, the desired implcmcnlation will attcmpt to minimize ne
impact of taking these measurements upon the product throughput, and thus attempi to
maintain a satisfactory production levcl.
There are several issues which must he addressed in any formulation of this scher e.
Specifications must be determined on how many wafers to measure, which wafers to
measure, and how often to measure thcm. The types of measurements must be decic :d
upon. The effects on work in progress inventory must he cxamined. And finally ie
production costs must be studied to determine the magnitude of any improvement in
marginal cost versus marginal revenue.
The Berkeley Computer Aided Manufacturing (BCAM) group was recently presen :d
with the opportunity to study a new software product from Gensym Corporation. 'I le
product, G2, is a flexible tool which uscs an oh.jcct oricnicd environment to simulate i
id
83
A G2 Formulation of Mcasurerncnt Queuing EffccLs
~
AppendixJ
control various types of systems. Of particular interest are this product's extended
graphical capabilities which assist an operator in using the system.
For this study, the G2 software was uscd to simulate a photolithography
to study the effects of introducing a measurement strategy into the
feasibility of using G 2 as an interface to a control and monitoring
addressed.
5.2
Methodology
The G 2 software possesscs scvcral appealing I'catures. Among these are Its graphics
capabilities, its object oriented environment, its simulation ability, and lits general
I
flexibility. In order to introducc customers to the soltware, Gensym providek a two day
course on the G2 system. This coursc proved effective in familiarizing new u+rs with the
general use of G2.
Although G 2 is very flexible, considerable c1'1'ot-t must be expended
10
program
algorithms into G2. The one second clock cycle for G2 is also rather restriqtive. These
limitations prevent the use 01' G 2 to implement thc generalized BCAM 4ontrol and
monitoring system. However, one intcrcsting feature of the software is itis ability to
interface with C programs. This fcaturc leads to tlic possibility of a more limit6d use of G2
as a graphical interface to the BCAM soltwarc, which is written primarily in C++. While
such an implementation is attractive, the high cost ol' G2 precludes such a limited use. For
this study a more limited application is chosen, namely the queuing problemf associated
with introducing regular measurements in to a photolithography workcell.
i
1
The design for this study focuses on the construction of a relatively sim e model of
the photolithography workcell timing (see ligurc bclow). Wafers are pro essed by a
machine and then placed into a storagc arm. From this area, wafers are eithed taken to an
analytical station for measurement and then transferred to the following storage area, or
A G2 Formulalion ol'McasuremeniQuelling Effects
Appendix J
84
they are transferred directly to the next storage area. Thc ncxt processing station then ta :es
its wafers from that storage area. Thc dccisions about whcther or not to measure ; nY
particular wafer are dependent upon production flow and control criteria.
Storage
f
ic
f
*
f
-W
3
1
'
Eaton
Photoresist
SP'inner
Wafer
Storage
\
GCA
Photoresist
Exposure
Wafer
Storage
Wafer 7
Storage
\
MTI
Photoresist
Developer
Wafer 7
Storage
Figure 7 Flow Diagram for the Photolithography Workcell
85
A G2 Formulation of Mcasuretncnl Qucuing EffccLs
Appendix J
Initial work to design a knowledge base with G2 includes the definitio I of several
object types and icons, and preliminary connections among instances of 'hese icons.
Gensym also provides a customer support visit which is effective in assisting users new to
the G 2 system. With such assistance, a basic design can be implemented. This basic
design may then be further refined with the introduction of an enhanced set of rules, more
informative readouts, and morc precise timing specifications.
5.3 Results
T h i s study compares two distinct algorithms for the scheduling of wafer
measurements. These two methods arc hcnccforth referenced as algorithm A and
algorithm B and are described hclow.
5.3.1 Wafer Scheduling Algorithm A
The first method, algorithm A, uses inventory based rules to decide the number of
wafers from which measurcmcnts would he takcn. Each storage area immediately
preceding a processing station has a spccilic low Icvel. If the wafer count i n the storage
area falls below this low level, thc dclicit is immediately taken from the preceding storage
area, and the wafers so taken do not get mcasurcd. As long as the count of'the storage
areas remains above or at the low levcl, each wafer will be subjected to measdrement as it
passes between storage areas.
Algorithm A proves to be succcsslul in maintaining production levels sinc? it foregoes
measurements whenever the relcvan t in tcrmediate wafer inventories fall beloy designated
low levels. Because wafers require queuing before measurement, this formulation does,
however, increase the work in progress inventory. Another drawback to this method is the
variability of the frequency of measurement; during some time periods, man
measured, while during other time pci-iods I'ew or n o wafers are measured.
Appendix J
A G2 Formulation of Measurement Queuing Effects
16
J.3.2 Wafer Scheduling Algorithm B
The second algorithm for wafer measurement, algorithm B, sets specific goals for le
number of wafers to be measured at each step in the process. One out of every four wa
:S
is subjected to measurement as it passes between storage areas. This algorithn .s
indifferent to the supply levels in the storage areas.
j
a
somewhat reduced production level. This method also results in a lower work in prog
is
inventory than the first method, although still higher than a process with
It
Algorithm B is successful at providing a stcudy stream of data, but results
measurements.
J.3.3 Results of the Simulations
It should be noted that the simulations fail to give a good quality of information. 1 is
deficiency is attributed to two factors. The first limitation ol' thc system is that it discret :S
time into one second intervals. Thus i C the time were scaled to simulate five minute ,f
production every second, then the resolution of the process simulation would be limite
.O
five minutes. The time scale chosen for the simulation is one minute per second. This t le
scale yields sufficient resolution for the simulation, while providing results aft1 a
reasonable period of time. (At this scale, thc simulation oC LI 24 hour workday require: ,4
minutes.) The second limitation of thc system results Crom the unmanageability of the 12
rule system. Creating complex rule patterns with G2, although undoubtedly possibh is
time consuming, particularly with respect to making structural changes in the f
W
decision rules. Hence time requirements lor the im plcmentation of the desired simulati
1s
exceed the resources allotted to the project. The project is therefore somewhat SCI :d
back.
Several topics of interest are ignored in these simulations. An analysis of
le
profitability of the different algorithms is not pcrlormed. Thc simulation of the workce is