• No results found

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