Look-ahead method for maintaining optimum queued quantities of in-process parts at a manufacturing bottleneck

This invention is a look-ahead method for determining optimum production schedules for each production step based on factory-wide monitoring of in-process part queues at all potential production bottlenecks. For each product having associated therewith a throughput bottleneck, a maximum queue quantity Q.sub.MAX and a minimum queue Q.sub.MIN quantity are assigned. When a machine completes a lot of a particular product at a production step P that proceeds the bottleneck step B, the look-ahead method is initiated. The queue at step P is searched and the next lot to be processed is selected. If that lot is a product for which Q.sub.MAX and Q.sub.MIN values have been assigned at step B, then the queue quantity at step B is determined. If, on one hand, the queue quantity at step B is less than Q.sub.MAX, or between Q.sub.MAX and Q.sub.MIN and the queue quantity is climbing upward from a sub-Q.sub.MIN value and has not yet exceeded its Q.sub.MAX value, then the lot is processed without further analysis. If, on the other hand, the queue quantity at step B is greater than Q.sub.MAX , or between Q.sub.MAX and Q.sub.MIN and the queue quantity is descending from a quantity greater than its Q.sub.MAX and has not yet fallen below its Q.sub.MIN value, then that product has a set flag status associated therewith, and the lot will not be processed until after all other lots which have a clear flag status are processed.

FIELD OF THE INVENTION 
This invention relates to computerized manufacturing control systems and, 
more particularly, to systems aimed at optimizing utilization of universal 
equipment that feeds a production step containing one or more potential 
bottlenecks. 
BACKGROUND OF THE INVENTION 
In a production environment, bottlenecks typically occur from time to time 
at various steps in the process due to a multitude of causes. Such causes 
may include, but are not limited to, lack of raw materials, personnel 
shortages, machine malfunctions, non-continuity of the normal process 
flow, hold orders placed on particular product types due to a discovered 
process deviation at a previous manufacturing step, misallocation of 
production resources at a prior step that results in excess buildup of a 
particular type of unfinished product at a following step. 
Prior attempts to deal with the problem of bottlenecks have been less than 
optimum because they focused on the step immediately preceding the 
bottleneck, and failed to consider the interrelated nature of the entire 
production line. What is needed is a look-ahead method for determining 
optimum production schedules for early production steps based on a system 
of monitoring in-process part queues at subsequent production steps which 
represent production bottlenecks. Such a look-ahead method will stop the 
flow of unneeded parts through the early production step that would not be 
processed in a timely manner as they pile up at the bottleneck step. Thus, 
manufacturing resources at the early production step would be better 
utilized. 
SUMMARY OF THE INVENTION 
This invention is a look-ahead method, designed for implementation on an 
electronic data processing system, for determining optimum production 
schedules for an early production steps by monitoring in-process part 
queues at subsequent potential bottleneck production steps and controlling 
the product mix at the early production steps. The method basically 
functions in the following manner: 
(a) one or more throughput bottlenecks are determined to exist for 
particular products at a particular step in the manufacturing sequence; 
(b) for each product having associated therewith a throughput bottleneck, a 
maximum queue quantity Q.sub.MAX and a minimum queue Q.sub.MIN quantity 
are assigned. Such quantities are determined by management personnel based 
on the capacity and cycle time of the product; 
(c) when a machine completes a lot of a particular product at a production 
step P that proceeds the bottleneck step B, the look-ahead method is 
initiated; 
(d) the queue at step P is searched and the next lot to be processed is 
selected; 
(e) if the next lot is for a product for which no Q.sub.MAX and Q.sub.MIN 
values have been assigned at step B, then the product is assumed to have 
no bottleneck and it is processed without analyzing the queue at step B; 
(f) however, if the next lot is a product for which Q.sub.MAX and Q.sub.MIN 
values have been assigned at step B, then the queue quantity Q.sub.NOW at 
step B is determined; 
(g) if, on one hand, Q.sub.NOW at step B is less than Q.sub.MAX, or between 
Q.sub.MAX and Q.sub.MIN and Q.sub.NOW is climbing upward from its 
Q.sub.MIN and has not yet reached its Q.sub.MAX value (i.e., there is a 
clear flag status associated with the product), then the lot is processed 
without further analysis; and 
(h) if, on the other hand, Q.sub.NOW at step B is greater than Q.sub.MAX, 
or between Q.sub.MAX and Q.sub.MIN and Q.sub.NOW is descending from its 
Q.sub.MAX and has not yet reached its Q.sub.MIN value (i.e., there is a 
set flag status associated with the product) the lot will not be processed 
until after all other lots meeting the conditions of step (g) have been 
processed. 
Just as a hysteresis function in the set points of a voltage regulator 
prevent hovering around a single reference voltage, the range between the 
Q.sub.MAX and Q.sub.MIN values in this look-ahead scheduling method 
prevents thrashing conditions around a set point, characterized by the 
see-saw scheduling of multiple products.

PREFERRED EMBODIMENT OF THE INVENTION 
Referring now to FIG. 1, various products A, B, C, and D are manufactured 
in the production environment depicted in FIG. 1. Three sequential 
production steps (S1, S2, and S3) are enumerated. In a semiconductor 
manufacturing process, such steps might be a wire bonding step (in which 
contact is made with fine wire between the bond pads of a semiconductor 
die and the various leads of a leadframe), a die coat step (in which the 
upper surface of the semiconductor die is coated with a polymer material), 
and an encapsulation step (in which the semiconductor die and the 
leadframe on which it is attached are encapsulated in plastic material). 
Still referring to FIG. 1, at step S1, all four products are present in the 
queue. There are three lots of product A, five of product B, two of 
product C, and five of product D. At step S1, there are eight universal 
machines. By universal, it is meant that each machine may be converted to 
process any of the four products. Machines 1, 2, and 5 are presently set 
up to process product A, machines 4 and 8 are set up to process product B, 
machine 6 is set up to process product C, and machines 3 and 7 are set up 
to process product D. 
Still referring to FIG. 1, at step S3, there are eight lots of product A, 
two of product B, four of product C, and three of product D. At step S3, 
there are also eight universal machines. Machine 3 is presently set up to 
process product A, machines 1 and 2 are set up to process product B, 
machines 2 and 6 are set up to process product C, and machines 4, 7, and 8 
are set up to process product D. 
In the scenario depicted in FIG. 1, it is assumed that step S2 is not a 
factor in throughput. This may be due to a number of factors, several of 
which might be low setup time for product changes, rapid throughput per 
piece of equipment, and an abundance of equipment. 
In the hypothetical example of FIG. 1, Q.sub.MAX and Q.sub.MIN values have 
been assigned to products A, B, C, and D. A flag status will be associated 
with each queue quantity Q.sub.NOW at step S3. The following chart 
demonstrates how the flag status is imposed or withdrawn. 
______________________________________ 
Q.sub.MAX 
Q.sub.MIN 
Q.sub.present 
Flag 
______________________________________ 
Product A 6 lots 3 lots 8 lots set 
Product B 3 lots 2 lot 2 lots clear 
Product C 5 lots 2 lots 4 lots set 
Product D 4 lots 2 lots 1 lot clear 
______________________________________ 
In the case of product A, Q.sub.NOW has exceeded the Q.sub.MAX value 
assigned to product A, which is 6 lots. Thus, a flag is set for product A, 
so that no additional lots of product A will be processed at step S1 until 
Q.sub.NOW is less than the Q.sub.MIN value assigned to product A, which is 
three lots. 
In the case of product B, Q.sub.NOW is less than the Q.sub.MAX value 
assigned to product B, which is 3 lots, and equal to the Q.sub.MIN value 
assigned to that product, which is 2 lot. If Q.sub.NOW is recovering from 
a recent Q.sub.MIN value, its flag status will be clear until Q.sub.NOW is 
greater than the Q.sub.MAX for product B. On the other hand, if Q.sub.NOW 
is recovering from a recent Q.sub.MAX value, its flag status will be set 
and will remain so until Q.sub.NOW drops below the Q.sub.MIN for that 
product. Since the flag status for product B is clear, we know that 
Q.sub.NOW is recovering from a sub-Q.sub.MIN value. 
In the case of product C, Q.sub.NOW is less than the Q.sub.MAX value 
assigned to product C, which is 5 lots, and greater than the Q.sub.MIN 
value assigned to that product, which is 2 lots. For product C, the flag 
status is set. Therefore, we know that Q.sub.NOW is recovering from a 
value greater than Q.sub.MAX. The flag status will be cleared only when 
Q.sub.NOW has dropped to a value less than Q.sub.MIN. 
In the case of product D, Q.sub.NOW is equal to 1 lot, which is less than 
Q.sub.MIN of 2 lots that was assigned to that product. Therefore, the flag 
status has been cleared. 
One might reasonably ask, as in the example of FIG. 1, how Q.sub.NOW values 
can exceed Q.sub.MAX values by more than one lot. Depending on the method 
of maintaining a running tally of in-process parts, there may be some 
slack. If the inventory is measured only with regard to product queued for 
immediate processing at a particular step, other product at intermediate 
production steps may show up at the step where measured before the counted 
quantities have been drawn down by further processing. This is often 
referred to as the whip phenomenon. Its effect may be mitigated by 
measuring queue quantities as a total of the queue quantities at step B 
and the various intermediate steps between step P and step B. In addition, 
product is often put on hold if quality control indicates that a 
possibility of excess process variation may exist. When all or some of the 
product that was on hold gets returned to the various queues, it is 
entirely possible that a Q.sub.MAX value will be exceeded by more than a 
single lot. 
Referring now to FIG. 2, three record files are required for the preferred 
implementation of the look-ahead method: a Step P Queue Data File, a Step 
B Queue Data File, and a Program Data File. 
A record is generated in the Step P Queue Data File for each product lot 
arriving at the step P queue. Each record in the Step P Queue Data File 
contains a product identification field, a lot number field, a priority 
value field, and an in process flag field. In addition, the file has a 
single new work field which is set each time a new product lot is added to 
the file. Each product type has a priority value associated with it. 
Priority values are assigned by management to each of the products. In 
this implementation, a zero denotes the highest priority, a one denotes 
the next highest priority product, and so forth. Thus, a one-byte wide 
field will provide 16 priority values. 
Each record in the Step B Queue Data File contains a product identification 
field, a lot number field, and an in process flag field. With the 
exception of the priority value field, each record in the Step B Queue 
Data File contains those same fields. 
There is also a Program Data File, which contains one record for each 
product. Each record contains a product identification field, a Q.sub.MAX 
value field, a Q.sub.MIN value field, a Q.sub.NOW value field, and a Q 
flag field, Q.sub.THR value field, and a Q.sub.AVL value field. The 
Q.sub.NOW values are incremented as new lots are added to the step B queue 
and decremented as lots in the step B queue are removed therefrom 
(normally, this occurs as lots are processed and transferred to the 
following step, or B+1 step, queue). The Q.sub.THR values and the 
Q.sub.AVL values provide a look-behind enhancement to the look-ahead 
method. This is accomplished by establishing a threshold queue level 
(Q.sub.THR) at step P for a newly selected products, and keeping track of 
the current lot quantities (Q.sub.AVL) for each product at the step P 
queue. If only a single lot of a given product is available for 
processing, it may be more efficient to wait until more lots are queued at 
step P in order to justify two consecutive downtime periods, the first 
being required to convert the machine to a configuration for processing 
the newly selected product and, the second, to convert the same machine to 
a configuration for processing a subsequently selected product after all 
lots of the newly selected product queued at step P are processed. The 
Q.sub.THR values, like the Q.sub.MIN and Q.sub.MAX values, are set by 
management. The Q.sub.AVL values are handled much like the Q.sub.NOW 
values, in that they are incremented as new lots are added to the step P 
queue and decremented as lots in the step P queue are removed therefrom 
(normally, this occurs as lots are processed and transferred to the 
following step, or P+1 step, queue). 
Referring now to FIG. 3, the look-ahead method is described in a system 
architecture flow chart which may be readily implemented in a program 
written in any one of a number of available high-level or low-level 
languages written for execution on an electronic digital computer. Because 
of size, the flow chart has been split into four interconnected sub-charts 
corresonding to FIGS. 3A-3D. In this flow chart, decision or conditional 
program steps within the logic flow chart are identified by the letter "D" 
(e.g., D1, D2, D3, etc.), while assignment or action program steps are 
identified by the letter "A" (e.g., A1, A2, A3, etc.). Starting in the 
upper left-hand corner of the chart (FIG. 3A), the program is normally in 
a "sleep" mode, and is interrupt driven. At least two interrupts are 
defined for the preferred implementation of the program. The first 
interrupt (program step A1) is generated whenever new lots of any product 
are transferred to the step P queue. The second interrupt (program step 
A2) is generated whenever a resource (e.g., a machine) completes the 
processing of a product lot. 
Still referring to FIG. 3, either of the two interrupts prompts the program 
to query in program step D1 whether or not a resource is idle. A YES 
determination at D1 prompts the program to save both the resource ID and 
its setup ID step A3, thereby invoking program step A4; a NO determination 
invokes a query at program step D1 as to whether or not new work has been 
added to the Step P Queue. A NO determination at D2 returns the program to 
the "sleep" mode; a YES determination at D2 invokes program step A4. 
Still referring to FIG. 3, step A4 selects the product that matches the 
saved setup ID on the idle resource. Program step D3 then determines 
whether or not there is at least one lot of product in the step P queue 
that matches the product selected in step A4. If the answer to the step D3 
query is YES, program step D9 is invoked; if the answer to the D3 query is 
NO, an alternate product must be selected from those awaiting processing 
at the step P queue. In order to select the highest priority product, the 
priority search value (PSV) is set to zero, and a first search loop is 
initiated beginning with step D4. Step D4 accesses determines whether or 
not any product is in the step P queue which has the current priority 
search value. For this information, the program accesses the Program Data 
File. If the answer to program step D4 is YES, the program, in step A9 
selects the product lot having the current PSV. Then, in step D8, the 
program determines whether or not a threshold quantity (Q.sub.THR) Of the 
selected product is available for processing. If Q.sub.AVL (the lot 
quantity of the selected product in the step P queue) is greater than 
Q.sub.THR, the program invokes step D9; if Q.sub.AVL is less than 
Q.sub.THR, the program invokes step A6. If the answer to program step D4 
is NO, the program also invokes step A6. In step A6, the priority search 
value is incremented by one, and step D5 is invoked. Step D5 determines 
whether or not the priority search value exceeds P.sub.MAX. For the sake 
of simplicity, the value of P.sub.MAX will be determined by the number of 
different products. For example, if there are four products, each will 
have a different priority, and P.sub.MAX is 4. If the priority search 
value does not exceed P.sub.MAX, the program returns to step D4; if the 
priority search value exceeds P.sub.MAX, then the program will return to 
the sleep mode until interrupted. 
Still referring to FIG. 3, upon the invocation of step D9, the program 
determines whether Q.sub.MIN and Q.sub.MAX values have been established 
for the selected product. If not, the program in step All, selects the 
next lot of the currently selected product in the step P queue, and lot 
processing is begun when program Step A14 is invoked. When lot processing 
is complete, step A15 is invoked. Step A15 decrements the existing 
Q.sub.AVL value in the Program Data File, writes the step P queue data 
record for the completed lot to the step P+1 queue data file, and clears 
the Step P Queue Data File record for the completed lot. 
If on the other hand, it is determined at step D9 that Q.sub.MIN and 
Q.sub.MAX values have been established for the selected product, program 
step A10 gets the Q.sub.MIN, Q.sub.MAX, Q.sub.NOW, and Q flag values for 
the selected product. Program step D10 then determines whether Q.sub.NOW 
is greater than Q.sub.MAX. A YES determination will cause the program to 
invoke step All, which sets the Q flag for the selected product in the 
Program Data File, following which step, the program jumps to step A6. A 
NO determination at step D10 invokes step D11, which determines whether or 
not Q.sub.NOW is less than Q.sub.MIN. A YES determination at D11 will 
clear the Q flag for the selected product in step A13, and the program 
will then jump to step A12. A NO determination at D11 will invoke step 
D12, which determines whether or not the Q flag is set for the selected 
product. If, so, the program invokes step A6; if not the program invokes 
step A12. 
Although only a single embodiment of the look-ahead method for maintaining 
optimum queued quantities of in-process parts at a manufacturing 
bottleneck is disclosed, those having ordinary skill in the art of 
manufacturing control will recognize that changes and modifications may be 
made thereto without departing from the scope and the spirit of the 
invention as hereinafter claimed.