Runtime Behavior#
On this chapter we try to describe the behavior of the Template if used as is.
Load Port and Container Handling#
Load Port states are tracked on both MES and IoT level. On MES, Load Port Sub-Resource main state use the Semi Load Port State Model.
Depending on the state the Load Port is updated to, this will trigger different behaviors related to the Container, and, if a Transport System is used, to Factory Automation Jobs.
Related Stand-Alone Workflows#
On the table below there is a summary of the Shared Workflows for Load Port and Carrier features.
| Name | Description |
|---|---|
| SemiCarrierArrived | Carrier Arrived at the Load Port, Load Port Set to Occupied |
| SemiCarrierIdRead | Carrier Id Read, Sets Carrier Id to ContainerData, Docks Container, If error occurs Container is Set on Hold |
| SemiSlotMapReceived | Slot Map Received, Store Slot Map on Container Data, Executes Material In, If error occurs Container is Set on Hold |
| SemiCarrierRemoved | Carrier Removed from Load Port, Load Port Set to Available, Container Undocked |
| SemiReadyToUnload | Sets Load Port SemiLoadPortStateModel to ReadyToUnload, sets SemiEquipmentProcessState to ReadyToUnload |
| SemiTransferBlocked | Sets SemiEquipmentProcessState to TransferBlocked |
| SemiCarrierClamped | Sets SemiEquipmentProcessState to CarrierClamped |
| SemiCarrierOpen | Sets SemiEquipmentProcessState to CarrierOpen |
| SemiCassetteMap | Sets SemiEquipmentProcessState to CassetteMap |
| SemiCassetteLoaded | Sets SemiEquipmentProcessState to CassetteLoaded |
| SemiCarrierClosed | Sets SemiEquipmentProcessState to CarrierClosed |
| SemiCassetteUnloaded | Sets SemiEquipmentProcessState to CassetteUnloaded |
| SemiCarrierUnclamped | Sets SemiEquipmentProcessState to CarrierUnclamped |
| SemiReadyToLoad | Sets SemiEquipmentProcessState to ReadyToLoad |
All Stand-alone workflows have an input called Load Port or Load Port Number, these inputs must correspond to the Load Port Sub-Resource Display Order.
Related DEE Actions#
| Name | Description |
|---|---|
| SemiAutomationSetResourceStateModelState | Adjusts Resource State (Stored on Current States) |
| SemiAutomationAdjustLoadPortState | Adjust Load Port Main State, responsible for triggering State Change Logic |
| SemiDockStoreIoT | When a Carrier Id is Read, Container will be Docked to Load Port by using this DEE Action |
| SemiMaterialIn | DEE Actions responsible for validating if Track In is able to be executed and execute it |
Generic Behavior#
On Carrier Arrived to Load Port#
On Carrier Arrived detected Load Port Main State should be set Transfer Blocked.
On Carrier Id Read#
On Carrier Id Read, container should be Docked on MES, if Dock fails or post Docking validation fails, Container should be set on Hold. If a Transport System exists a Factory Automation Job should be created to remove the Container. Store Container Data information on Persistence.
Post Docking Validations#
- For Load Ports that are Input:
- Container must have Material:
- Material should be on a valid step for that Load Port;
- For Load Ports that are Output:
- Container must be empty or have CassettePresent flag set to False;
- For Load Ports that are Input Output:
- If Material exists on Container, and Container has CassettePresent flag set to True, Material should be valid.
On Slot Map Read#
When Slot Map is read, store Slot Map information on Container Data and trigger Material In, if Material contained on the current container is valid to be Tracked In, or if this Container is the last condition to start a process for a currently Docked Container, execute Track In of the related Material.
On Ready To Unload#
On Ready To Unload detected Load Port Main State should be set Ready To Unload. If a Transport System exists, create a Factory Automation Job to trigger a request.
On Carrier Removed#
On Carrier Removed detected Load Port Main State should be set Ready To Load.
Remaining Transport System Actions#
If a Transport System exists it should look to the states of the Load Port to execute the movements. When a Load Port is set as Ready To Load, if there is a movement intended for that Resource, or for the specific Load Port the Transport System can initiate a Transport (Factory Automation Job) to it. When this occurs the Load Port state should be changed to Reserved.
Out of Service state#
If Load Port is set to the Out of Service state, the basic state to the Resource will be Down and no Transport or action is expected to be done to it that reflects on MES.
Scenarios#
The table below describes some of the expected scenarios from the Container and Load Port related actions.
| Scenario | Action | Container Data Object | Load Port State | MES Container | Equipment Integration Action (300mm) | Equipment Integration Action (200mm) | Note |
|---|---|---|---|---|---|---|---|
| First Dock | |||||||
| Carrier Received | Transfer Blocked | Execute Cassette Clamp | |||||
| Container Id Read | Create Container Data (IdVerificationOk/IdVerificationFailed) | Transfer Blocked | Dock | Process Carrier/Cancel Carrier | Execute Cassette Load | ||
| Slot Map Read | Change state (SlotMapReadWaitingForHost -> SlotMapVerificationOk/SlotMapVerificationFailed) | Transfer Blocked | Process Carrier/Cancel Carrier | ||||
| Cassette Loaded | Cassette Present set to False | Transfer Blocked | Cassette Present set to False | ||||
| Container does not leave Tool | |||||||
| Cassette Unloaded | Cassette Present set to True | Transfer Blocked | Cassette Present set to True | Execute Cassette Unload | |||
| Ready to Unload | Change state (CarrierComplete/CarrierStopped) | Ready To Unload | Execute Cassette Unclamp | ||||
| Carrier Removed | Change state (CarrierRemoved) and Delete Container Data | Ready To Load | Undock | ||||
| Container leaves and returns | |||||||
| Ready to Unload | Change state (CarrierComplete/CarrierStopped) | Ready To Unload | |||||
| Carrier Removed | Change state (CarrierRemoved) | Ready To Load | Undock | Execute Cassette Unclamp | |||
| Carrier Received | Transfer Blocked | Execute Cassette Clamp | |||||
| Container Id Read | Update Load Port Position and Change state (SlotMapReadWaitingForHost -> SlotMapVerificationOk/SlotMapVerificationFailed) | Transfer Blocked | Dock | Process Carrier/Cancel Carrier | Execute Cassette Load | ||
| Slot Map Read | Change state (SlotMapReadWaitingForHost -> SlotMapVerificationOk/SlotMapVerificationFailed) | Transfer Blocked | Process Carrier/Cancel Carrier | This might not occurr on containers without Cassette | |||
| Cassette Unloaded | Cassette Present set to True | Transfer Blocked | Cassette Present set to True | Execute Cassette Unload | |||
| Ready to Unload | Change state (CarrierComplete/CarrierStopped) | Ready To Unload | Execute Cassette Unclamp | ||||
| Carrier Removed | Change state (CarrierRemoved) and Delete Container Data | Ready To Load | Undock |
Enforce Load Port State on Dock#
The Template includes the capability of enforcing that, in order to Dock a Container on an Integrated Tool, the Load Port must be in Transfer Blocked state. This is a configuration that can be turned on via a system-wide config (/Semi/Automation/SemiconductorTemplate/Behavior/EnforceLoadPortStateTransferBlockedOnDock with value type Boolean, default value is True). The behavior can be overriden in specific case by overriding the value of the EnforceLoadPortStateTransferBlockedOnDock value on the SemiconductorTemplate.AutomationContainerDock.Pre.
Related DEE Actions#
| Name | Description |
|---|---|
| SemiSendDockInformationToIoT | Trigger on ContainerManagement.ContainerManagementOrchestration.DockContainer.Post and sends the information of the Container's Container Data, calls AutomationContainerDock service |
Related Action Groups#
| Name | Description |
|---|---|
| AutomationContainerDock | Semiconductor Template Orchestrion Action Group responsible for sending the Dock Information to the IoT layer |
Behavior#
When the configuration is active Docking the Container on MES for Load Ports should only be allowed if:
- Parent Resource has Automation Mode Offline or None.
- Parent Resource has Automation Mode Online and:
- Load Port Resource has Automation Mode Offline or None.
- If the Load Port Resource has Automation Mode Online and the Resource Main State is SemiLoadPortStateModel and the State is Transfer Blocked.
If the none of these match an Exception will be thrown with the Localized Message SemiLocalizedMessageLoadPortNotInExpectedStateForDock.
If the configuration is set to false Dock is allowed in any given OOB valid case.
Triggering custom actions on Load Port Ready to Load/Unload#
The Template includes extension points designed to work with external transport systems, in order to execute that there are extension points triggered on the Load Port Read to Load and Ready To Unload. Those extension points are the action groups descried below.
Related DEE Actions#
| Name | Description |
|---|---|
Related Action Groups#
| Name | Description |
|---|---|
| AutomationLoadPortReadyToLoad | Semiconductor Template Orchestrion Action Group triggered on Load Port Ready to Load |
| AutomationLoadPortReadyToUnload | Semiconductor Template Orchestrion Action Group triggered on Load Port Ready to Unload |
Behavior#
To extend the behavior, for instance calling a transport system, use the action groups refered above.
Full Automation Capabilities#
The Template includes capabilities for quickly starting a process on the equipment, these capabilities are included within the Template Placeholder Controller and ready to be used. tand-alone Workflows and DEE Actions are used to aid this, although communication with driver is only done by Automation Controller Workflows.
Related DEE Actions#
| Name | Description |
|---|---|
| SemiMaterialIn | DEE Actions responsible for validating if Track In is able to be executed and execute it |
| SemiMaterialOut | DEE Actions responsible for validating and executing Track Out |
| SemiSendTrackInInformationToIoT | Set on Action Group "MaterialManagement.MaterialManagementOrchestration.ComplexTrackInMaterials.Post" has the last DEE Action to run, builds and sends Material Data array to IoT on the System Action Group "TrackIn" |
| SemiSendTrackOutInformationToIoT | Set on Action Group "MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutMaterials.Post" has the last DEE Action to run, builds and sends Material Data array to IoT on the System Action Group "TrackOut" |
| SemiSendAbortInformationToIoT | Set on Action Group "MaterialManagement.MaterialManagementOrchestration.AbortMaterialsProcess.Post" has the last DEE Action to run, builds and sends Material Data array to IoT on the System Action Group "Abort" |
Related System Action Groups#
| Name | Description |
|---|---|
| TrackIn | Triggered by MES Track In for Parent Materials. When received it will trigger the actions needed to start the process, if the actions fail Track In will fail on MES |
| TrackOut | Triggered by MES Track Out for Parent Materials. When received it will trigger the actions needed, if the actions fail Track Out will fail on MES |
| Abort | Triggered by MES Abort for Parent Materials. When received it will trigger the actions needed to Abort the process on the Tool, if the actions fail Abort will fail on MES |
| Hold | Triggered by MES Hold for Parent Materials. When received it will trigger the actions needed to remove the Material from the Tool, if the actions fail Hold will fail on MES |
Behavior#
Track In#
Track In Pre-Validation#
On pre-validation the following is validated:
- Slot Map;
- Control State;
- Container Presence.
All these validations can be disconnected if needed.
Recipe Validation#
Validates if Recipe exists on tool and if the Recipe matches the existing Recipe on the tool. If the Recipe does not exist or does not match, depending on the attribute set for the Resource on MES (AllowRecipeDownloadAtTrackIn) set (or delete and set) the Recipe on the tool or fail Track In.
Start Process on the Equipment (For 200mm style interfaces)#
Execute PP-Select and Start, if successful conclude Track In.
Start Process on the Equipment (For 300mm style interfaces)#
Create (or Multi-Create) Process Job and Create Control job, if successful conclude Track In.
Notes#
The Material Data object will be received, containing all the information needed to execute the Track In process. When Track In succeeds, Material Data will be stored in Persistence. If Track In fails, and it has been triggered automatically by the Slot Map Received workflow, Material will be set on Hold.
DEE Action Behavior#
Semi Send Track In Information to IoT#
Semi Send Track Out Information to IoT#
Semi Send Abort Information to IoT#
Material Handling#
Material and sub-material handling are also covered by this template.
For Parent Materials (Lots), after Track In, the process of the Material is tracked by using the Resource Job Material Attribute SemiMaterialState.
When tracking in the Parent Material is set with the State Setup. After that, on Process Started the state is updated to In Progress and finally. on Process Complete to Complete. By default the Process Complete will execute the Material Out in order to execute the Track Out on MES.
For Sub-Materials (Wafers), if Sub-Material Tracking is enabled, and they are not set to be Skipped by a sampling pattern, they will be Tracked in and Tracked Out by using the Material In/Out when the Sub-Material Process starts and finishes on the equipment.
Related Stand-Alone Workflows#
On the table below there is a summary of the Shared Workflows for Process workflows features.
| Name | Description |
|---|---|
| Process Started | Process Started, Change MaterialData to InProcess state and Material state to InProgress |
| Process Complete | Process Complete, executes Material Out for Lot, sets MaterialData to Complete |
| Wafer Started | Wafer Started, executes Material In for Sub-Material, sets SubMaterialData In Process |
| Wafer Complete | Wafer Complete, executes Material Out for Sub-Material, sets SubMaterialData Complete |
Related DEE Actions#
| Name | Description |
|---|---|
| SemiMaterialIn | DEE Actions responsible for validating if Track In is able to be executed and execute it |
| SemiMaterialOut | DEE Actions responsible for validating and executing Track Out |
| SemiAutomationSetMaterialState | Sets Material State |
Behavior#
The Process described here is for a single lot, for Batch behavior please check, the chapter about batching (Batch Material Process), for Sorter specific scenarios refer to the Sorter chapter (Material Movement Handling and Sorter Scenarios).
Parent Material Tracking Behavior#
On Track In#
Material Data will be stored for the Parent Material if the Track In process succeeds. Material Data Material State on Persistence will be Setup. Parent Material State on MES will have the State Setup.
On Process Start#
Material Data will be updated to In Process. Parent Material Main State on MES will be updated to In Progress.
On Process Complete#
Material Data will be updated to Complete. Parent Material Main State will be set to Complete. If enabled, Material Out will be executed for Parent Material, automatically executing the Track Out for the Parent Material. Note: Material Out execution is enabled by default.
On Track Out#
Material Data is deleted from Persistence.
Sub-Material Tracking#
If the tool is capable of Sub-Material Tracking and it's an intended feature for the tool, the Template has features to cover it. Note: if Sub-Material Tracking is enabled for the Resource you will need to have this implemented.
At Track In Time#
When Track In is received, the Sub-Materials will be received with state Queued or Skipped. If Skipped the Sub-Material should not be started by the Equipment Integration.
On Sub-Material Started#
Material Data for the Sub-Material is updated from Queued to In Process. Material In is executed for the Sub-Material, executing the Track In for it.
On Sub-Material Complete#
Material Data for the Sub-Material is updated from In Process to Complete. Material Out is executed for the Sub-Material, executing the Track Out for it. Resource Job Progress is updated, taking into account the following scenarios:
- Scan - total materials in slot map / wafers with the movement with status complete;
- Movement - total of movements / wafers with the movement with status complete;
- Sub material trackin disable - lot is processed or not
- Sub material trackin enable - total of submaterials / submaterials processed
On Process Complete#
If Sub-Material Tracking is enabled MES will automatically validate, and only allow Track In, if all Sub-Material are either Complete or Skipped.
Resource State Handling#
The template is designed to cover a wide set of Resource State models out of the get go.
- Directly collect SEMI E10 States. GEM Control States (SEMI E30 CONTROL State Model) are tracked as an attribute for the Resource as SemiControlState.
Equipment Performance Tracking (SEMI E116) states are tracked as a Current State for the Resource and use the State Model SemiEquipmentPerformanceTrackingStateModel.
Recipe Management#
Recipe Management is covered by the Template Placeholder Controller with pre-made Automation Workflows one can use to cover this feature, additionally:
- Unformatted Recipe handling is covered by using Product Tasks;
- Formatted Recipe handling is covered by using equivalent Template task, that store the formatted value as a JSON on the body;
- Recipe Validation is done at Track In (as described on the Full Automation Capabilities chapter);
- A custom UI, the needed rules and Automation workflows are available for extending the Product Recipe handling feature, this UI allows for on demand Upload and Download to and from the equipment, without associated Material actions.
Alarm Collection#
Alarm Collection is covered as part of this Template. When an Alarm occurs their content is decoded and the Alarm Management is triggered. The Alarm Management feature will use the Semi Alarm Management to solve the action to take based on Alarm Id, Alarm State, Automation Controller and Resource.
If no valid context is defined nothing will be triggered.
If a valid context is defined:
- Error Type is used to trigger the Exception Management
- If Store Data Collection is set to True an Immediate Data Collection Instance of the Alarm Data Collection Data Collection will be created related with the Resource
- If Include Materials In Process it wil include the Materials In Process
- If Automation Module Name is defined it will try to find the Materials In Process on the Sub-Resource with that Automation Module Name
- Context is a free content field expecting a JSON format context to allow for additional customization.
Exception Handling will be responsible for reacting based on the on Error Type.
Error Handling#
On this Template the Error Handling is done by a centralized approach, where all errors should trigger the same Error Handling workflow that, based on the Inputs, is capable of triggering the needed actions to handle errors by triggering actions on the MES.
In summary, if an error occurs someone must be notified and, in most of the cases, either the Material or the Container must be set on Hold or the Material Aborted.
The actions are configurable by using the Smart Table Semi Error Handling.
Related Stand-Alone Workflows#
On the table below there is a summary of the Shared Workflows for Process workflows features.
| Name | Description |
|---|---|
| Error Handling | Workflow that executes the Error Handling |
Related DEE Actions#
<<<<<<< HEAD | Name | Description | ======= <<<<<<< HEAD | Name | Description |
393f86a3674b8a15c688764e95ebfd0920364fdf | --------------------------- | ---------------------------------------------------------- | | SemiAutomationErrorHandling | DEE Action responsible for executing Error Handling on MES |
Behavior#
- Error Handling is done via a shared workflow;
- Definition of behavior is done by using an Error Code;
- Error Code can be appended with the system of origin (EI, MES, AMHS or Unknown) and a numerical extension to execute different behaviors;
- Error Handling is completely configurable and can do one or more of the following:
- Trigger a Notification
- Trigger a Protocol
- Trigger a Rule
- A custom Task and a Converter were created to help use the Error Handling features;
- The Error Code can be extended with additional Error Codes if needed.
By default there are Protocols defined to Abort and Hold, Abort and Future Hold the Material included on the Semiconductor Template.
Actions on Error Received#
On Error received the actions will be taken according to the table below if using the default configuration.
| Error Code | Notification | Hold | Abort | Future Hold |
|---|---|---|---|---|
| MaterialArrivedError | Yes | No | No | No |
| CarrierFailedToClamp | Yes | No | No | No |
| InvalidCarrierDocked | Yes | No | No | No |
| CarrierFailedToOpen | Yes | No | No | No |
| CassetteSlotMapFailed | Yes | No | No | No |
| CassetteFailedToLoad | Yes | No | No | No |
| TrackInValidationFailed | Yes | No | No | No |
| RecipeValidationFailed | Yes | No | No | No |
| FailingTrackIn | Yes | No | No | No |
| TrackInFailed | Yes | No | No | No |
| PPSelectFailed | Yes | No | No | No |
| StartCommandFailed | Yes | No | No | No |
| ProcessError | Yes | No | No | Yes |
| FatalProcessError | Yes | Yes | Yes | No |
| WaferProcessError | Yes | No | No | Yes |
| FatalWaferProcessError | Yes | Yes | Yes | No |
| CarrierFailedToClose | Yes | No | No | No |
| CassetteFailedToUnload | Yes | No | No | No |
| CarrierFailedToUnclamp | Yes | No | No | No |
| FailedOnReadyToUnload | Yes | No | No | No |
| MaterialRemovedError | Yes | No | No | No |
| OtherError | Yes | No | No | No |
| NotifyErrorOnly | Yes | No | No | No |
| Unknown Error Code | Yes | No | No | No |
| EquipmentCommunication | Yes | No | No | No |
| AlarmSetDetected | Yes | No | No | No |
| AlarmClearDetected | Yes | No | No | No |
| FatalProcessAlarm | Yes | Yes | No | No |
| FatalProcessAlarmAffectedMaterial | Yes | Yes | Yes | No |
| AlarmDetectedRequiresFutureHold | Yes | No | No | Yes |
Generic Persistence Variables Behavior Controls#
There are persisted variables that affect the entire behavior of the Equipment Integration using the Template.
The persisted variable are on the table below.
| Name | Type | Definition | Mandatory |
|---|---|---|---|
| Generic_ResourceName | String | Generic Resource Name is used to store the Controllers Resource Name, this must be set at Setup | Yes |
| Generic_UseSingleLotSingleContainerLogic | Boolean | Generic Use Single Lot Single Container Logic is used to store a Boolean if the definition of the Single Lot Single Container logic is intended, this must be set at startup only if that mode is intended, by default, if not stored, it is considered false. PLEASE CONSIDER THIS A LEGACY MODE THAT WILL BE DEPRECATED | No |
Material Movement Handling and Sorter Scenarios#
The Material Movement handling is provided by the MES GUI at Track In time for Resources that have the attribute SemiRequiresMaterialMovement set to True. This information is built under the JobInformation property of the Resource Job entity.
The default Logistical Processes available are:
- Map Container
- Full Transfer
- TransferMaterials
- ComposeMaterial
Currently only Map Container and Full Transfer are fully supported by the Semiconductor Template, customization is needed to implement the remaining ones.
Fully Supported Logistical Processes#
Map Container#
Map Container is designed to force the sorter to read the entire content of the Container reference and map the Materials (Wafers) to the physical slots on the Container. It is intended to be used:
- When you need to know the content of a Container for the first time, ideally with scribed wafers that already exist in the system.
- When you need to force a re-map of the Container to make sure the Wafers are on the actual expected positions.
It only requires one Container to run successfully.
Full Transfer#
Full Transfer is designed to transfer the entire content of a single Container to another. Intended use is:
- For equipment that work in a line format, meaning different input and output ports, that needs to have an output container pre-attributed at Track In
- To force change from a Container type, (i.e FOSB to FOUP or vice-versa).
It requires one Source and one Destination Container.
Each one of the modes is mutually exclusive, meaning, if definition is there but the conditions do not match, the Track In will fail.
Movement Object#
The Movement Object is not an entity but a JSON object with a supported format.
The expected format is the following:
[DataContract(Name = "Movement")]
public class Movement
{
[DataMember(Name = "MaterialName", Order = 0)]
public string MaterialName { get; set; }
[DataMember(Name = "SourceParentMaterialName", Order = 1)]
public string SourceParentMaterialName { get; set; }
[DataMember(Name = "SourceContainerType", Order = 2)]
public string SourceContainerType { get; set; }
[DataMember(Name = "SourceContainer", Order = 3)]
public string SourceContainer { get; set; }
[DataMember(Name = "SourcePosition", Order = 4)]
public string SourcePosition { get; set; }
[DataMember(Name = "DestinationParentMaterialName", Order = 5)]
public string DestinationParentMaterialName { get; set; }
[DataMember(Name = "DestinationContainerType", Order = 6)]
public string DestinationContainerType { get; set; }
[DataMember(Name = "DestinationContainer", Order = 7)]
public string DestinationContainer { get; set; }
[DataMember(Name = "DestinationPosition", Order = 8)]
public string DestinationPosition { get; set; }
[DataMember(Name = "Product", Order = 9)]
public string Product { get; set; }
[DataMember(Name = "Substitutes", Order = 10)]
public MovementProductSubstitutes[] Substitutes { get; set; }
[DataMember(Name = "Status", Order = 11)]
public MovementStatus? Status { get; set; }
}
The MovementProductSubstitutes is designed to be used with the Compose Material Logistical Process to help handle BOM use, currently this is not currently fully integrated and is added to future proofing this data structure.
The MovementProductSubstitutes is the following:
[DataContract(Name = "MovementProductSubstitutes")]
public class MovementProductSubstitutes
{
[DataMember(Name = "Substitute", Order = 0)]
public string Substitute { get; set; }
[DataMember(Name = "Priority", Order = 1)]
public string Priority { get; set; }
}
Pre-validating the Material Movement on Material In and triggering Track In only on valid Movement List#
Currently this is only done via customization, and can be done via creating an Action on Action Group AutomationMaterialInCalculatePossibleMaterialMovement Post. If no customization is done, and you are using Material In, Track In will always be triggered and the Track In orchestration and customization will validate and fail if necessary.
Batch Material Processing#
Semiconductor Template allows for automation to support Track In of multiple Top-Most Materials at the same time and to trigger under the same Control Job Id.
Additional batch logic is currently not included within the Semiconductor Template Packages.

