Each entity in the system has its own class description and lifecycle. The term lifecycle is used to describe the events/activities undertaken by the object during its ‘existence’, which is sometimes referred to as its process execution method (PEM). A master/slave relationship is created between the entities in the system, whereby the master finds and
dataset
ds_id int(10) unsigned name varchar(45)
os
ds_id int(10) unsigned operator_set_id varchar(45) operator_description varchar(45) quantity int(10) unsigned break_1_description varchar(45) time_between_1 float duration_1 float break_2_description varchar(45) time_between_2 float duration_2 float break_3_description varchar(45) time_between_3 float duration_3 float pr
ds_id int(10) unsigned process_flow_id varchar(45) step_id varchar(45) operation_description varchar(45) tool_set_id varchar(45) operator_set_id varchar(45) load_time float unload_time float time_per_wafer_in_process float wafer_travel_time float time_per_lot float time_per_batch float min_batch_size int(10) unsigned max_batch_size int(10) unsigned batch_id varchar(45) time_per_spec_setup float time_per_group_setup float setup_group_id varchar(45) lot_scrap_probability float wafer_scrap_probability float lot_rework_probability float wafer_rework_probability float rework_sequence_id varchar(45) rework_return_step varchar(45) travel_time float travel_time_operator varchar(45) rw
ds_id int(10) unsigned rework_sequence_id varchar(45) step_id varchar(45) operation_description varchar(45) tool_set_id varchar(45) operator_set_id varchar(45) load_time float unload_time float time_per_wafer_in_process float wafer_travel_time float time_per_lot float time_per_batch float min_batch_size int(10) unsigned max_batch_size int(10) unsigned batch_id varchar(45) time_per_spec_setup float time_per_group_setup float setup_group_id varchar(45) lot_scrap_probability float wafer_scrap_probability float lot_rework_probability float wafer_rework_probability float rework_sequence_id_after varchar(45) rework_return_step varchar(45) travel_time float travel_time_operator varchar(45) ts
ds_id int(10) unsigned tool_set_id varchar(45) tool_description varchar(45) quantity int(10) unsigned operator_load_fraction float operator_unload_fraction float operator_process_fraction float down_time_1_description varchar(45) downtime_1_type int(10) unsigned time_or_runs_between_1 float duration_1 float down_time_1_operator_set_id varchar(45) down_time_2_description varchar(45) downtime_2_type int(10) unsigned time_or_runs_between_2 float duration_2 float down_time_2_operator_set_id varchar(45) downtime_3_description varchar(45) downtime_3_type int(10) unsigned time_or_runs_between_3 float duration_3 float down_time_3_operator_set_id varchar(45) downtime_4_description varchar(45) downtime_4_type int(10) unsigned time_or_runs_between_4 float duration_4 float down_time_4_operator_set_id varchar(45) downtime_5_description varchar(45) downtime_5_type int(10) unsigned time_or_runs_between_5 float duration_5 float down_time_5_operator_set_id varchar(45)
vr
ds_id int(10) unsigned process_flow varchar(45) product_id varchar(45) product_name varchar(45) start_rate float lot_size int(10) unsigned
Figure 6.1: Visual interpretation of Semiconductor Wafer Format Specification in MySQL database.
Figure 6.2: GUI for the Python/SimPy application.
extracts the slave from a stasis mode for a duration of time to represent some process or activity and then relinquishes the slave back to its stasis mode. The following sections describe briefly the actions and activities of the entities using high level pseudocode.
6.3.1
Lot and operation PEM’s
Lots are created using a lotSource class and an instance for each product is created. The lotSource method executes the following PEM outlined in pseudocode,
WHILE the simulation is running increment lot counter
create a lot using the class Lot wait for the inter-arrival period
which creates an instance of the Lot class, whose PEM is given by;
FOR each operation in the lot’s process route or rework route IF it is a batch operation
WHILE there are insufficient other matching lots to form a batch wait until another lot arrives
WHILE NOT got a tool
IF an appropriate tool is available get the tool from the tool queue ELSE
wait until the tool queue changes IF setup is required
FOR loading, processing and unloading activity IF activity is required
IF activity requires operator wait for operator
hold operator for activity fraction release operator
hold for remaining activity fraction ELSE
hold for activity duration IF it is a batch operation
unbatch the individual lots send signal to tool to continue IF wafer travel is required
hold for wafer travel duration IF full lot scrap test fails
scrap the full lot update scrap counter EXIT the PEM FOR each wafer in the lot
IF wafer scrap test fails scrap the wafer
update scrap counter and the lot’s quantity IF full lot rework test fails
execute the rework loop for the lot EXIT the PEM
FOR each wafer in the lot IF wafer rework test fails
create a new lot from the lot class with the failed wafers execute the rework loop for the newly created rework lot IF lot transportation to next step is required
IF transportation requires operator wait for operator
hold for transportation period release operator
ELSE
hold for transportation period
IF current step is the last operation on the lot’s process route EXIT the PEM
IF current step is the last operation on the lot’s rework route rejoin the process route from the last operation
EXIT the PEM
6.3.2
Tool PEM’s
Tools are created from the toolSource class. An instance is created for each toolset;
FOR each tool in the toolset
create a tool using the Tool class
The Tool lifecycle is given by;
WHILE simulation is running
put the tool into a tool queue (to make it available) wait until activated by another entity
IF activated by a lot
increment the tools run counter
IF the tool’s run-based downtime has expired IF it requires an operator
wait for an appropriate operator hold for the repair period release the operator ELSE
hold for the repair period
6.3.3
Downtime PEM’s
Downtimes are created from the downtimeSource class. An instance is created for each tool’s downtime mechanism;
FOR each downtime mechanism of the tool
create a downtime instance using the Downtime class
The downtime PEM is given by;
WHILE simulation is running
hold for mean time before failure period remove corresponding tool from tool queue IF it requires an operator
wait for an appropriate operator hold for the mean time to repair period release the operator
ELSE
hold for the mean time to repair period send signal to the tool to continue
6.3.4
Operator and break PEM’s
Operators are created from the operatorSource class. An instance of the operatorSource class is created for each operator set which uses the Operator class to create the required number of operators.
FOR each operator in the operator set
create an operator instance using the Operator class
The Operator PEM is given by;
WHILE simulation is running
put the operator into the operator queue wait until activated by another entity
Break items are created from the breakSource class. An instance is created for each operator’s break pattern as follows;
FOR each break pattern of the operator
create a break instance using the Break class
The Break PEM pseudocode is given by;
WHILE simulation is running
hold for mean time between break sample
remove corresponding operator from operator queue hold for the break duration
send signal to the operator to continue