Download presentation
Presentation is loading. Please wait.
1
An introduction to using CIM300
CIM300 Training An introduction to using CIM300
2
Training Sections CIM300 Overview CIMFoundation CIM87 CIM90 CIM40
This is a list of training sections to be discussed in later slides. Confidential
3
CIM300 Overview COM Interface Technology Verified Compatibility
Supported by Microsoft and other development tools Not recommended to use the CStl… or CCom… wrapper API functions Verified Compatibility Visual Studio 6 Visual C++, Visual Basic Visual Studio .NET 2003, 2005, 2008 C#, VB.NET, Visual C++ Borland C++ Builder 6 Documentation Tutorial Reference The CStl and CCom API functions are not supported in Visual C++ 7 or higher—only visual studio 6.0. The source code is available and can be ported by customers to newer versions of C++. Visual Basic 6.0 is supported until January It should continue to still work after that time, but will not be part of the regression testing. Other .NET languages are not explicitly tested yet should work, such as VB.NET. Confidential
4
GEM 300 Host Emulation TESTConnect SECSConnect CCS GEM Host Manager
Best out-of-box testing Drag-n-Drop message and script building Limited scripting SECSConnect COM library SECS-II messaging Programming is required Best for long-term automated, intelligent testing CCS Peer Group GEM Host Manager To be discontinued In order to test a GEM 300 implement, a GEM 300 host emulator is required. There are multiple products available to do this. Many integrated device manufacturers require CCS testing. Cimetrix is not permitted to share its CCS license with customers, but Cimetrix does perform CCS testing against equipment simulations using CIM300 and CIMConnect. Confidential
5
EPJ File Templates Default installation directory: Customizations
C:\Program Files\Cimetrix\Comm Products\support\CIM300 EPJ file per CIM300 module E39OSS.epj, E40PJM.epj, E87CMS.epj, E90ST.epj, E94CJM.epj, E116EPT.epj Use common (not connection specific) definitions Concatenate EPJ files into one Customizations ID numbers can be changed Names cannot be changed Default value can be changed Consider each default value carefully! WellKnownName is not used by CIM300 The EPJ files cannot be used “as is”. They must be customized to match the hardware implementation. Confidential
6
Documentation Templates
GEM 300 Documentation Default installation directory: C:\Program Files\Cimetrix\Comm Products\support\CIM300 Word™ doc file per CIM300 module E39 Interface.doc, E40 Interface.doc, E87InterfaceTemplate.doc, E90InterfaceTemplate.doc, E94 Interface.doc, E116InterfaceTemplate.doc Concatenate with CIMConnect GEM interface manual template Copy and edit as needed Public only non-private items. Modify ID numbers Follow instructions in the templates The documentation templates MUST be customized to match the actual implementation. Confidential
7
Efficient CIMConnect Usage
Implement machine-specific Status Variables (SV), Data Variables (DV), Equipment Constants (EC), Alarms and Collection Events (CE) as Common (not Connection-specific) definitions In GEM 300 operation mode, disable GEM remote commands. Callbacks must be implemented with caution. Details later in this presentation Efficient use of GetValue callback Confidential
8
Application/CIM300 Share DV
The CIM300 application must set some DV that are also set by CIM300. i.e. DV PortID, CarrierID, LocationID when triggering CarrierClosed and CarrierOpened CIM300 applications MUST protect these shared DV. Use SetValuesTriggerEvent CIM300 uses these functions, ICxAbsLayer::EnterSyncSection and ICxAbsLayer::LeaveSyncSection, to do the same thing. Confidential
9
Callback Implementation Warnings!!
Applies to CIMConnect and CIM300 Callbacks execute in your application’s RPC thread Not the main thread Don’t call into CIMConnect or CIM300 modules ICxClientApplication, ICxClientTool, ICxHostEmulator ICxE87CMS, ICxE90ST, ICxE40PJM, ICxE94CJM, ICxE116Object Avoid deadlock situations Usage of objects passed into the callback is OK i.e. ICxProcessJob in ICxE40PJMCallback::PRCommandCallback Return as soon as possible!! It blocks CIMConnect It blocks CIM300 It blocks communication to/from the host Instead, use a separate worker thread If the callback is asking for the application to return data, then you must block—but be quick! The callback warnings are most important. These are possibly the most common cause of serious errors. -Blocking in callbacks causes most features in CIMConnect and CIM300 to be “hung” until the block ends. There can be many bad side effects of taking too long. -Calling into CIMConnect or CIM300 can cause CIMConnect or CIM300 to hang. There are certain circumstances where it is actually OK, but it is best to never do it. Confidential
10
GEM Local Control Remote Control Local Control
For each CIM300 module, set AllowRemoteControl equals TRUE Local Control For each CIM300 module, set AllowRemoteControl equals FALSE Use CIM300 to implement GEM 300 locally to allow the host to monitor the tool processing. REQUIRED by some fabs Operator or automatic carrier ID and slot map verification Operator or automatic substrate ID verification Locally create process jobs & control jobs We need to Implement! We need to sync that! Minimize the software differences between local and remote operation. During local operation, the operator GUI plays the role of the “host”. Basic information on how to do this is provided in this training, later as each CIM300 module is dicussed. Confidential
11
Starting Up Initialize in this order:
CIMConnect, CIMFoundation, CIM90, CIM87, CIM40, CIM94, CIM116, CIM147, CIM158 Enable host communication after CIM300 initialization is complete. Avoid invalid SECS-II message errors Wait for the equipment and CIM300 to initialize Provide current values for all application handled Status Variables. Get the current values for all application handled Equipment Constants More startup information on the next page. More information for startup of each CIM300 module is provided in this training. Confidential
12
Controlled Startup to Enable GEM 300 Communication
DefaultCommState EC Change to private and always “disabled” Define a new public EC named DefaultCommunicationState for the host to set the default communications state Configure communication EPJ file or registry Startup Equipment, CIM300 application and EMService Call ICxClientApplication::DisableComm Initialize CIM300 modules Wait for equipment to be initialized Synchronize CIM300 with the equipment hardware Check the value of DefaultCommunicationState If enabled, call ICxClientApplication::EnableComm If disabled, call ICxClientApplication::EnableComm when an operator turns GEM on The new public EC can be named anything. DefaultCommunicationState is just a suggestion. It could be the same data type and possible values as DefaultCommState, but it does not have to be. Failure to follow a procedure like this will always result in startup issues and support issues at some point. There are other procedures to get the same results, but this is the recommended procedure. Confidential
13
Shutting down Disable host communication
Call ICxClientApplication::DisableComm Stop all CIMConnect, CIM300 ActiveX controls Each has a “Stop” method Shutdown CIM300 modules Call the ::Shutdown method for each module i.e. ICxE87CMS::Shutdown Uninitialize in reverse order of initialization CIM158, CIM147, CIM116, CIM94, CIM40, CIM87, CIM90, CIMFoundation Shutdown CIMConnect ICxEMService::StopService This ensures that no messages are received from the host in the middle of shutdown, where a message might get rejected like if CIM87 is shutdown but CIMConnect is still running. Confidential
14
CIM300 Diagnostic DebugOutput
Copy CIM300 DLL files from the Debug directory into the bin directory. Run CIM300 application View/Capture DebugOutput Visual Studio output window or Microsoft DebugView utility When done, copy CIM300 DLL files from the Release directory into the bin directory. NOTE: Use of the Debug DLLs affects CIM300 performance. Most CIM300 programming problems can be solved by using the CIM300 diagnostics messages. They are very descriptive. For most issues, this should be the first thing attempted to solve the problem. Confidential
15
Additional Diagnostics
CIMConnect Control Panel Status Variable, Data Variable and Equipment Constant Values CIMConnect Diagnostics File E39 ActiveX Control E39 object attributes Carrier, substrate, substrate location, process job, control job and equipment performance tracking modules Confidential
16
Reporting Issues to Customer Support
Send the following to A copy of CIM300 DebugOutput CIMConnect diagnostics file SupportTool output html file Start->All Program->Cimetrix->Tools->SupportTool <installation folder>/bin/SendToCimetrix_XXXXXXXX.html If possible, a sample program that demonstrates the problem behavior Describe The actual behavior of CIMConnect/CIM300 The expected behavior of CIMConnect/CIM300 How the problem was detected Affecting production in a fab? Affecting tool acceptance at a fab? The more information that is provided, then the faster Cimetrix can provide quality support. Confidential
17
CIMFoundation EPJ File Additions Software Initialization
Manage Persistence Tool Specific Variations What is Handled Automatically Integrator Responsibilities GUI Recommendations This is a list of topics to be discussed in later slides. Confidential
18
EPJ File Additions Add E39OSS.epj EC Use0303S14F20 EC CheckFmtS14F1
S14F20 message format EC CheckFmtS14F1 Confidential
19
Software Initialization
CIMConnect abstraction layer Implements ICxAbsLayer ICCAlObject::Init ICxClientApplication 1 for CIMConnect [CONNECTION1] E39 Interface ICxE39::Init "top:top“ ICxAbsLayer ICxE39Obj The connection number passed into the CIMConnect abstraction layer, is the [CONNECTION1] from the EPJ file. Only this connection will accept the GEM 300 streams and functions. A top E39 object other than “top:top” can be used. There are several other ways to initialize CIMFoundation as seen in other sample applications. This is the simplest method. Confidential
20
Tool Specific Variations
Custom E39 objects i.e. load port Create new COM object, Implementing ICxE39CB Return E_NOTIMPL for most methods Return S_OK for ::GetAttr Create new ICxE39Obj from new COM object ICxE39ObjPtr pMyICxE39Obj(pMyE39Object); ICxE39ObjPtr::Add, pass in new ICxE39Obj m_pICxE39Obj->Add(pMyICxE39Obj); Custom E39 attributes i.e. Substrate actual size ICxE39Obj::SetAttr Confidential
21
What is Handled Automatically
Stream 14 Messages All objects F1, F3, F5, F7, F19, F23 Substrate & Control Job objects F9, F11 CIMFoundation is capable of handling Stream 14 functions 1,3,5,7,9,11,13,15,17,19, 23,25, and 27, but functions 13, 15, 17, 25 and 27 are not required by any GEM 300 standards. Confidential
22
Integrator Responsibilities
Initialization Optional callback ICxE39InfoCB or ICxE39InfoCB2 ICxE39InfoCB2 is asynchronous Additional CPU usage AttrChange ObjAdd ObjRemove Only implement the callback if the application needs to know when objects are modified. This adds significant CPU usage. Confidential
23
GUI Recommendations CCxE39ObjectView ActiveX Control
Useful during development Uses ICxE39InfoCB2 Start ICxE39Obj Stop Disable when not visible Confidential
24
CIM87 State Machines EPJ File Additions Software Initialization
Manage Persistence Tool Specific Variations What is Handled Automatically Integrator Responsibilities GUI Recommendations Local Operation This is a list of topics to be discussed in later slides. Confidential
25
State Machines Load Port Transfer Carrier Access Mode
Carrier ID Carrier Slot Map Carrier Accessing Access Mode Load Port Reservation Load Port/Carrier Association Confidential
26
Load Port Transfer State Model
The purpose of the Load Port Transfer State Model is to define the host view of a carrier transfer, which includes the host interactions with the equipment necessary to transfer carriers to and from equipment load ports. OUT OF SERVICE — Transfer to/from this load port is disabled. IN SERVICE — Transfer to/from this load port is enabled. Confidential
27
Confidential
28
Carrier State Model The purpose of the Carrier State Model is to define the host’s view of a carrier. CARRIER ID STATUS — indicates the current status of the carrier with respect to its identifier. CARRIER SLOT MAP STATUS — indicates the current status of the carrier with respect to its slot map. CARRIER ACCESSING STATUS — indicates the current accessing status of the carrier. Confidential
29
Confidential
30
Access Mode State Model
The Access Mode State Model defines the host view of equipment access mode, as well as the host interactions with the equipment necessary to switch the access mode. MANUAL — When the production equipment or specified load port is in this mode, only manual (non-AMHS) carrier transfers are allowed. AUTO — When the production equipment or specified load ports are in this mode, only automated (AMHS) carrier transfers are allowed. Confidential
31
Confidential
32
Reservation State Model
The purpose of the Reservation State Model is to define the host view of future activity at a specific load port. NOT RESERVED — this state is active when there is no reservation existing at the load port. RESERVED — this state is active when there is a reservation for future activity at the load port. Confidential
33
Confidential
34
Load Port/Carrier Association State Model
The purpose of the Carrier Association State Model is to define the host view of carrier to load port association of the production equipment, as well as the host interactions with the production equipment necessary to associate a carrier to load port, and to perform equipment based carrier verification. NOT ASSOCIATED — There is no carrier association present for this load port. ASSOCIATED — A CarrierID has been associated with this load port. The load port is not available for a new carrier association. Confidential
35
Confidential
36
FOUP or Carrier FOUP — Front Opening Unified Pod
carrier — a container, such as a FOUP or open cassette, with one or more positions for holding substrates. Confidential
37
Fixed Buffer Example Has only fixed load ports and no internal buffer for carrier storage. Substrates are loaded and unloaded directly from the carrier at the load port for processing. Confidential
38
Internal Buffer Equipment
Uses an internal buffer – a set of locations within the equipment to store carriers. These locations exclude load ports. Confidential
39
EPJ File Modifications
Common Set of CE, SV, DV, EC, Alarms One SV per location CarrierID_i, LocationID_i Fixed Buffer Two per load port, for docked and undocked location Internal Buffer One per buffer location and in/out load ports, two per processing load port AvailPartitionCapacity, PartitionCapacity, PartitionID, PartitionType, BufferPartitionInfo, BufferPartitionInfo_i, PartitionID_i, PartitionType_i, AvailPartitionCapacity_i, PartitionCapacity_i, UnAllocatedPartitionCapacity_i One SV per load port PortStateInfo_i, PortAssociationState_i, PortTransferState_i, PortID_i, AccessMode_i, LoadPortReservationState_i BypassReadID_i or BypassReadID Option to have a BypassReadId per load port, or one for all load ports. Confidential
40
Software Initialization
ICx87CMS::Init: ICxE39Obj, ICxAbsLayer ICx87CMS::SetCIM90Interface: ICxE90ST Implement & Register Callbacks ICx87CMS::RegisterCallback ICx87CMS::RegisterCallback2 ICx87CMS::RegisterCallback 3, 4, 5, 6, 7, 8 Additional initialization Fixed buffer tool Internal buffer tool Confidential
41
Fixed Buffer Tool Initialization
ICx87CMS::Create2LocationLoadPort In order of initialization, assigned to _1, _2, etc. items listed in the EPJ file. Port ID, Left to Right, Bottom to Top Undocked, Docked Confidential
42
Internal Buffer Tool Initialization
ICx87CMS::Create2LocationLoadPort External load ports CreateLoadPort is an alternative ICx87CMS::AddCarrierLocation For example, the robot that transports a carrier ICx87CMS::CreatePartition Confidential
43
Manage Persistence Restore carrier object
Power failure or tool shutdown ICxE87CMS::CreateCarrier Carrier might be removed during tool shutdown Verify Load Port Transfer Status Load Port Transfer State is persistent Required by E87 Force load port to be READY_TO_LOAD if no carrier ICxE87CMS::get_TransferStatus ICxE87CMS::ChangeLPTransferState Confidential
44
Tool Specific Variations
Fixed Buffer Equipment Internal Buffer Equipment Name of load port locations Clamp Carrier Before reading the Carrier ID, or After Carrier ID verification Access Mode Open door indicates IN_ACCESS, or Removed substrate indicates IN_ACCESS Confidential
45
What is Handled Automatically
State Machines Carrier Object and Attributes Carrier ID and Slot Map Verification SECS-II Message Handling S3F17, S3F19, S3F25, S3F27, S3F29, S3F31 Some E87 Alarms CarrierVerificationFailure, SlotMapReadFailed, SlotMapVerificationFailed, DuplicateCarrierID, AttemptToUseOutOfServiceLP SET state only We could probably set the alarms and clear them right away. Confidential
46
Integrator Responsibilities
CIM87 Callbacks Carrier Arrival, ID Verification, Slot Map Verification, Access, Departure, Cancel Loadport/E87 Coordination EC CarrierHold and CarrierUnclamp CE (and associated DV) CarrierClamped, CarrierUnclamped, CarrierClosed, CarrierOpened, CarrierApproachingComplete, IDReaderAvailable, IDReaderUnavailable CarrierRecreate CarrierTagReadData/CarrierTagWriteData Alarms AccessModeViolation, CarrierPresenceError, CarrierPlacementError, CarrierDockFailure, CarrierOpenFailure, CarrierRemovalError, PIOFailure, IBCarrierMoveFailure Carrier presence startup synchronization We will probably not use “EC CarrierHold and CarrierUnclamp” – this should be documented. Same goes for “CarrierTagWriteData” Confidential
47
CIM87 Callbacks To reject an E87 Service, return E_NOTIMPL in the associated callback. In .NET, that means throw a COM exception i.e. Fixed buffer tool should reject CarrierIn, CarrierOut, CancelAllCarrierOut, CancelCarrierOut To support an E87 Service, return S_OK In .NET, this is the default Use the newer callbacks for appropriate services i.e. Use ICxE87Callback5::CancelCarrier2 instead of ICxE87Callback::CancelCarrier Confidential
48
Useful Functions ICxE87CMS::AssociationCarrierID
Carrier ID from Port ID ICxE87CMS::AssociationPortID Port ID from Carrier ID Confidential
49
Fixed Buffer Tool Flow Chart
Confidential
50
Carrier Arrival Wait for arrival signals ICxE87CMS::TransferStart
Based on the first carrier approach indication E84 signal or carrier presence sensor ICxE87CMS::CarrierPlaced Placement sensor GEM MaterialArrived CE Hardware Commands Clamp carrier (see Tool Specific Variations) E87 CarrierClamped CE Read carrier ID ICxE87CMS::CarrierAtPort After carrier arrival After reading Carrier ID Empty carrier ID if reader error or no reader Undocked location Proceed to Verify Carrier ID If a carrier tries to arrive via an illegal access mode, then prevent this immediately. For example, while in Auto access mode, a carrier should not be accepted via a Manual mode handshake. See E87 Carrier Transfer Boundaries table, part of the Access Mode documentation for more details on how this is to be handled. Confidential
51
Carrier ID Verification
Carrier is Cancelled ICxE87Callback5::CancelCarrier2 E87 CANCELCARRIER service ICxE87Callback5::CancelCarrierAtPort2 E87 CANCELCARRIERATPORT service Proceed to Ready Carrier to Unload Carrier ID is Verified ICxE87Callback2::CarrierIDVerified Any host verification scenario Proceed to Dock Carrier One of these two actions must occur next. CIM300 implements the Carrier ID verification automatically for all host and equipment verification scenarios. Just wait for the carrier Id to be cancelled or verified. Confidential
52
Dock Carrier Hardware Commands Handle based on hardware status
Dock carrier, Open carrier door, Detect slot map Handle based on hardware status ICxE87CMS::MoveCarrier to Docked location E87 CarrierOpened CE DV: PortID, CarrierID, LocationID Use SetValuesTriggerEvent ICxE87CMS::VerifySlotMap Warning! This is a slower function Proceed to Verify Slot Map Warning! ICxE87CMS::VerifySlotMap can take a few seconds to return. Sometimes it is best to call this in a separate thread. It takes longer because of the extensive related E90 activity that happens automatically, such as the creation of all the substrate objects and carrier substrate locations. Confidential
53
Verify Slot Map Carrier is Cancelled Slot Map is Verified
ICxE87Callback5::CancelCarrier2 E87 CANCELCARRIER service ICxE87Callback5::CancelCarrierAtPort2 E87 CANCELCARRIERATPORT service Proceed to Undock Carrier Slot Map is Verified ICxE87Callback2::SlotMapVerified Any host verification scenario Proceed to Process Substrates Confidential
54
Process Substrates ICxE87CMS::AccessCarrier IN_ACCESS
See Tool Specific Variations Execute all related Control Jobs and Process Jobs until they are stopped, aborted or completed. Implement E90 substrate tracking E87 CarrierApproachingComplete CE DV CarrierID ICxE87CMS::AccessCarrier CARRIER_COMPLETE or CARRIER_STOPPED All substrates are in the destination carrier Proceed to Undock Carrier Confidential
55
Undock Carrier Hardware Commands Close carrier door
E87 CarrierClosed CE E87 EC CarrierHold option If set to “Host”, wait for CarrierRelease service before undocking. ICxE87Callback::CarrierRelease Undock carrier, Unclamp carrier E87 EC CarrierUnclamp If in AUTO Access state and set to “AMHS”, do NOT unclamp until AMHS arrives. Confidential
56
Undock Carrier (Continued)
Handle based on hardware status ICxE87CMS::MoveCarrier to Undocked location E87 CarrierUnclamped CE DV: PortID, CarrierID, LocationID Use SetValuesTriggerEvent Proceed to Ready Carrier to Unload Confidential
57
Ready Carrier to Unload
ICxE87CMS::ReadyToUnload Proceed to Carrier Removal Confidential
58
Carrier Removal Wait for removal signals ICxE87CMS::TransferStart
Based on Loadport Signal ICxE87CMS::CarrierDepartedPort When carrier departs GEM MaterialRemoved CE DV: PortID, LocationID Use SetValuesTriggerEvent Confidential
59
CarrierReCreate Service
Loadport must be READY TO UNLOAD Follow the normal Load Arrival sequence CarrierAtPort… VerifySlotMap… Proceed to Verify Carrier ID Use these functions to re-created the carrier for additional process jobs/control jobs. Confidential
60
CarrierTagReadData CarrierTagWriteData
Execute Carrier ID tag request CarrierTagReadData is required to be a “blocking” callback. Confidential
61
E87 Alarms SET and CLEAR each of these alarms.
AccessModeViolation, CarrierPresenceError, CarrierPlacementError, CarrierDockFailure, CarrierOpenFailure, CarrierRemovalError, PIOFailure, IBCarrierMoveFailure Confidential
62
Carrier ID Reader Availability
When the availability changes: IDReaderAvailable IDReaderUnavailable DV PortID Confidential
63
GUI Recommendations For each load port:
Display Carrier ID and Slot Map Display the state of Carrier ID Verification, Slot Map Verification, Accessing, Transfer State, Access Mode, Reservation, and Association ICxE87Callback3::StateChange Switch for Access Mode: Auto or Manual Switch for Transfer State: In Service/Out of Service Operator initiated carrier commands: dock carrier, undock carrier, ready to unload Confidential
64
Local Operation Carrier ID Verification EC Slot Map Verification EC
Automatic (without popup window or pause) Manual (with popup) Reject or Accept carrier ICxE87CMS::ProceedWithCarrier ICxE87CMS::CancelCarrierAtPort Slot Map Verification EC This is required by some factories, such as Quimonda, who wish to monitor tool activity even when the machine is running under local operator control. Confidential
65
Internal Buffer MoveCarrier, MoveCarrier2 or MoveCarrier3
ICxE87Callback method CarrierIn, CarrierOut CancelCarrierOut, CancelAllCarrierOut Additional commands must be supported into order to support internal carrier buffers. Confidential
66
CIM90 State Machines EPJ File Additions Software Initialization
Manage Persistence Tool Specific Variations What is Handled Automatically Integrator Responsibilities GUI Recommendations Local Operation This is a list of topics to be discussed in later slides. Confidential
67
State Machines Substrate object Substrate Location Batch Location
Substrate Transport Substrate Processing Substrate Reading Substrate Location Batch Location Confidential
68
Substrate Object State Model
A substrate has both a state indicating where it is located and a state indicating the progress of processing. These states are represented by the SUBSTRATE TRANSPORT and the SUBSTRATE PROCESSING states, which are concurrent substates of the SUBSTRATE State Model Confidential
69
Confidential
70
Substrate Location State Model
substrate location — a material location which is capable of holding a substrate. UNOCCUPIED — The state in which the substrate location does not hold or have a substrate. OCCUPIED — The state in which the substrate location holds a substrate. Confidential
71
Confidential
72
Batch Location State Model
batch location — locations in the equipment where substrates visit as a group of substrates for storage or processing. UNOCCUPIED — The state in which the batch location does not hold or have any substrate of batch. OCCUPIED — The state in which the batch location holds one or more substrates of batch. Confidential
73
Confidential
74
EPJ File Modifications
Common Set of CE, SV, DV, EC E90ComplianceLevel Single Wafer Tool For each static and possible dynamic substrate location (25 per carrier) SubstLocState_i, SubstrLocSubstrID_i, SubstLocID_i, SubstLocDisableEvents_i Batch Tool BatchLocDisableEvents_i, BatchLocID_i, BatchLocState_i, BatchSubstIDMap_i Confidential
75
Software Initialization
ICxE90ST::Initialize ICxE39Obj, ICxAbsLayer Define Static Substrate Locations Single Wafer Tool ICxE90ST::AddSubstrateLocation for static locations Do not add dynamic (carrier) locations In order of initialization, assigned to _1, _2, etc. items listed in the EPJ file. Batch Wafer Tool ICxE90ST::AddSubstrateBatchLocation Confidential
76
Manage Persistence Restore substrate objects
Substrates left in the machine Equipment shutdown or power failure NOTE: they might be removed during shutdown Confidential
77
Tool Specific Variations
Single substrate or batch of multiple substrates Substrate source/destination handling Always return substrates to the source carrier Allow a different destination carrier Carrier sizes 25 (standard), <25 (new requirements), Reticle Substrate ID Verification Only if Substrate ID Reader Tool options Vary the number of chambers With or without pre-aligner Vary the number of load ports Confidential
78
What is Handled Automatically
State Machines Most object attributes CIM87 creates substrate objects and carrier substrate locations Confidential
79
Integrator Responsibilities
Single Substrate Tool ICxE90ST::ChangeSubstrateState, or ICxE90ST::ChangeSubstrateState2 Any Location change i.e. Removed from carrier, moved to prealigner, moved to process chamber, moved into carrier Any Transport state change At Source, At Work, At destination ICxE90ST::SetSubstrateTransportState Any Process state change Needs Processing, In Process, Processed, Aborted, Stopped, Rejected, Skipped or Lost ICxE90ST::SetSubstrateProcessingState Confidential
80
Substrate Verification
Confidential
81
Substrate Verification Functions
ICxE90ST::NotifySubstrateRead Acquired substrate ID ICxE90SubstrateCB::E90CommandCallback ProceedWithSubstrate CancelSubstrate Confidential
82
Useful functions ICxE87CMS::GetSubstrateFromSource
ICxSubstrate from the source carrier and slot number ICxE90ST::GetSubstrate ICxSubstrate object from the substrate ID ICxSubstrate::objectID Get the Substrate ID ICxSubstrate::substrateSource Format “<CarrierID>.<slot number>” ICxSubstrate::substrateDestination ICxE90SubstrateCB::SubstrateStateChange Confidential
83
Integrator Responsibilities
Batch Tool ICxE90ST::CreateBatch ICxE90ST::AddSubstrateToBatch or ICxE90ST::AddCarrierToBatch2 ICxE90ST::ChangeBatchState Location change i.e. Removed from carrier, moved to prealigner, moved to process chamber, moved into carrier Transport state At Source, At Work, At destination Process state change Needs Processing, In Process, Processed, Aborted, Stopped, Rejected, Skipped or Lost ICxE90ST::DestroyBatch The handling for batch tools needs to be verified. This is most likely incomplete. Confidential
84
GUI Recommendations Identify substrates in the tool at each substrate location. Processing state i.e. Needs Processing, In Process, Processed, or Aborted Show substrates in the carriers Identify the slot map status Confidential
85
Local Operation Operator features to manually move substrates
Substrate ID Verification EC Only if Substrate ID Reader Automatic (without popup window or pause) Manual (with popup) Reject or Accept substrate ICxE90ST::ProceedWithSubstrate ICxE90ST::CancelSubstrate This is required by some factories, such as Quimonda, who wish to monitor tool activity even when the machine is running under local operator control. Confidential
86
CIM40 State Machines EPJ File Additions Software Initialization
Manage Persistence Tool Specific Variations What is Handled Automatically Integrator Responsibilities GUI Recommendations Local Operation This is a list of topics to be discussed in later slides. This CIM40 training focuses on implementing E40 with E94. E40 can also be implemented without E94. However, that use case is not covered in this training. Confidential
87
State Machines Process Job Confidential
88
Process Job State Model
The process job is a transient entity. It is created on request of the supervisor, executes, and then is deleted by the processing resource. The job usually spans the time period from shortly before material is physically delivered to the processing resource, through the processing, and until shortly after material is taken away. Confidential
89
Confidential
90
Process Job Definition
process job — a material processing job for a processing resource specifying and tracking the processing to be applied to the material. Attributes: PauseEvent, PRJobState, PRMtlNameList, PRMtlType, PRProcessStart, PRRecipeMethod, RecID, RecVariableList Look in the E40 standard at table “Process Job Attributes” and review each of the attributes. Confidential
91
EPJ File Modifications
Common Set of CE, SV, DV, EC EC E40ComplianceLevel EC PRJobEventStyle Confidential
92
Software Initialization
ICxE40PJM::Initialize2 ICxE39Obj, ICxAbsLayer, Queue Size, ICxE87CMS ICxE40PJMCallback A large queue 25 per load port is recommended Confidential
93
Manage Persistence Typically none Confidential
94
Tool Specific Variations
Sequential Process Jobs Most simple Cascading Process Jobs Performance Single or multiple chambers Concurrent Process Jobs Multiple chambers Process job dedicated to a loadport and chamber Confidential
95
What is Handled Automatically
Process jobs are started one at a time, automatically by CIM94 (Control Jobs) Confidential
96
Integrator Responsibilities
Handle Create, Setup, Start, Abort, Pause, Stop Notify CIM40 when setup is complete Notify CIM40 when the job is complete It is possible to check the recipe now, but it will have to be verified again later. It is OK to allow the host to download later. ICxE40PJM::PRJobStartProcess MUST be called after sufficient time is passed. Confidential
97
Callback ICxE40PJMCallback::PRCommandCallback Create Setup
Check ICxProcessJob::PRMtlType Validate CmdParameterList names and values Recipe tuning Optional: check recipe content now If error, specify error in prStatus Return E_FAIL (or throw E_FAIL COM exception) Setup Return as soon as possible Execute in a separate thread Process module for preparation Check recipe content ICxE40PJM::PRJobStartProcess after setup is complete This will be most of the work for E40 It is possible to check the recipe now, but it will have to be verified again later. It is OK to allow the host to download later. ICxE40PJM::PRJobStartProcess MUST be called after sufficient time is passed. Confidential
98
Callback (continued) ICxE40PJMCallback::PRCommandCallback Start
Process the listed substrates Abort, Pause, Resume, Stop It is possible to check the recipe now, but it will have to be verified again later. It is OK to allow the host to download later. ICxE40PJM::PRJobStartProcess MUST be called after sufficient time is passed. Confidential
99
Process Job Material Namelist
ICxE40PJM::PRGetJob ICxProcessJob::PRMtlNameList ICxProcessJob::PRMtlType pjCARRIER pjSUBSTRATE ICxProcessJob::PRRecipeID ICxProcessJob::PRRecipeVarValue Confidential
100
PRMtlType: Carrier or Substrate
pjCarrier L, n (# carriers) L, 2 A <Carrier ID 1> L, j (# slots) U1 <slot ID 1> ... U1 <slot ID j> A <Carrier ID n> pjSubstrate L, n (# of substrates) A <Substrate ID 1> ... A <Substrate ID n> Either style of PRMtlType is allowed, but type pjCarrier is much more common. Confidential
101
Process Job Completion
ICxProcessJob::PRProcessComplete ICxProcessJob::PRJobComplete Confidential
102
GUI Recommendations List of all Process Jobs State of each Process Job
ICxE40PJMCallback::PRStateChange Use Control Jobs to locally pause, resume, abort, or stop the process jobs. Use the Control Jobs to manage the Process Jobs. If Process Jobs are stopped or aborted directly, then the control job would immediately start another one which typically is not the desired effect. Confidential
103
Local Operation Create Process Jobs locally Required by some factories
ICxE40PJM::PRJobCreate ICxE40PJM::PRJobCreateEnh Use Control Jobs to manage the Process Jobs. Required by some factories This is required by some factories, such as Quimonda, who wish to monitor tool activity even when the machine is running under local operator control. Confidential
104
CIM94 State Machines EPJ File Additions Software Initialization
Manage Persistence Tool Specific Variations What is Handled Automatically Integrator Responsibilities GUI Recommendations Local Operation This is a list of topics to be discussed in later slides. E94 must be implemented with E40. There is no other way to implement E94. Confidential
105
State Machines Control Job State Machine Confidential
106
Control Job State Model
Defines a unit of work on equipment for one or more carriers. The work is described by a set of one or more process jobs to be applied to the material contained in the carriers. Attributes: CurrentPRJob, DataCollectionPlan, CarrierInputSpec, MtrlOutSpec, MtrlOutByStatus, PauseEvent, PRJobStatusList, ProcessingCtrlSpec, ProcessOrderMgmt, StartMethod, State Review E94 at table “Control Job Attributes” Confidential
107
Confidential
108
Confidential
109
Ways to handle Process Jobs
Sequential One process job at a time, the default Throughput is sacrificed for simplicity This is the default Cascaded Process jobs overlap to optimize throughput Substrates can be process in any process chamber Concurrent Multiple, independent process jobs run at the same time Recipe indicates a specific process chamber Confidential
110
Example tool A simple tool with two load ports, a prealigner, two load locks, and two process chambers is used to explain how the different process job handling. Confidential
111
Sequential Sequence Diagram
Notice the gap between process jobs. Confidential
112
Sequential Example Notice how there is nothing in the prealigner or load lock 1. One process job (PJ2) cannot start until the previous one process job (PJ1) is all the way completed (with substrates in the load port). Because it takes time to get a substrate from the load port to the process chamber, throughput is not optimum. Confidential
113
Cascaded Sequence Diagram
Notice how the process job execution overlap, where the next one starts before the previous one is completed. Confidential
114
Cascaded Example Keep putting substrates into the tool to keep the process chambers busy all of the time. Confidential
115
Concurrent Sequence Diagram
Confidential
116
Concurrent Example Both process jobs can execute completely at the same time. Confidential
117
Software Initialization
ICxE94CJM::Init ICxAbsLayer, ICxE39Obj, Queue Size, ICxE40PJM ICxE94CJM::SetE87 ICxE87CMS ICxE94CJM::RegisterCallback ICxE94CJM::RegisterCallback2 ICxE94CJM::RegisterCallback3 Confidential
118
Manage Persistence Typically none Confidential
119
Tool Specific Variations
ProcessOrderMgmt OPTIMIZE ICxE94ControlJobCB::GetNextPrJobID Select the next process job. ICxE94ControlJobCB::CJHOQ Determine which control job is executed next Confidential
120
What is Handled Automatically
StartMethod, Auto or Manual ProcessOrderMgmt LIST, ARRIVAL Handled automatically Control Jobs start automatically One at a time (sequential processing) Confidential
121
Integrator Responsibilities
Cascading or Concurrent Process, Control Jobs Do nothing for Sequential jobs ICxE94CJM::StartNextProcessJob ICxE94CJM::StartNextControlJob ICxE94CJM::ProcessJobComplete When Process Job is completed Confidential
122
GUI Recommendations List of all Control Jobs State of each Control Job
ICxE94ControlJobCB::CJStateChange Confidential
123
Local Operation ICxE94CJM::CreateControlJob ICxE94CJM::CJStart
ICxE94CJM::CJStop ICxE94CJM::CJPause ICxE94CJM::CJResume ICxE94CJM::CJAbort Avi: we sholud adding buttons for all of the above. This is required by some factories, such as Quimonda, who wish to monitor tool activity even when the machine is running under local operator control. Confidential
124
CIM116 State Machines EPJ File Additions Software Initialization
Manage Persistence Tool Specific Variations What is Handled Automatically Integrator Responsibilities GUI Recommendations Local Operation This is a list of topics to be discussed in later slides. Confidential
125
State Machines Equipment Performance Tracking Equipment EPT Module
Confidential
126
EPT State Model The EPT state model is intended to capture the different states of the equipment and its EPT modules from an operational point of view: EPT module busy executing a task. EPT module blocked from executing a task. EPT module idle. Confidential
127
Confidential
128
EPT Module a major component of the equipment that affects processing or throughput. For purposes of simplification, an EPT module executes one and only one task at a time. Each EPT Module has an EPT state model that is maintained by the equipment. Confidential
129
EPJ File Modifications
Common Set of CE, SV, DV, EC Equipment SV, EC For each EPT module EPTElementName_i, EPTState_i, PreviousEPTState_i, EPTStateTime_i, BlockedReason_i, BlockedReasonText_i, SubstCount_i, SubstCountReset_i, DisableEventOnTransition_i, TaskName_i, TaskType_i, PreviousTaskName_i, PreviousTaskType_i Confidential
130
Software Initialization
ICxE116Object::Initialize ICxAbsLayer, ICxE39Obj, Equipment name For each EPT EFEM & Production module ICxE116Object::AddEFEMModule ICxE116Object::AddProductionModule In order of initialization, assigned to _1, _2, etc. items listed in the EPJ file. Confidential
131
Manage Persistence None typically Confidential
132
Tool Specific Variations
EFEM Module Modeling Confidential
133
What is Handled Automatically
Equipment EPT State Based on EPT modules Confidential
134
Integrator Responsibilities
For each EPT Module: ICxE116Object::Busy Task Name, Task Type (enumeration) ICxE116Object::Idle ICxE116Object::Blocked Reason (enumeration), Reason Description Confidential
135
GUI Recommendations CIM116 ActiveX Control or equivalent
Show EPT states Show Equipment state ICxEPTCallback::StateChange Confidential
136
Local Operation Same as remote Confidential
137
CIM148 State Machines EPJ File Additions Software Initialization
Manage Persistence Tool Specific Variations What is Handled Automatically Integrator Responsibilities GUI Recommendations Local Operation This is a list of topics to be discussed in later slides. Confidential
138
State Machines None Confidential
139
EPJ File Modifications
AutoRejectS2F31 default value to “Bo 1” Reject requests from GEM Host to update system clock. Remove ClockOffset variable(s) and UpdateSystemClock default value to “Bo 1” For CIMConnect to always use real system clock when reporting time to the GEM Host. Change ExtendedTimeFormat value to match the CIM148 ReportDateTimeInUTC setting. Use the ValueChanged callback on ExtendedTimeFormat to change the ReportDateTimeInUTC property Confidential
140
E39 TS-Clock Object DateTime UseSyncTime (Read/Write host access)
Current date/time in ISO format UseSyncTime (Read/Write host access) Enable/Disable network time synchronization TimeServers (Read/Write host access) Time server IP address(es) TimeSyncInterval LastSyncTime LastSyncTimeServer Offset Status Confidential
141
Software Initialization
ICxTSObject::Initialize ICxAbsLayer, object ID Register to handle read attribute requests Optional ICxTSObject::RegisterGetAttrValueCallback Register to handle write attribute requests ICxTSObject::RegisterInfoCallback Register to reject write attribute requests ICxTSObject::RegisterRequestCallback Confidential
142
Manage Persistence TS-Object attributes Confidential
143
Tool Specific Variations
NTP Package NTP package is not included Customer must select an NTP package Some TS-Object attribute values are not available in all NTP packages Confidential
144
What is Handled Automatically
Stream 14 Handling S14F1 GetAttr S14F3 SetAttr TS-Object DateTime Based on the system clock Confidential
145
Integrator Responsibilities
Implement some NTP package Update TS-Object attributes Option 1: Cache using ICxTSObject methods LastSyncTime, LastSyncTimeServer, Offset, Status and TimeSyncInterval when NTP notifies about clock synchronization Option 2: Callback RegisterGetAttrValueCallback On demand Handle RegisterInfoCallback Confidential
146
GUI Recommendations Show TimeServer(s) Show UseTimeSync property value
Show DateTime Confidential
147
CIM157 State Machines EPJ File Additions Software Initialization
Manage Persistence Tool Specific Variations What is Handled Automatically Integrator Responsibilities GUI Recommendations Local Operation This is a list of topics to be discussed in later slides. Confidential
148
State Machines Module Process Confidential
149
Module Process The Module Process State Model describes a common approach for reporting process activity for each process chamber in an equipment. One state model per process module A process module execute material processing, inspection, or any other equipment activity. It is not limited to process equipment that modify the material. If possible, break down the recipe execution into finite steps that have clear start and stop definitions. Report the step progress. Confidential
150
Confidential
151
EPJ File Modifications
Common Set of DV For each process module CE ExecutionStarted_i, ExecutionCompleted_i, ExecutionFailed_i, StepStarted_i, StepCompleted_i, StepFailed_i SV MPTModuleId_i, MPTState_i, PreviousMPTState_i Confidential
152
Software Initialization
ICxE157Object::Initialize ICxAbsLayer For each Process Module ICxE157Object::AddModule Module ID Subscript Index Assigned to _1, _2, etc. items listed in the EPJ file. Confidential
153
Manage Persistence None Confidential
154
Tool Specific Variations
Number of Process Modules Number of recipe steps Note that recipe steps are not required if they do not apply to the equipment. Step IDs Name of each recipe step Confidential
155
What is Handled Automatically
Based on API calls Process Module states DV, SV values Trigger events Confidential
156
Integrator Responsibilities
For each Process Module: General Execution ICxE157Object::MPTExecutionStarted or MPTExecutionStarted2 Process Job ID Recipe Component (could be same as Recipe ID) Recipe ID Substrate ID, or list of Substrates MPTExecutionCompleted Success or Error Step Execution MPTStepStarted Step ID (name) MPTStepCompleted Confidential
157
GUI Recommendations For each Process Module Execution State
Not Executing, Executing, Step Active When Step Active Current Step ID Confidential
158
Local Operation Same as remote Confidential
159
Wrap Up Questions? Review any topics? More details on any topic?
Confidential
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.