Computer Integrated Manufacturing (CIM) Framework ... · Computer Integrated Manufacturing (CIM)...

410
SEMATECH Technology Transfer 93061697J-ENG Computer Integrated Manufacturing (CIM) Framework Specification Version 2.0

Transcript of Computer Integrated Manufacturing (CIM) Framework ... · Computer Integrated Manufacturing (CIM)...

SEMATECHTechnology Transfer 93061697J-ENG

Computer Integrated Manufacturing(CIM) Framework Specification

Version 2.0

© 1998 SEMATECH, Inc.

SEMATECH and the SEMATECH logo are registered service marks of SEMATECH, Inc.

Product names and company names used in this publication are for identification purposes only and may be trademarks or servicemarks of their respective companies.

Computer Integrated Manufacturing (CIM) Framework SpecificationVersion 2.0

Technology Transfer # 93061697J-ENGSEMATECH

January 31, 1998

Abstract: This document is version 2.0 of the Computer Integrated Manufacturing (CIM) FrameworkSpecification, containing updates and corrections to version 1.5. The purpose of the CIMFramework is to assist in the creation of an integrated, common, flexible, modular object modelleading to an open, multi-supplier CIM system environment. It is designed to provide benefits thatinclude increased productivity, reduction in new development cost and cycle time, shorter factorystart-up and ramp-up times, a wider base of applications suppliers, and reduction in system meantime to repair (MTTR). The document is designed for technical managers and staff, applicationdevelopers, and CIM Framework component suppliers.

Keywords: CIM, Frameworks, Interoperability Standards, Manufacturing Execution Systems, Object OrientedSystems, Specifications, Software Reuse

Approvals: David Doscher, EditorScott Hawker, Project ManagerGary Gettel, DirectorDan McGowan, Technical Information Transfer Team Leader

iii

Technology Transfer # 93061697J-ENG SEMATECH

Table of Contents

1 EXECUTIVE SUMMARY ....................................................................................................................................1

2 INTRODUCTION ..................................................................................................................................................32.1 Intended Audience ........................................................................................................................................42.2 How to Use This Specification .....................................................................................................................52.3 Framework Rationale....................................................................................................................................62.4 Framework Benefits......................................................................................................................................82.5 CIM Framework Scope.................................................................................................................................9

2.5.1 Functional Scope..............................................................................................................................92.5.2 Relationship to Object Management Group Specifications .............................................................9

2.6 Specification Notation Overview................................................................................................................102.6.1 Graphical Notations .......................................................................................................................11

2.6.1.1 Component Relationship Model .....................................................................................................112.6.1.2 Component Information Model ......................................................................................................112.6.1.3 Component Interaction Diagram ....................................................................................................122.6.1.4 Object Dynamic Model ..................................................................................................................132.6.1.5 Object State Tables.........................................................................................................................15

2.6.1.5.1 Object State Definitions and Query Table ......................................................................152.6.1.5.2 Object State Transition Tables........................................................................................15

2.6.2 Textual Notations...........................................................................................................................162.6.2.1 OMG Interface Definition Language..............................................................................................162.6.2.2 CIM Framework Interface Specification Format............................................................................182.6.2.3 Interface Specification Example.....................................................................................................19

2.7 Industry Standards and Programs ...............................................................................................................21

3 JOB ARCHITECTURE........................................................................................................................................223.1 Functional Architecture versus Interface Designs.......................................................................................223.2 Factory Hierarchy .......................................................................................................................................22

3.2.1 Hierarchical Task Structure ...........................................................................................................233.3 Job Control Architecture.............................................................................................................................25

3.3.1 Job Structure ..................................................................................................................................263.3.2 Jobs and Job Supervisors ...............................................................................................................263.3.3 Hierarchical Job Structure .............................................................................................................263.3.4 Job Control Component .................................................................................................................273.3.5 CIM Framework Job Structure ......................................................................................................283.3.6 Coordinated Threads of Tasks .......................................................................................................293.3.7 Production History, Process History and Equipment History ........................................................31

3.4 Job Architecture-Level Design ...................................................................................................................323.4.1 Design Goals..................................................................................................................................323.4.2 What is a Job?................................................................................................................................323.4.3 Where do Job Supervisors (and Jobs) fit within the CIM Framework...........................................323.4.4 General Principles of Job Supervision ...........................................................................................333.4.5 Companion Interfaces ....................................................................................................................35

3.4.6 Factory Job Supervisor − Relationship to Scheduler and Dispatcher. ...........................................35

3.4.7 Components Versus Classes ..........................................................................................................353.4.8 Lot Versus Factory Job ..................................................................................................................363.4.9 Area Supervision............................................................................................................................363.4.10 Process Specification .....................................................................................................................36

iv

SEMATECH Technology Transfer # 93061697J-ENG

3.4.11 Structural Detail .............................................................................................................................373.4.11.1 Recursive Structure ........................................................................................................................373.4.11.2 JobRequestor Companion Interface................................................................................................38

4 CIM FRAMEWORK INTERFACES...................................................................................................................394.1 Global Definitions ......................................................................................................................................40

4.1.1 Global Type Definitions ................................................................................................................404.1.2 Global Exception Definitions.........................................................................................................50

4.2 Application Objects ....................................................................................................................................514.3 Base Interfaces............................................................................................................................................53

4.3.1 Resource Abstract Interface Group................................................................................................534.3.1.1 Interface: NamedEntity...................................................................................................................544.3.1.2 Interface: OwnedEntity...................................................................................................................554.3.1.3 Interface: Resource.........................................................................................................................564.3.1.4 Interface: ComponentManager .......................................................................................................59

4.3.2 Job Supervisor Abstract Interface Group .......................................................................................634.3.2.1 Interface: JobSupervisor ...............................................................................................................654.3.2.2 Interface: Job ................................................................................................................................684.3.2.3 Interface: JobRequestor ................................................................................................................71

4.4 Factory Services..........................................................................................................................................734.4.1 Document Management Component..............................................................................................74

4.4.1.1 DocumentManager .........................................................................................................................754.4.1.2 Interface: DocumentSpecification .................................................................................................774.4.1.3 Interface: DocumentRevision .........................................................................................................79

4.4.2 Version Management Component..................................................................................................824.4.2.1 Interface: VersionManager .............................................................................................................834.4.2.2 Interface: ChangeNotice .................................................................................................................84

4.4.3 Time Services ................................................................................................................................874.4.4 Event Broker ..................................................................................................................................88

4.4.4.1 Interface: EventBroker ...................................................................................................................89

4.4.5 History Management Facility.........................................................................................................914.4.5.1 Interface: HistoryCollection ..........................................................................................................934.4.5.2 Interface: History...........................................................................................................................94

4.5 Factory Management Group .......................................................................................................................964.5.1 Factory Component........................................................................................................................98

4.5.1.1 Interface: MESFactory .................................................................................................................1004.5.1.2 Interface: Area..............................................................................................................................1064.5.1.3 Interface: FactoryCalendar ...........................................................................................................1084.5.1.4 Interface: PolicyVariable..............................................................................................................1104.5.1.5 Interface: MachineRegister..........................................................................................................113

4.5.2 Factory Operations Component ...................................................................................................1144.5.2.1 Interface: FactorySupervisor ......................................................................................................1164.5.2.2 Interface: LotJob.........................................................................................................................1174.5.2.3 Interface: LotJobExecutor ..........................................................................................................119

4.5.3 Enterprise Abstract Interface .......................................................................................................1204.5.3.1 Interface: EnterpriseExecutor .....................................................................................................1214.5.3.2 Interface: ProductRequest ..........................................................................................................122

4.5.4 Product Request Management Component ..................................................................................1254.5.4.1 Interface: ProductRequestManager ............................................................................................1264.5.4.2 Interface: ProductRequestJob .....................................................................................................1274.5.4.3 Interface: ProductRequestExecutor ............................................................................................128

4.5.5 Product Release Component ........................................................................................................1294.5.5.1 Interface: ProductReleaseManager ...............................................................................................131

v

Technology Transfer # 93061697J-ENG SEMATECH

4.6 Material Management Group....................................................................................................................1334.6.1 Material Management Abstract Interface Group..........................................................................134

4.6.1.1 Interface: Material ........................................................................................................................1354.6.1.2 Interface: MaterialGroup ..............................................................................................................136

4.6.2 Product Management Component................................................................................................1384.6.2.1 Interface: ProductManager ...........................................................................................................1394.6.2.2 Interface: Product .........................................................................................................................1434.6.2.3 Interface: Wafer............................................................................................................................1524.6.2.4 Interface: Die................................................................................................................................1534.6.2.5 Interface: Package.........................................................................................................................1544.6.2.6 Interface: Lot ................................................................................................................................1554.6.2.7 Interface: LotFamily.....................................................................................................................1674.6.2.8 Interface: ProcessGroup ...............................................................................................................169

4.6.3 Durable Management Component ...............................................................................................1704.6.3.1 Interface: DurableManager...........................................................................................................1724.6.3.2 Interface: Durable.........................................................................................................................1744.6.3.3 Interface: ProcessDurable.............................................................................................................1774.6.3.4 Interface: MaterialContainer.........................................................................................................1784.6.3.5 Interface: PositionalContainer ......................................................................................................1804.6.3.6 Interface: Cassette.........................................................................................................................1824.6.3.7 Interface: TransportGroup ............................................................................................................183

4.6.4 Consumable Management Component.........................................................................................1854.6.4.1 Interface: ConsumableManager....................................................................................................1864.6.4.2 Interface: Consumable..................................................................................................................187

4.6.5 Inventory Region Management Component.................................................................................1884.6.5.1 Interface: InventoryRegionManager.............................................................................................1914.6.5.2 Interface: InventoryRegionSystem ...............................................................................................1934.6.5.3 Interface: InventoryRegion...........................................................................................................1954.6.5.4 Interface: LotRegion.....................................................................................................................2004.6.5.5 Interface: RegionSensor ...............................................................................................................204

4.6.6 Bill of Material Specification Component ...................................................................................2064.6.6.1 Interface: BOMSpecificationManager..........................................................................................2074.6.6.2 Interface: BOMSpecification........................................................................................................2084.6.6.3 Interface: BOMBody ....................................................................................................................209

4.6.7 Product Specification Management Component..........................................................................2104.6.7.1 Interface: ProductSpecificationManager ......................................................................................2114.6.7.2 Interface: ProductSpecification ....................................................................................................212

4.7 Process Specification Management Group ...............................................................................................2134.7.1 Process Specification Management Component ..........................................................................214

4.7.1.1 Interface: ProcessSpecificationManager.......................................................................................2164.7.1.2 Interface: ProcessFlowIterator......................................................................................................2174.7.1.3 Interface: ProcessOperationSpecification.....................................................................................2194.7.1.4 Interface: ProcessFlowContext .....................................................................................................2214.7.1.5 Interface: ProcessOperation..........................................................................................................222

4.7.2 Process Capability Management Component...............................................................................2244.7.2.1 Interface: ProcessCapabilityManager ...........................................................................................2254.7.2.2 Interface: ProcessCapability .........................................................................................................226

4.8 Material Movement ..................................................................................................................................2274.8.1 Material Movement Abstract Interface Group .............................................................................227

4.8.1.1 Interface: TransportJobSupervisor...............................................................................................2284.8.1.2 Interface: TransportJob................................................................................................................2314.8.1.3 Interface: MaterialMovementController......................................................................................233

4.8.2 Material Movement Component ..................................................................................................2344.8.2.1 Interface: MaterialMovementManager ........................................................................................235

4.9 Machine Control Group ............................................................................................................................2364.9.1 Machine Management Group.......................................................................................................237

4.9.1.1 Interface: SupportResource .........................................................................................................239

vi

SEMATECH Technology Transfer # 93061697J-ENG

4.9.1.2 Interface: MachineResource ........................................................................................................2404.9.1.3 Interface: Machine.......................................................................................................................2424.9.1.4 Interface: ProcessMachine...........................................................................................................2454.9.1.5 Interface: ProcessMachineJob .....................................................................................................2484.9.1.6 Interface: ProcessResource..........................................................................................................2494.9.1.7 Interface: Port ..............................................................................................................................2514.9.1.8 Interface: MaterialTrackingLocation ...........................................................................................2564.9.1.9 Interface: Sensor..........................................................................................................................258

4.9.2 Recipe Management Component .................................................................................................2594.9.2.1 Interface: MachineRecipe............................................................................................................2614.9.2.2 Interface: RecipeNamespaceManager..........................................................................................2624.9.2.3 Interface: RecipeNamespace........................................................................................................2644.9.2.4 Interface: RecipeControl.............................................................................................................267

4.9.3 Resource Tracking Component....................................................................................................2694.9.3.1.1 Interface: ResourceTrackingManager..........................................................................2704.9.3.1.2 Interface: PMSpecification ..........................................................................................2734.9.3.1.3 Interface: PMJob..........................................................................................................275

4.10 Advanced Process Control Group.............................................................................................................2764.10.1 Plugin Management Component..................................................................................................278

4.10.1.1 Interface: PluginFactory .............................................................................................................2794.10.1.2 Interface: PluginManager ............................................................................................................2804.10.1.3 Interface: Plugin ..........................................................................................................................281

4.10.2 Plugin Execution Component ......................................................................................................2824.10.2.1 Interface: PluginExecutor ............................................................................................................283

4.10.3 Control Management Component ................................................................................................2844.10.3.1 Interface: ControlManager ...........................................................................................................2854.10.3.2 Interface: ControlStrategyFactory ...............................................................................................2864.10.3.3 Interface: RunningControlStrategyFactory..................................................................................2874.10.3.4 Interface: ControlStrategy ............................................................................................................2884.10.3.5 Interface: RunningControlStrategy..............................................................................................289

4.10.4 Control Execution Component.....................................................................................................2904.10.4.1 Interface: ControlExecutionManager ...........................................................................................2914.10.4.2 Interface: ControlExecutor ...........................................................................................................292

4.10.5 Data Collection Plan Management Component ...........................................................................2934.10.5.1 Interface: DataCollectionPlanFactory...........................................................................................2954.10.5.2 Interface: DataCollectionPlanManager.........................................................................................296

4.10.6 Control Database Component ......................................................................................................2974.10.6.1 Interface: ControlDatabaseManager ............................................................................................2984.10.6.2 Interface: ControlData .................................................................................................................2994.10.6.3 Interface: DataCollector ..............................................................................................................300

4.11 Schedule Management Group...................................................................................................................3014.11.1 Dispatching Component...............................................................................................................302

4.11.1.1 Interface: DispatchingManager.....................................................................................................3044.11.1.2 Interface: Dispatcher.....................................................................................................................3054.11.1.3 Interface: DispatchList .................................................................................................................3064.11.1.4 Interface: DispatchDecision..........................................................................................................307

4.12 Factory Labor Group ................................................................................................................................3084.12.1 Person Management Component .................................................................................................310

4.12.1.1 Interface: PersonManager.............................................................................................................3114.12.1.2 Interface: Person...........................................................................................................................3134.12.1.3 Interface: QualificationData .........................................................................................................323

4.12.2 Skill Management Component.....................................................................................................3244.12.2.1 Interface: SkillManager ................................................................................................................3254.12.2.2 Interface: Skill ..............................................................................................................................3264.12.2.3 Interface: SkillRequirement..........................................................................................................328

vii

Technology Transfer # 93061697J-ENG SEMATECH

APPENDIX A Glossary.........................................................................................................................................329

APPENDIX B Acronyms ......................................................................................................................................335

APPENDIX C References .....................................................................................................................................337

APPENDIX D CIM Framework Events ................................................................................................................339

APPENDIX E Scenario Examples ........................................................................................................................373E.1 Factory Operations Scenario.....................................................................................................................381E.2 Product Request Scenario .........................................................................................................................382

viii

SEMATECH Technology Transfer # 93061697J-ENG

List of Figures

Figure 1 Component Relationship Model............................................................................................................11

Figure 2 Information Model Example .................................................................................................................12

Figure 3 Component Interaction Diagram Example............................................................................................13

Figure 4 Harel State Chart...................................................................................................................................13

Figure 5 Harel State Chart Example....................................................................................................................14

Figure 6 Object Dynamic Model .........................................................................................................................14

Figure 18 Resource Abstract Interface Group Information Model........................................................................53

Figure 19 Resource Dynamic Model.....................................................................................................................58

Figure 20 Component Manager Dynamic Model ..................................................................................................60

Figure 21 Job Supervision Abstract Interface Group ............................................................................................63

Figure 22 Job Dynamic Model ..............................................................................................................................70

Figure 23 Job Supervision Scenario ......................................................................................................................72

Figure 24 Document Management Component Information Model......................................................................74

Figure 25 DocumentRevision Dynamic Model .....................................................................................................80

Figure 26 Version Management Component Information Model..........................................................................82

Figure 27 ChangeNotice Dynamic Model.............................................................................................................85

Figure 28 Event Management Services Information Model..................................................................................88

Figure 29 History Management Facility Information Model.................................................................................92

Figure 30 Factory Management Group Component Relationships........................................................................97

Figure 31 Factory Component Information Model................................................................................................99

Figure 32 MESFactory Dynamic Model .............................................................................................................102

Figure 33 Factory Operations Component Information Model ...........................................................................115

Figure 34 Enterprise Abstract Interface Information Model ...............................................................................120

Figure 35 ProductRequest Dynamic Model ........................................................................................................123

Figure 36 Product Request Management Information Model .............................................................................125

Figure 37 Product Release Component Information Model ................................................................................129

Figure 38 Product Release Component Interaction Diagram ..............................................................................130

Figure 39 Material Management Abstract Interface Group.................................................................................134

Figure 40 Product Management Component Information Model........................................................................138

Figure 41 Product Dynamic Model .....................................................................................................................145

Figure 42 Lot Dynamic Model ............................................................................................................................159

Figure 43 Durable Management Component Information Model .......................................................................171

Figure 44 Durable Dynamic Model.....................................................................................................................176

Figure 45 Consumable Management Component Information Model ................................................................185

Figure 46 Inventory Region Manager Component Information Model...............................................................190

ix

Technology Transfer # 93061697J-ENG SEMATECH

Figure 47 Bill of Material Specification Component Information Model ...........................................................206

Figure 48 Product Specification Management Component Information Model..................................................210

Figure 49 Process Specification Management Component Relationships...........................................................213

Figure 50 Process Specification Management Component Information Model ..................................................214

Figure 51 Process Capability Component Information Model ............................................................................224

Figure 52 Material Movement Information Model..............................................................................................227

Figure 53 Machine Control Group Component Relationships ............................................................................236

Figure 54 Machine Management Group Information Model...............................................................................237

Figure 55 Process Machine and Process Machine Job ........................................................................................238

Figure 56 State Model for Port............................................................................................................................252

Figure 57 Factory Level Recipe Management.....................................................................................................259

Figure 58 Resource Tracking Information Model ...............................................................................................269

Figure 59 Process Control Group ........................................................................................................................276

Figure 60 Plugin Management Component Information Model..........................................................................278

Figure 61 Plugin Execution Component Information Model ..............................................................................282

Figure 62 Control Management Component Object Model ................................................................................284

Figure 63 Control Execution Component............................................................................................................290

Figure 64 DataCollectionPlanManager Component............................................................................................293

Figure 65 Control Database Component Information Model ..............................................................................297

Figure 66 Schedule Management Group Component Relationships ...................................................................301

Figure 67 Dispatching Component Information Model.......................................................................................303

Figure 68 Factory Labor Group Component Relationships.................................................................................309

Figure 69 Person Management Component Information Model .........................................................................310

Figure 70 Person Dynamic Model.......................................................................................................................318

Figure 71 Skill Management Component Information Model.............................................................................324

Figure 72 Factory Operations Scenario ...............................................................................................................381

Figure 73 Product Request Scenario ...................................................................................................................382

x

SEMATECH Technology Transfer # 93061697J-ENG

List of Tables

Table 1 Industry Trends .......................................................................................................................................7

Table 2 Object State Definitions and Query Table Example .............................................................................15

Table 3 Object State Transition Table Example ................................................................................................15

Table 4 Abstract Interface..................................................................................................................................52

Table 5 Resource State Transition Table ...........................................................................................................58

Table 6 ComponentManager State Definitions and Query Table.......................................................................61

Table 7 ComponentManager State Transition Table..........................................................................................62

Table 8 DocumentRevision State Definitions and Query Table.........................................................................80

Table 9 DocumentRevision State Transition Table............................................................................................81

Table 10 ChangeNotice State Definitions and Query Table ................................................................................85

Table 11 ChangeNotice State Transition Table ...................................................................................................86

Table 12 MESFactory State Definitions and Query Table.................................................................................103

Table 13 MESFactory State Transition Table ....................................................................................................104

Table 14 ProductRequest State Definitions and Query Table ............................................................................124

Table 15 ProductRequest State Transition Table ...............................................................................................124

Table 16 Product State Definition and Query Table ..........................................................................................146

Table 17 Product State Transition Table............................................................................................................148

Table 18 Lot State Definition and Query Table .................................................................................................160

Table 19 Lot State Transition Table ..................................................................................................................162

Table 20 Port State Definiton and Query Table .................................................................................................252

Table 21 Port State Transition Table .................................................................................................................254

Table 22 Person State Definitions and Query Table ..........................................................................................319

Table 23 Person State Transition Table .............................................................................................................321

xi

Technology Transfer # 93061697J-ENG SEMATECH

Acknowledgements

The editor recognizes the efforts of the people, past and present, who have worked to develop theCIM Framework Architecture and Specification documents since1991. The continued efforts bythe supporting companies, and more importantly the dedicated individuals from those companies,has resulted in a CIM-based architecture for MES that has wide recognition in the industry. Thefollowing is a list of SEMATECH personnel and member company assignees who contributed tothe CIM Framework over the years:

SEMATECH: AMD: AT&T: Digital:

Dale Blackwell

Jim Hollister

Carla Jobe Partington

Margaret Pratt

Fred Waskiewicz

Alan Weber

Terry Bush

Tony Mullins

Frank Yeager Prabhat Deosthali

IBM: INTEL: Motorola: NationalSemiconductor:

David Doscher

Ken Freed

Karl Gartland

Dave Jacobs

Alan Moser

John O’Conner Jeff Acklen

Scott Hawker

Mark Leonard

Lance Rist

Pete Whelan

Paul McGuire

Vinayak Parikh

Texas Instruments:

Marv Aardal

Lawrence Eng

Bob Hodges

Glenn Hollowell

David Richardson

The efforts of individuals too numerous to list—at member company home locations, suppliercompanies, academic and government facilities—in developing the CIM Framework are alsodeeply appreciated.

Thank you!

Executive Summary 1

Technology Transfer # 93061697J-ENG SEMATECH

1 EXECUTIVE SUMMARY

This document is a detailed specification of an application framework for the computerintegrated manufacturing (CIM) systems used in semiconductor factories. A framework is asoftware infrastructure that creates a common environment for integrating applications andsharing information in a given domain. The purpose of this framework is to establish an industrystandard architecture for these complex manufacturing systems, leading to an open, multisupplierCIM system environment. The framework described in this specification is called the CIMFramework.

Because of the ever-increasing complexity of semiconductor devices and manufacturingprocessing, the production and process control capabilities provided by CIM systems areessential for the smooth management of semiconductor factories. However, today’s CIM systemsgenerally are large, monolithic, and difficult to enhance or extend, having evolved over manyyears to support the particular needs of an individual company or factory. This results in highsupport costs and long delays to add new functionality, which in turn leads to low manufacturingcustomer satisfaction and low development/support staff morale.

The CIM Framework defined by this specification addresses many of these problems and charts apath to the next generation of semiconductor manufacturing systems software by the following:

• Providing a reusable, integrated system design that clearly specifies the functional scope,interface boundaries, and standard information model of the required components ofsemiconductor manufacturing systems

• Identifying CIM functionality common to all semiconductor manufacturing

• Basing implementation on advanced but proven open software technologies and standards

Significant industry adoption will provide manufacturing end users with a number of benefits.These include increased programmer productivity, reduced cost and cycle time for newapplication development, shorter times for initial factory start-up and ramp-up to productionyields, and finally, a wider base of manufacturing applications suppliers from which to choose.

This document is designed to meet very specific needs of four principal audiences within amanufacturing systems organization: technical managers, system architects and engineers,application software developers and integrators, and standards developers. Moreover, they maybe found in a variety of companies: semiconductor manufacturers, software product suppliers,system integrators, research consortia, and equipment suppliers, to name a few.

To support this breadth of potential customers, the document is organized in the following majorsections.

Section Purpose

1, 2 An introduction appropriate to all audiences.

2

3

How the CIM Framework relates to and uses the Object Management Architecture (OMA). Asummary of notation used in the specification.

CIM Framework use of Job concepts that cross functional boundaries.

4 CIM Framework detailed design information, including interface definitions.

Appendixes Glossary, acronyms, references, events.

Executive Summary

SEMATECH Technology Transfer # 93061697J-ENG

2

The CIM Framework Specification must continue to evolve to meet the needs of a competitiveand vital industry. The contents of this version represents a significant amount of realdevelopment experience from a number of commercial software suppliers and their customers,and parts of it reflect the product architectures of those companies.

The role of SEMATECH in the continued development of the CIM Framework will diminish asof this release. The continued evolution of the CIM Framework will be carried on throughindustry efforts such as MES product development and installation, and work in various industryorganizations (e.g., SEMI, Object Management Group [OMG], etc.).

Technical assistance for users of this document is available from:

[email protected].

Introduction 3

Technology Transfer # 93061697J-ENG SEMATECH

2 INTRODUCTION

The CIM Framework was created by SEMATECH to benefit its members and the overallindustry in the following ways:

• Reduce new Manufacturing Execution System (MES) applicationdevelopment/integration cost and cycle time through adoption of a pre-designedand pre-integrated system architecture.

• Reduce new factory ramp-up time because of faster equipment and factoryintegration (e.g., make data collection and analysis tools available withoutintegration delays).

• Provide a stronger, broader base of viable application suppliers (especiallyinnovative, niche-oriented companies).

• Increase productivity of member company CIM system support teams because thesoftware is easier to fix and enhance (with limited side effects).

The CIM Framework defines a framework of components that provide the functionality commonacross CIM applications and enables integration of those applications. The framework ofcomponents does not, by itself, provide all the functionality of an integrated CIM system.Framework components are designed to be specialized and extended with additional functionsand behaviors added (as additional application objects) to provide the specific functionalityneeded for a given CIM product or solution. The CIM Framework specifies only those portionsof a CIM system necessary for standard application integration. It leaves the rest of the systemunspecified so suppliers and users have the flexibility to address product-specific and site-specific needs.

The heart of the framework is a set of semiconductor manufacturing abstractions (e.g., Wafer,Process Specification, Machine) and services (e.g., get wafer location, set specificationparameter, get machine utilization) that are typically embodied in applications (e.g., materialmanagement, specification management, machine control) and delivered on distributed computerplatforms (e.g., workstations, servers) that use standard software system technologies (e.g.,communications, database, user interface). The current CIM Framework is specifically targeted atmanufacturing information management and control for both the planning and operational phasesof semiconductor wafer fabrication.

Much of this specification may also be applicable to other manufacturing environments, such assilicon die packaging and printed wiring board assembly. Related activities targeting theseenvironments will provide the basis for future convergence of the common aspects of MESframework specifications.

This introductory section provides a description of the intended audience, a discussion of therationale for and benefits of CIM Framework use, guidance on the use of this document, anoverview of the CIM Framework functional scope, and a brief explanation of the graphical andtextual notations used to specify the framework.

4 Introduction

SEMATECH Technology Transfer # 93061697J-ENG

2.1 Intended Audience

The framework specification is intended to address the needs of the following CIM technologists:

• Technical development and support managers

• System architects and engineers

• Application developers and integrators

• Standards developers

These groups may be found in a variety of organizations, including semiconductormanufacturers, software product suppliers, system integrators, equipment suppliers, standardsorganizations, universities, national laboratories, and other research organizations.

Technical CIM managers are responsible for managing the development, delivery, andintegration of complex manufacturing software applications. They can use the CIM Frameworkspecification to plan and organize the development activities and guide component testing andvalidation. Moreover, those who buy some of their software from external sources can use it as apurchasing guide when discussing system architecture and integration requirements withpotential suppliers.

System architects and engineers are responsible for overall system design, including selection ofindustry standards for computing and communications infrastructure, software developmentprocesses, product roadmaps, and related topics. They can make extensive use of the CIMFramework as a starting point for many of their roles, including the partitioning and allocation ofapplication functions to specific modules, definition of the boundary between the distributedsystem infrastructure and the rest of the system, and specification of open interfaces between theportions of the system they are designing and the external environment. They can also use it todefine a strategic system roadmap for migration to an open, distributed system environment.

Application developers and integrators must produce, install, and support software applicationsfor semiconductor manufacturing. The CIM Framework specification, in conjunction with aspecific framework “binding” (i.e., target computer system hardware and software technologies),represents a set of detailed design requirements for the application developer. At a minimum, theCIM Framework defines the scope and boundaries of the essential standard components of amanufacturing system and can be used principally as an interface specification. However, theobject models can also be used in the internal design of new applications and/or legacyintegration “wrappers,” accelerating the development process even further. Finally, thespecification can form the basis for creating an independent set of tests necessary to verifyconformance.

Finally, standards developers are responsible for defining the public interfaces and sharedinformation models that allow the many software products found in a modern semiconductorfactory to work together. They can use the CIM Framework as an open source of information forestablishing precise definitions for the many items in a factory that must be represented inmultiple suppliers’ products, including standards for partitioning and communicating withcomplex equipment; product and raw material attributes and relationships; process definitionsand routings; equipment data sampling schemes and storage schema; educational and medicalattributes of people; and many others.

Introduction 5

Technology Transfer # 93061697J-ENG SEMATECH

2.2 How to Use This Specification

This document provides information about the CIM Framework in varying levels of detail. CIMmanagers should read the Executive Summary and this section. All others should read the entiredocument, especially application developers and framework developers. A brief description ofeach section is given below.

• Section 1 provides an executive summary of the CIM Framework.

• Section 2 contains introductory information and an overview of the CIMFramework specifications.

• Section 3 presents an explanation of the CIM Framework’s use of factory jobsupervision concepts.

• Section 4 contains the CIM Framework specifications representing interfaces andbehaviors to be provided by conformant product implementations. This is themain body of the CIM Framework. The subsections containing the actual CIMFramework specifications are as follows:

Subsection 4.1 contains the Global Definitions of types and exceptions that arereferenced throughout the remaining specifications.

Subsection 4.2 contains information on Application Objects and AbstractInterface.

Subsection 4.3 contains the Abstract Base Interfaces inherited by other morespecific interface types to provide common behaviors.

Subsection 4.4 specifies the components that provide Factory Services such asdocument and history management.

Subsection 4.5 specifies components to provide the Factory Managementfunctionality which represents the factory as a whole.

Subsection 4.6 specifies components for Material Management, includingcomponents dealing with products, durables, consumables.

Subsection 4.7 specifies Process Specification components that enable accessto process operation specifications and support their use by factory jobs.

Subsection 4.8 specifies abstract interfaces and components for MaterialMovement.

Subsection 4.9 specifies components that provide the MES-level MachineControl capability for representing machines, process jobs, and recipes.

Subsection 4.10 specifies Advanced Process Control components.

Subsection 4.11 specifies components for Schedule Management fordispatching work within the factory.

Subsection 4.12 specifies components for Factory Labor Management torepresent the capabilities of persons who act as operators within the factory.

• Appendix A provides a glossary.

• Appendix B provides a list of acronyms.

6 Introduction

SEMATECH Technology Transfer # 93061697J-ENG

• Appendix C provides citations for other specifications or documents referencedwithin the CIM Framework.

• Appendix D provides a summary list of the CIM Framework defined events.

Finally, for a complete explanation of the CIM Framework technical architecture see thecompanion document, Computer Integrated Manufacturing (CIM) Framework ArchitectureConcepts, Principles, and Guidelines, Version 1.0 (Technology Transfer#97103379A-ENG)[CIMArch].

2.3 Framework Rationale

Semiconductor production and process control systems must continuously evolve to meet thechanging technical and business requirements of this industry. Moreover, most semiconductormanufacturers prefer to purchase commercial MES solutions since software products are nottheir core business. At the same time, these manufacturers want to retain the option ofdeveloping competitive-advantage portions of their factory software in-house or mixing productsfrom multiple suppliers to best suit their particular needs. However, the technologies on whichmost current CIM systems are based do not support these requirements. Even if they did, it isunlikely (and undesirable) to expect a small number of suppliers to support the entire globalindustry with closed, proprietary system products.

Current semiconductor CIM systems can generally be classified as large, monolithic, centralizedsystems with small distributed islands of automation. The problems associated with thesesystems are numerous:

• Limited functionality

• Limited flexibility

• Low level of integration

• High development and maintenance costs

• High purchase, installation, and operational costs

Recently, a number of technological advances have occurred that can provide significant leveragein dealing with these problems. These advances, listed in Table 1, collectively represent afundamental paradigm shift affecting virtually every dimension of manufacturing and computerscience.

From a manufacturing science standpoint, there is a major shift to more flexible and agilesystems able to produce specialized products in less time using lean production strategies. Withinsemiconductor manufacturing, there is a trend toward the use of cluster tools that are able toperform a new generation of fast, tightly controlled processes on a single wafer.

From a computer science standpoint, there is a migration away from centralized mainframe-based architectures to distributed client-server and peer-to-peer architectures. A new generationof high performance computer, network, and storage technologies is facilitating the delivery ofrobust applications at the point of most need. Finally, and perhaps most importantly, arevolutionary new approach to software engineering, object-oriented technology, has emergedthat can enable the promise of all of these advances to be realized. This new approach is based onseveral fundamental principles of good software engineering.

Introduction 7

Technology Transfer # 93061697J-ENG SEMATECH

The most important of these principles, abstraction, involves modeling an application domain(e.g., semiconductor manufacturing) as a set of object abstractions (e.g., Product) withwell-defined service interfaces (e.g., continueProcessing), and encapsulated state and behavior.Objects provide a higher, more understandable, and more stable level of abstraction thantraditional data and procedural abstractions. The principle of encapsulation hides theimplementation details of an object, which makes it easier to change while minimizing theimpact of change on the rest of the system. Inheritance and polymorphism are additionalobject-oriented concepts that enable the generation of reusable software components. A detaileddescription of the object-oriented approach to software development is beyond the scope of thisspecification, but numerous excellent references are available in any bookstore with a computerscience section.

Table 1 Industry Trends

Technology Industry Trend/Paradigm Shift

Manufacturing Agility/FlexibilityLean ProductionShort Cycle Time

Equipment Cluster ToolsVacuum Processing

Single Wafer Processing

Process In Situ SensorsIn Situ Process Control

Rapid Thermal Processing

Architecture DistributedClient-ServerPeer-To-Peer

Software Object TechnologyFramework Technology

Wrapper TechnologyGraphical User Interfaces

Hardware Hi-Performance CPUs (RISC, SMP)Hi-Performance Comm (FDDI)

Hi-Performance/Cap/Rel Disk (RAID)

Object technology is becoming pervasive in all aspects of software engineering from analysis anddesign methods to programming languages and user interfaces. Significant improvements insoftware development productivity, quality, and maintenance have been reported from manyusers and projects using the technology.

Recently, a more advanced object-oriented architectural concept called a framework hasemerged. Frameworks facilitate the coordinated reuse of large collections of related objects. Thenet effect is to amplify the benefits obtained at the object level by expanding them to the module,application, and system level. Frameworks provide even higher levels of abstraction (collectionsof object abstractions), encapsulation (of whole sets of objects), and reuse (of whole objectmechanisms) than objects in and of themselves. The availability of a powerful new approach tosoftware engineering, coupled with the simultaneous occurrence of several major shifts inmanufacturing and computer science, provides an unparalleled opportunity for dramatic

8 Introduction

SEMATECH Technology Transfer # 93061697J-ENG

improvement in all aspects of semiconductor CIM. The goal of the CIM Framework is to seizethis opportunity by creating a common, modular, flexible, integrated object model that unifiesthese new concepts in an open, multi-supplier CIM system environment.

2.4 Framework Benefits

Many of the production concepts and system engineering advances discussed in Section 2.3 willbe necessary to keep the industry on its historical productivity improvement curve. The existenceof a common reference model will benefit the entire industry. Everyone from CIM managers toprocess engineers will benefit.

Benefits for the CIM manager include the following:

• A competitive and complementary manufacturing application market that enables “buyversus build” decisions

• Modular applications

• The ability to focus on commercial application integration rather than in-house development

• The need to develop only those applications that provide distinct competitive advantage

• Confidence that underperforming applications can be replaced

Benefits for the development manager include the following:

• The opportunity to focus on site-specific capability

• Support for purchased applications can be outsourced

Benefits for the applications programmer and system engineer are as follows:

• The opportunity to focus on new application functionality

• No more need to “reinvent the wheel”

• The ability to focus on assembly of components

Benefits for the systems integrator are as follows:

• The ability to focus on system services, not application functionality

• Well-defined interfaces that reduce custom content and enable higher reuse of integrationcode

Benefits for the standards developer include the following:

• Identification of the component boundaries that must be supported

• Detailed description of complete factory behavior as an integrated context for standardsdevelopment

Introduction 9

Technology Transfer # 93061697J-ENG SEMATECH

Benefits for the process engineer are as follows:

• An integrated CIM environment

• Easier access to manufacturing data

• A means for automating repetitive decision making and control practices

2.5 CIM Framework Scope

2.5.1 Functional Scope

The CIM Framework Specification defines a set of functional components designed to worktogether to form an integrated manufacturing system. The components of the CIM FrameworkSpecification are grouped below by application area.

Factory Services Machine Control Advanced Process Control

• Document Management • Machine Management • PlugIn Management

• Version Management • Recipe Management • PlugIn Execution

• History Management • Resource Tracking • Control Management

• Event Broker • Control Execution

Material Management • Control Database

Factory Management • Product Management • Data Collection Plan

• Factory • Durable Management

• Product Release • Consumable Management Process Specification Management

• Factory Operations • Inventory Region • Process Specification

• Product Request • Product Specification • Process Capability

• Bill of Material

Factory Labor Schedule Management

• Person Management Material Movement • Dispatching

• Skill Management • Material Movement

Multiple levels of packaging framework functionality are supported by the specification so that avariety of applications from multiple suppliers with potentially intersecting capabilities can beaccommodated. This means that, given a specific framework binding to a set of computer andsoftware system technologies, an application can be instantiated and executed in thisenvironment and will register itself as a set of well known objects that provide a core set offramework specified services.

2.5.2 Relationship to Object Management Group Specifications

The specifications of the CIM Framework are related to the specifications adopted by the ObjectManagement Group [OMA][CORBA] in a number of ways. The CIM Framework Specificationsmust be considered in the context of this larger collection of software specifications to get acomplete understanding of the specified interfaces. Wherever possible, the CIM Framework

10 Introduction

SEMATECH Technology Transfer # 93061697J-ENG

focuses on semiconductor domain-specific interfaces and defers specifications for infrastructureor generic software services and facilities to the OMG.

Where existing OMG specifications satisfy CIM Framework requirements, the details of theOMG specification are only summarized. The reader is referred to the original source OMGdocument for a complete description of the technology.

Where the existing OMG specifications only partially meet CIM Framework requirements, theneeded enhancements to the OMG specification are fully defined in this document. It isSEMATECH’s intention to influence the OMG and software suppliers to revise thecorresponding OMG specification to incorporate those enhancements. The CIM FrameworkSpecification will be updated to reference the OMG specification when it is revised to addressthe requirements delta.

Where existing OMG specifications do not meet CIM Framework requirements, or if an OMGspecification does not exist in the needed area, a complete definition of necessary interfaces isdefined in this document. Again, it is SEMATECH’s intention to work within the OMG processto express MES requirements for future adoption of OMG specifications to fill in the missingtechnology. The CIM Framework Specification will be revised accordingly when the OMGspecification satisfies the existing requirements.

Finally, the OMG is planning to issue specifications in the future that have direct relevance to themanufacturing domain. In those cases, the future OMG technology adoptions have been noted.The CIM Framework Specification will be revised to use general OMG specifications for themanufacturing domain wherever possible and specify only the specializations necessary for thesemiconductor manufacturing industry.

2.6 Specification Notation Overview

This part of the introduction provides an overview of the notations chosen to express the CIMFramework Specification. Readers familiar with these topics may wish to skip this section. Thissection is a reference rather than a tutorial. Hence, those unfamiliar with these topics are stronglyencouraged to consult the materials listed in the references for a more thorough explanation.

CIM manufacturing systems requirements and the architectural principles upon which the CIMFramework development was founded were derived through use of industry standards, practicesreported in the literature, and other state-of-the-art information. The requirements and principlescontained in this specification are described using a combination of graphical and textualnotations. Where applicable, methods were employed and notations developed through the use ofcomputer-aided software engineering tools.

The section briefly describes the graphical notations used to describe the framework in thisspecification, including the following:

Component Relationship Model Shows the logical combination of components within agroup (also called a functional group) and the interactionsamong the component parts.

Component Information Model Shows the objects along with their inter-object relationshipsand cardinalities.

Introduction 11

Technology Transfer # 93061697J-ENG SEMATECH

Component Interaction Diagram Expresses framework dynamics by describing the sequenceof collaborations between component classes.

Object Dynamic Model Shows object behavior as changes in state that result fromspecific events.

Object State Tables Provide supplementary (to the Dynamic Model) stateinformation. The tables provide descriptive statedefinitions, identify state query mechanisms, identify thetriggers effecting state transition, and identify the actionsresulting from state transitions.

Also described are the textual notations used to specify the framework in this specification,including the following:

• Interface Definition Format

• Interface Definition Language (IDL)

2.6.1 Graphical Notations

2.6.1.1 Component Relationship Model

The Component Relationship Model was developed specifically for the framework specificationas a mechanism to show relationships among framework components.

Figure 1 depicts the Component Relationship Model.

Component A Component BRelationship

Figure 1 Component Relationship Model

2.6.1.2 Component Information Model

Originating in the database community, information modeling traditionally addresses therelationship of data in order that it can be properly managed in a system database. In thisspecification, Rumbaugh’s OMT Object Model [Rum91], which extends the Entity-Relationship(ER) approach to information modeling, was selected. To paraphrase Rumbaugh, the InformationModel describes the structure of objects in the framework: their identity, relationships with otherobjects, and (to some extent) their operations.

It should be noted that information models can indicate persistence of objects along withinterobject relationships and cardinalities. Analogous to conventional databases, object databasesuse persistence and cardinality to manage system objects and data. Figure 2 is an example of aComponent Information Model.

12 Introduction

SEMATECH Technology Transfer # 93061697J-ENG

ENTITYNAME

ENTITYNAME

ENTITYNAME

ENTITYNAME

ENTITYNAME

ENTITYNAME

COMPONENTENTITYNAME

COMPONENTENTITYNAME

RELATIONSHIPNAME

ZERO ORONE

SUBTYPERELATIONSHIP

EXACTLYTWO

2

ONE

ASSOCIATIONNAME

ZERO ORMANY

PART-WHOLERELATIONSHIP

DATA-CARRYINGRELATIONSHIP

Figure 2 Information Model Example

2.6.1.3 Component Interaction Diagram

Interaction Diagrams employed in the Booch method [Boo91] are used to trace the execution of aparticular scenario. It is another way to convey the interactions between objects. However, theInteraction Diagram conveys the notion of sequencing, that is, the order in which objectinteractions occur. The CIM Framework Specification uses Interaction Diagrams to portray theorder in which classes within a component interact to achieve some factory operation (e.g., thesequencing of messages between Material Movement Management component classes to effectthe creation and completion of a transport job).

Introduction 13

Technology Transfer # 93061697J-ENG SEMATECH

The following example (Figure 3) of an Interaction Diagram models a portion of the interactionbetween a bank customer and an Automated Teller Machine (ATM).

BankCustomer ATM

1. request session ():

2. requestIdentification();

3. provideIdentification in string idNumber ():

4. verifyIdentification ():

.

.

.

.

Figure 3 Component Interaction Diagram Example

2.6.1.4 Object Dynamic Model

An object’s behavior is conveyed through state transition diagrams and tables. Harel statechartssimplify the use of Mealy state transition diagrams by adding a notation for hierarchy andconcurrence. Under this notation, states may be divided into substates, thereby forming ahierarchy. Substates must be one of two types, termed AND substates (representing concurrency)and exclusive OR substates (representing a finer breakdown of a parent state).

STATENAME

STATE1 STATE2state

transitionconcurrent states default entry point conditional selector

C

Figure 4 Harel State Chart

14 Introduction

SEMATECH Technology Transfer # 93061697J-ENG

To illustrate use of Harel state charts, consider the Figure 5 example for an automobile:

engine stoppedAND lights off

engine runningAND lights off

engine runningAND lights on

start turn on lights

Figure 5 Harel State Chart Example

A more general Harel state chart showing hierarchy and concurrency for automobile states isshown in Figure 6.

In Figure 6, the OPERATING parent state is divided into two concurrent substates, which in turnrepresent a further breakdown into exclusive OR logical conditions (e.g., the engine can be in theENGINE RUNNING state) or (exclusive or) be in the ENGINE STOPPED state.

OPERATING

ENGINESTOPPED

ENGINERUNNING

1 2

LIGHTSOFF

LIGHTSON

3 4

Figure 6 Object Dynamic Model

Introduction 15

Technology Transfer # 93061697J-ENG SEMATECH

2.6.1.5 Object State Tables

2.6.1.5.1 Object State Definitions and Query Table

Supplementing the Dynamic Model is another element of an object's state model—the StateDefinitions and Query Table. Table 2 provides a detailed description of each object state andidentifies the query mechanism for determining if the object is in that state. Given the exampleprovided in this section, an entry in the State Definitions and Query Table would appear asfollows.

Table 2 Object State Definitions and Query Table Example

State Definition Query for State Via

ENGINERUNNING

In this state, the automobile’sengine is running.

boolean isEngineRunning ( );sent to instance of Automobile. Returnstrue.

2.6.1.5.2 Object State Transition Tables

Another supplement to the state model is the Object State Transition Table (Table 3). It lists thetransition number from the Mealy or Harel diagram, the starting and ending states and the eventwhich causes the transition between these states. See Table 3 for an example.

Table 3 Object State Transition Table Example

# Current State Trigger New State Action

1 ENGINE STOPPED turn ignition key toright

ENGINERUNNING

tachometer indicatespositive RPM

2 ENGINE RUNNING turn ignition key toleft

ENGINESTOPPED

tachometer indicates zeroRPM

3 LIGHTS OFF turn light switch on LIGHTS ON driving at night enabled

4 LIGHTS ON turn light switch off LIGHTS OFF driving at night disabled

Note that when an automobile engine is started a large number of internal state changes takeplace in the system, most of which are encapsulated from the driver. Only externally visiblestates and triggers have been presented.

Within the CIM Framework specification, only those triggers and state changes relevant toexternal interfacing are shown to help define how an external entity (in this case, a driver)interoperates with an object (in this example, an automobile).

While this table defines triggers for state transitions, there is no guarantee that the transition willtake place in response to the trigger. In the above example, if the car is out of gas the engine willnot go to the running state. If the light is burned out, it will not transition to the on state.Depressing the accelerator pedal when the auto is in the off state will have no effect, etc. In theCIM Framework, object state should be queried to ensure successful transitioning in response toa triggering message.

16 Introduction

SEMATECH Technology Transfer # 93061697J-ENG

2.6.2 Textual Notations

2.6.2.1 OMG Interface Definition Language

CORBA [CORBA][CIMArch] defines the architecture of an Object Request Broker, whichenables and regulates interoperability between objects and applications across heterogeneouslanguages and computer boundaries. In all OMG specifications, services are defined as objectinterfaces expressed in the OMG’s IDL. CORBA standards defines IDL and its mapping to theother languages (for example, C, C++, Smalltalk, and Java).

IDL, predating CORBA and object-oriented systems, is a language that describes interfacesindependent of the language that the interface’s function is written in. This goal is achieved bymapping between the IDL syntax and whatever language is used to implement client and serverobjects. Because IDL is designed purely for interface specification, it lacks the flow control andoperator constructs of an implementation language. Object classes can implement an interfacedifferently as long as their behavior conforms to the interface definition. While interfacedefinitions can be inherited, the mechanism describing how the ORB implementationresolves/binds these interface definitions to executable code (before or at runtime) is notdescribed by CORBA.

IDL obeys the same lexical rules as C, while introducing a number of keywords specific to adistributed system. As IDL is mapped to object-oriented languages, new constructs will appear.

A brief discourse on some of the keywords and concepts used in this specification follows. In theexamples, words in italics are user-supplied; others are IDL-defined keywords.

Parameter Modes:

Parameters define the type, order, and passing direction of data elements to be used by a service.In a distributed system, these modes specify the values of a given type that must be passed in byclients to the server (in mode parameters); passed back by the server to the clients (out modeparameters); or both (inout parameters). The assumption of this document is that objectparameters (service arguments) are handled as object references; thus, only the in parametermode is used.

One final note: parameter types must be CORBA basic types (e.g., string, long) or an object typedefined within the CIM Framework Specification.

Exceptions:

Exception declarations follow a C structure-like data structure, with the keyword exceptiontaking the place of struct. It contains attributes that can be used to pass information about anexception condition to a service requester. An exception is declared with an identifier(ExceptionNameSignal, the exception name), which is accessible as a value when the exceptionis raised, allowing the client to determine which exception has been received. Data in theexception, if any, is accessible to the client. An interface uses the keyword raises to indicate itcan throw an exception. The following is the syntax for exception specifications used in thisdocument.

exception ExceptionNameSignal {ObjectType anInstance };

...interfaceDefinition raises (ExceptionNameSignal);

Introduction 17

Technology Transfer # 93061697J-ENG SEMATECH

The following conventions are used throughout this specification when defining exceptions:

• Εxceptions are not reserved for system or programming errors or failures butshould be included for any non-nominal application behavior in the called service.This is consistent with CORBA usage of exceptions for application errors.

• Return values will, if necessary, be implemented as data in the exceptiondefinition.

• All state transition services (makeXXX services) must include theInvalidStateTransitionSignal exception in their list of raised exceptions.

• Services that perform a “find” or “lookup” function will raise an appropriate<ObjectType>NotFoundSignal exception: a null return value is not an appropriateresponse. However, services that return a collection of objects will not raise anexception but will simply return an empty collection.

• Services that perform “add” functions will raise a <ObjectType>DuplicateSignalexception for the case where the object to be added is already in the targetcollection or logical set. The exception will include a field containing a referenceto the currently existing object.

• Services that perform “remove” functions will raise a<ObjectType>NotAssignedSignal exception for the case when the given objectwas not in the collection it was to be removed from or<ObjectType>RemovalFailedSignal exception if the object could not be removed.

• Boolean query services should rarely raise an exception unless conditions are suchthat neither a true or false return value can be determined.

Events:

The names of published events are listed in each interface and detailed in the appendix. The CIMFramework Architecture Guide [CIMArch] contains information on how to use and build events.

18 Introduction

SEMATECH Technology Transfer # 93061697J-ENG

Attributes:

Defining an IDL attribute requires the methods “get” and “set” to be applied to an object'sinstance variable. Attributes may be qualified as readonly, meaning that an external entity hasonly read privileges. In this case, only a get method is specified.

Sequences:

Throughout this specification, the keyword sequence denotes all container-type constructs(collections, arrays, sets, etc.) Sequences are specified within type declarations (typedefs). Thesyntax is

typedef sequence<ObjectType> ObjectTypeSequence ;

object type contained is identified within “<” and “>” and precedes the word “Sequence” in thetype name. Thus,

typedef sequence<Machine> MachineSequence ;

There is no explicit order implied in any usage of this definition. Where order is important, it willbe so noted in any associated description.

2.6.2.2 CIM Framework Interface Specification Format

The OMG defines an object’s interface as “a listing of the operations and attributes that an objectprovides. This includes the signatures of the operations, and the types of the attributes. Aninterface definition ideally includes the semantics as well” [OMA]. The CIM FrameworkSpecification builds upon this definition to provide additional semantic information for an object.These semantics are captured in an object interface description. This section describes the formatof an object interface. Each description of a object interface in Section 4 follows this format. Theformat includes the following:

• Name—The capitalized noun following the word Interface.

• Inherited Interface—The capitalized noun after the words Inherited Interface.

• Description—A definition of the interface giving its form and function.

• Exceptions—An IDL specification for reporting user-defined, framework-related errorconditions.

• Published Events—The name of the event structure that must be placed on an eventchannel. The event structure identifies the event through a subject field. The subject iscomposed of the component and interface issuing the event and data describing the event,filterable and non-filterable information Events are defined at the interface level; neitherposting services nor subscribers are identified. Thus, events are not tied to specificservices and may be the result of an internal (to the component) computation.

• Provided Services—A list of publicly available services provided by this interface. Inother words, a list of non-private, named operations. Each is given by a description incomment form (i.e., /*....*/) followed by its representation in the IDL syntax. The servicescan be described as follows:

1. Attributes, represented as “get” and “set” methods on an object's instance variables

2. Configuration Services that

Introduction 19

Technology Transfer # 93061697J-ENG SEMATECH

a) Enable arranging/rearranging the object’s connections with other objects.b) Notify the object of an event or about another object’s state(s).c) Request the object to change its own state.

3. Control Services that request the object to perform some known, requested action.The action is anticipated and primary, not a side effect. As a result, the object's statemay change; however, to the requester this is secondary.

4. Query Services that request information.

• Contracted Services—A table of framework services provided by other interfaces that arebeing used by public and/or private services in this interface. These methods must beavailable in order for the documented interface to provide its described services. Changesto contracted services may result in changes to the behavior of the interface making use ofthese services.

• Object Dynamic Model—See Section 2.6.1.4 for details.

• State Tables—See Section 2.6.1.5 for details.

If no Provided Services are defined for a particular category, then No public interfaces willappear after the category identifier. If no Exceptions, Published Events, Contracted Services, orDynamic Model is defined, then the word None will appear. State Transition Tables occur only inconjunction with Dynamic Models.

2.6.2.3 Interface Specification Example

The following commented example provides a more complete illustration of IDL and CIMFramework interface definition format usage within this specification. Words in italics are user-supplied; others are either IDL or CIM Framework-defined keywords.

/* Comments are set between slashes and asterisks */

Interface: FrameworkObject2

Inherited Interface: FrameworkObject1

Description: The example defines the interface for FrameworkObject2, which inheritsfrom FrameworkObject1.

Exceptions:

/* The following portrays the syntax used to describe exceptions for this interface. ObjectTypeand instanceName specify an object instance (supplementary information) returned with theexception. */

exception ExceptionName { ObjectType instanceName };

Published Events: NamedEvent

Provided Services:

/* The following defines the read/write methods for AttributeName1. */ObjectType getAttributeName1 ( );

void setAttributeName1 (in ObjectType parameterName);

20 Introduction

SEMATECH Technology Transfer # 93061697J-ENG

/* The following defines a method for readonly AttributeName2. */ObjectType getAttributeName2 ( );

/* The following says operationName1 is a local operation returning an object of the classObjectTypeReturned. */

ObjectTypeReturned operationName1 ( );

/* The following says operationName2 is a local operation returning an object of the classObjectTypeReturned with an argument instanceName of the object type ObjectTypeName. Inaddition, there is an operation-specific exception, E, that may be raised by this operation. */

ObjectTypeReturned operationName2 (in ObjectType instanceName)

raises (E);

In addition, definitions for non-basic types can be found in Section 4.1.1. The type definitionsfollow the following format:

/* Type Declarations: */

/* The following specifies (types) the ObjectType for the named datatype. */typedef ObjectType datatype;

/* The following specifies a sequence (collection) of ObjectType for ObjectTypeSequence. */typedef sequence<ObjectType> ObjectTypeSequence ;

Introduction 21

Technology Transfer # 93061697J-ENG SEMATECH

2.7 Industry Standards and Programs

The following programs, standards, and guidelines were used in development of the CIMFramework specification:

• Texas Instruments (TI)/Advanced Research Projects Agency (ARPA) U.S. Air ForceMicroelectronics Manufacturing Science and Technology (MMST) CIM DevelopmentProgram

• OMG CORBA Version 2.0

• SEMI E10-92: Guideline for Definition and Measurement of Equipment Reliability,Availability, and Maintainability (RAM)

• SEMI E30-95: Generic Model for Communications and Control of SEMI Equipment GenericEquipment Model (GEM)

• SEMI E32-94: Material Movement Management Services

• SEMI Document 2151C: SECS-II Support for Material Movement Management Services

• SEMATECH Distributed Factory Systems (DFS) Project

• SEMATECH Semiconductor Workbench for Integrated Modeling (SWIM) Project (materialdefinition focus)

• SEMATECH Semiconductor Generic Manufacturing Model (SGMM) from the CIMArchitecture Program

• SEMATECH Strategic Cell Controller (SCC) Program

• SEMATECH Factory Integration Technologies (FIT) Project

• Gartner Group CIM Capability Categories

• Validation Projects with ASI, Auto-Soft, Consilium, IBM, TI and others

• Texas Instruments WORKS development project

• IBM SuperPOSEIDON development project

• AMD/Honeywell Advanced Process Control Framework Initiative (APCFI) project

In addition, the CIM Framework Specification reflects the experience of many other suppliersand manufacturers who are applying the CIM Framework in their business.

22 Job Architecture

SEMATECH Technology Transfer # 93061697J-ENG

3 JOB ARCHITECTURE

This section describes the core functional architecture of the CIM Frameworkthe creation andexecution of factory jobs made up of process jobs, transport jobs, preventive maintenance jobs,etc. The overall job architecture integrates the CIM Framework material managementcomponents, the resource and machine management components, and the specificationmanagement components, providing a coherent manufacturing execution system architecture.The job architecture was influenced by prior work that is described in [Alb], [ISA], [Haw], and[Will].

3.1 Functional Architecture versus Interface Designs

The diagrams and discussions in this chapter illustrate functions and functional relationshipsbetween factory entities that carry out work. They may not correspond one-to-one to interfacesdefined in IDL and OMT diagrams in the CIM Framework Specification. For example, theMachine Management components do not define explicit IDL interfaces for transport andmetrology machines. This does not mean that factories will not have transport and metrologymachines. Rather, it means that a common machine interface type is sufficient for these differentsubtypes (framework-compliant implementations may specialize the machine interface). Afactory functional model must include functional entities for transport and metrology machines,whereas interface design needs to address what interface services are needed to fill thosefunctional roles.

3.2 Factory Hierarchy

A factory is usually viewed as a hierarchy of resources with associated task scope defined foreach level in the hierarchy. The hierarchy is usually organized around groupings of physicalresources as shown in Figure 7.

Process Machine Transport Machine Storage Machine

Transport Resource Storage Resource

Enterprise

Area

Factory

Process Resource

Person

... ...

... ...

Figure 7 Factory Resource Hierarchy Model

Job Architecture 23

Technology Transfer # 93061697J-ENG SEMATECH

• An enterprise often includes multiple factories. The task of the enterprise is to deliverproducts to customers.

• A factory is made up of areas and bays with interbay material handling systems. Thetask of the factory is to manufacture product lots in response to product requests.

• Areas or bays are made up of processing and metrology equipment with intrabaymaterial handling systems. The task of the areas or bays is to perform a group ofprocess operations on groups of materials, move material to the processingequipment, and perform preventive maintenance and other supporting tasks.

• Complex processing equipment (such as a cluster tool) is made up of processingchambers and internal material handling and storage resources. The task of theprocessing equipment is to perform a process or metrology step or a closely relatedgroup of steps on a material lot or process group. The task of the processing resource(such as a chamber) is to perform a single process step on a single wafer or acollection of wafers in a process resource group.

• Material handling and transport systems are made up of interconnected stockers,tracks, conveyers, robotic handlers and other material storage and movementequipment. The task of the material handling systems is to store and move materialsin transport groups.

• Manufacturing operators and other factory personnel are important resources tofacilitate and supervise material processing and handling and preventive maintenanceand, in some cases, perform manufacturing steps such as moving material orperforming a visual inspection.

The job control architecture defines how tasks are assigned and coordinated across the hierarchyof factory resources.

3.2.1 Hierarchical Task Structure

At the lowest level of the factory hierarchy (the resource level in Figure 7), the tasks are singleprocess or metrology operations or material movements. Through a complex, context-dependentcombination of single tasks, product lots are manufactured and delivered to customers. Thiscomplex combination of single tasks is a task structure as shown in Figure 8. In manufacturingoperations, these structures are pre-defined as task procedures, work flows, processspecifications, etc. To accommodate manufacturing variability and exceptions, though, thestructures must also be adjusted and modified as they are executed. For example, as a schedulerselects specific machine resources, the job supervisor may insert machine-dependent setup tasksand operation sequences or transport steps to get the material to the machine.

24 Job Architecture

SEMATECH Technology Transfer # 93061697J-ENG

Task: Fill Order

Task: Produce Lot 1

Task: Produce Lot 2 Task: Produce Lot 4

Task: Produce Lot 3

Litho

. . .

Move Move

ProcessOperations

Machin

e

Resourc

e

Enterp

rise

Facto

ry

Clu

ster

Machin

e

Time

Level

Transp

ort

. . .

. . .

Figure 8 Hierarchical Task Structure

Notice in Figure 8 that tasks of a higher level are decomposed into combinations of tasks forlower level resources. Each manufacturing resource has a thread or flow of tasks that must becoordinated with the tasks of other resources. The higher level task is completed when thecombination of lower level tasks is completed. Figure 8 illustrates this with the coordination ofmaterial movement and lithography operations and with the coordination of operations within thelithography equipment. The role of job control is to decompose, coordinate, monitor, adjust, andreport on this hierarchical structure of tasks.

The hierarchical task structure of Figure 8 defines the requirements for a multi-level operationprocedure (task) specification model.

Figure 9 shows the elements of a hierarchical task, indicating some of the additional data for anoverall job control structure. A task is specified as a job request from a superior level. Alongwith the request is a task specification, which is often a template or procedure for how to carryout the task, including a combination of subtasks, monitor and adjustment checkpoints along theway.

As the task is executed, task results are collected in a job history that includes a job identifier, the(modified) specification used, and recorded inputs and results. Higher level job results could bea roll-up, an abstraction, or simply pointers to lower level job results.

Job Architecture 25

Technology Transfer # 93061697J-ENG SEMATECH

As each task is started, completed, modified or aborted, appropriate events or other notificationsare emitted. The task endpoints illustrated in Figure 9 as triangles represent factory states orsome specific aspect of a factory state. When a task is completed, the factory state is changed inthe specified way. For example, after a process operation task, product state is changed. When amovement task is completed, the product location state is changed to the load port for a machineto perform the next process operation. These intended factory states often have side effects onother factory states. For example, after a process operation, the equipment state changes toreflect its utilization, consumables consumption, etc. Job control requires orderly, coordinated,efficient changes to factory state that result in products, that is, that efficiently transform rawwafers to product wafers or packaged devices.

Task

StartEvent

EndEvent

Sub-Task Sub-Task Sub-Task

StartEvent

EndEvent

StartEvent

EndEvent

StartEvent

EndEvent

Request

Sub-RequestSub-Request

Sub-Request

ID: wSpec: xInputs: yResults: z

ID: qSpec: rInputs: sResults: t

ID: Spec: Inputs: Results:

TaskSpecification

ID: aSpec: bInputs: cResults: d

time: nowJob History

Figure 9 Elements of a Hierarchical Task

3.3 Job Control Architecture

This section describes the job management and control architecture of the CIM Framework. Itdefines a hierarchical job supervision and control structure that manages factory-level jobs(create product lots to fill enterprise product requests) and implements these factory-level jobs bycreating and managing machine-level process jobs and transport jobs, coordinated withPreventive Maintenance jobs and other support jobs. The job control architecture defines and

26 Job Architecture

SEMATECH Technology Transfer # 93061697J-ENG

manages relationships between manufacturing resources (process equipment, transportequipment, people), material groups (lots, process groups, transport groups) and processspecifications (process flows).

3.3.1 Job Structure

A job is a relationship between all the elements necessary to perform a task with specific controlfunctionality to carry out the task in light of manufacturing variability. A job implements aspecified task on specified material using specific resources. The overall job structure of Figure10 is the mechanism for controlling and changing factory material and resource states andrecording job results in associated job histories.

Resources Materials

Job Control

Job Requestor

SpecifiedTask

Material HistoryControl HistoryResource History

Figure 10 Job Structure

3.3.2 Jobs and Job Supervisors

Jobs are transient entities. They are created to perform a task. A job supervisor is the persistententity that responds to job requests. The JobSupervisor interfaces may be inherited by acomponent manager or another entity within a component. For example, aMaterialMovementManager and MaterialMovementController in the CIM Framework may bothbe TransportJobSupervisors.

3.3.3 Hierarchical Job Structure

The factory and task hierarchy of Figure 7 through Figure 9 results in a multi-level (hierarchical)job control structure, with a given Job/JobSupervisor requesting work through other (sub)Jobs.As Figure 11 illustrates, higher level job controllers specify and request work from lower leveljob controllers and monitor job progress through status and external feedback. A job controlleroften uses multiple lower level job controllers and job resources. For example, a factory jobrequires processing jobs and transport jobs, and a given processing job may be divided amongmultiple process and metrology resources. At the lowest level, job control results in directlymanipulating equipment actuators based on real-time sensor feedback. (Note, this lowest level ofjob control is outside the shop-floor control scope of the CIM Frameworkit is within the scope

Job Architecture 27

Technology Transfer # 93061697J-ENG SEMATECH

of the equipment control.) The job request, status, and feedback information are all candidatesfor storage in job history.

JobControl

JobControl

JobStatus Job

Request

External Feedback(e.g. sensor data or operator input)

Actuation

Sensor Feedback

JobStatus Job

Request

JobControl

External Feedback(e.g. sensor dataor operator input)

JobControl

JobControl

JobStatus

Actuation

JobRequest

JobRequest

JobStatus

Feedback

Feedback

Physical Processes

Figure 11 Hierarchical Job Control

3.3.4 Job Control Component

Within Job Control, as an encapsulated component, it is convenient to think of relationshipsamong job supervision, job execution, and jobs. For example, in Figure 12 a job supervisorcould take a job request, decompose it into steps, select material or equipment for each step withthe aid of a scheduler, and coordinate and dispatch lower level requests. The job executormonitors the progress of lower level steps and modifies current or subsequent specifications ofsteps as required. In this example, the job itself is a current and historical record of the requestedjob, the delegated jobs, the allocated material and resources, and job status and events.

There are other ways to partition and implement the functions within a job control componentdepending on job level, scope, and complexity. They all tend to have task decomposition,allocation, execution, monitor, and result recording functions. They often use the services of ascheduler or dispatcher to optimize resource utilization. The CIM Framework does not specifythe internal architecture of Job Control components, which is an implementation choice.

28 Job Architecture

SEMATECH Technology Transfer # 93061697J-ENG

For each job control level in the job hierarchy of Figure 13, there is a corresponding jobsupervisor. A FactoryJobSupervisor manages FactoryJobs, an AreaJobSupervisor managesAreaJobs, and a ProcessMachineJobSupervisor manages ProcessMachineJobs.

Job Executor Job

Job Supervisor

Request

Status

Feedback

Status

Material

Equipment

History

Request(s)

Job Specification

JobSpecification(s)

Figure 12 Possible Functional Structure of a Job Control Component

3.3.5 CIM Framework Job Structure

Figure 13 illustrates the overall job structure (resources, material, task specification and jobcontrol) for the CIM Framework. Figure 13 shows the job structure of Figure 10 mapped to thefactory resource hierarchy of Figure 7. The material hierarchy is modeled in the MaterialManagement components of the CIM Framework Specification, the task specification hierarchyis modeled in the Process Specification Management components, and the resource and controlhierarchies are modeled in the Factory Management (for upper levels) and Machine Management(for lower levels) components. The transport resource and transport job control hierarchy is notshown in Figure 13, but would parallel the process machine and job control structure. Thetransport hierarchy is modeled in the Material Movement components of the CIM Framework.

Job Architecture 29

Technology Transfer # 93061697J-ENG SEMATECH

Resource Control TaskSpecification

Material

MESFactory

Area

ProcessMachine

ProcessResource

Product RequestJob

Lot Job

Area Job

ProcessMachine

Job

(Resource-level job is in

equipmentscope)

Order, OrderItem

Lot, LotFamily,Inventory Region

Inventory Region,Process Group

ProcessGroup

ProcessResource

Group

ProductSpecification,ProcessDefinition

Process OperationSequence

Process OperationSequence

Process Operation Spec,Process Operation

(AreaLevel is

Optional)

(Enterprise Job)

Product RequestEnterprise

Figure 13 Hierarchical Job Structure

Note that the job control hierarchy provides interfaces to the enterprise at the top level and theequipment at the bottom level. The Enterprise level is the requestor of work for the factory.Enterprise control is outside the MES functional scope of the CIM Framework. The ProcessResource level is also outside the scope of control of the CIM Framework. It is usuallyimplemented by process controllers embedded in or piggyback on equipment. The ProcessResource level is modeled for the MES to allow process data to be collected and organized forspecific equipment resources such as a specific chamber in a cluster tool. The Area level isoptional or it can be split into multiple levels (such as Cell or Bay).

At each level, job control involves performing specified operations on specified material ormaterial groups using specified or allocated (dispatched) resources and equipment shown inFigure 10. Figure 13 shows the job control hierarchy relationships. The resource aspects are inFigure 7. The operation aspects are in Figure 8 and Figure 9. The material aspects (specifically,the relationships between product requests, lots, transport groups, process groups, lot splits, andjoins, etc.) are defined as a result of job control deciding what tasks to perform on what materialusing what manufacturing resources. This structure of the various material groups and materialgenealogy is not illustrated.

3.3.6 Coordinated Threads of Tasks

Each resource in the factory can have a separate thread of task activity as shown in Figure 8 andFigure 14. A usual approach is to organize job control for similar tasks and resources into asingle job controller and associated resource scheduler/dispatcher with overall resource schedulecoordination performed at the factory operations job control level.

30 Job Architecture

SEMATECH Technology Transfer # 93061697J-ENG

As a manufacturing resource, the product material also has a thread of task activity. This threadis defined by the process flow specification. It defines the sequence of process operationsmapped to machine resources for processing and supported by transport operations for materialmovement.

The LotJob controller (Factory Operations) uses the process flow as a LotJob specification andmaps it to the process resource thread, material movement thread, preventive maintenance thread,and other implementation threads. Tasks for transport resources are managed by a materialmovement control system driven by material movement requests to move material to dispatchedprocess resources. Preventive maintenance tasks are scheduled and managed by a preventivemaintenance system, driven by changes in manufacturing resource state. Advanced processcontrol computation tasks are triggered and managed by a process management system driven byperformance of process operations and metrology. Obviously, these separate threads of activityinteract with (enable and constrain) each other and with the material and resources the tasksmodify. Factory operations, with factory scheduling and dispatching, ties together all of theseseparate threads of task activity into a coordinated, efficient structure of factory tasks.

Task: Produce Lot 2

Litho

. . .

Move

PM

ProcessOperations

Machin

e

Resourc

e

Facto

ry

Pro

cess

Machin

e

Time

Level Transp

ort

. . .

Prev.

Maint.

PM

Move . . .

. . .

. . .

. . . . . .Op5 Op6 Op7

Process Flow Specificationfor Lot 2

Figure 14 Coordinated Threads of Tasks for Separate Resources

Job Architecture 31

Technology Transfer # 93061697J-ENG SEMATECH

3.3.7 Production History, Process History and Equipment History

As jobs are executed, their results are captured as histories. Product-oriented data is captured inproduction history associated with the material hierarchy and is used, for example, for materialtraceability and defect analysis. Process-oriented data is captured in process history associatedwith the job supervision hierarchy and is used, for example, for run-to-run process control.Equipment-oriented data is captured in equipment history associated with the equipmenthierarchy and is used, for example, for preventive maintenance and warranty tracking.

These various history aspects can be defined as separate History. Alternatively, history data canbe obtained by navigating through relationships such as the equipment/control/materialhierarchies.

The CIM Framework defines a History as a sequence of HistoryEvents (a data structure thatcontains access keys, a timestamp, duration, and filterable and non-filterable data). Any entitycan have an associated History or a NamedHistoryCollection. The CIM Framework definesgeneric NamedHistoryCollections for Resource, Material, MaterialGroup, and InventoryRegion,and it defines the specific history entities illustrated in Figure 15. The ControlDatabase andControlArchive are specially defined, history-like entities to support advanced process control.They may be associated with ProcessResourceJobs, ProcessMachineJobs or AreaJobs, dependingon the scope of the control algorithm.

ProcessMachine

ProcessResource

Lot Job

Area Job

ProcessMachine

Job

ProcessResource

Job

Lot

Inventory Region

Process ResourceGroup

(material in a givenProcessRun of a

ProcessOperation)

Process Operation

ProductionHistory

InventoryRegionHistory

ProcessResourceHistory

E10PerformanceHistory ControlDatabase

ControlArchiveResourceMaintenanceLogHistory

Figure 15 History Structure with Entities Shown in Bold Italics

32 Job Architecture

SEMATECH Technology Transfer # 93061697J-ENG

3.4 Job Architecture-Level Design

This section introduces the design concepts used in the Job Supervision component of Section4.3.2 and its derivative components (Factory Job, Area Job, Transport Job, etc.).

3.4.1 Design Goals

The goals of the job architecture-level design include the following:

1. Clearly define Job, and unambiguously define how distributed jobs are to be supervisedwithin the Factory.

2. Provide encapsulation of the Job Supervision function, hiding such detail as the interfacebetween the JobSupervisor and its Job, how the Job object is created, and which classeswithin the Job Supervision component are responsible for what particular work.

3. Define the areas in the CIM Framework where Job Supervision is needed and toappropriately specialize it for each level.

4. Clearly define the distinction between Job Supervision at a factory-wide level and ScheduleManagement and to show where the concept of Dispatcher fits.

5. Position Job Supervision within the factory with regard to the other CIM Frameworkcomponents.

6. Clarify the relationship of Lot to Job (and to Material Group) to facilitate the understandingof the CIM Framework by manufacturing personnel.

3.4.2 What is a Job?

Job: A job represents a unit of work requested of and performed (or facilitated) by a factoryentity that results in some change of the overall factory state. Several important aspects of a jobwithin the CIM Framework follow:

• A job is expected (but not required) to take a non-zero time to perform and have a non-zerochance of refusal or failure.

• A job may encapsulate a decomposition into a sequence of jobs/tasks/activities that aredelegated to lower level job supervisors.

• It is necessary to have a requestor; otherwise, no need for a job exists.

3.4.3 Where do Job Supervisors (and Jobs) fit within the CIM Framework

Beyond the abstract level of Job Supervision, the CIM Framework should include the followingspecializations. Not all components in this version of the CIM Framework have been completelyaligned with this job supervision design.

Product Request Management: This is the highest level Job Supervisor within the Factory,serving the Enterprise by filling ProductRequests (which are linked to Orders). It delegates theproduction of Lots to Factory Operations.

Factory Operations: At this level, the activity request coming in is “make a product wafer from abare silicon wafer”. The unit of request is Lot. The Factory Operations level guides the lot

Job Architecture 33

Technology Transfer # 93061697J-ENG SEMATECH

through its process flow and makes sure that supporting activities occur (e.g., equipmentqualifications, preventive maintenance tasks, etc.).

Area Job Supervision: This optional level serves Factory Operations and is responsible formultiple machine activities (Areas may map to Bays, Cell Controllers, Linked Lithography, etc.).This level is not required by the Factory, but is available for use. It could be used by sites thathave a factory within a factory model with separate but integrated operations management forseparate units of manufacturing capacity. It could also be used by sites transitioning from legacysystems, with parts of the factory under a next generation CIM Framework-conformant MES andother parts under a legacy MES that is fronted or wrapped by a CIM Framework conformantArea Job Supervisor component. Another example could be a site that provides a pseudo-clustercell controller to group stand-alone process equipment into an integrated workcell that behaveslike a cluster tool. There are no separate Area Job Supervision interfaces defined in the CIMFramework Specification. These functions are met by the ProcessMachineJob interfaces with nochange (The same interface serves both functional roles. Areas typically receive a sequence ofprocess jobs as a request, whereas simple machines usually receive a single process job).

Machine Job Supervision: This level lies within the CIM Framework Machine Managementcomponent. It accepts activities that apply to a single Machine. It delegates work directly to thephysical equipment, either through some equipment interface driver or directly through theGEM/SECS interface.

Transport Job Supervision: This level takes requests to move material from one location toanother. While the CIM Framework may provide for layers of TransportJobSupervisors in acomplex system, today’s typical installation has a single proprietary Material Handling SystemController (TransportJobSupervisor). Machines may also be TransportJobSupervisors, takingsimple tasks of handing off or receiving material. This is under consideration for laterenhancements to the Material Movement components.

Advanced Process Control (APC): APC includes lengthy calculation activities that may notsucceed and which impact the performance of other jobs. For example, an algorithm may notconverge, a sensor may emit bad data, or process machine jobs, recipes or job specifications maybe modified.

Preventive Maintenance (PM): Preventive maintenance is a scheduled activity on specificresources (machines) using labor resources and materials. PM job progress must be reported andtracked and PM job history can be stored. The Preventive Maintenance components in MachineManagement provide this functionality.

3.4.4 General Principles of Job Supervision

The Job Supervision function is well encapsulated and cohesive. Actual creation of jobs isinternal to the component and not exposed. The division of work between Job and JobSupervisor is moot since the interaction between the two is also hidden.

Job Supervision is recursive. The scenario: An entity issues an activity request to a JobSupervisor. The Job Supervisor breaks the activity down to smaller tasks and issues activityrequests to lower level Job Supervisors who in turn may break down the work further and

34 Job Architecture

SEMATECH Technology Transfer # 93061697J-ENG

delegate it to even lower levels. At some point, an activity reaches a resource that can actuallyperform the work (e.g., a machine resource).

At any level, the requestor of activity will request work of a JobSupervisor and receive in returnthe handle to a Job which represents this work. This requestor will not have visibility to how theJobSupervisor performs the work beyond what is specified in the original activity specificationand what is reported later as data. Not visible or accessible are the lower activity requests (andresulting jobs) that may be issued by the JobSupervisor. A requestor will not micromanage thedelegation of tasks. This approach yields the greatest flexibility in the factory system.

The responsibility of the JobSupervisor/Job team is to perform the activity and report back to therequestor on the success or failure of the effort. There is no limitation on the facilities within thefactory that may be used to accomplish the goal.

A JobSupervisor will have a well defined domain; that is, a set of factory resources that it cancall on to perform work. Only activity requests which can be accomplished within the domain ofa JobSupervisor should be issued to/accepted by that JobSupervisor.

The interface of the JobSupervisor provides high level information about the jobs it is currentlyengaged in (and perhaps jobs recently completed). The details of any specific job are providedby the Job itself, not the JobSupervisor. From the JobSupervisor, the JobRequestor is able to

a. request activity

b. locate jobs that meet certain criteria, and/or

c. request lists of all jobs being performed

The JobSupervisor is not able to provide details (e.g., status or attributes) of any specific job. Forinstance, the MachineJobSupervisor is not able to provide the estimated time to completion orthe process recipe of a MachineJob.

This also applies to the control of jobs. The JobSupervisor initiates the creation of jobs (from theactivity request), but thereafter allows only for control of jobs as a group (e.g., abort all jobs) notabort job X. However, much thought should be given to the use of these all jobs commandssince they can cause a great deal of harm if not designed and used properly.

The Job interface class is the sole source of all public information about a job. It also providesall specific control of the job (pause, abort, etc.). This is in compliance with the CIM Frameworkarchitectural guidelines.

A job requestor is not designed to micromanage the job. Instead, the job requestor creates aspecification of the work to be done and hands it to the JobSupervisor when requesting the work.Once the work request is accepted, the JobSupervisor’s component controls the execution of thatjob within the limitations of the job specification and its business rules. The only exceptions arecoarse commands such as abort or pause. For instance, if a JobSupervisor is capable of queuingmultiple jobs, it must also have the means to determine the order in which it should execute thosejobs (e.g., first in-first out or perhaps highest priority lot first).

The Job Supervision role has a companion interface that must be inherited or implemented by thejob requestor. This interface defines necessary messages that must be sent by the JobSupervisorto the requestor . An attempt is made to document who the requestor must/should/might be for agiven Job Supervision derivative, but there may be other job requestors in a factory.

Job Architecture 35

Technology Transfer # 93061697J-ENG SEMATECH

3.4.5 Companion Interfaces

It is important to identify the requestor of activity. The job is supposed to tell the requestor whenthe job is done via some direct message. In earlier versions of the CIM Framework, there wasnot a way to define this message, since Job Supervision did not contain the requestor class (it wasdefined as an any).

Helping to address this problem is a new (or perhaps the revival of an old) concept that hasappeared in the object-oriented design community. This is called a type. A type is analogous toan interface in Java or a class in C++ that has no implementation of operations (pure virtualmethods) nor any attributes. With no implementation conflicts to worry about, multipleinheritance becomes less of an issue. This is why Java allows you to inherit implementationfrom just one class, but inherit/implement many interface types. This concept is enabled by theCIM Framework abstract class that was introduced in CIM Framework Specification Version1.5.

Using this approach, if we define a JobSupervisor that accepts requests to perform activities, wecan also define a JobRequestor type as a companion. JobRequestor defines the interface thatmust be implemented by any class that uses JobSupervisor. Since it is only an interface, it can beimplemented by almost any other class as needed. Since we can define this interface along sidethe JobSupervisor definition, we can keep all this related information together. This provides awell defined solution with relatively low coupling.

We say that a class has a contract to supply services to other classes. The companion interface isan extension to the contract concept where the classes at both ends of the relationship guaranteerelated services to the opposite end.

3.4.6 Factory Job Supervisor—Relationship to Scheduler and Dispatcher.

The general approach of the CIM Framework is that the Scheduler is a system that runsperiodically to provide a highly optimized schedule of future activities within the factory. TheDispatcher is an adjunct to the scheduler that responds to requests of the form “What should I donext?” If a Scheduler exists, the Dispatcher may answer the question by looking at the mostrecent schedule, factoring in recent events and unforeseen changes, and then postulating the bestactivity to do next (or, more often, an ordered list of the best things to do next). The Dispatchermay also operate without a Scheduler, utilizing its own rules to determine the dispatch list. TheDispatcher is required: the Scheduler is optional for Job Supervision and may be encapsulated bythe Dispatcher.

The FactoryOperations component (which has a JobSupervisor) uses the Dispatcher to decidewhat to do next. One familiar scenario cast in this design would have FactoryOperations requesta prioritized dispatch list from the Dispatcher, display the list to an operator at a terminal(perhaps via a separate user interface layer), accept a choice from the Operator of what to donext, and then issue an activity request to a machine based on that choice. This might be thoughtof as an Operator assisting the FactoryOperations component in its decision process.

3.4.7 Components Versus Classes

A problem that has long existed with trying to communicate the CIM Framework design is that itis easy to explain which components or objects provide an interface, but difficult to define which

36 Job Architecture

SEMATECH Technology Transfer # 93061697J-ENG

components or objects use it. When classes are defined in a component, they provide aninterfacethis is very clean and predictable. However, since the internal design of eachcomponent is an implementation decision, we cannot say with certainty that a given class will usean operation provided by another class.

Note that this contributes greatly to the problems of creating scenario as interaction diagrams.After all, a scenario is a sequence of class instances sending messages to instances of (the sameor) other classes. It is known which class receives the messages and can surmise the order inwhich they are sent. However, the best one can do is to determine the component from which themessage is sent. One cannot determine the specific class within the component that sent themessage. Any scenarios published in this document should be viewed in that light.

3.4.8 Lot Versus Factory Job

In many of today’s manual factories, the Lot represents both material and the operations taken tocreate the product. The JobSupervision structure pulls out the job management and shop-floorcontrol aspects of the Lot, leaving the material tracking and product genealogy. This separationof concerns simplifies the functionality of a Lot and provides distinct interfaces for addressingthe complexity of fully automated (lights-out) factories. The Lot remains the material containerand also continues to have the context of the eventual product. The FactoryJob takes on theaspect of executing the process flow and creating the eventual product. The Lot is all that isrequired to specify the FactoryJob.

3.4.9 Area Supervision

The Area Supervision component is an optional level of the Job Management hierarchy thatallows a factory implementation to be divided into multiple parts with separate control entitiesfor each.

Area Supervision receives Jobs from Factory Operations, typically jobs with multipleProcessOperations targeted at different ProcessMachines. It then delegates that work to theMaterialMovement component and to the appropriate ProcessMachines.

This level of Job Supervision is achieved in an implementation by creating a component thatpresents the same Job Supervision interfaces to the Factory Operations component as does aProcessMachine. To the ProcessMachines, it presents the JobRequestor interface in the mannerof the Factory Operations component. Please review these components for more detail.

3.4.10 Process Specification

A process flow is the specification that drives a LotJob. It describes the sequence of processoperations to perform on the lot. The Specification Management component provides a set ofinterfaces into process flows. The ProcessFlowIterator provides mechanisms for navigating aprocess flow to get a sequence of defined operations (this same interface is also available to ascheduler or dispatcher for look-ahead scheduling). The ProcessFlowContext provides a markerfor where the lot is in the flow, that is, its current ProcessOperationSpecification. Each lot has anassociated ProcessFlowContext. As the FactoryOperations component (specifically, theLotJobExecutor) receives reports of informProcessMachineJobComplete() from lower levelProcessMachineJobs, it increments the ProcessFlowContext for the lot.

Job Architecture 37

Technology Transfer # 93061697J-ENG SEMATECH

The ProcessFlowContext points to a specific ProcessOperationSpecification in a ProcessFlow.This specification forms the basis for a ProcessOperation, which is the job specification forProcessMachineJobs.

3.4.11 Structural Detail

This section provides information models of the basic job supervisor design pattern. This designpattern is incorporated in the specialized job supervisors such as the Process MachineManagement component and Factory Operations component.

3.4.11.1 Recursive Structure

In the recursive structure described above, there are two basic types of JobSupervisor. Oneaccepts a work request and does the task (at least from the system’s view). One expects to seethis from a component that communicates to anything outside the CIM Framework system. Thisincludes modules that talk to machines, to user interfaces, to transport systems, etc. In Figure 16this is termed a Worker.

JobSupervisor

Worker Delegator

1+

Figure 16 Recursive Structure

The second type of JobSupervisor is a CIM Framework component that leverages other CIMFramework components to get the work done. In fact, it leverages other JobSupervisors. This istermed a Delegator. The JobSupervisor, Worker, and Delegator are shown in Figure 16. in theComposite Pattern (see Design Patterns, Gamma, et. al. [Gam94]. The notation in the diagramindicates that the Delegator is composed of one or more other JobSupervisors (may be acollection of Workers and Delegators. This is considered to be a stable, if not necessarily

38 Job Architecture

SEMATECH Technology Transfer # 93061697J-ENG

exclusive relationship. Alternatively, it would have been reasonable to draw this relationship asa simple association. Since this is for illustration purposes, this is not a crucial distinction.

3.4.11.2 JobRequestor Companion Interface

There is a contract between the requestor of work and the JobSupervisor. An agreement is struckto perform the work. The requestor is given a job in response to the work request. The jobrepresents the work to be done and allows the requestor to query about the status of the work.However, for efficiency, the JobSupervisor (or the Job itselfan implementation decision) mustbe able to inform the requestor of the completion of the job (or failure). For that, an interface isneeded. This is shown in Figure 17 as an interface class named JobRequestor. Any class thatwishes to request work of a JobSupervisor must inherit the JobRequestor interface. From thediscussion above, the Delegator type of JobSupervisor also issues work requests. Thus, it mustinherit the JobRequestor interface.

JobSupervisor

Worker Delegator

1+

JobRequestor

1+

1+

contractswork from

Figure 17 Job Requestor

It should be clear that Job, JobSupervisor, and JobRequestor classes are abstract classes.

Note that the classes that use JobSupervisor (and thus inherit JobRequestor) need not beJobSupervisors themselves.

CIM Framework Interfaces 39

Technology Transfer # 93061697J-ENG SEMATECH

4 CIM FRAMEWORK INTERFACES

This section specifies the global types, exception definitions, and interface specifications thatsupport the development of semiconductor manufacturing execution systems applications.Objects implementing these definitions map to the Application Objects element of the OMAReference Model (see Section 2).

The information is presented in a manner consistent with Section 2.6.2. A major paragraphrepresents each group (also called a functional group). Subparagraphs present the componentsbelonging to each group. Those component subparagraphs are further divided into paragraphsdescribing the externally visible interfaces of the component. Information provided for eachfunctional partition follows.

Each group (or functional group) provides the following:

• A descriptive summary of groups capabilities

• A list of the components of the group

• A brief description of each component

• A Component Relationship Diagram

Note that the functional group classification is provided only for purposes of documentorganization and reader understanding. The functional groups are not a required partitioning orstructure in the CIM Framework Specification.

Each component (subparagraph) within a group provides the following:

• A description of the component capabilities (a summary of the services it provides)

• An information model

• An interaction diagram, if relevant

Each interface (minor paragraph) is defined within a component. The manner in which aninterface specification is presented is described in Section 2.6.2.

40 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.1 Global Definitions

This section describes constructs and exceptions that are global in nature. By global it is meantthat they may be applied to any component within the CIM Framework. This specification doesnot address how they are implemented within a CIM Framework conformant application. Thatlevel of detail is within the realm of the development effort.

4.1.1 Global Type Definitions

This section defines IDL typedefs, which may be referenced by any CIM Framework interface.The CIM Framework uses typedefs in two ways:

• To define aliases for compound object types ( e.g. structs), which can then be used in IDLspecifications

• To define aliases for basic object types, but with additional implied semantics (e.g., theunits typedef defines a string, whose contents conform to definitions found in [SEMI97])

Note that in the following definitions, “//” infers a comment.

Typedefs defined for the CIM Framework follow:

/* NamedValue is defined in CORBA and included here for reference. *//*

typedef string Identifier;

typedef unsigned long Flags;

struct NamedValue{

Identifier name; // argument name

any argument; // argument

long len; // len/count of argument value

Flags arg_modes; // argument mode flags

};

*/

typedef NamedValue NameValue;

typedef sequence<NamedValue> NameValueSequence;

typedef NameValueSequence TraderPropertySequence;

/*CosPropertyService is defined in CORBAservices. */typedef CosPropertyService::Property Property;

typedef sequence<CosPropertyService::Property> Properties;

/* This structure represents a two-dimensional (x,y) Cartesian coordinate. */typedef struct Coordinate2D_Structure {

float x ;

float y ; }

Coordinate2D ;

/* This type definition represents units for factory parameters, measurements. etc., and conformsto the SEMI E5 [SEMI97] standard for representation of units. In that standard, the stringcontains a code representing a value of the units. For example, “ns” would mean nanoseconds;“A” for ampere; and “wfr” for wafer. */typedef string Unit;

typedef string Units;

CIM Framework Interfaces 41

Technology Transfer # 93061697J-ENG SEMATECH

/* This type definition represents variable data for a machine that must be controlled by eithermanual or automatic means for processing Product on that machine. */typedef struct Setting_structure {

string settingName; // the name of the setting ("Temperature")

any settingValue ; // the value for the setting (e.g., 125)

Unit settingUnits ; // the units of the setting (e.g., “degC")

} Setting ;

/* This type definition represents a sequence of settings. */typedef sequence <Setting> SettingSequence;

/* This type definition represents a sequence of strings. */typedef sequence <string> stringSequence;

/* This type definition represents a sequence of any. An any is defined by CORBA.*/typedef sequence <any> anySequence;

/* This type definition represents a sequence of long */typedef sequence <long> LongSequence;

/* This enumerated type is necessary for event priorities and is used in each event definition. */enum PriorityOfEvent { Low, Medium, High, Alarm };

/* This enumerated type is to identify the lifecycle states that an object may go through. */enum LifecycleState { Undefined, Created, Deleted, Moved, Copied };

/* This enumerated type is to identify the states of objects that can be reserved (Lot, Durable andMachine). */enum ReservationState { UndefinedReservationState, Reserved, UnReserved };

/* This enumerated type represents the E10 states for Machines and Machine Resources. */enum E10State { E10Productive, E10Standby, E10Engineering, E10ScheduledDowntime,

E10UnscheduledDowntime, E10NonscheduledTime };

/* TimeT is a ulonglong value (64 bits) that represents the number of 100 nanosecond incrementsthat have passed since a base time (October 15, 1582 at 00:00, the Universal TimeRepresentation which refers to time in Greenwich Mean Time). The CIM Framework uses theOMG Time Services as a basis for manipulating time operations. The specification for TimeT is:*/struct ulonglong

{unsigned long low ;

unsigned long high ; } ;

typedef ulonglong TimeT ;

/* TimeStamp is mapped to the data type of TimeT. */typedef TimeT TimeStamp;

typedef sequence<TimeStamp> TimeStampSequence;

/* The notion of a specific interval of time denoting a start time and an end time is representedas a struct called IntervalT. */struct IntervalT

{TimeT lower_bound ;

TimeT upper_bound ; } ;

42 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* TimeWindow is mapped to the data type IntervalT. */typedef IntervalT TimeWindow;

/* Duration is mapped to the datatype TimeT. */typedef TimeT Duration;

/* This typedef structure is for the representation of a single schedule instance that may be usedby any number of CIM Framework entities. It should be noted that “EndTime” should neverproceed “StartTime.” A sequence of these instances would be used to represent a schedule overtime. */typedef struct ResourceSchedule_Structure {

TimeStamp plannedStartTime;

TimeStamp plannedEndTime;

TimeStamp actualStartTime;

TimeStamp actualEndTime;

} ResourceSchedule;

/* The definition of a sequence of ResourceSchedules. This sequence is ordered in increasingtime order and that order must be maintained in any manipulation of the sequence. */typedef sequence<ResourceSchedule> ResourceScheduleSequence;

typedef ResourceScheduleSequence PlannedShutDowns;

typedef ResourceScheduleSequence PlannedStartUps;

/* Enum for the days of the week. */enum Day {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};

/* A sequence of Days. */typedef sequence<Day> DaysWorked;

/* A shift for the factory. */typedef struct Shift_Structure {

string name; // “First Shift”, “AWS Shift 5”, etc.

unsigned short shiftStartHour; // 00,01,...,24

unsigned short shiftStartMinutes; // minute shift begins (00-59)

unsigned short shiftEndHour; // 00,01,...,24

unsigned short shiftEndMinutes; // minute shift ends (00-59)

DaysWorked shiftDaysWorked; // days of weeks this shift works

} Shift;

/* The definition of a sequence of shifts. This sequence is ordered by start times of the shifts,beginning at midnight and continuing through the day. The sequence cannot have duplicates.*/typedef sequence<Shift> ShiftSequence;

/* The definition of a CalendarDay which makes up a FactoryCalendar. This representation is fora single day in the MESFactory and should contain information necessary for the description ofthe work schedule for the day. */typedef struct CalendarDay_Structure {

TimeStamp dayTimeStamp; // start of the specific day

// (usually midnight)

long shopDate; // alternate view of the work day

ShiftSequence shiftsWorked; // shifts working on a given day

} CalendarDay;

CIM Framework Interfaces 43

Technology Transfer # 93061697J-ENG SEMATECH

/* This is a sequence of CalendarDays that can be used to make up a FactoryCalendar. Thissequence must be in increasing order, and order must be maintained in all manipulations andthere can not be duplicate days in the sequence. */typedef sequence<CalendarDay> CalendarDaySequence;

/* This is information regarding a responsibility owned by factory personnel and the category towhich that responsibility belongs. */typedef struct PersonResponsibility_Structure {

string responsibilityCategory ;

any responsibility ;

} PersonResponsibility;

typedef sequence<personResponsibility> ResponsibilitySequence;

/* Typedefs for History Events */

/* The subject string in HistoryEvent is a multi-level forward slash delimited string with thefollowing level definitions: / <component> / <interface> / <history type> / <user defined>. The<user defined> field adds additional levels to the subject string, but is an optional field. There isa distinction between FilterData and News. Filter data would be data that one would expect touse as a "key" in a future query against the history, while news would be data which wouldprobably not be used in a query. */

typedef struct HistoryEvent_BodyStructure

{

string historyEventSubject; // text subject

TimeStamp historyEventTS; // original time of event

string historyObject; // reference to a specific object

// can be "null" if no object is

// required

Duration historyDuration; // length of time to keep history

// data

// 0 means use installation default

CosPropertyService::Properties historyEventFilterData; // data for filtering

CosPropertyService::Properties historyEventNews; // non-filterable data

} HistoryEvent;

typedef sequence<HistoryEvent> HistoryEventSequence;

/* Filter data are attribute names, values and operators which are specified to further qualify ahistory event. The filterable data should be well known and standardized. News are attributesand values are which need not be standardized. */enum FilteringOperator {Filtering_eq, Filtering_gt, Filtering_lt, Filtering_ge,Filtering_le, Filtering_ne, Filtering_substr};

typedef struct FilterItem_Structure

{

CosPropertyService::Property aFilterItem;

FilteringOperator operator; // enum

} FilterItem;

typedef sequence<FilterItem> FilterItemSequence;

44 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Typedefs for PM related activity */enum PMType {ByUnits, ByRunTime, ByProcessingTime};

typedef struct PMActivity_Structure

{ PMType type; /*type of unit to determine PM*/

Duration personTime; /*time needed to complete PM*/

Skill aSkill; /*required skill to perform the PM*/

string task; /*description of the PM task*/

DurableSequence aDurableSequence; /*Required durables for PM*/

ConsumableSequence aConsumableSequence; /*Required consumables*/

}PMActivity;

typedef sequence<PMActivity> PMActivitySequence;

typedef struct PM_Definition_Structure

{ PMType type; /*type of unit to determine PM*/

Units unitType; /*wafers, runs, time, etc */

long count;

Duration personTime; /*time needed to complete PM */

Duration time; /*time between PMs*/

Skill aSkill; /*required skill to perform the PM*/

string task; /*description of the PM task*/

DurableSequence aDurableSequence; /*Required durables for PM*/

ConsumableSequence aConsumableSequence; /*Required consumables*/

}PMDefinition;

typedef sequence<PMDefinition> PMDefinitionSequence;

/* Typedefs for APC */

/* These data types are included to enable the creation of name-value pairs and lists of pairscontaining values that are relevant to control applications. The alternative is to use the OMG’sproperty definition and related services, but that data structure allows an any as the value field inthe name-value pair. The experiences of several implementers of CORBA applications are thatthe any type is cumbersome in applications. */

/* ct_ denotes a Corba type, vt_ denotes one of the enumerated Value types. */enum PrimitiveType {ct_Short, ct_Long, ct_UShort, ct_ULong, ct_Float, ct_Double,

ct_Boolean,ct_Char, ct_Octet,ct_String

};

union PrimitiveValue switch (PrimitiveType) {

case ct_Short: short aShortValue;

case ct_Long: long aLongValue;

case ct_UShort: unsigned short aUshortValue;

case ct_ULong: unsigned long aUlongValue;

case ct_Float: float aFloatValue;

case ct_Double: double aDoubleValue;

case ct_Boolean: boolean aBooleanValue;

case ct_Char: char aCharValue;

case ct_Octet: octet aOctetValue;

case ct_String: string aStringValue;

};

CIM Framework Interfaces 45

Technology Transfer # 93061697J-ENG SEMATECH

union SequenceValue switch (PrimitiveType) {

case ct_Short: sequence<short> aShortValueSequence;

case ct_Long: sequence<long> aLongValueSequence;

case ct_UShort: sequence<unsigned short> aUshortValueSequence;

case ct_ULong: sequence<unsigned long> aUlongValueSequence;

case ct_Float: sequence<float> aFloatValueSequence;

case ct_Double: sequence<double> aDoubleValueSequence;

case ct_Boolean: sequence<boolean> aBooleanValueSequence;

case ct_Char: sequence<char> aCharValueSequence;

case ct_Octet: sequence<octet> aOctetValueSequence;

case ct_String: stringSequence aStringValueSequence;

};

enum ValueType { vt_Primitive, vt_Sequence };

union Value switch(ValueType) {

case vt_Primitive: PrimitiveValue aPrimitiveValue;

case vt_Sequence: SequenceValue aSequenceValue;

};

/* The ExecutionContext is a list of some combination of objects that will uniquely define aninstance of a run of a ControlExecutor. The ControlExecutor running instance will be uniquelydefined by its RunningControlStategy, which is made unique by a combination of aControlStategy and the ExecutionContext. Examples of some objects that may be specified in anExectionContext include Lot, Machine, ProcessMachineJob, ProcessOperation andProcessStep.*/typedef any ExecutionContext ;

typedef sequence<NameValue> NameValueSequence;

typedef struct DataTagStructure{

string name;

PrimitiveValue value;

} DataTag;

typedef sequence<DataTag> DataTagSequence;

/* The Property datatype is the OMG property. */typedef Property TraderProperty;

typedef sequence<TraderProperty> TraderPropertySequence ;

typedef string pluginName ;

typedef any PluginContents;

typedef struct PluginSpecificationStruct {

pluginName aPluginName;

string summary;

string creator;

TimeStamp creationDate;

TraderPropertySequence capabilities ;

} PluginSpecification ;

typedef PluginSpecification PluginDescription;

typedef sequence<PluginDescription> PluginDescriptionSequence;

typedef string PluginType ;

typedef string PluginHandle ;

typedef any ControlValues ;

/* data values returned by plugin*/

typedef any PerformanceData ;

46 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* data values input to plugin */

typedef string ControlStrategyName ;

typedef any Contents ;

typedef struct ControlStrategySpecificationStruct {

ControlStrategyName aName;

string summary;

string creator;

TimeStamp date_created;

} ControlStrategySpecification ;

typedef ControlStrategySpecification ControlStrategyDescription;

typedef sequence<ControlStrategyDescription> ControlStrategyDescriptionSequence;

typedef stringSequence ContextSpec;

typedef string RunningControlStrategyID;

/* The difference between the RunningControlStrategySpecification and theRunningControlStrategyDescription is that the Description is for use with a VersionManagementcomponent. Since that portion of the CIM Framework is in transition, the Description struct is aplaceholder until the specification solidifies. */typedef struct RunningControlStrategySpecificationStruct {

RunningControlStrategyID anID;

ControlStrategy aControlStrategy;

string summary;

string creator;

TimeStamp creationDate;

} RunningControlStrategySpecification;

typedef RunningControlStrategySpecification RunningControlStrategyDescription;

typedef sequence<RunningControlStrategyDescription>

RunningControlStrategyDescriptionSequence;

typedef sequence<RunningControlStrategy> RunningControlStrategySequence;

typedef string ContentType;

typedef string ExecutionType ;

typedef sequence<ControlExecutor> ControlExecutorSequence ;

/* Data required by the control executor to perform the requested control actions. */typedef any ControllerArguments;

/* Data returned as a result of the control execution. */typedef any ControllerResults ;

typedef struct ControlJobSpecificationStruct{

ExecutionType anExecutionType;

ExecutionContext anExecutionContext;

ControllerArguments aControlArguments;

} ControlJobSpecification;

typedef sequence< double > LineDataSequence ;

/* The GraphData structure holds fault data to be used for the purposes of displaying a graph thatis in some way meaningful for the fault that has been detected.*/typedef struct GraphData_Structure {

string legend;

LineDataSequence data;

} GraphData;

typedef sequence< GraphData > GraphDataSequence;

CIM Framework Interfaces 47

Technology Transfer # 93061697J-ENG SEMATECH

/*The LineGraph structure holds all of the information needed to construct a graph of the faultdata. The structure contains GraphDataSequences for the x and y data, such that multiple x and yseries can be displayed on one chart. The default chart type (which can be overridden), forexample scatter, line, bar, pie, etc., can be specified, as well as the title and x and y axis labels.*/typedef struct LineGraph_Structure {

string title;

string graphType;

string x_label;

string y_label;

GraphDataSequence x_data;

GraphDataSequence y_data;

} LineGraph;

typedef sequence< LineGraph > LineGraphSequence;

typedef NameValueSequence DurationPlan;

/* Sampling Plan – information related to sampling rates, etc.*/typedef NameValueSequence SamplingPlan;

/* Reporting Plan – specifies how and when data should be sent back to the requestor.*/typedef NameValueSequence ReportingPlan;

/* FormatSpec – the format that an observable should be reported back in: float, int, string, etc.*/typedef ContentType FormatSpec;

typedef struct LimitsStruct {

string aName;

NameValueSequence aUserDefined;

} Limits;

typedef sequence<Limits> LimitsSequence;

/* Observable describes a data item in a Data Collection Plan.*/typedef struct ObservableStruct {

string aObservableName;

string aNameOnTheEquipment;

FormatSpec aFormatSpec;

DataTagSequence aUserDefined;

} Observable;

/* ObservableWithLimits describes a data item in a Data Collection Plan.*/typedef struct ObservableWithLimitsStruct {

Observable aObservable;

LimitsSequence aLimits;

} ObservableWithLimits;

typedef sequence<ObservableWithLimits> ObservableWithLimitsSequence;

/* The DataCollection Plan interface.*/typedef struct DataCollectionPlanStruct {

DurationPlan aDurationPlan;

SamplingPlan aSamplingPlan;

ReportingPlan aReportingPlan;

TraderPropertySequence aCapabilities;

ObservableWithLimitsSequence aObservableWithLimits;

} DataCollectionPlan;

typedef sequence<DataCollectionPlan> DataCollectionPlanSequence ;

48 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

typedef string DataCollectionPlanName;

typedef struct DataCollectionPlanSpecificationStruct {

DataCollectionPlanName aDataCollectionPlanName;

string summary;

string creator;

TimeStamp creationDate;

TraderPropertySequence capabilities ;

} DataCollectionPlanSpecification ;

typedef DataCollectionPlanSpecification DataCollectionPlanDescription;

typedef sequence<DataCollectionPlanDescription> DataCollectionPlanDescriptionSequence;

typedef sequence<ControlData> ControlDataSequence;

typedef any RunData;

typedef string moniker;

typedef string DataCollectionID;

typedef struct DataAvailableNewsStructure {

FilterItem theProcessMachine ;

RunData theRunData ;

DataCollectionID theDataCollectionID;

moniker themoniker;

} DataAvailableNews ;

typedef struct DataAvailableEventStructure {

string subject;

short priority ; // high

TimeStamp aTimeStamp ;

long agingFactor ;

DataAvailableNews news ;

} DataAvailableEvent ;

/* Typedefs of sequences of Interfaces: */typedef sequence<Area> AreaSequence;

typedef sequence<BOMBody> BOMBodySequence;

typedef sequence<BOMSpecification> BOMSpecificationSequence;

typedef sequence<ProcessCapability> CapabilitySequence;

typedef sequence<Cassette> CassetteSequence;

typedef stringSequence CategorySequence;

typedef sequence<ChangeNotice> ChangeNoticeSequence;

typedef sequence<ComponentManager> ComponentManagerSequence;

typedef sequence<Consumable> ConsumableSequence;

typedef sequence<Die> DieSequence;

typedef sequence<DispatchDecision> DispatchDecisionSequence;

typedef sequence<Dispatcher> DispatcherSequence;

typedef sequence<DocumentRevision> DocumentRevisionSequence;

typedef sequence<Durable> DurableSequence;

typedef sequence<HistoryCollection> HistoryCollectionSequence;

typedef sequence<History> HistorySequence;

typedef stringSequence IdentifiersSequence;

typedef stringSequence InventoryRegionNameSequence;

typedef sequence<InventoryRegion> InventoryRegionSequence;

typedef stringSequence InventoryRegionSystemNameSequence;

typedef sequence<InventoryRegionSystem> InventoryRegionSystemSequence;

CIM Framework Interfaces 49

Technology Transfer # 93061697J-ENG SEMATECH

typedef sequence<Job> JobSequence;

typedef sequence<JobSupervisor> JobSupervisorSequence;

typedef sequence<LotFamily> LotFamilySequence;

typedef sequence<Lot> LotSequence;

typedef sequence<MachineResource> MachineResourceSequence;

typedef sequence<Machine> MachineSequence;

typedef sequence<MaterialContainer> MaterialContainerSequence;

typedef sequence<MaterialGroup> MaterialGroupSequence;

typedef sequence<MaterialMovementController> MaterialMovementControllerSequence;

typedef sequence<Material> MaterialSequence;

typedef MaterialSequence MaterialOrderedSequence;

typedef Port MaterialPort;

typedef sequence<MaterialPort> MaterialPortSequence;

typedef sequence<MaterialTrackingLocation> MaterialTrackingLocationSequence ;

typedef sequence<PMSpecification> PMSpecificationSequence;

typedef sequence<Person> PersonSequence;

typedef sequence<Port> PortSequence;

typedef CapabilitySequence ProcessCapabilitySequence;

typedef sequence<ProcessDurable> ProcessDurableSequence;

typedef sequence<ProcessFlowContext> ProcessFlowContextSequence;

typedef sequence<ProcessGroup> ProcessGroupSequence;

typedef sequence<ProcessMachine> ProcessMachineSequence;

typedef sequence<ProcessOperation> ProcessOperationSequence;

typedef sequence<ProcessOperationSpecification> ProcessOperationSpecificationSequence;

typedef sequence<ProcessResource> ProcessResourceSequence;

typedef sequence<ProductRequest> ProductRequestSequence;

typedef sequence<ProductRequestManager> ProductRequestManagerSequence;

typedef sequence<Product> ProductSequence;

typedef sequence<ProductSpecification> ProductSpecificationSequence;

typedef stringSequence ProductTypeSequence;

typedef sequence<QualificationData> QualificationDataSequence;

typedef string RecipeIdentifier;

typedef sequence<RecipeNamespace> RecipeNamespaceSequence;

typedef anySequence RegisteredEntitiesSequence;

typedef sequence<SkillRequirement> RequirementSequence;

typedef sequence<Resource> ResourceSequence;

typedef sequence<Sensor> SensorSequence;

typedef sequence<Skill> SkillSequence;

typedef ProductSequence SplitProducts;

typedef sequence<SupportResource> SupportResourceSequence;

typedef sequence<TransportGroup> TransportGroupSequence;

typedef sequence<TransportJobSupervisor> TransportJobSupervisorSequence;

typedef sequence<Wafer> WaferSequence;

/* Misc Typedefs */typedef long Position;

typedef LongSequence PositionSequence;

typedef any ProcessRunData;

typedef string PluginContentType; /*is this correct*/

50 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.1.2 Global Exception Definitions

The following exceptions are those that are, in CORBA parlance, “user-defined.” For “system-defined” exceptions, the reader should consult the CORBA specification. [CORBA].

/*This signal is raised when an attempt is made to create an object instance using a pre-existingidentification string. */exception DuplicateIdentifierSignal {string duplicateIdentifier;};

/*This signal is raised when an invalid state transition request is made of an object. */exception InvalidStateTransitionSignal { };

/*This signal is raised when a “set” attribute contains a value out of range. */exception SetValueOutOfRangeSignal { };

/*This signal is raised when an incorrect TimePeriod is used. */exception TimePeriodInvalidSignal { };

/* This signal is raised when no other defined signal matches the error condition. */exception FrameworkErrorSignal {

unsigned long errorCode;

any errorInformation;

};

/* Definition of fields for FrameworkErrorSignal :

errorCode is a numeric field representing the code for the given exception.

errorInformation is a field containing any textual description of the exception or further debugging information.

The errorCode has certain reserved values that are defined and standardized in the CIMFramework.

• 0000-0999 reserved for the SEMATECH CIM Framework.

• 1000-1999 reserved for extensions to the CIM Framework (perhaps by SEMI, or OMG).

• 2000-2999 reserved for specialized subclasses to current CIM Framework classes.

• 3000-maximum reserved for implementers.

At this time, the following standard errorCode values are documented in the CIM Framework:

• 0 “Not implemented exception.” This code should be used on any method where the supplier has chosen to not provide implementation but needs to communicate to the user that nothing has happened as a result of this method invocation.

• 1 “Implemented by subclass exception.” This code should be used on any method where the supplier assumes a specialized subclass will implement this method. If this exception is received, the user will realize that an interface has not be properly specialized.

CIM Framework Interfaces 51

Technology Transfer # 93061697J-ENG SEMATECH

• 2 “Unknown exception received.” This code should be used on any method where an unknown exception has been caught by the implementation and, rather than crashing, the implementation can map the unknown exception into this known exception. This probably does not aid in program debugging but does prevent program crashing.

• 3 “Method completion state unknown.” This code should be used on any invocation where some unknown error has occured that left the server object in anambiguous state.

4.2 Application Objects

The remainder of Section 4 is the heart of this document and includes the specification of theComponents and Abstract Interface Groups that make up the CIM Framework. These interfacedefinitions will be implemented as, or inherited by, framework objects to provide the core set ofinteroperability required to build compatible, substitutable applications (Application Objects inOMG parlance) in the domain of semiconductor CIM. The reader unfamiliar with the ObjectManagement Architecture is encouraged to read [OMA].

Three key concepts guide the organization of the rest of Section 4:

Group—Also called a functional group, a group provides .a means of logically groupingcomponents supporting factory capability in some traditionally recognized fashion (e.g.,document management, equipment integration). A functional group has no relevant architecturalbearing, it is simply a means of logically organizing components for the purpose of specification.Functional groups are presented at the secondary heading level.

Component— a grouping of a small, core set of related interfaces that provide some fundamentalcapability within the general heading of a functional group. Component interfaces are intended toeither be inherited by or specialized into an object instance.

Abstract Interface Group—a group that eases understanding, implementation, and use of theCIM Framework Specification. There are some interfaces defined in the CIM Framework that areabstract interfaces only. It is understood that suppliers will create implementations of theseinterfaces but will not instantiate them. These particular interfaces are more closely aligned withtraditional interface library behavior rather than the CIM Framework definition of components.They are not interfaces for which there should (or must) be only one definition or occurrencewithin a Factory. They are simply abstract interfaces in the hierarchy path from which mostinstantiated interfaces will inherit. Each supplier must create their own set of these interfaces tocreate their particular instantiated interfaces and there is no reason to enforce the same rules tothese interfaces as to components (i.e., ability to be turned-off or the ability to use a differentsupplier’s implementation).

There are two categories of abstract interfaces. The first category is global abstract interfaces.These are typically high in the inheritance chain. The second category is domain specific. Theseare lower in the inheritance chain and typically concerned with specific components or functionalareas of an MES. The following table lists the abstract interfaces.

52 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Table 4 Abstract Interface

Abstract Interface Name Abstract Interface Category Reference

NamedEntity Global 4.3.1.1

OwnedEntity Global 4.3.1.2

Resource Global 4.3.1.3

ComponentManager Global 4.3.1.4

JobSupervisor Global 4.3.2.1

Job Global 4.3.2.2

HistoryCollection Global 4.4.5.1

History Global 4.4.5.2

Material Domain 4.6.1.1

MaterialGroup Domain 4.6.1.2

TransportJobSupervisor Domain 4.8.1.1

TransportJob Domain 4.8.1.2

Machine Domain 4.9.1.3

ProcessMachine Domain 4.9.1.4

CIM Framework Interfaces 53

Technology Transfer # 93061697J-ENG SEMATECH

4.3 Base Interfaces

The Base Interfaces provide a suite of interfaces that are used throughout the CIM Framework.The Resource Abstract Interface Group provides a hierarchy of abstract interfaces that are used as“inherited interfaces” in the rest of the CIM Framework. The Job-related interfaces are used inspecific derivations (i.e. TransportJob, etc.) that utilize the Job Architecture of the CIMFramework. These interfaces are abstract and are expected to be specialized in a specificimplementation.

4.3.1 Resource Abstract Interface Group

The Resource Abstract Interface Group provides a set of abstractions that are globally useful.Figure 18 is the Information Model for the Resource Abstract Interface Group.

any

NamedEntity

Resource

is owned byanother

Resource AbstractInterface Group

OwnedEntity

ComponentManager

HistoryCollectionis associated

with

Figure 18 Resource Abstract Interface Group Information Model

All CIM Framework interfaces will inherit from one of the interfaces shown in Figure 18.NamedEntity provides the most basic naming functions. An OwnedEntity is a NamedEntity withfunctions supporting the concept of ownership. A Resource is an OwnedEntity that also takes anactive role in product manufacturing. A ComponentManager is a Resource that manages objectswithin a component. The use of interface inheritance is a minimum requirement.Implementations may also use implementation inheritance as deemed appropriate.

54 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.3.1.1 Interface: NamedEntity

Inherited Interface: Implementation-dependent.

Description: The abstract interface NamedEntity provides the concept of a named item.This allows for comparison and conversion of names via a standard object.Collections of history should be available to all CIM FrameworkNamedEntities (or sub-types). The specific HistoryCollection can beobtained using the OMG Trader Service [CosTrade] or thegetHistoryCollection operation.

Exceptions: None.

Published Events: None.

Provided Services:

/* Set and get the name. */void setName (in string name) raises (FrameworkErrorSignal);

string getName ( ) raises (FrameworkErrorSignal);

/* Tests the equality of the name of the named entity with the name provided as an argument. */boolean isNamed (in string testName) raises (FrameworkErrorSignal);

/* Returns the histories (events) which have been collected. It is intended that this operation willbe implemented by a subtype of NamedEntity. Returns null if no history is available. */HistoryEventSequence getHistoryEvents ( ) raises (FrameworkErrorSignal);

/* Returns the HistoryCollection used by this object. Returns null if no HistoryCollection isused.*/HistoryCollection getHistoryCollection ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 55

Technology Transfer # 93061697J-ENG SEMATECH

4.3.1.2 Interface: OwnedEntity

Inherited Interface: NamedEntity

Description: The abstract interface OwnedEntity provides for the concept of an ownedentity. There may be only one owner for each instance of an OwnedEntity.The OwnedEntity is able to communicate with the owner to requestservices, or forward information of interest. To build a parts of hierarchy, aseries of ownerships can be established.

Exceptions: None.

Published Events: None.

Provided Services:

/*Set and get owner. */void setOwner (in any owner) raises (FrameworkErrorSignal);

any getOwner ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

56 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.3.1.3 Interface: Resource

Inherited Interface: OwnedEntity

Description: Resource is an abstract inherited interface for any entity inthe factory that takes an active role in advancing a product along itsmanufacturing life cycle (adds value). This includes the factory itself,personnel, production, planning and scheduling resources, and all of themachines used for processing, transporting, and storing materials.Resource provides a common set of services for monitoring and control.Resource also includes the capability to track a history related to thatinstance of a Resource. Resource uses the NamedEntity and OwnedEntitycharacteristics together to allow for the building of resource hierarchies.

Exceptions: None.

Published Events: None.

Provided Services:

/* Perform the startup activities for this Resource. Should be implemented by Resourcespecializations.*/void startUp ( ) raises (FrameworkErrorSignal);

/* Perform normal shutdown activities for this Resource. Normal is defined as allowing theResource to complete any current activities and gracefully shut down. This should beimplemented by Resource specializations. */void shutdownNormal ( ) raises (FrameworkErrorSignal);

/* Perform immediate shutdown activities for this Resource. Immediate is defined as a borting orterminating any current activities and stopping activity as soon as possible. This should beimplemented by Resource specializations. */void shutdownImmediate ( ) raises (FrameworkErrorSignal);

/* Answer the receiver’s level in the Resource hierarchy. Resource specifies that each differenttype of Resource provide a resourceLevel identifier. To illustrate this service, use the Machinedescribed in the Resource interface description. The level for each of the Resources could answerthe following:

resourceLevel ( ); sent to an instance of Machine answers Machine.resourceLevel ( ); sent to an instance of ProcessResource answers ProcessResource. */string resourceLevel ( ) raises (FrameworkErrorSignal);

/* The following service provides name scoping for NamedEntity. */string nameQualifiedTo (in string resourceLevel) raises (FrameworkErrorSignal);

/* Service explanation: The NamedEntity interface does not specify any scoping of the names. Itis possible (but not recommended) to have multiple instances of a NamedEntity that have thesame string as the name. For the Resource structure to remain flexible yet retain uniqueidentification, name scoping has been developed. The scoping makes use of the notion ofResource level and the ownership hierarchy. Unique identification of the MachineResourceswithin the Machine is obvious but to identify them outside the Machine requires additionalinformation about their ownership. Thus:

CIM Framework Interfaces 57

Technology Transfer # 93061697J-ENG SEMATECH

nameQualifiedTo (“Machine”) sent to the ProcessResource named “Chamber”

answers “TestMachine>Chamber”.

If the Machine was owned by a Factory named “TestFactory”, then:

nameQualifiedTo (“Factory”) sent to the ProcessResource

answers “TestFactory>TestMachine>Chamber”

where the ProcessResource has now been uniquely identified for the given Factory.

There is no limit to the number of levels that may be addressed this way. Based on theimplementations of nameQualifiedTo (string); a name need not always be concatenated if aparticular Resource level is not applicable to identification. */

/* This service answers the immediate set of sub-Resources for a given Resource sub-interface.*/ResourceSequence subresources ( ) raises (FrameworkErrorSignal);

/* Answer if the resource is available. Available means the resource is functional and ready toaccept and perform its normal tasks. Derivatives of Resource are expected to expand this state(e.g. add sub-interfaces) that explicitly deal with such additional issues as capacity, normal workversus maintenance, etc. */boolean isAvailable ( );

/* Answer if the resource is Not Available. Not available means the resource is unable to acceptor begin new tasks. Previously begun tasks may continue in some cases. Derivatives ofResource are expected to expand this state to explicitly deal with starting up and shutting downprocesses as needed. */boolean isNotAvailable ( );

Contracted Services: None.

58 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Dynamic Model:

Available

Not Available

1

2

3 4

5

Figure 19 Resource Dynamic Model

Object State Table:

There must be a clear division between the state of the Resource and the condition of the physicalentity that the Resource represents. For instance, a Machine is a resource, but the fact that it isNot Available may not mean the physical equipment is shutdown on the shop floor. In fact, theequipment may be operating in manual mode. The Resource state represents the availability ofthe Resource object to accept work for the factory system.

Table 5 Resource State Transition Table

# Current State Trigger New State Action Comment

1 Nonexistent Object creation. Available

2 Not Available Startup processcompletion.

Available startUp() servicebegins process.

3 Available Completion of normalshutdown process.

Not Available shutdownNormal()begins process.

4 Available shutdownImmediate() Not Available

5 Not Available Resource removed. Nonexistent

CIM Framework Interfaces 59

Technology Transfer # 93061697J-ENG SEMATECH

4.3.1.4 Interface: ComponentManager

Inherited Interface: Resource

Description: The ComponentManager is an abstract interface that supports theregistration and control (enabling/disabling) of a component’s interfaceand for managing the resources in its domain.

Exceptions: None.

Published Events:ComponentManagerStateChangedEvent

ComponentManagerRegistrationChangedEvent

Provided Services:

/* This message causes the component to do its portion of the registration interchange with thefactory indicated by the argument. Note this operation will register the Component Managerwith an OMG compliant Trader service [CosTrade]. One of the Trader properties used forregistration must be the Area for this Component Manager. */void makeRegistered (in MESFactory aFactory)

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

/* This message causes the component to do its portion to remove its registration from the Traderservice. */void makeNotRegistered (in MESFactory aFactory)

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

/* This message causes a registered component to perform its startup sequence. Each managergets itself to the point where it is capable of interacting with other components. When it is readyto support all services defined in the interface, the component manager tells the factory thatcomponent startup is complete. */void makeStartingUp ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

/* This message causes the component to perform its shutdown sequence and then enter the stateSTOPPED. During shut down activities, time is allotted to bringing the resources of a componentto a safe stopping condition. The component manager tells the factory that component shutdownis complete. */void makeShuttingDown ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

/* This message causes the component to go into the state STOPPED without regard to data lossor the stopping condition of resources or material. There is no communication with the factory.*/void makeStopped ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

60 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Answer whether the status of the component is that indicated.*/boolean isStopped ( ) raises (FrameworkErrorSignal);

boolean isStartingUp ( ) raises (FrameworkErrorSignal);

boolean isShuttingDown ( ) raises (FrameworkErrorSignal);

boolean isNotRegistered ( ) raises (FrameworkErrorSignal);

boolean isRegistered ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model:

NOTREGISTERED

REGISTERED

AVAILABLE

1 2

4 5

SHUTTINGDOWN

STARTINGUP

STOPPED

NOT AVAILABLE

3 6

Figure 20 Component Manager Dynamic Model

CIM Framework Interfaces 61

Technology Transfer # 93061697J-ENG SEMATECH

Object State Tables:

Table 6 ComponentManager State Definitions and Query Table

State Definition Query for State via

NOT REGISTERED Component is not registered with afactory and is not connected tosystem.

boolean isNotRegistered ( );sent to the instance ofComponentManager returns TRUE.

REGISTERED Component is registered with afactory and is connected to system.

boolean isRegistered ( );sent to the instance ofComponentManager returns TRUE.

STOPPED Component is not able to provideservices.

boolean isStopped ( );sent to the instance ofComponentManager returns TRUE.

STARTING UP Component is performing startupsequence.

boolean isStartingUp ( );sent to the instance ofComponentManager returns TRUE.

AVAILABLE Component is capable ofinteracting with other componentswith its full service interface.

boolean isAvailable ( );sent to the instance ofComponentManager returns TRUE.

SHUTTING DOWN Component is performingshutdown sequence.

boolean isShuttingDown ( );sent to the instance ofComponentManager returns TRUE.

62 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Table 7 ComponentManager State Transition Table

# Current State Trigger New State Action Comment

Nonexistent No CIM Frameworktrigger necessary.

The initial stateis implementa-tion dependent.

ComponentMan-ager is anabstract inherited interfacedesigned to providecommon behavior forsubclassing. Instancecreation is done by thesubclasses.

Initial state examples: acomponent may beoperational when itregisters; a component maybe stopped when itregisters.

1 NOTREGISTERED

makeRegistered ()sent to the instance ofComponentMan-ager

REGISTERED Component managerregisters with a Factoryinstance via Trader.

2 REGISTERED makeNotRegistered ( )sent to the instance ofComponentMan-ager

NOTREGISTERED

Component managerremoves registration fromthe Factory via Trader.

3 STOPPED makeStartingUp ( )sent to the instance ofComponentManager

STARTING UP Component manager isrequested to start up.

4 STARTINGUP

Internal to component OPERATING Component manager hasfinished its startupsequence. As an action, itreports to Factory that it isable to provide services,via events.

5 AVAILABLE makeShuttingDown ( )sent to the instance ofComponentMan-ager

SHUTTINGDOWN

The component managerrecieves shutdown normalmessage. As an action itreports to the Factory thatresources and material arebrought to a safe state.

6 SHUTTINGDOWN

Internal to component STOPPED The component managerhas finished its shutdownsequence. Resources andmaterials are in a safe state.

CIM Framework Interfaces 63

Technology Transfer # 93061697J-ENG SEMATECH

4.3.2 Job Supervisor Abstract Interface Group

The Job Supervisor Abstract Interface Group provides the abstractions common to creating,executing, and managing a job, where a job can be defined as some system level operation thatmay be requested from the JobSupervisor. The job often spans a significant amount of time andmultiple resources within the system. It is intended for specialization to provide specific jobsupervisors and jobs to provide system solutions.

OwnedEntity

Job Requestor

Job Supervsior

tracksprogress via

Resource

supervises

Person

Job

contractswork from

assignedto

1+

Figure 21 Job Supervision Abstract Interface Group

The basic Job Supervision component (or abstract group) does not interact with othercomponents, except to the extent that other components instantiate its interfaces. Figure 21shows how the interfaces of Job Supervision relate to one another.

Not shown in the diagram is the JobSpecification, a sequence of name value pairs containing theparameters required to sufficiently define the work to be done. This sequence is passed by theJobRequestor to the JobSupervisor in the JobRequest message. See the JobSupervisor interfacefor more details.

JobSupervision levels are hierarchical. One level may accept a Job and delegate portions of thatJob to lower levels. Jobs, however, are not purely hierarchical. A Job accepted by oneJobSupervisor may be broken down, along with other jobs of that component and reconstitutedas needed to optimize the activities of the factory.

64 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

For example, a ProductRequest may ask for 15 wafers of a particular product. TheProductRequestManager may delegate a LotJob to Factory Operations with a Lot containingthose 15 wafers and 10 more from a different ProductRequest. In the factory, this Lot may besplit up and processed in smaller groups at various stages or, as scrap reduces the wafer count,combined with another small lot to create a more optimal process group. The Job Supervisionallowed great latitude to optimize performance. Its only requirement is to fulfill the specificationof the Job.

The role of Person in JobSupervision within the Factory is an important one. Most jobs intoday’s semiconductor factories may involve a person in one role or another. Other resources willalso be involved in various derivatives of Job.

CIM Framework Interfaces 65

Technology Transfer # 93061697J-ENG SEMATECH

4.3.2.1 Interface: JobSupervisor

Inherited Interface: Resource

Description: The JobSupervisor manages all the jobs being performed by thecomponent that implements it. It receives the requests for work, facilitatesthe creation1 of a job for the task and returns (a reference to) that job to therequestor.

A JobSupervisor will have a well defined domain that it can call on toperform work. These may be CIM Framework Resources if it delegatesthe work, or internal resources if it performs the work itself. Only activityrequests which can be accomplished within the domain of a JobSupervisorshould be issued to/accepted by that JobSupervisor.

Jobs accepted by a JobSupervisor shall be named uniquely. Jobs fromdifferent JobSupervisors are not necessarily uniquely named.

The definition of the work to be performed is given in the jobRequestservice by the JobSpecification — a sequence of name/value pairs (seeProperties definition). All jobRequests are required to contain certainname/value pairs (or parameters), as defined in the following table. SeeJob definition for more information. Components which offer derivativesof Job may require additional parameters.

JobSpecification Parameters

Name Value Type Description

Priority long Integer value, ranges from 1 to 99, where 1 is the highestpriority and 99 is the lowest.

Deadline TimeStamp The Job is expected to be completed no later than the specifiedvalue of the Deadline.

Note: “Value Type”, when listing a class, implies an object reference. Simple types imply passby value.

/* Defines the type of job being requested. This enum will need to be expanded to include alltypes of Jobs which might be requested within a factory system. */enum JobType { ProductRequestJobType, LotJobType, AreaJobType, ProcessMachineJobType,TransportJobType, PMJobType, ProcessControlJobType };

Exceptions:

/* Requested Job was rejected. */exception JobRejectedSignal { };

exception JobNotFoundSignal { };

Published Events: None.

1 The JobSupervisor may not actually instantiate the new job. That process is encapsulated within the component.

66 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Provided Services:

/* Request that work be done according to the proffered specification. A Job that represents thework is returned for future reference. */Job requestJob (in JobType type, in Properties aJobSpecification,

in JobRequestor aJobRequestor)

raises (FrameworkErrorSignal, JobRejectedSignal);

/* Ask whether the job specified by the JobSpecification would be accepted for current or future(queued) processing if a requestJob message were issued now. */boolean canPerform (in JobType type, in Properties aJobSpecification)

raises (FrameworkErrorSignal);

/* Command to begin the pausing of all jobs of this JobSupervisor that can be paused (e.g., notFinished Jobs). */void pauseAllJobs () raises (FrameworkErrorSignal);

/* Command to resume all Jobs of this JobSupervisor that are currently Paused. */void resumeAllJobs () raises (FrameworkErrorSignal);

/* This command terminates all the jobs under the control of the JobSupervisor immediately,without regard to effects on the yield of this product. This service should be used with greatcaution. It implies potential loss of material due to incomplete processing that may not be able tobe restarted (e.g. partly etched wafers). */void abortAllJobs () raises (FrameworkErrorSignal);

/* This command terminates all the jobs under the control of the JobSupervisor at the next safeopportunity. Safe indicates no potential damage to the product due to stopping in the middle ofprocessing. In some cases, the job must complete to satisfy this request. */void stopAllJobs () raises (FrameworkErrorSignal);

/* This service removes a Job that is in the Finished state from the active memory of aJobSupervisor. Persistent information about the job may be captured in a History. It is alsounderstood that there may be rules for automatic removal of finished jobs based on time, numberof jobs, or other criteria. */void removeFinishedJob (in Job aJob) raises (FrameworkErrorSignal);

/* Find a job by name. Remember that a Job is a NamedEntity. */Job findJobNamed (in string jobName)

raises (FrameworkErrorSignal, JobNotFoundSignal);

/* Find a queued job by name. */Job findQueuedJobNamed (in string jobName)

raises (FrameworkErrorSignal, JobNotFoundSignal);

/* Find an active job by name. */Job findActiveJobNamed (in string jobName)

raises (FrameworkErrorSignal, JobNotFoundSignal);

/* Find a completed job by name. */Job findCompletedJobNamed (in string jobName)

raises (FrameworkErrorSignal, JobNotFoundSignal);

CIM Framework Interfaces 67

Technology Transfer # 93061697J-ENG SEMATECH

/* Return all the specified jobs. The JobSequence may be empty. */JobSequence allJobs ( ) raises (FrameworkErrorSignal);

JobSequence allQueuedJobs ( ) raises (FrameworkErrorSignal);

JobSequence allCanceledJobs ( ) raises (FrameworkErrorSignal);

JobSequence allActiveJobs ( ) raises (FrameworkErrorSignal);

JobSequence allExecutingJobs ( ) raises (FrameworkErrorSignal);

JobSequence allNotPausedJobs ( ) raises (FrameworkErrorSignal);

JobSequence allPausingJobs ( ) raises (FrameworkErrorSignal);

JobSequence allPausedJobs ( ) raises (FrameworkErrorSignal);

JobSequence allStoppingJobs ( ) raises (FrameworkErrorSignal);

JobSequence allAbortingJobs ( ) raises (FrameworkErrorSignal);

JobSequence allFinishedJobs ( ) raises (FrameworkErrorSignal);

JobSequence allStoppedJobs ( ) raises (FrameworkErrorSignal);

JobSequence allAbortedJobs ( ) raises (FrameworkErrorSignal);

JobSequence allCompletedJobs ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Inherited.

68 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.3.2.2 Interface: Job

Inherited Interface: OwnedEntity

Description: The Job interface represents a unit of work requested of and performed (orfacilitated) by a factory entity that results in some change of the overallfactory state. Which interface actually performs the work (or delegation ofwork) is an implementation decision. A Job is expected (but not required)to take a non-zero time to perform and have a non-zero chance of refusalor failure. A Job may encapsulate a decomposition into a sequence ofjobs/tasks/activities that are delegated to lower level job supervisors. TheJob exists during the execution timeframe. The more persistent record ofthe Job should be maintained in a History.

Jobs do not restrict which objects may issue control messages. Any suchlimitations are expected to be implemented at the JobSupervisor level.

Exceptions:

/* The job control message was rejected. */exception InvalidStateTransitionSignal { };

Published Events:

/* Any time the Job’s state changes. */JobStateChangedEvent

/* If the Job cannot be completed by the specified deadline. This shouldbe sent as early as possible, not necessarily after the deadline has passed.The ability to determine this may vary by type of Job and otherimplementation details. */JobDeadlineCannotBeMetEvent

/* This event is posted when a Job’s deadline date has changed. */JobDeadlineChangedEvent

Provided Services:

/* Ask the Job for its JobRequestor. */JobRequestor getJobRequestor () raises (FrameworkErrorSignal);

/* The initial value for the deadline attribute will come from the JobSpecification. The Job isexpected to be completed no later than the specified deadline. This provides the JobSupervisorsome ability to plan its execution schedule. The Job shall issue an event when it determines thatthis deadline will be exceeded. Any further action is the responsibility of the JobRequestor. */TimeStamp getDeadline () raises (FrameworkErrorSignal);

/* The JobRequestor may adjust the deadline according to its needs. */void setDeadline (in TimeStamp deadline)

raises (FrameworkErrorSignal, TimePeriodInvalidSignal);

/* Get the priority of the Job. Priority ranges from 1 to 99 where 1 is the highest priority and 99is the lowest. This format matches that of Lot priority. */long getPriority ( ) raises (FrameworkErrorSignal);

CIM Framework Interfaces 69

Technology Transfer # 93061697J-ENG SEMATECH

/* The JobRequestor may adjust the Priority according to its needs. */void setPriority (in long thePriority)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

/* Begin the process to pause the Job at the next safe opportunity. Results in the transition toPausing state and eventually Paused state. */void makePaused ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Request the Job resume activity from the previous Pause. Results in the transition to NotPaused state. */void makeNotPaused ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Request to cancel the Job. This message is only valid if the Job is in the Queued state (e.g.,the Job cannot be canceled once it is Active). This message results in the transition to theCanceled state. */void makeCanceled ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Begin the process to stop the Job. This is an orderly termination and should never causeirreparable problems (e.g., should not stop etching a wafer in mid-cycle). This message results inthe transition to the Stopping state and eventually the Stopped state. */void makeStopped ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Begin the process to abort the Job. Caution should be used with this method. Aborting a Jobrequires immediate termination of the Job and could result is loss of product. This messageresults in the transition to the Aborting state and eventually the Aborted state. */void makeAborted ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Determine whether the Job is in state indicated. */boolean isAborting ( ) raises (FrameworkErrorSignal);

boolean isAborted ( ) raises (FrameworkErrorSignal);

boolean isActive ( ) raises (FrameworkErrorSignal);

boolean isCanceled ( ) raises (FrameworkErrorSignal);

boolean isCompleted ( ) raises (FrameworkErrorSignal);

boolean isFinished ( ) raises (FrameworkErrorSignal);

boolean isPausing ( ) raises (FrameworkErrorSignal);

boolean isPaused ( ) raises (FrameworkErrorSignal);

boolean isQueued ( ) raises (FrameworkErrorSignal);

boolean isStopping ( ) raises (FrameworkErrorSignal);

boolean isStopped ( ) raises (FrameworkErrorSignal);

/* Return the estimated time remaining until Job completion. The quality of this estimate isdependent both on the specific Job derivative and on the implementation. If the Job is Finishedor Canceled, a zero Duration will be returned. */Duration timeRemaining ( ) raises (FrameworkErrorSignal);

70 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Contracted Services:

Interface Component Service

JobRequestor JobSupervision informJobStarted

JobRequestor JobSupervision informJobCompleted

JobRequestor JobSupervision informJobTerminated

Dynamic Model:

Queued Canceled

Pausing

Not Paused Paused

Aborting

Aborted

Stopping

Completed Stopped

Active

Executing

Finished

Figure 22 Job Dynamic Model

For implementations (e.g., Job derivatives), the Executing state is expected to be extended bypartitioning it into at least two orthogonal states. One would hold the Pause states. The otherwould contain the implementation behavior of Executing.

Note that state transitions are controlled within the component implementing JobSupervision, sothere are no methods to directly change the state of a Job.

CIM Framework Interfaces 71

Technology Transfer # 93061697J-ENG SEMATECH

4.3.2.3 Interface: JobRequestor

Inherited Interface: Implementation Dependent

Description: In order to request work of a JobSupervisor, a component must implementthe JobRequestor interface. This is a companion interface toJobSupervisor. The JobRequestor may also subscribe to the state changeevents of the Job if more detail is required.

Exceptions: None.

Published Events: None.

Provided Services:

/* The Job has begun the requested work. */void informJobStarted (in Job aJob) raises (FrameworkErrorSignal);

/* The Job has completed successfully. */void informJobCompleted (in Job aJob) raises (FrameworkErrorSignal);

/* The Job reached the FINISHED state without completing the requested work. */void informJobTerminated (in Job aJob) raises (FrameworkErrorSignal);

/* Return the Jobs requested of a given JobSupervisor. */JobSequence getJobsFor (in JobSupervisor aJobSupervisor)

raises (FrameworkErrorSignal);

/* Return all JobSupervisors to which this JobRequestor delegates Jobs. */JobSupervisorSequence allJobSupervisors ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

72 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Scenario

aJobRequestor:

JobRequestor

aJobSupervisor:

JobSupervisor

aJob :Job

1: requestJob (JobType, Properties, JobRequestor

2: Return Job

3: informJobStarted (Job)

4: informJobCompleted (Job)

Create Job Here

Figure 23 Job Supervision Scenario

Figure 23 shows the most basic of scenarios for the Job Supervision component. It proceeds inthis fashion:

1. The JobRequestor populates a JobSpecification then requests a job according to thatspecification.

2. In response to the Job request, the JobSupervisor facilitates the creation of a Job to representthe task. A handle to the Job is returned to the JobRequestor (assuming the Job request isaccepted.

3. The Job Supervision component (e.g., in the form of the Job) informs the JobRequestor whenthe Job begins.

4. The Job Supervision component (e.g., in the form of the Job) informs the JobRequestor whenthe Job has completed (assuming successful completion).

CIM Framework Interfaces 73

Technology Transfer # 93061697J-ENG SEMATECH

4.4 Factory Services

Factory Services is composed of several component interface definitions that are expected to beemployed at a factory-wide level. That is, components whose functionality provides support forfactory-wide function, such as versioning and events. Areas of capability provided by FactoryServices include the following:

• Document Management

• Version Management

• Time Services

• Event Broker

• History Management

A Components Relationship Model is not provided as these components are made available to allother components within this specification.

74 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.4.1 Document Management Component

This component is used to create and manage document specifications and their revisions. Adocument contains information common to all revisions (such as name). A revision representsone version of the information carried in a document. Additionally the component provides forthe activation/deactivation of a revision (identifies the revision to use). Only one revision in adocument can be active at any one time. This component is used with the Version Managementcomponent to provide change notice control.

Figure 24 is the Information Model for the Document Management Component. The interfacesrepresent the main areas necessary for document management. It provides services for top-levelmanagement of the document specifications and their respective revisions. TheDocumentManager provides control over creation and management of theDocumentSpecifications (documents). Each DocumentSpecification will contain itsDocumentRevisions (revisions), one of which will be the active revision representing the versionto use in the factory. The revision holds (wraps) the object of interest (e.g., a productspecification).

DocumentManagementComponent

has a

creates andmanages

creates andmanages

signoff list for approvalsbefore making active

1 1holds

MESFactoryComponentManager

DocumentManager

DocumentSpecification

DocumentRevision

ChangeNotice

ProductSpecification

Figure 24 Document Management Component Information Model

CIM Framework Interfaces 75

Technology Transfer # 93061697J-ENG SEMATECH

4.4.1.1 DocumentManager

Inherited Interface: ComponentManager

Description: The DocumentManager interface is responsible for creating and managingDocumentSpecifications (maintains a collection of the documents) in thefactory. The DocumentManager provides the protocol necessary to enable/disable version management for the component.

Exceptions:

/* This signal is raised when an attempt is made to create a document with a name which is usedby an existing document. */exception DocumentSpecificationDuplicateSignal {string documentName;};

/* This signal is raised when a remove document is attempted and that document containsrevisions. */exception DocumentSpecificationHasRevisionsNoRemoveSignal{string documentName;};

/* This signal is raised when a document retrieval fails. */exception DocumentSpecificationNotFoundSignal {string DocumentName;};

/* This signal is raised when an attempt to remove a document fails. */exception DocumentSpecificationRemovalFailedSignal {string documentName;};

Published Events:DocumentLifecycleEvent

VersioningRequiredEvent

Provided Services:

/* Disable version management. */void versionManagementOff ( ) raises (FrameworkErrorSignal);

/* Enable version management. */void versionManagementOn ( ) raises (FrameworkErrorSignal);

/* Creates a DocumentSpecification and places it by name in the collection of managedDocumentSpecifications. */

DocumentSpecification createDocumentNamed (in string documentName)raises (FrameworkErrorSignal, DocumentSpecificationDuplicateSignal);

/* Remove the DocumentSpecification. */

void removeDocumentNamed (in string documentName)raises (FrameworkErrorSignal, DocumentSpecificationRemovalFailedSignal,

DocumentSpecificationHasRevisionsNoRemoveSignal);

/* Return a sequence of all revisions that are associated with and managed by the receiver (adocument). The order implies revision lineage. */DocumentRevisionSequence allRevisions ( ) raises (FrameworkErrorSignal);

/* Search for a DocumentSpecification. */DocumentSpecification findDocumentNamed (in string documentName)

raises (FrameworkErrorSignal, DocumentSpecificationNotFoundSignal);

76 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Tells whether or not version management is being used. */boolean isVersionManagementEnabled ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 77

Technology Transfer # 93061697J-ENG SEMATECH

4.4.1.2 Interface: DocumentSpecification

Inherited Interface: NamedEntity

Description: DocumentSpecification interface, colloquially called a document, containsinstances of DocumentRevisions along with the information common toall DocumentRevisions (such as name). Documents provide the protocolnecessary to create and manage their revisions (maintains a collection).Revision management is supported by either sub-interfacingDocumentRevision or by directly adding the revision to a document.

Exceptions:

/* This signal is raised when an attempt is made to create a revision in a document that alreadycontains a revision by that name. */exception DocumentRevisionDuplicateSignal {string revisionName;};

/* This signal is raised when a revision removal operation fails. */exception DocumentRevisionRemovalFailedSignal {string revisionName;};

/* This signal is raised when a remove revision is attempted when that revision is not in work. */exception DocumentRevisionNotInWorkNoRemoveSignal {string revisionName;};

/* This signal is raised when a revision retrieval fails. */exception DocumentRevisionNotFoundSignal {string revisionName;};

/* This signal is raised when an attempt to retrieve the active revision from the document fails tofind one that has been activated. */exception NoActiveDocumentRevisionFoundSignal {string documentName;};

Published Events:DocumentRevisionLifecycleEvent

Provided Services:

/* Adds a DocumentRevision to the list of revisions that are associated with theDocumentSpecification. */DocumentRevision addRevision (in DocumentRevision aDocumentRevision)

raises (FrameworkErrorSignal, DocumentRevisionDuplicateSignal);

/* Creates a DocumentRevision to hold a versioned object and stores the revision in thedocument. */DocumentRevision createRevisionNamed_with

(in string revisionName, in any versionedObject)

raises (FrameworkErrorSignal, DocumentRevisionDuplicateSignal);

/* Remove the DocumentRevision managed by the DocumentSpecification. */void removeRevisionNamed (in string revisionName)

raises (FrameworkErrorSignal, DocumentRevisionRemovalFailedSignal,

DocumentRevisionNotInWorkNoRemoveSignal);

/* Return a set of the DocumentRevisions in lineage order associated with thisDocumentSpecification. */DocumentRevisionSequence allRevisions ( ) raises (FrameworkErrorSignal);

/* Finds a DocumentRevision. */

78 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

DocumentRevision findRevisionNamed (in string revisionName)

raises (FrameworkErrorSignal, DocumentRevisionNotFoundSignal);

/* Returns the activeRevision. */DocumentRevision activeRevision ( )

raises (FrameworkErrorSignal, NoActiveDocumentRevisionFoundSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 79

Technology Transfer # 93061697J-ENG SEMATECH

4.4.1.3 Interface: DocumentRevision

Inherited Interface: NamedEntity

Description: DocumentRevision interface is colloquially called a “revision.” Itsinstances represent the many versions of information carried in adocument. Sub-interfaces contain all application specific informationrequired in a document. DocumentRevisions are used as wrappers to holdtheir assets or holdings, i.e., the object that is managed as a revision (aproduct specification). Among the collection of revisions for a document,there is one “active” revision. This is the revision that is designated as themember of the collection of revisions to use (see DocumentRevisionDynamic Model) in the factory.

Exceptions: None.

Published Events:DocumentRevisionStateChangedEvent

Provided Services:

/* Set and get the timestamp indicating when the revision was activated. */

TimeStamp getActivationDate ( ) raises (FrameworkErrorSignal);

void setActivationDate (in TimeStamp activationDate)

raises (FrameworkErrorSignal, TimePeriodInvalidSignal);

/* Get and set the text portion of the DocumentRevision. Note that how this text is laid out is animplementation detail. */any getDocumentContents ( ) raises (FrameworkErrorSignal);

void setDocumentContents (in any documentContents)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

/* Get the DocumentSpecification associated with this revision. */DocumentSpecification getSpecification ( ) raises (FrameworkErrorSignal);

/* Allows the revision to indicate that it is the one to use in the collection of revisions of adocument. */void makeActive ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Allows the revision to turn off the activation indication. */void makeInactive ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Retrieves the holding (the object placed under revision management) of this revision. */any holds ( ) raises (FrameworkErrorSignal);

/* Checks if the status is ACTIVE. */boolean isActive ( ) raises (FrameworkErrorSignal);

/* Checks if the status is INACTIVE. */boolean isInactive ( ) raises (FrameworkErrorSignal);

80 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Checks if the status is IN WORK. */boolean isInWork ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model:

IN WORK ACTIVE INACTIVE

DocumentRevision

1

23

4

5

Figure 25 DocumentRevision Dynamic Model

Object State Tables:

Table 8 DocumentRevision State Definitions and Query Table

State Definition Query for State via

IN WORK In this state, the DocumentRevisioncan be set up. The instance ofDocumentRevision can only bymodified while in the IN WORK state.

boolean isInWork ( );sent to the instance of DocumentRevisionreturns TRUE.

ACTIVE In this state, the DocumentRevisionhas been designated as the revision touse within the revisions managed bythe document.

Only one DocumentRevision (perDocumentSpecification) is allowed tobe in the ACTIVE state at a time.Control of this restraint (i.e., swappingin and out of the ACTIVE state,concurrent references to the ACTIVEDocumentRevision) is left to theimplementation.

Not having an ACTIVEDocumentRevision is permitted,although it should only be for a brieftime duration as production will begated as the system tries to referencethe ACTIVE DocumentRevision.

DocumentRevision activeRevision ( ) ;sent to an instance of DocumentSpecification.

boolean isActive ( );sent to the instance of DocumentRevisionreturns TRUE.

INACTIVE In this state, the DocumentRevision isno longer designated as the ACTIVErevision.

boolean isInactive ( );sent to the instance of DocumentRevisionreturns TRUE.

CIM Framework Interfaces 81

Technology Transfer # 93061697J-ENG SEMATECH

Table 9 DocumentRevision State Transition Table

#Current

State Trigger New State Action Comment

1 non-existent DocumentRevisioncreateRevisionNamed_with ( ) ;sent to an instance ofDocumentSpecification.

IN WORK The DocumentManagercreates theDocumentSpecification,which in turn creates theDocumentRevision.

2 IN WORK DocumentRevisionremoveRevisionNamed ( ) ; sentto an instance ofDocumentSpecification.

non-existent The DocumentManagercreates theDocumentSpecification,which in turn controls theDocumentRevision.

3 IN WORK void makeActive ( ); sent to theinstance of DocumentRevision.

ACTIVE The DocumentRevision isactivated. It could only bemodified in the IN WORKstate. Only one ACTIVEDocumentRevision (perDocumentSpecification) isallowed.

4 ACTIVE void makeInactive ( ); sent tothe instance ofDocumentRevision.

INACTIVE Occurs when anotherrevision of the samedocument becomesACTIVE.Note that theimplementation mustprovide a transitionstrategy if the currentDocumentRevision isbeing concurrentlyreferenced by the systemwhile a new revision istrying to becomeACTIVE.

5 INACTIVE void makeActive ( );sent to the instance ofDocumentRevision.

ACTIVE Reactivate a previouslyINACTIVE (e.g.,archived)DocumentRevision.

82 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.4.2 Version Management Component

This component provides the capability to manage all types of document revisions that requirechange notice control. This component provides for the creation and maintenance of changenotices. This component is used to augment/extend the Document Management component byproviding change notice control.

Figure 26 is the Information Model for the Version Management Component. The interfacesrepresent the areas necessary for Version Management. It provides services for top-levelmanagement of the change notices and the version managed revisions that they cover. TheVersionManager interface provides the protocol for creating and managing change notices.Minimum states for a change notice are in work, preparing to activate, and activated. Additionalstates can be added between those represented in the ChangeNotice Dynamic Model.

VersionManagementComponent

created andmanages

has a

ComponentManager MESFactory NamedEntity

ChangeNoticeVersionManager

Figure 26 Version Management Component Information Model

CIM Framework Interfaces 83

Technology Transfer # 93061697J-ENG SEMATECH

4.4.2.1 Interface: VersionManager

Inherited Interface: ComponentManager

Description: The VersionManager is responsible for creating and managing changenotices associated with DocumentSpecifications. It also maintains acollection of all change notices that it manages.

Exceptions:

/* This signal is raised when an attempt is made to create a ChangeNotice with a name that isused by an existing ChangeNotice. */exception ChangeNoticeDuplicateSignal {string changeNoticeName;};

/* This signal is raised when a valid ChangeNotice removal operation fails. */exception ChangeNoticeRemovalFailedSignal {string changeNoticeName;};

/* This signal is raised when a ChangeNotice is not found. */exception ChangeNoticeNotFoundSignal {string changeNoticeName;};

Published Events:ChangeNoticeLifecycleEvent

Provided Services:

/* Create a ChangeNotice (a specialization of DocumentRevision) with a name and places it byname in the collection of change notices and also sets the pointer to its document. */ChangeNotice createChangeNoticeNamed_inDocument (in string changeNoticeName,

in DocumentSpecification aDocumentSpecification)

raises (FrameworkErrorSignal, ChangeNoticeDuplicateSignal);

/* Remove a ChangeNotice that has a status of IN WORK. */void removeChangeNoticeNamed (in string changeNoticeName)

raises (FrameworkErrorSignal, InvalidStateTransitionSignal,

ChangeNoticeRemovalFailedSignal);

/* Returns a set of the names of all the ChangeNotices. */ChangeNoticeSequence allChangeNotices ( ) raises (FrameworkErrorSignal);

/* Find a ChangeNotice. */ChangeNotice findChangeNoticeNamed (in string changeNoticeName)

raises (FrameworkErrorSignal, ChangeNoticeNotFoundSignal);

Contracted Services: None.

Dynamic Model: None.

84 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.4.2.2 Interface: ChangeNotice

Inherited Interface: NamedEntity

Description: The ChangeNotice interface supplies change notice control formal revisionapproval before being used in the factory. This interface can be specializedfor different types of change notices.

Exceptions:

/* This signal is raised when an attempt is made to cover a change notice with another changenotice. */exception ChangeNoticeCannotCoverSignal { };

/* This signal is raised when an attempt is made to modify a change notice that is not in workstatus. */exception ChangeNoticeNotInWorkSignal { };

/* This signal is raised when an attempt is made to remove a non-existent name from the defaultsignoff set. */exception SignOffNameAbsentSignal {string signOffName;};

Published EventsChangeNoticeStateChangedEvent

ChangeNoticeRejectedEvent

ChangeNoticeSignoffsChangedEvent

Provided Services:

/* Get the DocumentSpecification associated with this ChangeNotice. */DocumentSpecification getSpecification ( ) raises (FrameworkErrorSignal);

/* Changes the status of the change notice to that of being in work. Changes can be made to thischange notice. */void makeInWork ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Approve a Change Notice. */void makePreparingToActivate ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Activate a Change Notice. */void makeActivated ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Reject the ChangeNotice (cancel the signoff process) and move back into IN WORK status. */void rejectSignOff ( ) raises (FrameworkErrorSignal);

/* Adds a name to the default signoff set. */string addNameToDefaultSignOffSet (in string signoffSet)

raises (FrameworkErrorSignal, ChangeNoticeNotInWorkSignal);

/* Removes a name from the default signoff set. */void removeNameFromDefaultSignOffSet (in string signoffSet)

raises (FrameworkErrorSignal, ChangeNoticeNotInWorkSignal,SignOffNameAbsentSignal);

CIM Framework Interfaces 85

Technology Transfer # 93061697J-ENG SEMATECH

/* Provide a set of all the names in the default signoff list. The order may be important in somecases (implies a priority.) */stringSequence defaultSignOffSet ( ) raises (FrameworkErrorSignal);

/* Checks if the status is ACTIVATED. */boolean isActivated ( ) raises (FrameworkErrorSignal);

/* Checks if the status is IN WORK. */boolean isInWork ( ) raises (FrameworkErrorSignal);

/* Checks if the status is PREPARING TO ACTIVATE. */boolean isPreparingToActivate ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model:

IN WORKPREPARING TO

ACTIVATE ACTIVATED

ChangeNotice

1

23

Figure 27 ChangeNotice Dynamic Model

Object State Tables:

Table 10 ChangeNotice State Definitions and Query Table

State Definition Query for State via

IN WORK In this state the ChangeNotice is readyto set up and can be modified.

boolean isInWork ( );sent to the instance of ChangeNotice returnsTRUE.

PREPARING TOACTIVATE

In this state the ChangeNotice iswaiting to be approved.

boolean isPreparingToActivate ( );sent to the instance of ChangeNotice returnsTRUE.

ACTIVATED In this state the ChangeNotice has beenapproved.

Boolean isActivated ( );sent to the instance of ChangeNotice returnsTRUE.

86 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Table 11 ChangeNotice State Transition Table

#Current

State Trigger New State Action Comment

Non-existent ChangeNoticecreateChangeNoticeNamed_inDocument (in stringchangeNoticeName, inDocumentSpecificationaDocumentSpecification);sent to an instance ofVersionManager.

IN WORK Upon creation, theChangeNotice should be in theIN WORK state.

IN WORK void removeChangeNoticeNamed (in stringchangeNoticeName) ;sent to an instance ofVersionManager.

non-existent

1 IN WORK voidmakePreparingToActivate( ); sent to the instance ofChangeNotice.

PREPARINGTO ACTIVATE

The ChangeNotice is ready tobe approved. As an action,inform coveredDocumentRevisions. CoveredDocumentRevisions should beimmutable while awaitingChangeNotice approval.

2 PREPARINGTOACTIVATE

void makeInWork ( );sent to the instance ofChangeNotice.

void rejectSignOff ( );sent to the instance ofChangeNotice.

IN WORK The ChangeNotice has beenrejected. As an action, informcovered DocumentRevisions.Covered DocumentRevisionsshould be made mutable whileIN WORK.

3 PREPARINGTOACTIVATE

void makeActivated ( );sent to the instance ofChangeNotice.

ACTIVATED The ChangeNotice has beenapproved. As an action, informcovered DocumentRevisions.Covered DocumentRevisionsshould be made active.

ACTIVATED void removeChangeNoticeNamed (in stringchangeNoticeName) ;sent to an instance ofVersionManager.

non-existent

CIM Framework Interfaces 87

Technology Transfer # 93061697J-ENG SEMATECH

4.4.3 Time Services

Factory operations require that the CIM Framework Infrastructure provide a means for therepresentation of

• A date/time instance (commonly called a timestamp).

• A specific interval of time (commonly called a time window) denoting a start time and an endtime.

• A duration of time (a computed delta from a specified timestamp).

The OMG’s Object Time Services specification [CosTime] has been selected to provide thiscapability. Each time-related object is discussed in the following paragraphs. It should be notedthat, in an implementation of the CIM Framework Infrastructure, this base capability will be usedto support a factory Calendar. The data structures defined by the Time Sevice and used in thisspecification are specified in Section 4.1.1.

88 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.4.4 Event Broker

This component provides the interface necessary for a producer of an event to inform a centralrepository about EventChannels that will handle certain CIM Framework events and forconsumers of those events to be informed of the EventChannels. Since the interface is also aComponentManager, it can be started up, shut down and will be registered with the MESFactoryat startup time. This interface may, someday, be replaced with the OMG Trader Service[CosTrade].

EventManagement

Services

ComponentManager

EventBroker

Figure 28 Event Management Services Information Model

CIM Framework Interfaces 89

Technology Transfer # 93061697J-ENG SEMATECH

4.4.4.1 Interface: EventBroker

Inherited Interface: ComponentManager

Description: This component provides the interface necessary for a producer of anevent to inform a central repository about EventChannels that will handlecertain CIM Framework events and for consumers of those events to beinformed of the EventChannels. Since the interface is also aComponentManager, it can be started up, shut down and will be registeredwith the MESFactory at startup time. This interface may someday bereplaced with the OMG Trader Service.

Exceptions:

/* This exception is raised when an EventChannel for an event subject that is not defined in theCIM Framework is registered. Implementers of an EventBroker have a choice as to whether toforce this exception on non-CIM Framework events or not. The EventBroker can easily bewritten to support events that are not defined in the CIM Framework if an implementer sochooses. But it is defined if implementers choose to support CIM Framework events only. */exception UnsupportedEventSubjectSignal { };

/* This exception is raised when a subscription request is received for an event for which theEventBroker does not yet have an EventChannel registered. */exception NoSupplierForTheRequestedEventSignal { };

/* This exception is raised when an invoker requests the de-registration of an EventChannel thatthe EventBroker has no record of registering. */exception EventChannelNotRegisteredSignal { };

Published Events: None.

Provided Services:

/* This method is used by a producer (supplier) of an event (or some other third party objectacting on its behalf) to inform the EventBroker that an Event Channel supporting a specific CIMFramework event has been created. The invoker must provide an object reference to that channelsuch that the EventBroker can pass that reference on to future consumers. */void addChannelForEvent (in string subject,

in CosEventChannelAdmin::EventChannel anEventChannel)

raises (FrameworkErrorSignal, UnsupportedEventSubjectSignal);

/* This method is used by a producer (supplier) of an event (or some other third party objectacting on its behalf) to inform the EventBroker that an EventChannel will no longer be available.This is only for the information of the EventBroker so that it can maintain its internal tables. Theresponsibility for the disconnects of the consumers and the destruction of the EventChannel isnot in the scope of the EventBroker. */void removeChannelForEvent (in string subject,

in CosEventChannelAdmin::EventChannel anEventChannel)

raises (FrameworkErrorSignal, EventChannelNotRegisteredSignal);

90 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* This method is used by a consumer of an event to find out about the EventChannels publishingthat CIM Framework event. It is the responsibility of the consumer to perform its ownconnectivity to the returned Event Channels. Note that this service could also be used by aproducer (supplier) of an event to find an EventChannel to use for its publication of events if itdoesn’t wish to create a new one.

The precedence of the exceptions is up to the implementer. For example, if a client of thisservice asks for an EventChannel that is not for a CIM Framework event and/or not for an eventyet registered, the implementation may raise either of the last two exceptions. However, if theimplementer is not supporting non-CIM Framework events, the UnsupportedEventSubjectSignalshould be raised rather than the NoSupplierForTheRequestedEventSignal. On the other hand, ifthe implementation does support non-CIM Framework events, the exception raised should be theNoSupplierForTheRequestedEventSignal. */EventChannelSequence allEventChannelsFor (in string subject)

raises (FrameworkErrorSignal, NoSupplierForTheRequestedEventSignal,

UnsupportedEventSubjectSignal);

CIM Framework Interfaces 91

Technology Transfer # 93061697J-ENG SEMATECH

4.4.5 History Management Facility

The History Management Facility supports the ability of factory objects to maintain histories andcollections of histories. It also supports access to those histories and their collections. TheHistory Management Facility is based upon an architecture that supports

• Objects producing associated histories and related events.

• Collections of histories based upon factory-related topics.

• Selective history consumer queries on those collections.

The History Management Facility specifies lifecycle management of history, which may beassociated with some factory entity (e.g., an area). The History Management Facility allowshistory to contain timestamped events, which in turn are composed of data. The facility alsoprovides for management of and navigation through that collection of time-ordered events andthe structure for an event. The History Management Facility does not specify the contents of anevent or its data. It provides for the management of collections of histories based upon a key butdoes not define those keys beyond their structure.

Histories may be hierarchical within a factory. However, the History Management Facilityimposes no limitation on defining a hierarchy of histories. In fact, hierarchies of history isimplementation detail.

Collections of history should be available to all factory entities, thereby offering the capability ofmaintaining history to a broader range of CIM Framework types. For example, a subtype ofNamedEntity (e.g., Machine) would have an associated history collection. That collection wouldrepresent the various types of history associated with the NamedEntity subtype. For example, aMachine may have a history collection that includes an alarm history containing all events relatedto alarms, and a preventive maintenance history containing all events related to preventivemaintenance. Registration of history collections should be provided by the OMG Trader Service[CosTrade]. The History Management Facility Information Model conveys the relationshipsdescribed in this example.

92 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Area

OwnedEntity

HistoryCollection History

is associatedwith

has

has

NamedEntity

Resource

groups

Machine

HistoryManagement

Facility

Figure 29 History Management Facility Information Model

Ultimately, managing collections, defining relationships, and performing queries on thoserelationships should be provided by CORBAservices. The bandwidth is not available to performan adequate study in time for V2.0 of the CIM Framework Specification. Thus, this type ofbehavior will remain in the specification for the time being. Under no circumstances should theprecise definition of history beyond structure be specified at the framework level.

Previously, the CIM Framework specified the representation of history information as a series ofname/value pairs. That design has been retained, although those pairs are now embedded in astruct.

Recommendation

The specification of these name/values pairs is highly recommended for future CIM Framework Specificationactivity.

CIM Framework Interfaces 93

Technology Transfer # 93061697J-ENG SEMATECH

4.4.5.1 Interface: HistoryCollection

Inherited Interface: NamedEntity

Description: A HistoryCollection provides pointers to sets of History objects using akey/subject string representing the category of history (e.g.,“/Machine/ProcessMachine/Alarm/” for alarm history on a processmachine). Data is entered into the History object as name-value pairs. TheHistory interface can be the standard for data collection in the CIMFramework. The HistoryCollection for an object may be formed bysearching the Trader Service. A HistoryCollection can be defined for anobject reference, area or factory (e.g., global) in the Trader Service.

Exceptions:exception InvalidSubjectStringSignal { };

exception HistoryDuplicateSignal { };

exception HistoryEventNotFoundSignal { };

Published Events: None.

Provided Services:

/* Add a History with key/subject string into this HistoryCollection. Note the HistoryCollectionis not responsible for creating the History object. */void addHistory(in string historyEventSubject, in History aHistory)

raises (FrameworkErrorSignal, HistoryDuplicateSignal,

InvalidSubjectStringSignal);

/* Remove a History (or Histories) with the key/subject string from this HistoryCollection. TheHistory is not destroyed by this operation. Returns the History(ies) removed. */HistorySequence removeHistory(in string historyEventSubject)

raises (FrameworkErrorSignal, HistoryEventNotFoundSignal) ;

/* Returns all History objects from this HistoryCollection. */HistorySequence allHistories( ) raises (FrameworkErrorSignal);

/* Find History objects based on the subject string. Returns null sequence if no matches found. */HistorySequence findHistory(in string historyEventSubject)

raises (FrameworkErrorSignal);

94 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.4.5.2 Interface: History

Inherited Interface: NamedEntity

Description: The History interface provides storage for a collection of history data. TheHistory interface supports insertion, deletion and queries against its historydata.

Exceptions:exception HistoryEventNotFoundSignal { };

exception HistoryEventDuplicateSignal { };

Published Events: None.

Provided Services:

/* Return a pointer back to the owning HistoryCollection(s). */HistoryCollectionSequence getHistoryCollections ( ) raises (FrameworkErrorSignal);

/* Adds history data to the history. */void addHistoryEvent (in HistoryEvent aHistoryEvent)

raises (FrameworkErrorSignal, HistoryEventDuplicateSignal);

/* Remove HistoryEvent(s) from the history list that matches the input parameters. */void removeHistoryEvent (in string historyEventSubject,

in TimeStamp startingHistoryEventTS,

in TimeStamp endingHistoryEventTS,

in string historyObject) // can be null

raises (FrameworkErrorSignal, HistoryEventNotFoundSignal);

/* Returns a collection of all the HistoryEvents that match the criteria specified. The support ofthe historyEventSubject field should allow for wild cards (‘*’) and support user-definedextensions to the slash delimited hierarchy. If the historyObject field is “null”, no filtering shouldbe performed against this field. If the field aFilterItemSequence is “null”, then no filterable dataneeds to be used in the query. */HistoryEventSequence findHistoryEvent (in string historyEventSubject,

in TimeStamp startingHistoryEventTS,

in TimeStamp endingHistoryEventTS,

in string historyObject, // can be null

in FilterItemSequence aFilterItemSequence)

raises (FrameworkErrorSignal) ;

/* Returns the number of items in the collection of all the HistoryEvents that match the criteriaspecified. */long historyEventCount (in string historyEventSubject,

in TimeStamp startingHistoryEventTS,

in TimeStamp endingHistoryEventTS,

in string historyObject, // can be null

in FilterItemSequence aFilterItemSequence)

raises (FrameworkErrorSignal);

/* Returns the total number of all events in the History. */long count ( ) raises (FrameworkErrorSignal) ;

CIM Framework Interfaces 95

Technology Transfer # 93061697J-ENG SEMATECH

/* Returns true if the history is empty. */boolean isEmpty ( ) raises (FrameworkErrorSignal) ;

Contracted Services: None.

Dynamic Model: None.

96 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.5 Factory Management Group

The Factory Management Group collects components that represent the factory as a whole andprovide access to factory-wide resources. Its services coordinate CIM system componentsthrough the abstractions representing a factory.

A component is included in this group if it provides factory-wide manufacturing services, such as

• Factory configuration and operations.

• Release of production lots.

The Factory Management Group includes the following components and abstract interfaces:

• Factory — provides configuration, control, and connectivity services.

• Factory Operations — interprets product schedules and initiates factory activity basedupon that interpretation.

• Enterprise Abstract Interface — provides an interface from the Enterprise level system tothe Factory system; issues product requests to the Factory.

• Product Request Management — performs as an intermediary between the Enterpriselevel and the Factory level; accepts product requests (as jobs) from the Enterprise. Theseproduct requests are then broken down into lots, which are released into the factory asappropriate to optimize plant operations.

• Product Release — creates production lots from planned, accepted product requests;releases those lots into the factory.

CIM Framework Interfaces 97

Technology Transfer # 93061697J-ENG SEMATECH

Factory

FactoryOperations

Factory ManagementFunctional Group

Requestsfactory-

levelservices

Interpretand

executeschedules

ExternalRequester

Dispatching

Initiateslot

scheduling

Providesinformation

onmaterial to

release

ProductRequest

Mgmt

EnterpriseAbstractInterface

Requestfactoryto fill

ProductRequest

Requestlot(s)to fill

ProductRequest

Requestjob(s)to fill

ProductRequest

ProductRelease

Figure 30 Factory Management Group Component Relationships

98 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.5.1 Factory Component

The Factory component in the Factory Management Group provides configuration, monitoringand controlling, resource grouping, calendar and querying services. Any CIM component mayuse the Factory component to locate another component for its services.

Configuration services provide the ability to specify the existence and connectivity of factoryresources that constitute a factory. This includes area configuration and the registration of CIMsystem components, and the ability to dynamically configure a factory to enforce business policy.

Monitoring and controlling services provide the ability to monitor and control factory statetransitions throughout the factory production life cycle. States of the factory include starting up,operating, standby, shutting down, and off.

Query services provide access to the components registered with the factory. These componentsare represented by component managers that in turn, provide configuration, control, and queryservices for their own domains (equipment, personnel, etc.).

Four interfaces are defined:

• MESFactory

• Area

• FactoryCalendar

• PolicyVariable

The MESFactory interface encompasses much of the capability noted above.

The concept of policy variable provides additional factory configuration capability in that itcontains the information which provides the flexibility in factory configuration to achievealternative approaches to operations customization (e.g., selecting appropriate business rules).

Resource grouping is achieved through the Area interface, which corresponds to a physical orlogical grouping of factory resources (the complement of machines and/or personnel assigned toit). An area provides access to a group of machines, a group of persons, other subareas, and otherpertinent information. Areas may be defined for different purposes. A single resource is allowedto be assigned to multiple areas. Policy management can not be deployed if area is omitted (it isassumed that policies will be enforced at an area level, not at a factory-wide level).

A calendar facility is provided that represents the dates and times of pertinent factory activity. Itholds representations of startup and shutdown schedules and a collection of calendar dates thatrepresent each day in the life of the factory.

Figure 31 is the Information Model for the Factory Component. It provides an overview of theinterfaces defined for this component, related interfaces external to the component, and theirrelationships.

Descriptions of the visible interfaces within the Factory Component follow.

CIM Framework Interfaces 99

Technology Transfer # 93061697J-ENG SEMATECH

PolicyVariable

Resource

MESFactory

Area

Machine

Personmanages

groups groups

is comprised of

used toconfigure

has

FactoryComponent

FactoryCalendaruses

ComponentManager

PersonManager

MachineRegistermaintains

registrationof machines

Figure 31 Factory Component Information Model

100 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.5.1.1 Interface: MESFactory

Inherited Interface: Resource

Description: The MESFactory interface is the principal interface to the FactoryComponent. An instance of this interface represents one particular factory.This instance is a composite object referring to the objects that representfactory resources, particularly CIM system components. The factoryinstance provides overall startup and shutdown capability.

Exceptions:exception AreaDuplicateSignal { };

exception AreaRemovalFailedSignal { };

exception AreaNotAssignedSignal { };

Published Events: MESFactoryStateChangedEvent

Provided Services:

/** These services provide support for factory resources. */

/* Add an area to the receiver. Returns the area. */Area addArea (in Area anArea) raises (AreaDuplicateSignal, FrameworkErrorSignal);

/* Remove an area from the receiver. Returns the area removed. */Area removeArea (in Area anArea)

raises (FrameworkErrorSignal, AreaRemovalFailedSignal,

AreaNotAssignedSignal);

/* Returns the factory areas. */AreaSequence allAreas ( ) raises (FrameworkErrorSignal);

/* Returns collections of various factory resources. */MachineSequence allMachines ( ) raises (FrameworkErrorSignal);

/* These services provide support for component managers. */

/* Returns a collection of the component managers for the factory. */ComponentManagerSequence allComponentManagers ( ) raises (FrameworkErrorSignal);

/* A component informs the factory that it has completed startup. */void informComponentManagerIsOperating (in ComponentManager aComponentManager)

raises (FrameworkErrorSignal);

/* A component informs the factory that it has completed shutdown. */void informComponentManagerIsStopped (in ComponentManager aComponentManager)

raises (FrameworkErrorSignal);

/* These services provide support for factory state. */

/* Factory is requested to go to STARTING UP state. Note MESFactory inherits from theResource interface and is started up using the methods defined in that interface. During thestartup and shutdown the factory delegates appropriate requests to all registered components. */void makeStartingUp ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

CIM Framework Interfaces 101

Technology Transfer # 93061697J-ENG SEMATECH

/* Factory is requested to specified state. */void makeOperating ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

void makeGoingToStandby ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

void makeStandby ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

void makeShuttingDown ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

void makeShuttingDownImmediately ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

void makeOff ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Answer whether the factory is in the state indicated. */boolean isOff ( ) raises (FrameworkErrorSignal);

boolean isStartingUp ( ) raises (FrameworkErrorSignal);

boolean isOperating ( ) raises (FrameworkErrorSignal);

boolean isShuttingDown ( ) raises (FrameworkErrorSignal);

boolean isShuttingDownImmediately ( ) raises (FrameworkErrorSignal);

boolean isGoingToStandby ( ) raises (FrameworkErrorSignal);

boolean isStandby ( ) raises (FrameworkErrorSignal);

Contracted Services:

Interface Group Service

MachineRegister Machine Management allMachines ( );

MachineMovementController Material Movement allStorageMachines ( );

102 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Dynamic Model:

OFF

STARTING UP

GOING TOSTANDBY

STANDBY

SHUTTING DOWN

SHUTTINGDOWN

IMMEDIATELY

3

2

4

5 67

10

8

9

1

OPERATING

NOT AVAILABLE

AVAILABLE

Figure 32 MESFactory Dynamic Model

CIM Framework Interfaces 103

Technology Transfer # 93061697J-ENG SEMATECH

Object State Tables:

Table 12 MESFactory State Definitions and Query Table

State Definition Query for State via

NOTAVAILABLE

A superstate, inherited from Resource,encompassing the next four substatedefinitions.

boolean isAvailable ( );sent to the instance of MESFactory returnsFALSE.

OFF In this state, the MESFactory has abuilding, machines and otherresources. No CIM activities should beallowed. ComponentManagers shouldnot be registered yet.

boolean isOff ( );sent to the instance of MESFactory returnsTRUE.

STARTING UP In this state, the MESFactory hasrequested startup sequences for allresources.

boolean isStartingUp ( );sent to the instance of MESFactory returnsTRUE.

SHUTTINGDOWN

In this state, MESFactory resourcesand material are brought to a safe statein preparation for terminating in anorderly fashion.

boolean isShuttingDown ( );sent to the instance of MESFactory returnsTRUE.

SHUTTINGDOWNIMMEDIATELY

In this state, the MESFactory isshutting down without regard for thesafe state of material or potentialproduct and data loss. All processesare terminated immediately.

boolean isShuttingDownImmediately ( );sent to the instance of MESFactory returnsTRUE.

AVAILABLE A superstate, inherited from Resource,encompassing the next three substatedefinitions.

boolean isAvailable ( );sent to the instance of MESFactory returnsTRUE.

OPERATING In this state, the MESFactory is able toprocess product. Applications areprepared to support factory operationsto process product.

boolean isOperating ( );sent to the instance of MESFactory returnsTRUE.

GOING TOSTANDBY

In this state the MESFactory isperforming sequences to make thetransition to STANDBY. It brings allproduct and equipment to a safestopping place.

boolean isGoingToStandby ( );sent to the instance of MESFactory returnsTRUE.

STANDBY STANDBY means nearly available forimmediate use. In this state, theMESFactory is idle and available;applications are able to respond to asubset of selected messages.

boolean isStandby ( );sent to the instance of MESFactory returnsTRUE.

104 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Table 13 MESFactory State Transition Table

#Current

State Trigger New State Action Comment

non-existent No CIM Frameworktrigger necessary

OFF Building (s),machines andother resourcesare added afterthis transition.

The MESFactory objectinstance is unique in theFramework. It is the onlyobject that must be createdby the implementation.

1 OFF voidmakeStartingUp ( );sent to the instanceof MESFactory.

STARTINGUP

Startup sequenceperformed, includingdelegated messages tocomponent managers.Resource inherited interfacealso defines startup.

2 STARTINGUP

void makeOperating( ); sent to theinstance ofMESFactory.

OPERATING MESFactory isoperatingevent publishedby the instance ofMESFactory.

Relevant registeredcomponents inform thefactory when they havecompleted startup prior tostartup being complete.

3 OPERATING voidmakeGoingToStandby ();sent to the instanceof MESFactory.

GOING TOSTANDBY

MESFactory is requested togo to STANDBY state.

4 GOING TOSTANDBY

void makeStandby( ); sent to theinstance ofMESFactory.

STANDBY MESFactory is inSTANDBY stateevent publishedby the instance ofMESFactory.

All component managers,machines and material areidle and in a safe state.

5 STANDBY voidmakeStartingup ( );sent to MESFactory

STARTINGUP

void startup ( );sent to aninstance ofComponent-Manager.

Since standby means nearlyavailable for immediate use,this startup transition shouldbe minimal.

6 OPERATING voidmakeShutdown-Normally ( );sent to the instanceof MESFactory.

SHUTTINGDOWN

void shutdownNormal ( );sent to allinstances ofregisteredComponent-Managers.

As an action, messagesdelegated to componentmanagers in performing thistransition.

The Resource inheritedinterface also implementsshutdownNormal.

7 AVAILABLE voidmakeShuttingDownImmediately ( );sent to the instanceof MESFactory.

SHUTTINGDOWNIMME-DIATLEY

void shutdownImmediately ( );sent to allinstances ofregisteredComponentManagers.

As an action, messagesdelegated to componentmanagers.

The Resource inheritedinterface also implementsshutdownImmediate

CIM Framework Interfaces 105

Technology Transfer # 93061697J-ENG SEMATECH

#Current

State Trigger New State Action Comment

8 STANDBY voidmakeShuttingDownNormally ( );sent to the instanceof MESFactory.

SHUTTINGDOWN

void shutdownNormally ( );sent to allinstances ofregisteredComponent-Managers.

As an action, messagesdelegated to componentmanagers.

9 SHUTTINGDOWNIMMEDIATELY

void makeOff ();sent to the instanceof MESFactory.

OFF voidcomponentShutdownComplete ( );sent to theinstance ofMESFactory bythe ComponentManagers.

MESFactory isoffevent publishedby the instance ofMESFactory.

The MESFactory polls theComponentManagers andResources for completion ofshutdown before theMESFactory statetransitions to OFF.

10 SHUTTINGDOWNNORMALLY

void makeOff ( ) ;sent to the instanceof MESFactory.

OFF voidcomponentShutdownComplete ( );sent to theinstance ofMESFactory bythe ComponentManagers.

MESFactory isoffevent publishedby the instance ofMESFactory.

The MESFactory polls theComponentManagers andResources for completion ofshutdown before theMESFactory statetransitions to OFF.

106 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.5.1.2 Interface: Area

Inherited Interface: OwnedEntity

Description: Area is the interface corresponding to a physical or logical grouping offactory resources (the complement of machines and/or personnel assignedto it). Area may represent a singular entity or it may represent a collectionof other Areas. For example, an Area may represent an entire facility formaintenance purposes, or an Area may represent a processing area such asa bay, which is comprised of zones.

The association between an Area and its composite Areas may behierarchical or there may simply be a collection of peer Areas without anyexplicit or implicit relationship.

Area may or may not be an optional construct, depending on such issues assecurity.

Exceptions:

/* This signal is raised when an attempt is made to perform a service on an undefined Area. */exception AreaNotFoundSignal {Area requestedArea;};

exception AreaDuplicateSignal { };

exception AreaNotAssignedSignal { };

exception AreaRemovalFailedSignal { };

exception MachineDuplicateSignal { };

exception MachineNotAssignedSignal { };

exception MachineRemovalFailedSignal { };

exception PersonDuplicateSignal { };

exception PersonNotAssignedSignal { };

exception PersonRemovalFailedSignal { };

Published Events:AreaConfigurationChangedEvent

Provided Services:

/* Answer the Area to which this Area is associated. If no membership has been established, nilis returned. */Area getSuperArea ( ) raises (FrameworkErrorSignal);

/* Get the unique identifier for the Area. */string getAreaIdentifier ( ) raises (FrameworkErrorSignal);

/* Adds a machine to the receiver. Returns the machine added. */Machine addMachine (in Machine aMachine)

raises (FrameworkErrorSignal, MachineDuplicateSignal);

/* Create an association between an Area and the Area to which it belongs. The service will addthe Area indicated by the argument to the receiver’s set of subareas. The service will also updatethe superarea for the argument. The service returns the argument. */Area addSubArea (in Area anArea)

raises (FrameworkErrorSignal, AreaDuplicateSignal);

CIM Framework Interfaces 107

Technology Transfer # 93061697J-ENG SEMATECH

/* Adds a person to the receiver. Returns the person added. */Person addPerson (in Person aPerson)

raises (FrameworkErrorSignal, PersonDuplicateSignal);

/* Remove the association between an Area and the Area to which it belongs. The service willremove the Area indicated by the argument from the receiver’s set of subareas. The service willalso nullify membership (ownership) for the argument. */void removeSubArea (in Area anArea)

raises (FrameworkErrorSignal, AreaNotAssignedSignal,

AreaRemovalFailedSignal);

/* Removes a machine from the receiver. */void removeMachine (in Machine aMachine)

raises (FrameworkErrorSignal, MachineNotAssignedSignal,

MachineRemovalFailedSignal);

/* Removes a person from the receiver. */void removePerson (in Person aPerson)

raises (FrameworkErrorSignal, PersonNotAssignedSignal,

PersonRemovalFailedSignal);

/* Set the unique identifier for the Area. */void setAreaIdentifier (in string identifier)

raises (FrameworkErrorSignal, DuplicateIdentifierSignal);

/* Returns the set of subareas associated with this Area, that is, the Areas contained within thishigher-level Area. If no membership has been established, an empty set is returned. */AreaSequence subAreas ( ) raises (FrameworkErrorSignal);

/* Returns the receiver’s set of process machines. */MachineSequence machines ( ) raises (FrameworkErrorSignal);

/* Returns the receiver’s set of persons. */PersonSequence persons ( ) raises (FrameworkErrorSignal);

/* Returns a set of product units that are in storage units, transporters and machines in thereceiver. */ProductSequence allProductUnits ( ) raises (FrameworkErrorSignal);

/* Get the FactoryCalendar for this area. The set service does not have a public interface as theArea will have its FactoryCalendar instantiated at startup via configuration utilities. A sub-Areacan override its super-Area’s calendar. If there is only one calendar for the entire factory, then theimplementer may define an Area equivalent to MESFactory. */FactoryCalendar getFactoryCalendar ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

108 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.5.1.3 Interface: FactoryCalendar

Inherited Interface: OwnedEntity

Description: The FactoryCalendar represents the dates and times of pertinent factoryactivity. It holds representations of startup and shutdown schedules and acollection of CalendarDates that represent each day in the life of thefactory. The number of CalendarDates held in the FactoryCalendar isimplementation dependent, but could be assumed to be minimally arunning year’s worth of dates.

Exceptions:

/* Signals an attempt to add duplicate dates for the related items. */exception DuplicateCalendarDaySignal {CalendarDay aCalendarDay;};

exception DuplicatePlannedShutDownSignal { };

exception DuplicatePlannedStartUpSignal { };

exception RequestedDayNotDefinedForAreaSignal { };

Published Events:AreaShutdownChangedEvent

Provided Services:

/* Add a sequence of CalendarDays to the calendar. */void addDays (in CalendarDaySequence aCalendarDaySequence)

raises(FrameworkErrorSignal, DuplicateCalendarDaySignal);

/* Remove a CalendarDay from the calendar. */void removeCalendarDay (in CalendarDay aCalendarDay) raises (FrameworkErrorSignal);

/* Return the sequence of all currently defined CalendarDays. */CalendarDaySequence allCalendarDays ( ) raises (FrameworkErrorSignal);

/* Add a planned area shutdown to the calendar. */void addPlannedShutDown(in ResourceSchedule aResourceSchedule)

raises (FrameworkErrorSignal, DuplicatePlannedShutDownSignal);

/* Remove a planned area shutdown from the calendar. * /void removePlannedShutDown (in ResourceSchedule aResourceSchedule)

raises (FrameworkErrorSignal);

/* Return all planned area shutdowns. */PlannedShutDowns allPlannedShutDowns ( ) raises (FrameworkErrorSignal);

/* Add a planned area startup to the calendar. */void addPlannedStartUp (in ResourceSchedule aResourceSchedule)

raises (FrameworkErrorSignal, DuplicatePlannedStartUpSignal);

/* Remove a planned area startup from the calendar. */void removePlannedStartUp (in ResourceSchedule aResourceSchedule)

raises (FrameworkErrorSignal);

/* Return all planned area startups. */PlannedStartUps allPlannedStartUps ( ) raises (FrameworkErrorSignal);

CIM Framework Interfaces 109

Technology Transfer # 93061697J-ENG SEMATECH

/* Return a CalendarDay represented by the given timestamp. Raise the exception if the givenCalendarDay has not been defined for this area. */CalendarDay workDay_for (in TimeStamp aTimeStamp)

raises (FrameworkErrorSignal, RequestedDayNotDefinedForAreaSignal);

Contracted Services: None.

Dynamic Model: None.

110 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.5.1.4 Interface: PolicyVariable

Inherited Interface: NamedEntity

Description: The concept of policy variable contains the information that provides theflexibility in factory configuration to achieve alternative approaches tooperations customization (e.g., selecting appropriate business rules). Thisflexibility allows applications to be tuned for a particular operation’s needor for a business process. Customization occurs at run-time withoutrequiring modification of application code.

Policy variables are the customizable aspects of applications. For example,a policy variable that reflects information on when to schedule materialwith respect to reticle set availability. Policy variables are represented asdefault values, ranges, explanations, or anything else relevant to operationscustomization (application configuration). Policy variables are nothard-coded. They are cached or accessed dynamically at run-time. Thevalue(s) of policy variables are specified within the following:

• Application default values

• A system configuration file (system-wide defaults read at startup)

• An executable configuration file (values that could overrideapplication default values or system configuration for a singleexecutable)

PolicyVariables are associated with factory Areas. It is assumed thatcustomization will occur at the Area level, not at a factory-wide level.

Policy and its related information will be deployed within a CIMFramework-compliant Factory Component through implementation of theOMG’s specification for Common Management Facilities [SysMan]. Abrief discussion of that specification follows.

The OMG (X/Open) Policy Management Facility specification addressesthe management of policy-driven objects. The specification includes themechanisms and facilities that enable the establishment and enforcementof policy on these objects. It does not, however, define policy nor thedevelopment of policy. Policy is defined by the CIM Framework conceptof PolicyVariable.

The Policy Management Facility provides the capability to:

• Εstablish policy regions.

• Αssociate objects with those policy regions.

• Report associated policy.

In providing this capability, the Policy Management Facility defines thefollowing concepts.

CIM Framework Interfaces 111

Technology Transfer # 93061697J-ENG SEMATECH

Policy is an organization-specific rule that an administrator places on asystem. For example, which users have access to a particular host system.Policy supports customization of applications. Each application, in turn,reflects the way its system is managed. Policy must be enforced in order tobe effective.

PolicyObject is an object that implements policy. For example,engineering user policy and marketing user policy.

PolicyRegions enable enforcement of policy. These regions represent a setof managed resources that share common management policies.PolicyRegions can be hierarchical and should be defined in a mannernatural to the administrator (e.g., computers belonging to the EngineeringDepartment). PolicyRegions must be easily customizable and capable ofreplacing or customizing existing policy or establishing new policy. Onlyone PolicyObject may be associated with any given PolicyRegion.PolicyRegions are managed by an InstanceManager.

Policy-driven Objects are governed by policy within a definedPolicyRegion. They must belong to at least one PolicyRegion. ThePolicyRegion(s) to which a policy-driven object belongs establishes thepolicies enforced on the object. Policy-driven objects may beadded/deleted/moved relative to PolicyRegions. They are managed by anInstanceManager. There is no interface defined for policy-driven objects.Operations on them are defined within other interfaces.

An InstanceManager encapsulates implementation-specific details of amanaged object type (e.g., creation of managed objects). Objects thatsupport the InstanceManager interface provide all of the capabilities thatthe basic instance manager provides plus operations and behavior thatallow its managed instances to be subject to policy management. The basicinstance manager interface describes all instance managers.

A PolicyRegions InstanceManager manages PolicyRegions, while theInstanceManager manages one or more initialization and validation policyobjects.

Exceptions: None.

Published Events: None.

Provided Services:

/* Set and get the default value for the policy variable. */any getDefaultValue ( ) raises (FrameworkErrorSignal);

void setDefaultValue (in any defaultValue)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

/* Set and get the explanation of the policy variable’s purpose. */string getExplanation ( ) raises (FrameworkErrorSignal);

void setExplanation (in string explanation)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

112 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Set and get the policy variable’s facility value initially set by the configuration file at startup. */any getFacilityValue ( ) raises (FrameworkErrorSignal);

void setFacilityValue (in any facilityValue)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

/* Returns the current value for the policy variable, which is the facilityValue if it was set bystartup configuration; otherwise the defaultValue is used. */any currentValue ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 113

Technology Transfer # 93061697J-ENG SEMATECH

4.5.1.5 Interface: MachineRegister

Inherited Interface: Resource

Description: The MachineRegister maintains a list of known machines for the factoryand supplies related information on demand. There is only oneMachineRegister per factory. NOTE: this interface may eventuallyreplaced by the trader service.

Exceptions:

/* An attempt was made to locate an unknown Machine. */exception MachineNotFoundSignal {string machineName;};

exception MachineRemovalFailedSignal { };

Published Events:

/*Event indicating that a Machine has been added or removed from theFactory. */MachineListChangedEvent

Provided Services:

/* Add a Machine to the set of machine(s) managed by the MachineRegister. */void addMachine(in Machine aMachine) raises (FrameworkErrorSignal);

/* Remove a Machine from the set of machine managed by the MachineRegister. */void removeMachine(in Machine aMachine)

raises (FrameworkErrorSignal, MachineRemovalFailedSignal);

/* Answer a sequence of all machines managed by the MachineRegister. */MachineSequence allMachines() raises (FrameworkErrorSignal);

/* Answer a sequence of all of the ProcessMachines managed by this MachineRegister. */ProcessMachineSequence allProcessMachines()

raises (FrameworkErrorSignal);

/* Answer with the Machine corresponding to the given name. */Machine findMachineNamed(in string identifier)

raises (FrameworkErrorSignal, MachineNotFoundSignal) ;

Contracted Services: None.

Dynamic Model: None.

114 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.5.2 Factory Operations Component

The factory-level derivation of Job Supervision falls within the Factory Operations component.This is the nerve center of the factory system. It facilitates the processing of Lots within thefactory and of non-Lot activities as well (to the extent that they are known to the system).

In an automated factory, this component makes the decisions about what to do (with the help ofthe scheduler and dispatcher). In today’s more manual factory, it would be the component thatwould present processing choices and supporting data to the human operator (via a user interface)and then record the results.

The Factory Operations component accepts as its Jobs the request to make a finished productfrom a set of raw material (e.g. wafers). Each individual LotFamily is associated with its ownLotJob. The LotFamily’s original Lot may be split, re-joined, batched with other Lots, etc. asappropriate to optimize Factory performance. The LotJob is responsible for production activitieson all parts of the LotFamily whether they are a single Lot or several. It will delegate individualProcessOperations or mini-flows (sequences of ProcessOperations) for a Lot to lower levelJobSupervisors (e.g., ProcessMachine).

The Factory Operations component is expected to optimize the operations of the factory.Therefore, it may combine activities for Lots from different LotJobs (e.g., batch multiple Lots forProcessMachineJobs) or synchronize factory activities so that Lots of a similar type progressthrough the factory together. Thus, it is not required that these delegated Jobs relate to just oneLot (or LotJob).

When the original Lot for a LotFamily is split, each resulting Lot will be moved forward throughits ProcessFlow separately until or unless a merge is performed. The single LotJob is stillresponsible for all such split Lots.

The FactorySupervisor interacts with other components as pictured in Figure 33. Refer to thisfigure as each interface within this component is defined.

The diagram omits many other possible interactions with other components. Many differentapproaches may be taken in the design of the Factory Operations component. Implementationdecisions determine which of the other components are utilized to perform the FactoryOperations function (e.g., equipment status, Lot status, people, environmental conditions, etc.).It is clear that much up-to-date information is needed by this component.

CIM Framework Interfaces 115

Technology Transfer # 93061697J-ENG SEMATECH

FactoryOperationsComponent

ProductRequestExecutor

JobRequestorProductRequest

Job

JobSupervisor

LotJobExecutor

ComponentManager

FactorySupervisor

LotFamily

tracksprogress via

1+

Dispatcher

Scheduler (impl.dependent)

get prioritizedlist of tasksto be done now

get scheduledactivities for

requests product bemade from

ProcessMachine

TransportJobSupervisor

requests aprocess operation

requestsmovementof material

actsupon

Lot

groups

ProcessFlowContext tracksprogress

of

1+

tracksprogresswith

ProcessOperation

ProductSpecification

hascurrent

adheresto

defines

1+

1+

Person

assignedto

LotJob

Figure 33 Factory Operations Component Information Model

Another potential use of the Factory Operations Component is responsibility for interpretingschedules and initiating CIM Framework operations to carry out the scheduled decisions. Thiscasts the Factory Operations Component in the role of a client of the Scheduling Componentwithin Schedule Management. It should be noted that the execution of a single scheduled activitymay result in the initiation of a number of CIM Framework jobs. For example, the decision toprocess material at a processing resource may result in transport jobs to move material and otherrequired resources to the processing resource as well as a process job to carry out the processingof the material once delivered. A fully automated Factory Operations Component must be awareof how to carry out a scheduled activity by issuing the right CIM Framework commands at theright times. This role is a candidate for future study.

116 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.5.2.1 Interface: FactorySupervisor

Inherited Interfaces: ComponentManager, JobSupervisor

Description: The FactorySupervisor is the ComponentManager for the FactoryOperations component. It also implements the JobSupervisor interfaceand serves as the subject of the Product Release Component’s releaseactivity. That is, it is requested to “make product”. It is theFactorySupervisor that works with the Dispatcher to select the nextactivity to perform.

The generic JobSupervisor level requires certain parameters be included inevery JobSpecification. The following list extends that required set ofparameters.

Additional JobSpecification Parameters:

Name Value Type Description

“Lot” Lot The Lot to be processed with this LotJob.

“ProductRequest” ProductRequest The ProductRequest for which this Lot isProduced.

“ProductSpecification” ProductSpecification The ProductSpecification tell how to create thedesired finished Product.

Exceptions: None.

Published Events: None.

Provided Services:

/* Return the Dispatchers used by this FactorySupervisor. */DispatcherSequence getDispatchers ( ) raises (FrameworkErrorSignal) ;

Contracted Services:

Interface Component Service

Dispatcher Dispatching dispatchUsingLots

Dispatcher Dispatching whatNextForMachine

Dispatcher Dispatching whereNextForLot

Dynamic Model: None.

CIM Framework Interfaces 117

Technology Transfer # 93061697J-ENG SEMATECH

4.5.2.2 Interface: LotJob

Inherited Interface: Job

Description: The LotJob interface specializes the Job interface for the attributes uniqueto the manufacturing of a LotFamily. The LotJob corresponds to exactlyone LotFamily and represents the transformation within the factory of oneLotFamily into a desired finished product (according to theProductSpecification).

The ProductSpecification for a LotJob may change during the execution ofthe LotJob. This is expected to happen in some environments. It willapply to the entire LotFamily.

There is a requirement that a portion of a LotFamily might need to bechanged to a new ProductSpecification. To accomplish this, theProductRequest must first be split since each can have only oneProductSpecification. Next, a new LotJob must be created because theLotJob can build to only one ProductSpecification. Finally, the Lot mustbe split and one of the resulting Lots assigned to the new LotJob.Adjustments must be made to the LotFamily as well. This process can beaccomplished within this specification, but with some difficulty. If thisprocess is to be used commonly in factories, future modifications of thisspecification may be warranted to simplify it.

Exceptions: None.

Published Events:

/* This event is posted when a LotJob’s priority has changed. */LotJobPriorityChangedEvent

/* This event is posted when the ProductSpecification for a LotJobchanges. See setProductSpecification service. */LotJobProductSpecificationChangedEvent

Provided Services:

/* Get the LotFamily that the LotJob was asked to manufacture. */LotFamily getLotFamily ( ) raises (FrameworkErrorSignal) ;

/* Get the ProcessFlowContext for each Lot associated with the LotFamily of this LotJob. TheProcessFlowContext is created by the ProductSpecification at the request of the LotJob */ProcessFlowContextSequence getProcessFlowContexts ( ) raises (FrameworkErrorSignal);

/* Get all current ProcessOperations associated with any Lot in the LotFamily for this LotJob.Returns one ProcessOperation per Lot. */ProcessOperationSequence getCurrentProcessOperations ( )

raises (FrameworkErrorSignal);

/* Get the ProductRequests for which this LotJob is being performed. */ProductRequestSequence getProductRequests ( ) raises (FrameworkErrorSignal) ;

118 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Get the ProductSpecification for the LotJob. */ProductSpecification getProductSpecification ( ) raises (FrameworkErrorSignal) ;

/* Change the ProductSpecification for the LotJob (e.g., change the type of finished Product to beproduced). The initial value comes from the ProductRequest. Any change should also comefrom there (i.e., the Enterprise level). When a change occurs, each Lot in the LotFamily for thisLotJob will be affected. */void setProductSpecification (in ProductSpecification aProductSpecification)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

/* Returns how long the LotJob has been in the Active superstate. Note that the durationreturned by age becomes fixed once the entire LotFamily enters the Finished state. */Duration age ( ) raises (FrameworkErrorSignal) ;

Contracted Services: None.

Dynamic Model: Inherited from supertype Job.

CIM Framework Interfaces 119

Technology Transfer # 93061697J-ENG SEMATECH

4.5.2.3 Interface: LotJobExecutor

Inherited Interface: JobRequestor

Description: The Factory Operations component employs a delegator type of JobSupervisor. It performs the following:

1. It takes a request to make a finished product from a LotFamily ofbare wafers.

2. It breaks the processing into a sequence of ProcessOperationsaccording to the ProcessFlow.

3. It assigns each step (or group of steps) in the sequence to a lowerlevel JobSupervisor (e.g., ProcessMachine level).

It is the LotJobExecutor that is responsible (as a JobRequestor) for thedelegated activities. Note that in implementation, this interface may bemerged with either the FactorySupervisor or LotJob as best fits the needsof the implementer. Thus, there may be one or many of these in animplementation.

There may be one or many LotJobExecutors (many if each Job is anExecutor) within the component (this is an implementation decision).

Exceptions: None.

Published Events: None.

Provided Services:

/* Report which ProcessMachines are issued work directly by Factory Operations. */ProcessMachineSequence getProcessMachines ( ) raises (FrameworkErrorSignal) ;

/* Report which TransportJobSupervisors are issued work by Factory Operations. */TransportJobSupervisorSequence getTransportJobSupervisors ( )

raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

120 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.5.3 Enterprise Abstract Interface

The Enterprise Interface provides an interface from the Enterprise level system to the Factorysystem. The Enterprise Interface’s function is to issue product requests to the Factory. It usesthe JobSupervisor interface of the ProductRequestManager to issue the product request as a job.In turn, it implements the JobRequestor interface to allow the job status to be reported directly.

The Enterprise level system’s function will go well beyond that represented by the EnterpriseInterface defined here. This is the most basic function of the Enterprise in the view of theFactory. Future work may be required to extend this interface to provide additional functionality.However, as defined, the Enterprise level may avail itself of the interfaces provided by all of theCIM Framework components. This will contribute toward this additional Enterprise-Factoryinteraction needed in the future.

EnterpriseAbstract Interface

EnterpriseExecutor ProductRequest

NamedEntityJobRequestor

LotJob1+

defines

ProductRequestManager

make job requestbased on a

product request

ProductRequestJob ProductSpecification

definesproduct

for

specifies desiredproduct with

specifies typeand quantity

of product to make

Figure 34 Enterprise Abstract Interface Information Model

CIM Framework Interfaces 121

Technology Transfer # 93061697J-ENG SEMATECH

4.5.3.1 Interface: EnterpriseExecutor

Inherited Interfaces: JobRequestor

Description: The EnterpriseExecutor exists to be the Enterprise level JobRequestor ofProductRequestJobs. The association between EnterpriseExecutor andProductRequestManager is the key relationship.

Exceptions: None.

Published Events: None.

Provided Services:

/* Return the ProductRequestManagers to which ProductRequestJobs are delegated. */ProductRequestManagerSequence productRequestManagers ( )

raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Inherited from JobRequestor.

122 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.5.3.2 Interface: ProductRequest

Inherited Interface: NamedEntity

Description: An interface to contain pointers to all the information needed to release thematerial and schedule it in the factory.

Exceptions: None.

Published Events:ProductRequestStateChangedEvent

Provided Services:

/* Set and get the planned time for release into the Factory. */TimeStamp getPlanReleaseTime ( ) raises (FrameworkErrorSignal);

void setPlanReleaseTime (in TimeStamp planReleaseTime)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

/* Set and get the quantity of Product (e.g., Wafers) associated with this request. */long getProductQuantity ( ) raises (FrameworkErrorSignal);

void setProductQuantity (in long productQuantity)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

/* Get the unique identifier for the ProductRequest. Value is set within the Enterprise level. */string getProductRequestIdentifier ( ) raises (FrameworkErrorSignal);

/* Get the LotFamilies associated with this ProductRequest. */LotFamilySequence getLotFamilies ( ) raises (FrameworkErrorSignal);

void setLotFamilies (in LotFamilySequence lotFamilies)

raises (FrameworkErrorSignal, FrameworkErrorSignal);

/* Get ProductSpecification for this ProductRequest. If there is a change in theProductSpecification, it must happen at the Enterprise level. Thus, no such interface is providedfor the Factory. If a change in ProductSpecification should occur, it should be passed down tothe LotJob (if there is on) as well. */ProductSpecification getProductSpecification ( ) raises (FrameworkErrorSignal);

/* Get the OrderItem associated with this ProductRequest. Since the OrderItem is out of scope ofthe CIM Framework, only an identifier is passed across this interface. */string getOrderItemIdentifier ( ) raises (FrameworkErrorSignal);

/* Set the identifier of the OrderItem associated with this ProductRequest. This change by theEnterprise level indicates that this ProductRequest has been redirected to a different order. It isnot intended for use by any other component. */void setOrderItemIdentifier (in string orderItemIdentifier)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

/* Tell the receiver to transition to the ON HOLD state. When a ProductRequest is on Hold, therelated Lots in the factory should react appropriately according to business rules (e.g., Lots mightautomatically be put on hold). */void makeOnHold ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

CIM Framework Interfaces 123

Technology Transfer # 93061697J-ENG SEMATECH

/* Tell the receiver to transition to the NOT ON HOLD state. */void makeNotOnHold ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Tell the receiver to transition to the COMPLETED state. */void makeCompleted ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Tell the receiver to transition to the NOT COMPLETED state. */void makeNotCompleted ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Ask the receiver if it’s in the ON HOLD state. */boolean isOnHold ( ) raises (FrameworkErrorSignal);

/* Ask the receiver if it’s in the NOT ON HOLD state. */boolean isNotOnHold ( ) raises (FrameworkErrorSignal);

/* Ask the receiver if it’s in the COMPLETED state. */boolean isCompleted ( ) raises (FrameworkErrorSignal);

/* Ask the receiver if it’s in the NOT COMPLETED state. */boolean isNotCompleted ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model:

Not Completed

Not On Hold

On Hold

Completed1 2

3

4

Figure 35 ProductRequest Dynamic Model

124 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Object State Tables:

Table 14 ProductRequest State Definitions and Query Table

State Definition Query for State via

NOTCOMPLETED

In this superstate, aProductRequest has not beenfulfilled.

boolean isCompleted ( ) sent to instance of Personreturns FALSE or boolean isNotCompleted ()returns TRUE.

NOT ON HOLD In this substate, aProductRequest is not onhold.

boolean isOnHold ( ) sent to instance of Personreturns FALSE or boolean isNotOnHold () returnsTRUE.

ON HOLD In this substate, aProductRequest has beenplaced on hold.

boolean isOnHold ( ) sent to instance of Personreturns TRUE or boolean isNotOnHold () returnsFALSE.

COMPLETED In this superstate, aProductRequest has beenfulfilled.

boolean isCompleted ( ) sent to instance of Personreturns TRUE or boolean isNotCompleted () returnsFALSE.

Table 15 ProductRequest State Transition Table

# Current State Trigger New State Action Comment

non-existent ProductRequestgetProductRequest () ;sent to instance ofProductRequestJob

NOTCOMPLETED

1 NOT ONHOLD

void makeOnHold () ; sentto instance ofProductRequest

ON HOLD ProductRequestStateChanged event postedby instance ofProductRequest

2 ON HOLD void makeNotOnHold () ;sent to instance ofProductRequest

NOT ONHOLD

ProductRequestStateChanged event postedby instance ofProductRequest

3 NOTCOMPLETED

void makeCompleted () ;sent to instance ofProductRequest

COMPLETED ProductRequestStateChanged event postedby instance ofProductRequest

4 COMPLETED void makeNotCompleted() ; sent to instance ofProductRequest

NOTCOMPLETED

ProductRequestStateChanged event postedby instance ofProductRequest

COMPLETED non-existent Implementationspecific.

CIM Framework Interfaces 125

Technology Transfer # 93061697J-ENG SEMATECH

4.5.4 Product Request Management Component

Product Request Management performs as an intermediary between the Enterprise level and theFactory level. It accepts product requests (as jobs) from the Enterprise. These product requestsare then broken down into lots, which are released into the factory as appropriate to optimizeplant operations.

The value add of this component consists of two main areas:

1. The release mechanism, metering lots into the factory to make it run smoothly withoutstarving it or causing over crowding.

2. The mapping of product requests into lots. The many-to-many mapping of these twointerfaces gives great flexibility.

Product Request ManagementComponent

ProductRequestManager ProductRequestJobProductRequestExecutor

JobRequestor

ProductRequest

JobJobSupervisor EnterpriseExecutor

ComponentManager

FactorySupervisor LotFamily

ProductManager

tracksprogress

via

definesproduct

for

satisfiedby

1+

releaseslot from

requestsproduct

createslots for

requests productbe made from

Figure 36 Product Request Management Information Model

Product Request Management employs a delegator style of job supervision. It accepts productrequest jobs from the Enterprise interface and releases lots (by requesting lot jobs) to the FactoryOperations component based on those product requests.

The parameter of a product request job specification is the product request. All informationshould be available from that interface to perform the work.

126 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.5.4.1 Interface: ProductRequestManager

Inherited Interfaces: ComponentManager, JobSupervisor

Description: ProductRequestManager is the JobSupervisor derivative responsible foraccepting JobRequests involving ProductRequests.

Additional JobSpecification Parameters:

Name Value Type Description

“ProductRequest” ProductRequest Specifies type and quantity of product to make.

Exceptions: None.

Published Events: None.

Provided Services: None.

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 127

Technology Transfer # 93061697J-ENG SEMATECH

4.5.4.2 Interface: ProductRequestJob

Inherited Interfaces: Job

Description: This derivative of Job represents the fulfillment of ProductRequests by thefactory for the Enterprise.

Exceptions: None.

Published Events: None.

Provided Services:

/* Get the ProductRequest for this Job */ProductRequest getProductRequest ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Inherited from Job.

128 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.5.4.3 Interface: ProductRequestExecutor

Inherited Interfaces: JobRequestor

Description: The ProductRequestExecutor acts as the JobRequestor for the jobsrequested of the Factory Operations component (e.g. LotJobs).

Exceptions: None.

Published Events: None.

Provided Services:

/* Return the FactorySupervisor to which Jobs are delegated. */FactorySupervisor getFactorySupervisor ( ) raises (FrameworkErrorSignal);

/* Return the ProductManager used to create Lots. */ProductManager getProductManager ( ) raises (FrameworkErrorSignal);

/* Return all the Lots which have been created, but not released by Product RequestManagement. The are the Lots for which this component is responsible. */LotSequence getUnreleasedLots ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 129

Technology Transfer # 93061697J-ENG SEMATECH

4.5.5 Product Release Component

The Product Release Component receives product requests that have been planned and acceptedfor production. Product requests deemed ready for production are used to create lots for thefactory and the resulting lots are then released into production. This component determines if anygrouping or splitting of the product requests must occur before creating lots. When to releasenew material into the factory is determined by a release sequencing algorithm that will differfrom factory to factory; therefore, the Product Release Component must be tailored to providethe necessary algorithm.

Figure 37 is the information model for the Product Release Component. The Product ReleaseManager interface represents the main interface needed for this component.

Product ReleaseComponent

initiates lotscheduling

ProductManager

ProductRequest

Lot

releases

describesmaterial to

release

createslots

1+

1+

ComponentManager

SchedulingManager(implementation

dependent)

ProductReleaseManager

Figure 37 Product Release Component Information Model

The Product Release Component is part of a sequence of ordering, planning, and product release,which takes orders from a customer and results in a sequence of order > order item > productrequest > Lot object instance creation.

130 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Figure 38 shows a typical sequence of CIM Framework messages that would occur in causing alot to be manufactured. Note that a Scheduling Manager has not been defined for the CIMFramework. A message taken from an earlier specification release is included to complete thisscenario.

ProductReleaseManager

ExternalRequester

ProductManager SchedulingManager

1: createAndReleaseLotsForProductRequests( )

2: createLotUsing( )

3: return aLot

4: return sequence<Lot>

5: scheduleLots(lots)

Figure 38 Product Release Component Interaction Diagram

CIM Framework Interfaces 131

Technology Transfer # 93061697J-ENG SEMATECH

4.5.5.1 Interface: ProductReleaseManager

Inherited Interface: ComponentManager

Description: The ProductReleaseManager is responsible for determining when materialcan be made available for processing in the factory. Note that aProductReleaseManager may also have the responsibility for release ofmaterial other than product in the factory. It may also manage durable andconsumable introductions into the factory.

Exceptions:

/* An invalid ProductRequest reference was made. */exception ProductRequestInvalidSignal {ProductRequest aProductRequest;};

/* An attempt was made to add an existing ProductRequest. */exception UnableToAddProductRequestSignal {ProductRequest aProductRequest;};

Published Events: None.

Provided Services:

/* This service is provided for an external entity to inform the ProductReleaseManager that thereare new product requests available for the manager to consider. The manager may choose to deferthe creation and release of Lots for those product requests until some future date based on its owninternal implementation. */void newProductRequestsAvailableForRelease

(in ProductRequestSequence aProductRequestSequence)

raises (FrameworkErrorSignal, ProductRequestInvalidSignal);

/* This service is provided for an external entity to force the ProductReleaseManager to createand release Lots for the given product requests immediately. */LotSequence createAndReleaseLotsForProductRequests

(in ProductRequestSequence aProductRequestSequence)

raises (FrameworkErrorSignal, ProductRequestInvalidSignal,

UnableToAddProductRequestSignal);

132 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Contracted Services:

Interface Component Service

ProductRequest Enterprise AbstarctInterface

is<state>;

[None defined. Added for clarity.] Scheduling (notdefined)

schedule lots (no service defined)

[None defined. Added for clarity.] Planning (not defined) replan order items (no service defined)

ProductReleaseManager Product Release createAndReleaseLotsForProductRequests

(in ProductRequestSequence

ProductRequestSequence);

Lot Product Management makeReleased ( );

ProductManager Product Management allLots<state> ( );

ProductManager Product Management createLotUsing (aProductRequest);

ProductManager Product Management allLotsActive ( );

ProductManager Product Management wipCount ( ); [inherited from ProductManager]

Dynamic Model: None.

CIM Framework Interfaces 133

Technology Transfer # 93061697J-ENG SEMATECH

4.6 Material Management Group

The Material Management Group contains the Material Management Abstract Interface Groupand components that define and manage the software representation of products, lots, durables,and consumables in the factory. This group controls the lifecycle of the material objects.

The Material Management Group contains the following components:

• Product Management Component. This component is responsible for managing Productin the Factory.

• Durable Management Component. This component is responsible for managing Durablesin the Factory.

• Consumable Management Component. This component is responsible for managingConsumables in the Factory.

• Inventory Region Management Component. This component provides monitoring ofmaterial progress through, and the current population of conceptual locations in thefactory.

134 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.1 Material Management Abstract Interface Group

This group is the abstractions for representing the various types of Material to be viewed at theFactory level. Behavior concerning material location, material aggregates, and material progressare services provided by the specializations of interfaces in this abstract group. Specializations ofMaterial are Products, Durables, and Consumables.

Found within this abstract group is the abstraction called MaterialGroup, which represents anaggregation of material for the purposes of Factory operations. MaterialGroup specializationsserve the transport system, machine processing, and material tracking. A MaterialGroup is notassociated with factory or machine locations. Its location is determined by the location of itsaggregate materials.

The Material Management Abstract Interface Group is composed of the following interfaces:

• Material

• MaterialGroup

Specializations of Material will include Product, Durable, and Consumable. Specializations ofMaterialGroup will include ProcessGroup, TransportGroup, and Lots. These will be defined anddiscussed in those specific components that specialize these interfaces.

Figure 39 is the Material Management Abstract Interface Group Information Model.

MaterialLocation

is located on is grouped in

contains

Material MaterialGroup

Figure 39 Material Management Abstract Interface Group

CIM Framework Interfaces 135

Technology Transfer # 93061697J-ENG SEMATECH

4.6.1.1 Interface: Material

Inherited Interface: NamedEntity

Description: Material is an abstract interface for any entity in the factory that goes intothe product or is used to manufacture the product. This includes theproduct itself, consumables, and durables used in the manufacturingprocess.

Exceptions: None.

Published Events: None.

Provided Services:

/* Set and get the unique identifier for this group. */string getIdentifier ( ) raises (FrameworkErrorSignal);

void setIdentifier (in string identifier)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Returns the material groups of which the receiver is a member. */MaterialGroupSequence materialGroups ( ) raises (FrameworkErrorSignal);

/* Answers whether the receiver is a member of the material group indicated by the argument. */boolean isMemberOf (in MaterialGroup aMaterialGroup) raises (FrameworkErrorSignal);

Dynamic Model: None.

136 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.1.2 Interface: MaterialGroup

Inherited Interface: NamedEntity

Description: MaterialGroup is the abstract interface for any aggregation of Material. AMaterialGroup is not capable of determining location; however, locationcan be determined through its association with the aggregate Material.

Exceptions:

/* Signals an attempt to add Material to the MaterialGroup that is already in the group. */exception DuplicateMaterialSignal {Material aMaterial;};

/* Signals an attempt to add a MaterialGroup to a MaterialGroup that is already in the group. */exception DuplicateMaterialGroupSignal {Material aMaterialGroup;};

/* Signals an attempt to remove Material that wasn’t found in this MaterialGroup. */exception MaterialRemovalFailedSignal {Material aMaterial;};

exception MaterialNotAssignedSignal {Material aMaterial;};

/* Signals an attempt to remove a MaterialGroup that wasn’t found in this MaterialGroup. */exception MaterialGroupRemovalFailedSignal {MaterialGroup aMaterialGroup;};

exception MaterialGroupNotAssignedSignal {MaterialGroup aMaterialGroup;};

Published Events: None.Provided Services:

/* Set and get the unique identifier for this group. */string getIdentifier ( ) raises (FrameworkErrorSignal);

void setIdentifier (in string identifier)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Sets the receiver’s Material to the argument Material collection. */void addMaterials (in MaterialSequence aMaterialSequence)

raises (FrameworkErrorSignal,DuplicateMaterialSignal);

/* Adds the argument Material to the collection of Material held by the receiver. The exception isthrown if the material is a duplicate of material already in the group. */void addMaterial (in Material aMaterial)

raises (FrameworkErrorSignal,DuplicateMaterialSignal);

/* Removes the Material indicated from the MaterialGroup. Returns the Material removed orthrows the exception if not found. */void removeMaterial (in Material aMaterial)

raises (FrameworkErrorSignal,MaterialRemovalFailedSignal,

MaterialNotAssignedSignal);

/* Remove and return all Material from the MaterialGroup. */MaterialSequence removeAllMaterials ( )

raises (FrameworkErrorSignal);

/* Add the argument MaterialGroup to this MaterialGroup. */void addMaterialGroup (in MaterialGroup aMaterialGroup)

raises (FrameworkErrorSignal,DuplicateMaterialGroupSignal);

CIM Framework Interfaces 137

Technology Transfer # 93061697J-ENG SEMATECH

/* Removes the argument MaterialGroup from this MaterialGroup. */void removeMaterialGroup (in MaterialGroup aMaterialGroup)

raises (FrameworkErrorSignal,MaterialGroupRemovalFailedSignal,

MaterialGroupNotAssignedSignal);

/* Returns the collection of material in this MaterialGroup. */MaterialSequence allMaterials ( ) raises (FrameworkErrorSignal);

/* Returns all the MaterialGroups in this MaterialGroup. */MaterialGroupSequence allMaterialGroups ( )

raises (FrameworkErrorSignal);

/* Returns the size of the MaterialGroup. */long size ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

138 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.2 Product Management Component

The Product Management Component provides the representation for various types of Product tobe viewed at the Factory level. Behavior concerning product location, product aggregation, andproduct progress are services provided by the interfaces in this component. Categories of Productare Wafers, Die, and Packages. The aggregation of products is represented as Lot. AProductManager provides lifecycle management and coordination of behavior for objectsrepresenting Product and Lot.

ProcessGroup represents a Material aggregate used for processing in a Machine. Units of Productor parts are known to be in a process together when they are members of the same ProcessGroup.This interface should be considered for customization to the practices of a particular Factory.

Figure 40 contains the Product Management Component Informational Model.

This component contains the following interfaces:

• ProductManager • Package• Product • Lot• Wafer • LotFamily• Die • ProcessGroup

Material ComponentManager MESFactory

ProductManager

ProcessGroup Lot

LotFamily

ProcessFlowContext

ProcessOperation

Machine

Product

Package Die Wafer

PositionalContainer Cassette

ProductRequest

has a

holds

manages and tracks

has member

held at slot

manages

managesgroups

assigned tomanufacture

currentlyprocessingat

is containedin

consists of

Held at 1+

LotJob

Currently Processing by

Figure 40 Product Management Component Information Model

CIM Framework Interfaces 139

Technology Transfer # 93061697J-ENG SEMATECH

4.6.2.1 Interface: ProductManager

Inherited Interface: ComponentManager

Description: The ProductManager provides services similar to those in its inheritedinterface ComponentManager but extends and enhances them to beapplicable to Lot and Product lifecycle management and tracking.

Exceptions:

/* Denotes a failed attempt to add a ProcessGroup because a group of the same specified namealready exists. */exception ProcessGroupDuplicateSignal {string identifier;

ProcessGroup existingProcessGroup;};

/* This signal is raised when a search for a specified Lot failed. */exception LotNotFoundSignal { };

/* This signal is raised when the quantity specified on the ProductRequest does not match thenumber of Product units or identifiers sent with a Lot creation request. */exception ProductRequestQuantityMismatchSignal {long quantityOfMaterial;};

/* This signal is raised when a search for a specified Product failed. */exception ProductNotFoundSignal { };

/* This signal is raised when the joining of lots has failed. */exception LotJoinFailedSignal {Lot sourceLot;};

/* This signal is raised if the end time parameter is prior to the start time parameter. */exception EndTimePriorToStartTimeSignal { };

/* This signal is raised when an attempt is made to add support for another Product Type thatalready exists. */exception ProductTypeDuplicateSignal { };

/* This signal is raised when an attempt is made to remove a ProductType that can’t be found. */exception ProductTypeNotAssignedSignal { };

exception ProductTypeRemovalFailedSignal { };

/*Indicates One or more of the Product units did not belong to the original Lot.*/exception ProductNotPresentSignal { };

exception ProcessGroupRemovalFailedSignal

{ProcessGroup aProcessGroup;};

exception ProcessGroupNotAssignedSignal

{ProcessGroup aProcessGroup;};

140 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Published Events:ProcessGroupLifecycleEvent

LotLifecycleEvent

WaferLifecycleEvent

Provided Services:

/* Create a Lot using the ProductRequest indicated by the first argument. Returns the Lot created.The ProductRequest contains Product quantity to be created. By default, a LotFamily is createdfor the new Lot also. */Lot createLotUsing (in ProductRequest aProductRequest)

raises (FrameworkErrorSignal);

/* Create a Lot from existing Products. If the ProductRequest quantity doesn’t match the quantityof Products, the exception is raised. By default, a LotFamily is created for the new Lot.*/Lot createLotUsing_fromProducts (in ProductRequest aProductRequest,

in ProductSequence aProductSequence)

raises (FrameworkErrorSignal,ProductRequestQuantityMismatchSignal);

/* Create a Lot from existing Products using the given Product identifiers. If the ProductRequestproduct quantity doesn’t match the quantity of Product identifiers, raise the exception.

Note: This is designed to be used when pre-existing Products are brought into the manufacturingfacility for further processing. By default, a LotFamily is created for the new Lot also. */Lot createLotUsing_withIdentifiers (in ProductRequest aProductRequest,

in IdentifiersSequence anIdentifierSequence)

raises (FrameworkErrorSignal,ProductRequestQuantityMismatchSignal);

/* This service causes one new Lot to be split from an original Lot. The service will return thenew Lot containing the Products listed in the second parameter. The original Lot will contain allremaining Products (if any). The new Lot remains in the original Lot’s LotFamily. This may becalled multiple times if multi-way splits are required. */Lot createSplitLot (in Lot originalLot,

in SplitProducts productsToSplit)

raises (FrameworkErrorSignal, ProductNotPresentSignal);

/* Create a Wafer. */Wafer createWaferNamed (in string identifier)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Create a Die. */Die createDieNamed (in string identifier,

in Wafer aWafer, in Coordinate2D aCoordinate)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Create a Package. */Package createPackageNamed (in string identifier)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Create an instance of ProcessGroup, returning that instance. Raise an exception if therequested ProcessGroup already exists. */ProcessGroup createProcessGroup (in string identifier)

raises (FrameworkErrorSignal,ProcessGroupDuplicateSignal);

CIM Framework Interfaces 141

Technology Transfer # 93061697J-ENG SEMATECH

/* Remove the specified ProcessGroup. */void removeProcessGroup (in ProcessGroup aProcessGroup)

raises(FrameworkErrorSignal,ProcessGroupRemovalFailedSignal,

ProcessGroupNotAssignedSignal);

/* Add a supported Product Type to the collection of types for this Product Manager. See thedefinition of ProductType under Product for valid string values. */void addProductType (in string aProductType)

raises (FrameworkErrorSignal,ProductTypeDuplicateSignal);

/* Remove a ProductType from the supported ones from this Product Manager. */void removeProductType (in string aProductType)

raises (FrameworkErrorSignal,ProductTypeRemovalFailedSignal,

ProductTypeNotAssignedSignal);

/* Returns raw factory throughput for the product type indicated. This throughput is the numberof product units for the time period indicated.(i.e., the number of wafers). This product typecorresponds to the product type on the Product interface. */long throughput (in TimeWindow throughputTime, in string aProductType)

raises (FrameworkErrorSignal,EndTimePriorToStartTimeSignal);

/* Returns the number of product units currently in the Factory. */long wipCount ( ) raises (FrameworkErrorSignal);

/* The receiver joins all of the Lot indicated by the first argument to the Lot indicated by thesecond argument. Returns the second argument, which has been modified during the join. Theupdated destination Lot is returned. */Lot joinAll_into (in Lot sourceLot, in Lot destinationLot)

raises (FrameworkErrorSignal,LotJoinFailedSignal);

/* Returns the average cycle time for Lots that have entered the Completed state between the twotimestamps indicated. Returns zero if no Lots have completed within the time specified. */Duration averageCycleTime (in TimeWindow cycleTime, in string aProductType)

raises (FrameworkErrorSignal,EndTimePriorToStartTimeSignal);

/* Returns the Lot in the domain of the receiver with the name indicated. */Lot findLotNamed (in string identifier)

raises (FrameworkErrorSignal,LotNotFoundSignal);

/* Returns the Lots in the domain of the receiver. */LotSequence allLots ( ) raises (FrameworkErrorSignal);

/* Returns the LotFamilies in the domain of the receiver. */LotFamilySequence allLotFamilies ( ) raises (FrameworkErrorSignal);

/* Returns all current (not finished) Lots that have the ProductSpecification requested. */LotSequence currentLotsWithProductSpecification

(in ProductSpecification aProductSpecification)

raises (FrameworkErrorSignal);

/* Returns a collection of Lots in the specified state. */LotSequence allLotsCreated ( ) raises (FrameworkErrorSignal);

LotSequence allLotsReleased ( ) raises (FrameworkErrorSignal);

LotSequence allLotsActive ( ) raises (FrameworkErrorSignal);

142 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

LotSequence allLotsInProduction ( ) raises (FrameworkErrorSignal);

LotSequence allLotsInRework ( ) raises (FrameworkErrorSignal);

LotSequence allLotsOnHold ( ) raises (FrameworkErrorSignal);

LotSequence allLotsNotOnHold ( ) raises (FrameworkErrorSignal);

LotSequence allLotsFinished ( ) raises (FrameworkErrorSignal);

LotSequence allLotsCompleted ( ) raises (FrameworkErrorSignal);

LotSequence allLotsScrapped ( ) raises (FrameworkErrorSignal);

LotSequence allLotsEmptied ( ) raises (FrameworkErrorSignal);

LotSequence allLotsShipped ( ) raises (FrameworkErrorSignal);

/* Returns a collection of Product in the specified state. */ProductSequence allProductsCreated ( ) raises (FrameworkErrorSignal);

ProductSequence allProductsInInventory ( ) raises (FrameworkErrorSignal);

ProductSequence allProductsAllocated ( ) raises (FrameworkErrorSignal);

ProductSequence allProductsActive ( ) raises (FrameworkErrorSignal);

ProductSequence allProductsInProduction ( ) raises (FrameworkErrorSignal);

ProductSequence allProductsInRework ( ) raises (FrameworkErrorSignal);

ProductSequence allProductsTraveling ( ) raises (FrameworkErrorSignal);

ProductSequence allProductsIdle ( ) raises (FrameworkErrorSignal);

ProductSequence allProductsProcessing ( ) raises (FrameworkErrorSignal);

ProductSequence allProductsOnHold ( ) raises (FrameworkErrorSignal);

ProductSequence allProductsNotOnHold ( ) raises (FrameworkErrorSignal);

ProductSequence allProductsFinished ( ) raises (FrameworkErrorSignal);

ProductSequence allProductsProcessingCompleted ( ) raises (FrameworkErrorSignal);

ProductSequence allProductsScrapped ( ) raises (FrameworkErrorSignal);

ProductSequence allProductsShipped ( ) raises (FrameworkErrorSignal);

/* Returns the Products in the domain of the receiver with the name indicated. */Product findProductNamed (in string identifier)

raises (FrameworkErrorSignal,ProductNotFoundSignal);

/* Returns the Products in the domain of the receiver. */ProductSequence allProducts ( ) raises (FrameworkErrorSignal);

/* Returns all the Product Types supported by this Product Manager. */ProductTypeSequence allProductTypes ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 143

Technology Transfer # 93061697J-ENG SEMATECH

4.6.2.2 Interface: Product

Inherited Interface: Material

Description: The Product interface provides for the representation of any material thatundergoes processing in a Factory. Product, in the semiconductor industry,includes any unit that is intended to become a functional semiconductordevice including functional engineering devices. Associated with eachProduct is a specification for building it, a flow (or route) created from thatspecification, a production history, and a possible position in a positionalcontainer.

Exceptions:

/* This signal is raised when an operation assumes that a Product is in a positional containerwhen, in fact, it is not. */exception ProductNotInPositionalContainerSignal {Product aProduct;};

Published Events: None.

Provided Services:

/* Set and get the location of the Product. */MaterialTrackingLocation getMaterialTrackingLocation ( ) raises (FrameworkErrorSignal);

void setMaterialTrackingLocation (in MaterialTrackingLocation aMaterialTrackingLocation)

raises (FrameworkErrorSignal,SetValueOutOfRangeSignal);

/* Set and get the PositionalContainer in which the Product resides. */PositionalContainer getPositionalContainer ( ) raises (FrameworkErrorSignal);

void setPositionalContainer (in PositionalContainer aPositionalContainer)

raises (FrameworkErrorSignal,SetValueOutOfRangeSignal);

/* Returns the Lot of which the Product is a member. The set method has no public interface. */Lot getLot ( ) raises (FrameworkErrorSignal);

/* Set and get the inventory control part number. */string getPartNumber ( ) raises (FrameworkErrorSignal);

void setPartNumber (in string aPartNumber)

raises (FrameworkErrorSignal,SetValueOutOfRangeSignal);

/* Set and get the internally stored serial number for the Product. */string getSerialNumber ( ) raises (FrameworkErrorSignal);

void setSerialNumber (in string aSerialNumber)

raises (FrameworkErrorSignal,SetValueOutOfRangeSignal);

/* Set and get the Product Type associated with this product. This can be one of the followingvalid strings: “Wafer,” “Die,” “Package,” “Multi-chip Module,” or “Cube.” Others can be addedthrough for future extensibility. */string getProductType ( ) raises (FrameworkErrorSignal);

void setProductType (in string aProductType)

raises (FrameworkErrorSignal,SetValueOutOfRangeSignal);

/* Add a ProcessRun to the Product’s processing history. */void addProcessRunData (in ProcessRunData aProcessRunData)

raises (FrameworkErrorSignal);

144 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Set the Product’s status to the state indicated. */void makeNotAllocated ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeAllocated ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeInProduction ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeTraveling ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeIdle ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeProcessing ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeNotOnHold ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeOnHold ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeFinished ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeProcessingCompleted ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeScrapped ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeShipped ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

/* Returns the position of the Product unit if it is in a PositionalContainer. Raises the exception ifthe Product is not in any PositionalContainer. */long currentPosition ( )

raises (FrameworkErrorSignal,ProductNotInPositionalContainerSignal);

/* Returns the production history of the Product. Production history is defined to be the set of allprocess run events associated with the Product. */HistoryEventSequence getProductionHistory ( ) raises (FrameworkErrorSignal);

/* Get the ProcessOperation associated with this Product. */ProcessOperation getCurrentProcessOperation ( ) raises (FrameworkErrorSignal);

/* Answer whether the status of the Product is that indicated. */boolean isCreated ( ) raises (FrameworkErrorSignal);

boolean isNotAllocated ( ) raises (FrameworkErrorSignal);

boolean isAllocated ( ) raises (FrameworkErrorSignal);

boolean isInProduction ( ) raises (FrameworkErrorSignal);

boolean isTraveling ( ) raises (FrameworkErrorSignal);

boolean isIdle ( ) raises (FrameworkErrorSignal);

boolean isProcessing ( ) raises (FrameworkErrorSignal);

boolean isOnHold ( ) raises (FrameworkErrorSignal);

boolean isNotOnHold ( ) raises (FrameworkErrorSignal);

boolean isFinished ( ) raises (FrameworkErrorSignal);

CIM Framework Interfaces 145

Technology Transfer # 93061697J-ENG SEMATECH

boolean isProcessingCompleted ( ) raises (FrameworkErrorSignal);

boolean isScrapped ( ) raises (FrameworkErrorSignal);

boolean isShipped ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model:

NOTALLOCATED

SHIPPED

PROCESSINGCOMPLETED

PROCESSING

IDLE

TRAVELING

ON HOLD

NOT ONHOLD

SCRAPPED

2

7 8

9 10

12

15

4 5

C 14

3

6

0

11

ALLOCATED1

16

13

INPRODUCTION

CREATED

FINISHED

Figure 41 Product Dynamic Model

146 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Object State Tables:

Table 16 Product State Definition and Query Table

State Definitions Query for State via

Created and Not Allocated The Product is created but not allocated to a Lot. boolean isNotAllocated ( );sent to the instance of Product.

Created and Allocated The Product is created and has beenallocated(assigned) to a Lot. The correspondingLot state will be Created.

boolean isAllocated ( ); sent tothe instance of Product.

InProduction and NotOnHold The Product has been put into manufacturing andis able to go through normal production. TheProduct may exist concurrently in this state and inthe Traveling, Idle, or Processing states. Thecorresponding Lot states must be Released and NotOn Hold, or any of the allowable concurrent states,

boolean isNotOnHold ( ); sentto the instance of Product.

InProduction and OnHold The Product has been put into manufacturing but isunable to go thru normal production due to somekind of problem or restriction. Example ofproblems might be wrong wafer count, badinspection results, or awareness of misprocessingby manufacturing personnel. A restriction mightbe put in place to allow engineering inspection orexperimentation. The Product is removed fromany Dispatching considerations, i.e., it will not beassigned to a ProcessMachineJob or be included ina DispatchDecision. The Product may existconcurrently in this state and in the Traveling, Idle,or Processing states. The corresponding Lot statemay be Released and may be OnHold or any of theallowable concurrent states.

boolean isOnHold ( ); sent tothe instance of Product.

InProduction and Traveling The Product has been put into manufacturing andis traveling from one physical location to another.The Product may exist concurrently in this stateand in either the OnHold or NotOnHold states.The corresponding Lot state may be Released andWaitingToLogin, or Released and LoggedOut, orany of the allowable concurrent states.

boolean isTraveling ( ); sent tothe instance of Product.

InProduction and Idle The Product has been put into manufacturing andis currently not moving or being processed. TheProduct may exist concurrently in this state and ineither the Onhold or NotOnHold. Thecorresponding Lot state may be Released andWaitingToLogin, Released and LoggedOut, or anyof the allowable concurrent states.

boolean isIdle ( ); sent to theinstance of Product

InProduction and Processing The Product has been put into manufacturing andis currently being Processed. The Product mayexist concurrently in this state and in either theOnhold or NotOnHold. The corresponding Lotstate must be Released and Logged In, and any ofthe allowable concurrent states.

boolean isProcessing ( ); sentto the instance of Product.

CIM Framework Interfaces 147

Technology Transfer # 93061697J-ENG SEMATECH

State Definitions Query for State via

Finished and Scrapped The Product has been removed from processingand is no longer considered of Production level.There is no concurrent state. Product may beplaced in the Finished and Scrapped state withoutits Lot being placed in this state. Individualinstances of Product in a Lot may be scrapped,without the whole Lot being scrapped.

boolean isScrapped ( ); sent tothe instance of Product.

Finished andProcessingCompleted

The Product has been through it’s entire Processflow and is considered to be shippable to either acustomer or to another factory for furtherprocessing. The corresponding Lot state isFinished and Completed.

booleanisProcessingCompleted(); sentto the instance of Product.

Shipped The Product has been shipped to either a customeror to another factory for further processing.

boolean isShipped ( ); sent tothe instance of Product.

148 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Table 17 Product State Transition Table

# Current State Triggers New State Action Comment

0 non-existent WafercreateWaferNamed(instring identifier);, DiecreateDieNamed(in stringidentifier);, or PackagecreatePackageNamed(instring identifier);, sent toinstance ofProductManager.

NotAllocated Objects of SpecificProduct type arecreated

extensions fornew Producttypes can beadded

1 NotAllocated Lot createLotUsing ( inProductRequestaProductRequest), LotcreateLotUsing_fromProducts(in ProductRequestaProductRequest, inProductSequenceaProductSequence); or LotcreateLotUsing_withIdentifiers(in ProductRequestaProductRequest, inIdentifierSequenceanIdentifierSequence); sentto ProductManager

Allocated The instance ofProduct isassociated with aninstance of Lot.

The instance ofLot that theProduct isassociated with isnot yet placedinto Productionbut is ready forRelease (readyfor going intoproduction).

2 Created Job requestJob(in JobTypetype, in PropertiesaJobSpecification, inJobRequestoraJobRequestor) sent toFactorySupervisor.

InProduction The instance ofLot that containthis instance ofproduct and theinstance ofProduct are putintomanufacturing.Normal productionis allowed.

Concurrentlytransition threeand six takeplace. ThecorrespondingLot State isReleased andWaitingToLogin.

3 Created Job requestJob(in JobTypetype, in PropertiesaJobSpecification, inJobRequestoraJobRequestor) sent toFactorySupervisor.

InProduction andNotOnHold

The instance ofLot that containthis instance ofproduct and theinstance ofProduct are putintomanufacturing.Normal productionis allowed.

Concurrentlytransition two andsix take place.ThecorrespondingLot State isReleased andWaitingToLogin.

CIM Framework Interfaces 149

Technology Transfer # 93061697J-ENG SEMATECH

# Current State Triggers New State Action Comment

4 InProduction andNotOnHold

void makeOnHold ( ) ; sentto instance of Product orvoid makeOnHold ( ) sentto the instance of Lot

InProduction andOnHold

For the first triggerthe instance ofProduct is put onhold and furtherproduction isprohibited. Forthe second triggerthe instance of theLot that containsthe instance ofProduct is put onhold and thus theinstance ofProduct is alsoplaced on hold.

Business rulesmust decide if theLot is placed onhold with the firsttrigger. Productthat is on Holdwill not beconsidered forany Dispatchdecisions and willnot appear as partof aProcessGroup oras part of aDispatchDecision.

5. InProduction andOnHold

void makeNotOnHold ( ) ;sent to instance of Productor void makeNotOnHold () sent to the instance of Lot

InProduction andNotOnHold

For the first triggerthe instance ofProduct isremoved fromhold and furtherproduction isallowed. For thesecond trigger theinstance of the Lotthat contains theinstance ofProduct isremoved fromhold and thus theinstance ofProduct is alsoremoved fromhold.

Business rulesmust decide if theLot is removedfrom hold withthe first trigger.

6 Created Job requestJob(in JobTypetype, in PropertiesaJobSpecification, inJobRequestoraJobRequestor) sent toFactorySupervisor.

InProduction andIdle

The instance ofLot that containthis instance ofproduct and theinstance ofProduct are putintomanufacturing.Normal productionis allowed, but theProduct iscurrently not beingworked on.

Concurrentlytransition two andthree take place.ThecorrespondingLot State isReleased andWaitingToLogin.

150 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

# Current State Triggers New State Action Comment

7 InProduction andIdle

void makeTraveling sent tothe instance of Product.

InProduction andTraveling

The instance ofProduct is movingfrom one locationto another.

The instance ofLot that containsthis product maybe in either theLoggedOut stateor theWaitingToLoginstate. Productthat is travelingmay be containedin a Transportgroup and mayalso be part of aTransportJob(ifthe materialmovementcomponent issupported)..

8 InProduction andTraveling

void makeIdle sent to theinstance of Product.

InProduction andIdle

The instance ofProduct is inmanufacturing butis not beingworked on. Allmovement isstopped.

The instance ofLot that containsthe instance ofProduct may bein theWaitingToLoginstate or theLoggedOut state.

9 InProduction andIdle

void makeProcessing sentto the instance of Product.

InProduction andProcessing

The instance ofProduct is beingactively worked onby a machine or anoperator.

This trigger mayfollow the start ofProcessMachineJob and allinstances ofProduct in aninstance of Lotmay be placed inthis state at once.

10 InProduction andProcessing

void makeIdle sent to theinstance of Product.

InProduction andIdle

The instance ofProduct is inmanufacturing butis not beingmoved(nottraveling). Allprocessing isstopped.

The instance ofLot that containsthe instance ofProduct may bein theWaitingToLoginstate or theLoggedOut state

CIM Framework Interfaces 151

Technology Transfer # 93061697J-ENG SEMATECH

# Current State Triggers New State Action Comment

11 InProduction andIdle

void makeFinished ( ); sentto instance of Product.

Finished The instance ofProduct isremoved frommanufacturing.

The instance ofProduct willtransit to thescrapped orProcessingComplete statedepending on theconditionsdefined.

12 Finished andScrapped

void makeInProductionsent to the instance ofProduct.

InProduction The instance ofLot that containthis instance ofproduct and theinstance ofProduct are putinto manufacturingProduction isallowed.

Concurrentlytransition threeand six takeplace. ThecorrespondingLot State isReleased andWaitingToLogin.

13 Finished andScrapped

implementation dependent nonexistent Instance ofProduct removedfrom existence.

History of theinstance ofproduct may stillexist.

14 Finished implementation dependent conditional Instance ofProduct enterseither theScrapped State ortheProcessingCompletedState.

The instance ofProduct willtransit to thescrapped orProcessingComplete statedepending on theconditionsdefined.

15 Finished andProcessComplete

void makeShipped ( ) sentto the instance of Product.

Shipped Instance ofProduct movedinto the Shippedstate.

ThecorrespondingLot state may beShipped orEmptied.

16 Shipped implicit nonexistent Instance ofProduct removedfrom existence.

History of theinstance ofproduct may stillexist.

152 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.2.3 Interface: Wafer

Inherited Interface: Product

Description: The Wafer interface represents the principal unit of production in asemiconductor wafer fabrication facility. Instances of this interfaceprovide information concerning the location and progress of Wafers in theFactory.

Exceptions: None.

Published Events: None.

Provided Services:

/* Get the nominal size (diameter) of the Wafer. This measurement will be in millimeters. */long getNominalSize ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Same as the inherited interface Product.

CIM Framework Interfaces 153

Technology Transfer # 93061697J-ENG SEMATECH

4.6.2.4 Interface: Die

Inherited Interface: Product

Description: The Die interface represents a small piece of a semiconductor waferbounded by scribe lines in horizontal and vertical directions that containsthe complete device being manufactured.

Exceptions: None.

Published Events: None.

Provided Services:

/* Set and get the bin (usually an electrical test grading) of this Die. */string getBin ( ) raises (FrameworkErrorSignal);

void setBin (in string bin)

raises (FrameworkErrorSignal,SetValueOutOfRangeSignal);

/* Get the Package that holds the Die. */Package getPackage ( ) raises (FrameworkErrorSignal);

/* Get the Wafer from which the Die came from (or is part of). */Wafer getOriginalWafer ( ) raises (FrameworkErrorSignal);

/* Get the coordinate position of the Die on the Wafer. */Coordinate2D getWaferMapCoordinate ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Same as the inherited interface Product.

154 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.2.5 Interface: Package

Inherited Interface: Product

Description: The Package interface represents the first level packaging of the Die insemiconductor assembly and packaging.

Exceptions:

/* This signal is raised when the specified Package’s Die pad coordinate is already occupied byanother Die. */exception CoordinateOccupiedCannotAddDieSignal {

Coordinate2D occupiedDiePadCoordinate;};

/* This signal is raised when an invalid pad coordinate is specified for the Package. */exception InvalidCoordinateSignal {Coordinate2D invalidCoordinate;};

/* This signal is raised when no Die is found at the specified coordinate of the Package. */exception NoDieAtCoordinateCannotRemoveSignal {

Coordinate2D specifiedCoordinate; };

Published Events: None.

Provided Services:

/* Add a Die at the coordinate on the package as a key-value pair. This is used by the Dieinterface to set its Package location. */void addDie_atCoordinate (in Die aDie, in Coordinate2D dieBondCoordinate)

raises (FrameworkErrorSignal,CoordinateOccupiedCannotAddDieSignal,

InvalidCoordinateSignal);

/* Remove a Die at the coordinate on the Package. Returns the Die removed. */Die removeDie_atCoordinate

(in Coordinate2D dieBondCoordinate)

raises (FrameworkErrorSignal,NoDieAtCoordinateCannotRemoveSignal,

InvalidCoordinateSignal);

/* Returns the sequence of Die within this Package. There is no assumed order or pattern to thesequence returned. Instead, each Die’s coordinate position must be queried for its location withinthe Package. */DieSequence allDie ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Same as inherited interface Product.

CIM Framework Interfaces 155

Technology Transfer # 93061697J-ENG SEMATECH

4.6.2.6 Interface: Lot

Inherited Interface: MaterialGroup

Description: The Lot interface represents a Product aggregate that is common tosemiconductor manufacturing and is traced as the unit of work that movesthough the Factory. It may be temporarily split or grouped with other Lotsbut is usually recombined or split again to assume its original identity. It isgenerally a set of Products released and tracked as a single entity in currentsemiconductor manufacturing facilities.

Exceptions:

/* This exception is raised when the Lot is queried about the state of a split but the Lot has notbeen split. */exception LotHasNotBeenSplitSignal { };

/* This exception is raised when the Lot is queried about its completion time but is not yetcompleted. */exception LotNotYetCompletedSignal { };

/* This signal is raised when there are not enough PositionalContainers available in the Factoryto accommodate the Material in the Lot. */exception InsufficientPositionalContainersForLoadSignal {

long numberOfPositionalContainers;};

/* Raised if the Lot is attempted to be reserved but is already reserved by some other entity. */exception LotIsAlreadyReservedSignal { };

/* Raised if the lot is reserved and a query to find out who reserved the Lot is invoked. */exception LotIsNotReservedSignal { };

/*Raised if the Lot is requested to be unloaded from containers but is not in a container. */exception LotNotInContainerSignal { };

/*Raised when Machines for a Lot requested but the Lot is not at any Machines.*/exception LotNotAtMachineSignal { };

Published Events:

/* This event is posted when a Lot’s state has changed. */LotStateChangedEvent

/* This event is posted when a Lot’s quantity of Product has changed dueto scrap, loss, splits, or joins. */LotQuantityChangedEvent

/* This event is posted when a Lot is placed on reserve by some entity orwhen a reservation is removed. When a Lot is reserved, it should nolonger be considered for dispatching decisions. */LotReservationChangedEvent

156 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* This event is posted when a Lot is moved to a different processFlowfrom its current processFlow. This can occur because a given Lot hasfailed some sort of inspection and will become a downgraded product typeor because a Lot is moved onto a different rework flow. Typically, when aLot is split it is so that part of the Product of the Lot can move onto adifferent flow temporarily and eventually be joined back to the original Lotfor continued processing on the normal flow. */LotProcessFlowChangedEvent

Provided Services:

/* Get the LotFamily of which the receiver is a member. */LotFamily getLotFamily ( ) raises (FrameworkErrorSignal);

/* Get the ProcessFlowContext corresponding to this Lot. */ProcessFlowContext getProcessFlowContext ( ) raises (FrameworkErrorSignal);

/*Get the LotJob corresponding to this Lot. This method is delegated to the Lot’s LotFamily.*/LotJob getLotJob ( );

/* Set the Lot’s state to that indicated. */void makeCreated ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeReleased ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeOnHold ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeNotOnHold ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeFinished ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeCompleted ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeScrapped ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeEmptied ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeShipped ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeWaitingToLogin ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeLoggedIn ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeLoggedOut ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

/* Reserve a lot for a specific entity. */void reserve (in any reservingObject)

raises (FrameworkErrorSignal,LotIsAlreadyReservedSignal);

CIM Framework Interfaces 157

Technology Transfer # 93061697J-ENG SEMATECH

/* The receiver loads a Lot containing Product into the specified MaterialContainers. */

void loadLotIntoMaterialContainer (in MaterialContainerSequence

aMaterialContainerSequence)

raises (FrameworkErrorSignal,

InsufficientPositionalContainersForLoadSignal);

/* The receiver unloads the Product in the Lot from the MaterialContainer occupied. Returns thesequence of MaterialContainer from which the Lot was previously occupied. */MaterialContainerSequence unloadLotFromMaterialContainers ( )

raises (FrameworkErrorSignal);

/* The Products indicated by the first argument are transferred from the receiver to the argumentLot. */void transferProducts_toLot (in ProductSequence sourceProducts,

in Lot destinationLot)

raises (FrameworkErrorSignal);

/* Returns the set of all Machines in which the Lot is currently located. These may or may notcorrespond to MaterialTrackingLocations as not all Product within a Lot is necessarily beingprocessed concurrently within a Machine. */MachineSequence currentMachines ( ) raises (FrameworkErrorSignal);

/* Returns a sequence of Lots that are candidates for a join with the receiver. This interfacebehavior is meant to be customized to the practice of a specific manufacturing facility. Theremay be different rules for determining join candidates between facilities. */LotSequence joinCandidates ( ) raises (FrameworkErrorSignal);

/* Returns all the Lots in the Factory that have descended from this Lot. Note that some of theLots returned may no longer contain Product due to the result of joins. */LotSequence allDescendantLots ( ) raises (FrameworkErrorSignal);

/* Returns all Products that are currently members of this Lot. */ProductSequence allProducts ( ) raises (FrameworkErrorSignal);

/* Once all of the Lot’s Products have gone into the Finished state, this service returns how longthe Completed and Shipped Lot Product members took in the Active and Hold states. If all theLot’s Products have not gone into the Finished state, the service returns a zero duration. */Duration cycleTime ( ) raises (FrameworkErrorSignal);

/* Provide the current yield for this Lot. The calculation for determining yield is implementationdependent. */float currentYield ( ) raises (FrameworkErrorSignal);

/* Returns how long the Lot has been in the Active superstate. Note that the duration returned byage becomes fixed once the Lot enters the Finished state. */Duration age ( ) raises (FrameworkErrorSignal);

/* Answers whether the status of the Lot is that indicated. */boolean isCreated ( ) raises (FrameworkErrorSignal);

boolean isReleased ( ) raises (FrameworkErrorSignal);

boolean isOnHold ( ) raises (FrameworkErrorSignal);

boolean isNotOnHold ( ) raises (FrameworkErrorSignal);

boolean isCompleted ( ) raises (FrameworkErrorSignal);

158 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

boolean isScrapped ( ) raises (FrameworkErrorSignal);

boolean isEmptied ( ) raises (FrameworkErrorSignal);

boolean isShipped ( ) raises (FrameworkErrorSignal);

boolean isFinished ( ) raises (FrameworkErrorSignal);

boolean isWaitingToLogin ( ) raises (FrameworkErrorSignal);

boolean isLoggedIn ( ) raises (FrameworkErrorSignal);

boolean isLoggedOut ( ) raises (FrameworkErrorSignal);

/* Query to see if the Lot is reserved. */boolean isReserved ( ) raises (FrameworkErrorSignal);

/* Query to return which entity reserved the Lot. */any reservedBy ( )

raises (FrameworkErrorSignal,LotIsNotReservedSignal);

/* Returns the PositionalContainers in which the Lot is held. */MaterialContainerSequence materialContainers ( ) raises (FrameworkErrorSignal);

/* Returns the Lot from which the receiver was most recently split. If there have been no splitsfor this Lot, the exception is raised. */Lot mostRecentlySplitFrom ( )

raises (FrameworkErrorSignal,LotHasNotBeenSplitSignal);

/* Returns the time at which the Lot was completed. If the Lot is not yet completed, the exceptionis raised. */TimeStamp actualCompletionTime ( )

raises (FrameworkErrorSignal,LotNotYetCompletedSignal);

/* Returns whether the receiver is the Lot that was originally created and released rather thansplit from another Lot. Note that the Products originally started may no longer be members of theLot when the query is performed. */boolean isOriginalLot ( ) raises (FrameworkErrorSignal);

/* Returns the ProcessGroup (s) of which this Lot is a member. */ProcessGroupSequence processGroups ( ) raises (FrameworkErrorSignal);

/* Answers whether this Lot is a member of the ProcessGroup indicated in the argument. */boolean isMemberOf (in ProcessGroup aProcessGroup) raises (FrameworkErrorSignal);

/* Returns the completion status of the flow of the receiver. */boolean isFlowFinished ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

CIM Framework Interfaces 159

Technology Transfer # 93061697J-ENG SEMATECH

Dynamic Model:

CREATED

SHIPPED

COMPLETED

LOGGEDIN

LOGGEDOUT

WAITINGTO LOGIN

ON HOLD

NOT ONHOLD

SCRAPPED

2

7

9

8

13

15

4 5

C 14

3

6

1

11

EMPTIED

10

12

16

FINISHED

RELEASED

Figure 42 Lot Dynamic Model

160 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Object State Tables:

Table 18 Lot State Definition and Query Table

State Definition Query for State via

Created Instance of Lot has been called into existence. It is not yetreleased and therefore processing cannot take place. Thecorresponding state for the Product contained by the Lot isCreated and Allocated.

boolean isCreated ();sent to instance of Lot.

Released andWaitingToLogin

Instance of Lot has been released(put into production). The Lotis now associated with a LotJob. Processing can take place onceassociated with a ProcessMachineJob. The instance of Lot willalso exist in one of two concurrent states, Released andNotOnHold or Released and OnHold. The corresponding statefor Product contained by the Lot is InProduction and Idle orInProduction and Traveling and any of the allowable concurrentProduct states.

booleanisWaitingToLogin();sent to instance of Lot

Released andLoggedIn

Instance of Lot has been released(put into production). The Lotis now associated with a LotJob. The Lot has been assigned to aProcessMachineJob and a ProcessGroup. It is now associatedwith an Instance of ProcessMachine. The instance of Lot willalso exist in one of two concurrent states, Released andNotOnHold or Released and OnHold. The corresponding statefor Product contained by the Lot is InProduction and Processingand any of the allowable concurrent states.

boolean isLoggedIn();sent to instance of Lot.

Released andLoggedOut

Instance of Lot has been released(put into production). The Lotis now associated with a LotJob. The association to an instanceof Machine has been terminated. The instance of Lot will alsoexist in one of two concurrent states, Released and NotOnHoldor Released and OnHold. The corresponding state for Productcontained by the Lot is InProduction and Idle or InProductionand Traveling and any of the allowable concurrent states.

boolean isLoggedOut ( ); sent to the instance ofLot

Released andNotOnHold

Instance of Lot has been released(put into production). The Lotis now associated with a LotJob. Normal production is allowed.The instance of Lot will also exist in one of three concurrentstates, Released and WaitingToLogin, Released and LoggedIn,or Released and LoggedOut. The corresponding state forProduct contained by the Lot may be InProduction andNotOnHold or InProduction and OnHold(if business rules allowProduct contained within a Lot to be OnHold when the Lot isnot) and any of allowable concurrent states.

boolean isNotOnHold( ); sent to instance ofLot.

Released andOnHold

Instance of Lot has been released(put into production). The Lotis now associated with a LotJob. However normal production isprohibited. The Lot will not be considered forDispatchDecisions. It will not appear as part of a ProcessGroupor in a DispatchDecision. The instance of Lot will also exist inone of three concurrent states, Released and WaitingToLogin,Released and LoggedIn, or Released and LoggedOut. Thecorresponding state for Product contained by the Lot will beInProduction and OnHold.

boolean isOnHold();sent to instance of Lot.

CIM Framework Interfaces 161

Technology Transfer # 93061697J-ENG SEMATECH

State Definition Query for State via

Finished andCompleted

Instance of Lot has completed all processing and will no longerbe associated with ProcessMachineJobs. The correspondingstate for Product contained by the Lot will be Finished andProcessingCompleted.

boolean isCompleted ( );sent to instance of Lot.

Finished and Empty Instance of Lot has had all of its contained Product removedeither through splits, scrap, or from Product being shipped. Thecorresponding state for Product formerly contained by the Lotmay be in any of the defined states for Product.

boolean isEmpty ( ); sentto instance of Lot.

Finished andScrapped

Instance of Lot has been removed from manufacturing due toactual or perceived problems with the contained Product. Thecorresponding state for Product contained by the Lot will beFinished and Scrapped.

boolean isScrapped();sent to instance of Lot.

Shipped Instance of Lot has been shipped to customer or another Factoryfor further processing. The corresponding state for Productcontained by the Lot will be Shipped.

boolean isShipped();sent to instance of Lot.

162 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Table 19 Lot State Transition Table

# Current State Trigger New State Action Comment

1 nonexistent Lot createLotUsing ( inProductRequestaProductRequest), LotcreateLotUsing_fromProducts(inProductRequestaProductRequest, inProductSequenceaProductSequence); orLotcreateLotUsing_withIdentifiers(inProductRequestaProductRequest, inIdentifierSequenceanIdentifierSequence);sent to ProductManager

Created An instance of Lot iscreated and theProductManagerreturns the Lot that iscreated. Product isassociated with theLot. The lot is not yetReleased (placed intomanufacturing).

At this time theinstances of Productthat are beingassociated with theinstance of Lot transitfrom Created andNotAllocated toCreated andAllocated.

2 Created Job requestJob(inJobType type, inPropertiesaJobSpecification, inJobRequestoraJobRequestor) sent toFactorySupervisor.

Released The instance of Lotand the instances ofProduct containedwithin the Lot are putinto manufacturing.Normal production isallowed.

Concurrentlytransitions three andsix take place. ThecorrespondingProduct State isInProduction.

3 Released Job requestJob(inJobType type, inPropertiesaJobSpecification, inJobRequestoraJobRequestor) sent toFactorySupervisor

Released andNotOnHold

The instance of Lotand the instances ofProduct containedwithin the Lot are putinto manufacturing.Normal production isallowed.

Concurrentlytransitions two andsix take place. Theinstance of Lot willexist concurrently inone of the followingstates Released andLoggedIn, Releasedand LoggedOut, orReleased andWaitingToLogin.The correspondingProduct State isInProduction andNotOnHold.

CIM Framework Interfaces 163

Technology Transfer # 93061697J-ENG SEMATECH

# Current State Trigger New State Action Comment

4 Released andNotOnHold

void makeOnHold ( );sent to instance of Lot

Released andOnHold

The instance of Lotand all the instances ofProduct contained inthe Lot are preventedfrom furtherprocessing The Lotwill not be consideredfor any Dispatchdecisions, i.e., it willnot appear in aProcessMachineJoband will not beassociated with aDispatchDecision.

The instance of Lotwill existconcurrently in oneof the followingstates Released andLoggedIn, Releasedand LoggedOut, orReleased andWaitingToLogin.The correspondingProduct state isInProduction andOnHold.

5 Released andOnHold

void makeNotOnHold(); sent to instance ofLot

Released andNotOnHold

Lot can now beconsidered forDispatchDecisions andfurther processing isallowed.

The instance of Lotwill existconcurrently in oneof the followingstates Released andLoggedIn, Releasedand LoggedOut, orReleased andWaitingToLogin.The correspondingProduct state isInProduction andNotOnHold.

6 Created Job requestJob(inJobType type, inPropertiesaJobSpecification, inJobRequestoraJobRequestor) sent toFactorySupervisor.

Released andWaitingToLogin

The instance of Lotand the instances ofProduct containedwithin the Lot are putinto manufacturing.Normal production isallowed.

Concurrentlytransitions two andthree take place. ThecorrespondingProduct State isInProduction andIdle or InProductionand Traveling.

7 Released andLoggedOut

void makeLoggedOut( ); sent to instance ofLot.

Released andWaitingToLogin

The instance of Lotand the instances ofProduct containedwithin the Lot arewaiting to beassoicated with theProcessMachine thatwill perform the nextProcessOperation inthe ProcessFlow.

The instance of Lotwill exist in one ofthe two concurrentstates, Released andOnHold or Releasedand NotOnHold.The correspondingProduct State isInProduction andIdle or InProductionand Traveling.

164 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

# Current State Trigger New State Action Comment

8. Released andWaitingToLogin

void makeLoggedIn();sent to instance of Lot

Released andLoggedIn.

The instance of Lotand the instance ofProduct containedwithin the Lot areassociated with aProcessMachine. Theyare considered at or inthe ProcessMachine.

The instance of Lotwill exist in one ofthe two concurrentstates, Released andOnHold or Releasedand NotOnHold.The correspondingProduct State isInProduction andProcessing orInProduction andIdle(depending onbusiness rules).

9 Released andLoggedIn

void makedLoggedOut(); sent to instance ofLot

Released andLoggedOut

The instance of Lotand the instance ofProduct containedwithin the Lot havetheir association with aProcessMachineterminated.

The instance of Lotwill exist in one ofthe two concurrentstates, Released andOnHold or Releasedand NotOnHold.The correspondingProduct State isInProduction andIdle or InProductionand Traveling.

10 Released andLoggedOut

void makeLoggedIn();sent to instance of Lot.

Released andLoggedIn

The instance of Lotand the instance ofProduct containedwithin the Lot areassociated with aProcessMachine. Theyare considered at or inthe ProcessMachine.

The instance of Lotwill exist in one ofthe two concurrentstates, Released andOnHold or Releasedand NotOnHold.The correspondingProduct State isInProduction andProcessing orInProduction andIdle(depending onbusiness rules).

11 Released andLoggedOut

void makeFinished ( );sent to instance of Lot.

Finished The instance of Lot isremoved frommanufacturing

The instance of Lotwill transit to theScrapped,Completed, orEmptied statedepending on theconditions defined.Transition 14 willoccur concurrently.

CIM Framework Interfaces 165

Technology Transfer # 93061697J-ENG SEMATECH

# Current State Trigger New State Action Comment

12 Finished andScrapped

void makeReleased ( );sent to instance of Lot

Released The instance of Lotand the instances ofProduct containedwithin the Lot are putinto manufacturing.Production is allowed.

Concurrentlytransitions three andsix take place. ThecorrespondingProduct State isInProduction.

13 Finished andScrapped

implementationdependent

nonexistent The instance of Lot isremoved from theMESFactory.

14 Released andLoggedOut

void makeCompleted (); void makeScrapped();or void makeEmptied();sent to instance of Lot

Finished The action that takesplace is conditionalbased on the trigger.For the voidmakeCompletedtrigger, the instance ofLot and all theinstances of Productthat it contains aremoved frommanufacturing. Allchanges to thecycletime stop. TheLot and its Productsare available forshipping to a customeror another factory forfurther processing. Forthe second trigger theinstance of Lot and allof the instances ofProduct that it containsare removed frommanufacturing and areconsidered ineligibleto satisfy anyProductRequests. Forthe last trigger all ofthe instances ofProduct that arecontained by theinstance of Lot areremoved from the lot.The Lot therefore nolonger has Product.

Transition 11 willoccur concurrently.Any instances ofcontained Producthave correspondingstates. If an instanceof Lot becomesempty, the Productthat was contained inthe Lot may be in anyof the definedProduct states.

15 Finished andCompleted

void makeShipped ();sent to the instance ofLot

Shipped The instance of Lot isshipped to a customeror to another factoryfor further processing.

The correspondingProduct state isShipped

166 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

# Current State Trigger New State Action Comment

16 Shipped implementationdependent

nonexistent The instance of Lot isremoved from theMESFactory.

CIM Framework Interfaces 167

Technology Transfer # 93061697J-ENG SEMATECH

4.6.2.7 Interface: LotFamily

Inherited Interface: NamedEntity

Description: This interface is a container for a collection of Lots that are related to eachother by virtue of the fact that each Lot resulted from the splitting andjoining of a parent or original Lot. As representative for the productionlifecycle for a group of Lots, LotFamily will be the root in the archive forthe Lots it has contained over time (even if the lot becomes empty due tojoins or scrap). In the majority of Factories, LotFamily will have theunique Lot identifier that is then differentiated for the split Lots. OneLotFamily is created for every new original Lot. Although considered new,split Lots do not result in the creation of a LotFamily.

Exceptions:

/* This exception is raised if the LotFamily is asked for its start time in the Factory but no lot inthe collection has yet started in production state. */exception NoLotHasYetStartedProductionSignal { };

/* This exception is raised if the LotFamily has Lots that are not yet completed. */exception NotYetCompletedSignal { };

Published Events: None.

Provided Services:

/* Get the product request that the original lot was created to fulfill. */ProductRequest getProductRequest ( ) raises (FrameworkErrorSignal);

/* Set and get the unique identifier for the LotFamily. */string getIdentifier ( ) raises (FrameworkErrorSignal);

void setIdentifier (in string identifier)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Returns Lots that are members of the collection at the time of the query. */LotSequence currentLots ( ) raises (FrameworkErrorSignal);

/* Returns the Lot that was originally started in the Factory. Note that this Lot may be in archive(if all of its Products have been joined into another Lot.). */Lot originalLot ( ) raises (FrameworkErrorSignal);

/*Get the LotJob associated with this LotFamily.*/LotJob getLotJob ( );

/* Returns the time the original Lot in the collection was released for production. */TimeStamp timeStartedInFactory ( )

raises (FrameworkErrorSignal,NoLotHasYetStartedProductionSignal);

/* Returns the due date of the original Lot. */TimeStamp deliveryDateTime ( ) raises (FrameworkErrorSignal);

/* Returns the time at which all Lots in the collection were completed. */TimeStamp actualCompletionTime ( )

raises (FrameworkErrorSignal,NotYetCompletedSignal);

168 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Returns the Product units scrapped for the LotFamily as a whole. Returns a null list if noProduct has been scrapped. */ProductSequence productUnitsScrapped ( ) raises (FrameworkErrorSignal);

/* Returns the start quantity for the original Lot. */long quantityStarted ( ) raises (FrameworkErrorSignal);

/* Returns the archive of the LotFamily in which Lots are stored when they cease independentexistence through a join or are completed. */LotSequence archive ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 169

Technology Transfer # 93061697J-ENG SEMATECH

4.6.2.8 Interface: ProcessGroup

Inherited Interface: MaterialGroup

Description: ProcessGroup represents a Material aggregate used for processing in aProcessResource. Units of Product or parts are known to be in a processtogether when they are members of the same ProcessGroup. TheProcessCapability of the ProcessResource determines the size of theProcessGroup. The life of the ProcessGroup is determined by the timespent at a ProcessResource. Information found within theProductSpecification associated with the ProcessGroup determines whichProcessResource is used. This interface should be considered forcustomization to the practices of a particular factory.

The services and attributes supporting membership in a ProcessGroup areinherited from the inherited interface.

Exceptions:

/* An attempt was made to remove a Lot from the ProcessGroup that doesn’t exist in theProcessGroup. */exception LotNotAssignedSignal {Lot unknownLot;};

exception LotRemovalFailedSignal {Lot aLot;};

Published Events: None.

Provided Services:

/* Get the ProcessJob associated with this ProcessGroup. */ProcessMachineJob getProcessMachineJob ( ) raises (FrameworkErrorSignal);

/* Return the ProcessResource associated with this ProcessGroup. */ProcessResource getProcessResource ( ) raises (FrameworkErrorSignal);

/* Adds a Lot to this ProcessGroup. */void addLot (in Lot aLot) raises (FrameworkErrorSignal);

/* Removes the Lot indicated from the ProcessGroup. Throws the exception if the Lot is not inthe ProcessGroup. */void removeLot (in Lot aLot)

raises (FrameworkErrorSignal,LotRemovalFailedSignal,LotNotAssignedSignal);

/* Return the sequence of Lots that have one or more Products in this ProcessGroup. The order ofthe sequence of the returned value may imply the order of processing. */LotSequence lots ( ) raises (FrameworkErrorSignal);

/* Return the collection of Products in this ProcessGroup. */ProductSequence products ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

Note: A ProcessGroup assumes the lifecycle of its associated ProcessMachineJob.

170 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.3 Durable Management Component

The Durable Management Component provides for representing various types of Durables to beused in the factory. This includes such things as cassettes to transfer wafers (or product), fixtureto place the product in the equipment, and reticles to make circuit patterns on a wafer. ADurableManager provides lifecycle management and coordination of behavior for objectsrepresenting Durables.

TransportGroup represents an aggregate of Material used for transportation in the Factory. Unitsof Product (or parts) are considered to be traveling together when they are members of the sameTransportGroup. If the parts of a TransportGroup are actually moved separately, they appear, tothe remainder of the MES, to move as a unit due to encapsulation by the Material MovementSystem. This interface is intended to be specialized for different movement systems.

The Durable Management Component Informational Model can be found in Figure 43. TheDurable Management Component contains the following interfaces:

• DurableManager

• Durable

• ProcessDurable

• MaterialContainer

• PositionalContainer

• Cassette

• TransportGroup

.

CIM Framework Interfaces 171

Technology Transfer # 93061697J-ENG SEMATECH

has

creates and manages

1+

creates and manages

is used foris used in

holds in

holds at position

holds at slot

is contained in

Material MESFactory ComponentManager MaterialGroup

DurableManager

TransportGroup

Durable

MaterialContainer Material

ProductPositionalContainer

Cassette

ProcessDurable

ProcessCapability ProductSpecification Lot

Wafer

SupportResource

Figure 43 Durable Management Component Information Model

172 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.3.1 Interface: DurableManager

Inherited Interface: ComponentManager

Description: The DurableManager provides services similar to those in theComponentManager but extends and enhances them to be applicable tomanage durables. It includes Durable lifecycle management and tracking.

Exceptions:

/* This signal is raised when a search for a specified Cassette failed. */exception CassetteNotFoundSignal { };

exception CassetteNotAssignedSignal {Cassette aCassette;};

exception CassetteRemovalFailedSignal {Cassette aCassette;};

/* This signal is raised when there are no PositionalContainers available in the Factory. */exception NoPositionalContainerAvailableSignal { };

/* This signal is raised when no ProcessDurables are found. */exception ProcessDurableNotFoundSignal { };

exception ProcessDurableNotAssignedSignal {ProcessDurable aProcessDurable;};

exception ProcessDurableRemovalFailedSignal {ProcessDurable aProcessDurable;};

exception TransportGroupNotAssignedSignal {TransportGroup aTransportGroup;};

exception TransportGroupRemovalFailedSignal {TransportGroup aTransportGroup;};

Published Events:TransportGroupLifecycleEvent

MaterialContainerLifecycleEvent

ProcessDurableLifecycleEvent

Provided Services:

/* Create an instance of TransportGroup, returning that instance. Raise an exception if therequested TransportGroup already exists. */TransportGroup createTransportGroupNamed (in string identifier)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Remove the selected TransportGroup. */void removeTransportGroup (in TransportGroup aTransportGroup)

raises (FrameworkErrorSignal, TransportGroupNotAssignedSignal,

TransportGroupRemovalFailedSignal);

/* Create an instance of a Cassette, returning that instance. Raise the exception if the particularidentifier already exists. */Cassette createCassetteNamed (in string identifier)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Remove an instance of a Cassette. */void removeCassette (in Cassette aCassette)

raises (FrameworkErrorSignal,CassetteRemovalFailedSignal,

CassetteNotAssignedSignal);

CIM Framework Interfaces 173

Technology Transfer # 93061697J-ENG SEMATECH

/* Create an instance of a ProcessDurable, returning that instance. Raise the exception if theparticular identifier already exists. */ProcessDurable createProcessDurableNamed (in string identifier)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Remove an instance of ProcessDurable. */void removeProcessDurable (in ProcessDurable aProcessDurable)

raises (FrameworkErrorSignal, ProcessDurableRemovalFailedSignal,

ProcessDurableNotAssignedSignal);

/* Returns all Cassettes whether they are available for use or actively in use. */CassetteSequence allCassettes ( ) raises (FrameworkErrorSignal);

/* Returns the Cassettes that are available for putting new collections of Product into. */CassetteSequence availableCassettes ( ) raises (FrameworkErrorSignal);

/* Returns a single available Cassette for putting a new collection of Product into. */Cassette findAnAvailableCassette ( )

raises (FrameworkErrorSignal,NoPositionalContainerAvailableSignal);

/* Returns the Cassettes that contain collections of Product. */CassetteSequence activeCassettes ( ) raises (FrameworkErrorSignal);

/* Returns the Cassette with the identifier indicated. */Cassette findCassetteNamed (in string identifier)

raises (FrameworkErrorSignal,CassetteNotFoundSignal);

/* Returns all ProcessDurables being managed in the Factory. */ProcessDurableSequence allProcessDurables ( ) raises (FrameworkErrorSignal);

/* Returns a set of ProcessDurables usable for a specific ProductSpecification. */ProcessDurableSequence processDurablesUsedForProduct

(in ProductSpecification aProductSpecification)

raises (FrameworkErrorSignal,ProcessDurableNotFoundSignal);

/* Returns a set of ProcessDurables usable for a specific ProcessCapability. */ProcessDurableSequence processDurablesUsedInProcess

(in ProcessCapability aProcessCapability)

raises (FrameworkErrorSignal,ProcessDurableNotFoundSignal);

/* Returns a set of Durables to be used for the ProductSpecification and for the specificProcessCapability. */ProcessDurableSequence processDurablesUsed

(in ProductSpecification aProductSpecification,

in ProcessCapability aProcessCapability)

raises (FrameworkErrorSignal,ProcessDurableNotFoundSignal);

Contracted Services: None.

Dynamic Model: Same as for the inherited interface ComponentManager.

174 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.3.2 Interface: Durable

Inherited Interface: Material

Description: The Durable interface represents any Material in the Factory used tofacilitate manufacturing but not normally consumed in the process. It iscapable of relocation within the Factory and requires dynamic tracking.This includes containers used to transport the Material, fixtures(attachments for holding material in a fixed position), and tools (such asreticles, load boards, workholders) used by equipment or personnel in themanufacturing process. Grouping of Durables (such as all reticles that areusable for a given process) can be achieved by creating MaterialGroups forthe specific categorizations required.

Exceptions:

/* Exception raised when attempting to assign the Durable to an invalid machine. */exception InvalidMachineAssignmentSignal { };

/* Raised if the Durable is attempted to be reserved but is already reserved by some otherentity.*/exception DurableIsAlreadyReservedSignal { };

/* Raised if the Durable is reserved. */exception DurableIsNotReservedSignal { };

Published Events:DurableStateChangedEvent

DurableLocationChangedEvent

DurableReservationChangedEvent

Provided Services:

/* Set and get the location of the durable. */MaterialTrackingLocation getMaterialTrackingLocation ( ) raises (FrameworkErrorSignal);

void setMaterialTrackingLocation (in MateriaTrackingLocation aMaterialTrackingLocation)

raises (FrameworkErrorSignal,SetValueOutOfRangeSignal);

/* Set and get the lifetime of the Durable item which is the number of times a Durable item maybe used before it wears out or requires maintenance. */long getTimesUsedLimit ( ) raises (FrameworkErrorSignal);

void setTimesUsedLimit (in long timesUsedLimit)

raises (FrameworkErrorSignal,SetValueOutOfRangeSignal);

/* Set and get the lifetime of the Durable item in terms of time. This is the cumulative time aDurable item may be used before it wears out or requires maintenance. */Duration getDurationLimit ( ) raises (FrameworkErrorSignal);

void setDurationLimit (in Duration aDuration)

raises (FrameworkErrorSignal,SetValueOutOfRangeSignal);

/* Get the date and time the Durable item was commissioned. */TimeStamp getCommissionedTimeStamp ( ) raises (FrameworkErrorSignal);

/* Increments the number of times that the Durable has been used. */void incrementTimesUsed ( ) raises (FrameworkErrorSignal);

CIM Framework Interfaces 175

Technology Transfer # 93061697J-ENG SEMATECH

/* Add a Duration of time just used to the Duration of time that the Durable has been used. */void addDurationUsed (in Duration aDuration) raises (FrameworkErrorSignal);

/* Assign the Durable to a Machine (whether that Machine is a processing machine or a storageunit.). */void assignToMachine (in Machine aMachine)

raises (FrameworkErrorSignal,InvalidMachineAssignmentSignal);

/* Reserve a Durable for a specific entity. */void reserve (in any reservingObject)

raises (FrameworkErrorSignal,DurableIsAlreadyReservedSignal);

/* Set the Durable’s state to that state indicated. */void makeAvailable ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeInUse ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeNotAvailable ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

void makeScrapped ( )

raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

/* Returns the number of times the Durable has been used. */long timesUsed ( ) raises (FrameworkErrorSignal);

/* Returns the Duration of time the Durable has been used. */Duration durationUsed ( ) raises (FrameworkErrorSignal);

/* Returns the duration of time remaining in the lifetime of this Durable. */Duration durationRemaining ( ) raises (FrameworkErrorSignal);

/* Returns whether this Durable has exceeded its known lifetime uses or duration. */boolean isLifetimeExpired ( ) raises (FrameworkErrorSignal);

/* Returns the Machine to which the Durable is assigned. */Machine currentAssignedMachine ( ) raises (FrameworkErrorSignal);

/* Answers whether the state of the Durable is that indicated. */boolean isAvailable ( ) raises (FrameworkErrorSignal);

boolean isNotAvailable ( ) raises (FrameworkErrorSignal);

boolean isInUse ( ) raises (FrameworkErrorSignal);

boolean isScrapped ( ) raises (FrameworkErrorSignal);

/* Query to see if the Durable is reserved. */boolean isReserved ( ) raises (FrameworkErrorSignal);

/* Query to return which entity reserved the Durable. */any reservedBy ( )

raises (FrameworkErrorSignal,DurableIsNotReservedSignal);

Contracted Services: None.

Dynamic Model:

176 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

NOTAVAILABLE

AVAILABLE IN USE

SCRAPPED

1

2

3

4

56 7

Durable

Figure 44 Durable Dynamic Model

CIM Framework Interfaces 177

Technology Transfer # 93061697J-ENG SEMATECH

4.6.3.3 Interface: ProcessDurable

Inherited Interface: Durable

Description: The ProcessDurable interface represents a specialized Durable usedspecifically in the processing of a ProcessMachineJob on aProcessResource. It may include things like reticles and burn-in boards. Itis tied into ProcessSpecifications as they indicate which ProcessDurable(or group of ProcessDurables) is required for a given operation within theprocess.

Exceptions: None.

Published Events: None.

Provided Services:

/* Get and set the ProductSpecifications where this ProcessDurable is used. */ProductSpecificationSequence getUsedForProduct ( ) raises (FrameworkErrorSignal);

void setUsedForProduct

(in ProductSpecificationSequence aProductSpecificationSequence)

raises (FrameworkErrorSignal,SetValueOutOfRangeSignal);

/* Get and set the ProcessCapabilities for which this ProcessDurable is used. */ProcessCapabilitySequence getUsedInProcess ( ) raises (FrameworkErrorSignal);

void setUsedInProcess

(in ProcessCapabilitySequence aProcessCapabilitiesSequence)

raises (FrameworkErrorSignal,SetValueOutOfRangeSignal);

Contracted Services: None.

Dynamic Model: Same as the inherited interface Durable.

178 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.3.4 Interface: MaterialContainer

Inherited Interface: Durable

Description: A MaterialContainer interface represents any receptacle for holdingMaterial for transport, processing or storage. Examples ofMaterialContainers are shipping boxes, tubes, standard mechanicalinterface (SMIF) pods, etc. Some MaterialContainers can be specialized asPositionalContainers that have reference positions to hold the material inthe unit.

Exceptions:

/* Material can not be removed from the container. */exception MaterialRemovalFailedSignal {Material aMaterial;};

exception MaterialNotAssignedSignal {Material aMaterial;};

/* MaterialContainer is full and cannot receive more material. */exception MaterialContainerFullSignal { };

/* MaterialContainer is empty and cannot, therefore, access Material within it. */exception MaterialContainerEmptySignal { };

Published Events: None.

Provided Services:

/* Get the number of units the MaterialContainer can hold. */long getCapacity ( ) raises (FrameworkErrorSignal);

/* Get the interface or type of Material the MaterialContainer can hold (e.g., reticle). */string getContents ( ) raises (FrameworkErrorSignal);

/* Configure the capacity and type of the material the MaterialContainer can hold. */void configureContainer (in long capacity, in string contents)

raises (FrameworkErrorSignal);

/* Adds Material to the MaterialContainer. The exception is raised when an attempt is made toadd Material to an already full MaterialContainer and not when an addition of Material causesthe MaterialContainer to become full. */void addMaterial (in Material aMaterial)

raises (FrameworkErrorSignal,MaterialContainerFullSignal);

/* Removes a specific Material from the MaterialContainer. Raises the exception if the Materialis not found in the MaterialContainer or due to an empty MaterialContainer. */void removeMaterial (in Material aMaterial)

raises (FrameworkErrorSignal,MaterialNotAssignedSignal,

MaterialRemovalFailedSignal);

/* Removes all the Material from the MaterialContainer. Returns an unordered sequence of theMaterial unloaded. Raises the exception if the method is called upon an emptyMaterialContainer. Specializations of this interface may override this method to unload andreturn the Material in specific order. */MaterialSequence unloadMaterialAll ( )

raises (FrameworkErrorSignal,MaterialContainerEmptySignal);

CIM Framework Interfaces 179

Technology Transfer # 93061697J-ENG SEMATECH

/* Returns an unordered sequence of the Material contained. Specializations of this interface mayoverride this method to return the contained Material in specific orders. */MaterialSequence containedMaterial ( ) raises (FrameworkErrorSignal);

/* Returns true if the MaterialContainer is empty. */boolean isEmpty ( ) raises (FrameworkErrorSignal);

/* Returns the TransportGroup (s) of which this MaterialContainer is a member. */TransportGroupSequence transportGroups ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Same as inherited interface Durable.

180 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.3.5 Interface: PositionalContainer

Inherited Interface: MaterialContainer

Description: The PositionalContainer is a specialization of MaterialContainer that canhold Material at specific locations. Specializations of this interface wouldbe made for specific industries. For example, the semiconductor industryincludes the Cassette as a specialization of PositionalContainer.

Exceptions:

/* The position is invalid for this PositionalContainer. */exception PositionInvalidSignal {long positionNumber; };

/* The position is already occupied by some Material. */exception PositionOccupiedSignal {long positionNumber;};

/* The position is unoccupied. */exception PositionEmptySignal {long positionNumber;};

Published Events: None.

Provided Services:

/* Get the total number of positions available in this PositionalContainer. */long getNumberOfPositions ( ) raises (FrameworkErrorSignal);

/* Get the individual positions. */PositionSequence getPositions ( ) raises (FrameworkErrorSignal);

/* Get the nominal dimension of the Material that the PositionalContainer was designed to holdat any position. */long getNominalSize ( ) raises (FrameworkErrorSignal);

/* Adds Material to a specific position number. Raises the exceptions if the position is invalid forthis PositionalContainer or if the position is already occupied. */void addMaterialAtPosition (in Material aMaterial, in long positionNumber)

raises (FrameworkErrorSignal,PositionInvalidSignal, PositionOccupiedSignal);

/* Removes Material from a specific position number. Returns the Material removed. Raises theexceptions for either invalid position or unoccupied position in the PositionalContainer. If thePositionalContainer is empty, the exception raised is still the unoccupied position exception andnot the empty container exception. */Material removeMaterialFromPosition (in long positionNumber)

raises (FrameworkErrorSignal,PositionInvalidSignal, PositionEmptySignal);

/* Returns a sequence of longs representing the positions in the PositionalContainer that areempty. There is no assumed order to the sequence of positions returned. A null sequence returnedindicates that there are no empty positions. */PositionSequence emptyPositions ( ) raises (FrameworkErrorSignal);

/* Returns the Material in the lowest-numbered position in the PositionalContainer. */Material firstMaterial ( )

raises (FrameworkErrorSignal,MaterialContainerEmptySignal);

/* Returns the Material at the specified position. */

CIM Framework Interfaces 181

Technology Transfer # 93061697J-ENG SEMATECH

Material contentsOfPosition (in long position)

raises (FrameworkErrorSignal,PositionInvalidSignal, PositionEmptySignal);

/* Removes all Material. Returns the sequence of Material unloaded in the order of positionnumber. Note that this method is an override of a method in the inherited interface. */// MaterialOrderedSequence unloadMaterialAll ( )

// raises (FrameworkErrorSignal,MaterialContainerEmptySignal);

Contracted Services: None.

Dynamic Model: Same as inherited interface MaterialContainer.

182 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.3.6 Interface: Cassette

Inherited Interface: PositionalContainer

Description: The Cassette interface represents containers used to hold and transportWafers that are specific to semiconductor manufacturing. Typically,Cassettes contain multiple identifiable slots or pockets. Each slot cancontain a single Wafer. The Cassette has features to accommodateautomated material handling and to ensure proper alignment when loading.

Exceptions:

/* Nominal wafer diameter size is not valid for this Cassette. */exception WaferSizeInvalidSignal {Wafer exceptionWafer;};

/* The specified Wafer wasn’t found in this Cassette. */exception WaferNotFoundSignal {Wafer exceptionWafer;};

/* The specifed position is currently holding material.*/exception PositionOccupiedSignal {Position exceptionPositons;};

/* The specifed position does not exist or cannot hold the material type specified. */exception PositionInvalidSignal {Position exceptionPosition;};

/* This exception is raised when the position specifed in remove does not contain any wafers. */exception PositionEmptySignal {Position exceptionPosition;};

exception MaterialContainerFullSignal

{MaterialContainer exceptionMaterialContainer;};

Published Events: None.

Provided Services:

/* Verify that the Wafer size is the correct size for the Cassette and then add it at the specific slotif not occupied. */void addWafer_atPosition (in Wafer aWafer,in long positionNumber)

raises (FrameworkErrorSignal,PositionInvalidSignal, WaferSizeInvalidSignal,

PositionOccupiedSignal);

/* Removes the Wafer from the specified slot. */Wafer removeWaferFromPosition (in long positionNumber)

raises (FrameworkErrorSignal,PositionInvalidSignal, PositionEmptySignal);

/* The Wafers indicated by the first argument are transferred from this Cassette to the targetCassette. */void transferWafers_toCassette (in WaferSequence sourceWafers,

in Cassette destinationCassette)

raises (FrameworkErrorSignal,MaterialContainerFullSignal,

WaferSizeInvalidSignal);

/* Returns a sequence of all Lots in the Cassette. */LotSequence allLots ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Same as the inherited interface PositionalContainer.

CIM Framework Interfaces 183

Technology Transfer # 93061697J-ENG SEMATECH

4.6.3.7 Interface: TransportGroup

Inherited Interface: MaterialGroup

Description: The TransportGroup interface represents a Material aggregation used fortransportation in the Factory. Units of Product or parts are considered to betraveling together when they are members of the same TransportGroup. Ifthe parts of a TransportGroup are actually moved separately, they appearto move as a unit due to encapsulation by the Material Movement System.This interface is intended to be specialized for different movementsystems.

The services and attributes supporting membership are inherited from theinherited interface MaterialGroup.

The services and attributes supporting membership are inherited fromsuperinterface MaterialGroup.

Exceptions:

/* An attempt was made to remove a MaterialContainer from the transport group, but thatMaterialContainer was not assigned to the TransportGroup. */exception MaterialContainerNotAssignedSignal {

MaterialContainer unknownMaterialContainer;};

exception MaterialContainerRemovalFailedSignal {

MaterialContainer aMaterialContainer;};

/* An attempt was made to add a MaterialContainer to this TransportGroup and thatMaterialContainer is invalid for this TransportGroup for some reason such as it is not a positionalcontainer or the nominal product size is incorrect. */exception InvalidMaterialContainerSignal { };

Published Events: None.

Provided Services:

/* Get and set the TransportJob associated with this TransportGroup. */TransportJob getTransportJob ( ) raises (FrameworkErrorSignal);

void setTransportJob (in TransportJob aTransportJob)

raises (FrameworkErrorSignal,SetValueOutOfRangeSignal);

/* Adds the argument MaterialContainer to the collection of MaterialContainers comprising thisTransportGroup. Raises the exception if the MaterialContainer is invalid for this type ofTransportGroup. */void addMaterialContainer (in MaterialContainer aMaterialContainer)

raises (FrameworkErrorSignal,InvalidMaterialContainerSignal);

/* Removes the MaterialContainer indicated from the TransportGroup. Raises the exception ifthe MaterialContainer is not assigned to this Transport Group. */void removeMaterialContainer (in MaterialContainer aMaterialContainer)

raises (FrameworkErrorSignal,MaterialContainerNotAssignedSignal,

MaterialContainerRemovalFailedSignal);

184 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Answer the set of all MaterialContainers comprising this TransportGroup. */MaterialContainerSequence allMaterialContainers ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None. A TransportGroup assumes the lifecycle of its associatedTransportJob.

CIM Framework Interfaces 185

Technology Transfer # 93061697J-ENG SEMATECH

4.6.4 Consumable Management Component

The Consumable Management Component provides representations of various types ofConsumables to be used in the Factory for processing Product. This can include such Materialsas Chemicals, Gases, Wire, or Glue. A ConsumableManager provides lifecycle management andcoordination of behavior for objects representing Consumables.

It is expected that this component would interface closely with an enterprise system capable ofdetecting low quantities and reordering supplies for the manufacturing environment.

The Consumable Management Component, shown in Figure 45, is composed of the followinginterfaces:

• ConsumableManager

• Consumable

ComponentManager

MESFactory

has a

Consumable Manager

Consumable

Material

Figure 45 Consumable Management Component Information Model

186 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.4.1 Interface: ConsumableManager

Inherited Interface: ComponentManager

Description: The ConsumableManager provides services similar to those in theComponentManager but extends and enhances them to be applicable to theConsumable management tracking and lifecycle. Note that Consumablesdo not have a dynamic model with lifecycle states such as active, notavailable, scrapped, etc.

Exceptions:

/* This signal is raised when a search for a specified Consumable has failed. */exception ConsumableNotFoundSignal { };

exception ConsumableNotAssignedSignal { };

exception ConsumableRemovalFailedSignal { };

Published Events:ConsumableLifecycleEvent

Provided Services:

/* Create an instance of a Consumable with an initial quantity. Raise an exception if therequested Consumable already exists. */Consumable createConsumable (in string identifier,

in long numberOfUnits, in Unit typeOfUnit)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Remove the specified Consumable. */void removeConsumable (in Consumable aConsumable)

raises (FrameworkErrorSignal,ConsumableRemovalFailedSignal,

ConsumableNotAssignedSignal);

/* Return all Consumables in the scope of this ConsumableManager. */ConsumableSequence allConsumables ( ) raises (FrameworkErrorSignal);

/* Return the specific Consumable. */Consumable findConsumableNamed (in string identifier)

raises (FrameworkErrorSignal,ConsumableNotFoundSignal);

/* Returns Consumables to be used for the specified ProcessResource. */ConsumableSequence consumablesUsedBy (in ProcessResource aProcessResource)

raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Same as for the inherited interface ComponentManager.

CIM Framework Interfaces 187

Technology Transfer # 93061697J-ENG SEMATECH

4.6.4.2 Interface: Consumable

Inherited Interface: Material

Description: The Consumable interface provides for the representation of any Materialin the Factory that is consumed or expended in producing the product.This includes any gases, liquids or solids going into the production processand any byproducts of the process.

Exceptions:

/* This exception is raised if the Consumable is asked to decrement its total quantity by morethan the amount remaining in its storage. */exception NotEnoughConsumableSignal { };

Published Events:ConsumableStateChangedEvent

ConsumableQuantityChangedEvent

Provided Services:

/* Get the type of the unit. */Unit getUnit ( ) raises (FrameworkErrorSignal);

/* Get the number of units. */long getNumberOfUnits ( ) raises (FrameworkErrorSignal);

/* Get the ProcessResources where this Consumable is used. */ProcessResourceSequence processResources ( ) raises (FrameworkErrorSignal);

/* Increments this Consumable by the number of units indicated by the argument. If thisConsumable was formerly in the NotAvailable state and this incremented quantity is now makingthe Consumable available for production use, the Consumable state must also be changed toAvailable. */void incrementQuantityBy (in long numberOfUnits) raises (FrameworkErrorSignal);

/* Decrements this Consumable by the number of units indicated by the argument. The exceptionis raised if there is not enough quantity remaining to decrement the amount requested. Theamount is not decremented from the remaining amount. If this decrement lowers the quantity to alevel that makes this Consumable unavailable for production, the Consumable’s state must bechanged appropriately. */void decrementQuantityBy (in long numberOfUnits)

raises (FrameworkErrorSignal,NotEnoughConsumableSignal);

/* Set the consumable’s state to that indicated. */void makeNotAvailable ( ) raises (FrameworkErrorSignal);

void makeAvailable ( ) raises (FrameworkErrorSignal);

/* Answers whether the state of the consumable is that indicated. */boolean isNotAvailable ( ) raises (FrameworkErrorSignal);

boolean isAvailable ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

188 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.5 Inventory Region Management Component

The intent of this component is to monitor material progress through, and the current populationof, conceptual locations in the factory. The framework term for the conceptual location is theinventory region. An inventory region can be entered and exited by products and groups ofproducts. The inventory region can monitor a segment of a processing flow, a set of shelves, agroup of machines, an area on the factory floor, etc. A conceptual location is defined by the typeof locations being tracked and is best explained by examples.

Example 1: Inventory region monitoring a segment of a process flowDue to the large number of steps in the process flow of a semiconductor wafer, manymanagers want a higher level view of where the wafers are in the flow. To do this,processing steps are grouped together and all wafers at a step in that group are viewed asbeing in that group. Managers then monitor the amount of inventory at each group of stepsto check production progress.

Example 2: Inventory region monitoring a set of processing equipmentA supervisor is in charge of a set of processing equipment. This supervisor wants to knowhow much product is queued for his area, how much is currently being processed and howmuch processing has been done today. Here the equipment is grouped together and allwafers queued or at those machines are viewed as being in that group. Each supervisor cannow monitor the total amount of inventory at their set of machines and the amount ofmaterial that was processed.

An inventory region consists of two main items, something which represents a location theproduct enters and exits (a step, a group of steps, a machine or a group of machines) and theproducts. In general, when a product is in an inventory region, it is considered work in process(WIP) for the factory. An inventory region has products enter it and exit it. Each inventory regioncan produce both current and historical statistics related to product population and movements.

The examples above also point out that there may be a need for multiple systems of inventoryregions in a factory. Each individual system consists of unique groupings of items which arerelated to the product. These are the inventory region systems. Inventory region systems havesome special properties;

• A product may only be in a single inventory region within a given system

• An inventory region system must include 100% of the locations which the system covers

Both of these properties are to ensure uniform tracking of WIP with the removal of doublecounting and non-reportable locations.

Example 3: Multiple inventory region systemsThe system Factory Floor Areas and the system Processing Flow Regions could bothcontain Lot100. The lot could be at the Tungsten Deposition Step in the Metal-1inventory region for the Processing Flow Regions system and at the Sputter20 machine inthe Metal inventory region for the Factory Floor Areas system.

CIM Framework Interfaces 189

Technology Transfer # 93061697J-ENG SEMATECH

The Inventory Region Management Component provides for monitoring material progress andlocation at the factory level. An InventoryRegionManager provides for the definition ofInventoryRegionSystems, which contain InventoryRegions. Each InventoryRegion can thenmonitor the movement (or lack of movement) of its part of the particular system that it iscontained in. InventoryRegions record a history of their entries and exits to provide monitoringand statistics using the InventoryRegionHistory, InventoryRegionEvent, andInventoryRegionEventData. An InventoryRegion may be updated directly or a RegionSensor canprovide an indirect link from the monitored location to the InventoryRegion. The LotRegion is aspecialization of InventoryRegion which monitors lots, understands that there is material in thelots, and provides scrap and yield information.

Figure 46 contains the Inventory Region Management Component Informational Model.

This component contains the following interfaces:

• InventoryRegionManager

• InventoryRegionSystem

• InventoryRegion

• LotRegion

• RegionSensor

Movement can be thought of as the entry, residence in the region, and exit of the product beingmonitored.

190 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

InventoryRegion

Manager

InventoryRegionSystem

RegionSensor

InventoryRegion

LotRegion

History Material

Lot

has

has

notifies

manages

InventoryRegion

Management

creates

isassociated

with

is associatedwith

Figure 46 Inventory Region Manager Component Information Model

CIM Framework Interfaces 191

Technology Transfer # 93061697J-ENG SEMATECH

4.6.5.1 Interface: InventoryRegionManager

Inherited Interface: ComponentManager

Description: The InventoryRegionManager provides services similar to those in itsinherited interface but extends and enhances them to be responsible forcreating and maintaining systems of inventory regions. It is alsoresponsible for the creation of sensors for inventory regions.

Exceptions:

/* Signals an attempt to find an InventoryRegionSystem was unsuccessful. */exception InventoryRegionSystemNotFoundSignal { };

exception InventoryRegionSystemNotAssignedSignal { };

exception InventoryRegionSystemRemovalFailedSignal{ };

exception RegionSensorNotAssignedSignal {RegionSensor aRegionSensor;};

exception RegionSensorRemovalFailedSignal {RegionSensor aRegionSensor;};

Published Events: None.

Provided Services:

/* Create a new InventoryRegionSystem and return it to the sender. The new system isautomatically added to the manager. If the name is a duplicate raise an exception. */InventoryRegionSystem createInventoryRegionSystemNamed (in string identifier)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Remove a current InventoryRegionSystem from the InventoryRegionManager. */void removeInventoryRegionSystem (in InventoryRegionSystem anInventoryRegionSystem)

raises (FrameworkErrorSignal,InventoryRegionSystemRemovalFailedSignal,

InventoryRegionSystemNotAssignedSignal);

/* Create a new RegionSensor and return it to the sender. */RegionSensor createRegionSensor ( ) raises (FrameworkErrorSignal);

/* Remove a current RegionSensor. */void removeRegionSensor (in RegionSensor aRegionSensor)

raises (FrameworkErrorSignal,RegionSensorRemovalFailedSignal,

RegionSensorNotAssignedSignal);

/* Answer the systems that have been defined for this manager. If there are no systems thesequence will be empty. */InventoryRegionSystemSequence allInventoryRegionSystems ( )

raises (FrameworkErrorSignal);

/* Answer the names of the systems that have been defined for this manager. If there are nosystems the sequence will be empty. */InventoryRegionSystemNameSequence allInventoryRegionSystemNames ( )

raises (FrameworkErrorSignal);

/* Answer the regions for this manager regardless of system. If there are no systems or regions indefined systems, the sequence will be empty. */InventoryRegionSequence allInventoryRegions ( ) raises (FrameworkErrorSignal);

/* Answer the system with the input name or raise an exception. */InventoryRegionSystem findSystemNamed (in string identifier)

raises (FrameworkErrorSignal,InventoryRegionSystemNotFoundSignal);

192 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 193

Technology Transfer # 93061697J-ENG SEMATECH

4.6.5.2 Interface: InventoryRegionSystem

Inherited Interface: NamedEntity

Description: An InventoryRegionSystem is a collection of InventoryRegions thattogether provide complete coverage for the material of interest over aselected set of things. The things may be physical, machines in the factory;or logical, segments of a process flow. Regardless of the choice of thing toobtain complete coverage means material being monitored will appearexactly once within the system; i.e., in only one and at least one of theInventory Regions in the system. Each InventoryRegionSystem alsomaintains a user-defined order that may be used for reporting.

An example of this a system usage would be a system of LotRegionsmeasuring lot progress on a process flow. Alternatively, a system ofInventoryRegions may be attached to machines and storage units in thefactory for physical tracking of material. Another system could be made upof InventoryRegions that serves to monitor Kanban inventory levels. EachInventoryRegionSystem provides a different view of material in thefactory based on the thing the system covers.

Exceptions:

/* Signals an attempt to remove an InventoryRegion that is currently being used. */exception InventoryRegionRemovalFailedSignal { };

/* Signals an attempt to find an InventoryRegion was unsuccessful. */exception InventoryRegionNotFoundSignal { };

/* Signals an attempt to find a preceding InventoryRegion was unsuccessful. */exception InventoryRegionPrecedingNotFoundSignal { };

Published Events: None.Provided Services:

/* Set and get the unique identifier for this system. */string getIdentifier ( ) raises (FrameworkErrorSignal);

void setIdentifier (in string identifier)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Answer the default user defined sequence of regions for this system. */InventoryRegionSequence getDefaultInventoryRegionSequence ( )

raises (FrameworkErrorSignal);

/* Create a new, named InventoryRegion and return it to the sender. The new region isautomatically added to the system. If the name is a duplicate raise an exception. */InventoryRegion createInventoryRegionNamed (in string identifier)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

194 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Create a new, named InventoryRegion and return it to the sender. The new region isautomatically added to the system and positioned after the requested region in the defaultsequence. If the name is a duplicate raise an exception. If the preceding region cannot be found,raise an exception. */InventoryRegion createInventoryRegionNamed_withDescription_afterInventoryRegion

(in string identifier, in string aDescription,

in InventoryRegion anInventoryRegion)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal,

InventoryRegionPrecedingNotFoundSignal);

/* Change the name of the InventoryRegion. Domain name uniqueness is defined within thesystem. */InventoryRegion changeNameForInventoryRegion_to

(inout InventoryRegion anInventoryRegion, in string identifier)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Remove a current InventoryRegion from the InventoryRegionSystem. If the region is beingused (attached to monitor a location) or has population, raise an exception. */void removeInventoryRegion (in InventoryRegion anInventoryRegion)

raises (FrameworkErrorSignal,InventoryRegionRemovalFailedSignal);

/* Move the region to a new position in the default sequence based on which InventoryRegionprecedes the region being moved. If the preceding region is not found, raise an exception. */void moveInventoryRegion_afterInventoryRegion

(in InventoryRegion anInventoryRegion,

in InventoryRegion precedingInventoryRegion)

raises (FrameworkErrorSignal,InventoryRegionPrecedingNotFoundSignal);

/* Answer the regions that have been defined for this system. If there are no regions the sequencewill be empty. */InventoryRegionSequence allInventoryRegions ( )

raises (FrameworkErrorSignal);

/* Answer the names of the regions that have been defined for this system. If there are no regionsthe sequence will be empty. */InventoryRegionNameSequence allInventoryRegionNames ( )

raises (FrameworkErrorSignal);

/* Answer the region with the input name or raise an exception. */InventoryRegion findInventoryRegionNamed (in string identifier)

raises (FrameworkErrorSignal,InventoryRegionNotFoundSignal);

Dynamic Model: None.

CIM Framework Interfaces 195

Technology Transfer # 93061697J-ENG SEMATECH

4.6.5.3 Interface: InventoryRegion

Inherited Interface: OwnedEntity

Description: An InventoryRegion is a conceptual location in the factory that monitorsentry and exit from the location. It has the following characteristics:

1. It can monitor locations that have a clearly defined entry and exit.

2. It records entry and exit of some unit of WIP (lots, product units, etc.).

3. It retains history of entries and exits.

4. It provides statistics to summarize portions of its history.

An InventoryRegion can be attached to the manufacturing flow, to amachine or storage unit, or to some other construct. Some way to detectentry and exit must be available.

InventoryRegions provide statistics based on standard queuing theorymodels.

The concepts abnormal entry and abnormal exit provide for separatingsome entries and exits for statistical purposes. An example of this is thetransfer of material from one step on the flow to another. This results in anabnormal exit from the current InventoryRegion and an abnormal entry tothe InventoryRegion receiving the material.

Exceptions:

/* Signals an attempt to use an invalid time period (e.g., startTime > endTime). */exception TimePeriodInvalidSignal { };

exception HistoryEventNotFoundSignal { };

Published Events: None.

Provided Services:

/* Set and get the unique identifier for this system. */string getIdentifier ( ) raises (FrameworkErrorSignal);

/* Change and answer the description of this InventoryRegion. */void setDescription (in string aDescription) raises (FrameworkErrorSignal);

string getDescription ( ) raises (FrameworkErrorSignal);

/* Answer the history of this InventoryRegion. Set method does not have a public interface. */// HistoryEventSequence getHistoryEvents ( )

// raises (FrameworkErrorSignal);

// removed since interface is an inherited interface

/* Record and update that an abnormal entry happened for this InventoryRegion. */void abnormalEnter (in Material aMaterial) raises (FrameworkErrorSignal);

/* Record and update that an abnormal exit happened for this InventoryRegion. */void abnormalExit (in Material aMaterial) raises (FrameworkErrorSignal);

/* Record and update that an entry happened for this InventoryRegion. */void enter (in Material aMaterial) raises (FrameworkErrorSignal);

196 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Add a new amount of non-cycle time to the Material in the InventoryRegion.*/Duration addNonCycleTime (in Material aMaterial, in Duration aDuration);

/* Record and update that an exit happened for this InventoryRegion. */void exit (in Material aMaterial) raises (FrameworkErrorSignal);

/* Reset the day to date statistics for this InventoryRegion. */void resetDayToDateStatistics ( ) raises (FrameworkErrorSignal);

/* Reset the month to date statistics for this InventoryRegion. */void resetMonthToDateStatistics ( ) raises (FrameworkErrorSignal);

/* Reset the year to date statistics for this InventoryRegion. */void resetYearToDateStatistics ( ) raises (FrameworkErrorSignal);

/* Answer the current items that are considered to be at this InventoryRegion. */MaterialSequence currentPopulation ( ) raises (FrameworkErrorSignal);

/* Answer if the material is considered to be at this InventoryRegion. */boolean includes (in Material aMaterial) raises (FrameworkErrorSignal);

/* Answer if this was a normal enter for this material.*/boolean isNormalEnterForMaterial (in Material aMaterial)

raises (FrameworkErrorSignal);

/* Answer if this InventoryRegion is empty. */boolean isEmpty ( ) raises (FrameworkErrorSignal);

/* Answer the current items which were considered to be at this InventoryRegion at this specifictime. */MaterialSequence populationAt (in TimeStamp aTimeStamp)

raises (FrameworkErrorSignal);

/* Answer the average population over a specified time period. Since this measure is based on thetime period given, the units for this measure change based on this time period. Example: If thetime stamps represent the start and stop of a shift, the average population is for that shift. If thetime stamps represent the start and stop of the day, the average population is for that day. */float averagePopulation (in TimeWindow timePeriod)

raises (FrameworkErrorSignal,TimePeriodInvalidSignal);

/* Answer the throughput based on the number of exits over a specified time period. It isimplementation-dependent on the selection of normal exits, abnormal exits or both. Since thismeasure is based on the time period given, the units for this measure change based on this timeperiod. Example: If time stamp represent the start and stop of a shift, the throughput is for thatshift. If time stamp represent the start and stop of a day, the throughput is for that day. */long throughput (in TimeWindow timePeriod)

raises (FrameworkErrorSignal,TimePeriodInvalidSignal);

/* Answer a set of lots that had entered by startTime and had not exited by endTime (i.e., are stillin the InventoryRegion). */MaterialSequence population (in TimeWindow timePeriod)

raises (FrameworkErrorSignal,TimePeriodInvalidSignal);

CIM Framework Interfaces 197

Technology Transfer # 93061697J-ENG SEMATECH

/* Answer the collection of material that entered the region between startTime and endTime. Ifno material entered, an empty collection is returned. If the time stamps represent the start andstop of a shift, the entries are for that shift. If the time stamps represent the start and stop of theday, the entries are for that day. */MaterialSequence entries (in TimeWindow timePeriod)

raises (FrameworkErrorSignal,TimePeriodInvalidSignal);

/* Answer the collection of material that exited the region between startTime and endTime. If nomaterial exited, an empty collection is returned. If the time stamps represent the start and stop ofa shift, the exits are for that shift. If the time stamps represent the start and stop of the day, theexits are for that day. */MaterialSequence exits (in TimeWindow timePeriod)

raises (FrameworkErrorSignal,TimePeriodInvalidSignal);

/* Answer the average cycle time for a specified time period. The average cycle time will becalculated for material exiting the region during the time period regardless of the enter time.Cycle time will be expressed in hours per material. For example: a single material in theInventoryRegion for 5 hours would have a cycle time of 5 hours, which averages to 5 hours sincethere is only one material. If a second material has a cycle time of 3 hours, the average cycle timeis now 4 hours ( (5+3)/2 = 4 hours). */float averageCycleTime (in TimeWindow timePeriod)

raises (FrameworkErrorSignal,TimePeriodInvalidSignal);

/* Answer the average day-to-date age of material for this InventoryRegion. Age is defined as thetotal amount of time each material spent in this InventoryRegion, (exitTime – enterTime). */Duration dtdAverageAge ( ) raises (FrameworkErrorSignal);

/* Answer the average day-to-date cycle time of material for this InventoryRegion. Cycle time isdefined: (Age – (non-cycle time)). If a system does not track non-cycle time, then Cycle = Age.*/Duration dtdAverageCycleTime ( ) raises (FrameworkErrorSignal);

/* Answer the average day-to-date non-cycle time of material for this InventoryRegion. Non-cycle time is implementation specific but represents time that should not be considered intracking the material. */Duration dtdAverageNonCycleTime ( ) raises (FrameworkErrorSignal);

/* Answer the average month-to-date age of material for this InventoryRegion. */Duration mtdAverageAge ( ) raises (FrameworkErrorSignal);

/* Answer the average month-to-date cycle time of material for this InventoryRegion. */Duration mtdAverageCycleTime ( ) raises (FrameworkErrorSignal);

/* Answer the average month-to-date non-cycle time of material for this InventoryRegion. */Duration mtdAverageNonCycleTime ( ) raises (FrameworkErrorSignal);

/* Answer the average year-to-date age of material for this InventoryRegion. */Duration ytdAverageAge ( ) raises (FrameworkErrorSignal);

/* Answer the average year-to-date cycle time of material for this InventoryRegion. */Duration ytdAverageCycleTime ( ) raises (FrameworkErrorSignal);

198 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Answer the average year-to-date non-cycle time of material for this InventoryRegion. */Duration ytdAverageNonCycleTime ( ) raises (FrameworkErrorSignal);

/* Answer the last Material enter for this InventoryRegion. */Material lastMaterialEntered ( ) raises (FrameworkErrorSignal);

/* Answer the last Material exit for this InventoryRegion. */Material lastMaterialExited ( ) raises (FrameworkErrorSignal);

/* Return the history events for this InventoryRegion for a specific Material. */HistoryEventSequence getHistoryEventsForMaterial

(in Material aMaterial) raises (FrameworkErrorSignal);

/* Return the last exit history event for a specific Material.*/HistoryEvent lastExitEventForMaterial (in Material aMaterial)

raises (FrameworkErrorSignal,HistoryEventNotFoundSignal);

/* Answer the amount of time that this Material contributes to the time period below. If the entertime is before the time period and the exit time is after the time period the duration is the entiretime period. If the exit is before the time period or the enter is after the time period, a duration ofzero is returned. This is the basis for statistical calculations. If the time period is invalid, raisean exception.*/Duration timeContribution (in Material aMaterial, in TimeWindow timePeriod)

raises (FrameworkErrorSignal,TimePeriodInvalidSignal);

/* Get the enter time for this InventoryRegion HistoryEvent.*/TimeStamp getEnterTime (in HistoryEvent aHistoryEvent)

raises (FrameworkErrorSignal);

TimeStamp getExitTime (in HistoryEvent aHistoryEvent)

raises (FrameworkErrorSignal);

/* Answer if this was a normal enter for this InventoryRegion HistoryEvent.*/boolean isNormalEnter (in HistoryEvent aHistoryEvent)

raises (FrameworkErrorSignal);

/* Answer if this was a normal exit for this InventoryRegion HistoryEvent.*/boolean isNormalExit (in HistoryEvent aHistoryEvent)

raises (FrameworkErrorSignal);

/* Answer if the non-cycle time for this InventoryRegion HistoryEvent. */Duration getNonCycleTime (in HistoryEvent aHistoryEvent)

raises (FrameworkErrorSignal);

/* Answer the age of the Material in the InventoryRegion as a time duration. Age is defined by 1) If the exit has happened, exitTime - enterTime.

2) If the exit has not happened, now - enterTime.

The age for material that has exited will apply to the most recent visit of the material to theInventoryRegion.*/Duration age(in Material aMaterial) raises (FrameworkErrorSignal);

/* Get the exit time for this InventoryRegion HistoryEvent.*/

CIM Framework Interfaces 199

Technology Transfer # 93061697J-ENG SEMATECH

/* Answer the cycle time of the Material in the InventoryRegion as a time duration. Non-cycletime is subtracted from the duration. Cycle time is defined by; 1) if the exit has happened,exitTime - enterTime - nonCycleTime; 2) if the exit has not happened, now - enterTime -nonCycleTime. The cycleTime for material that has exited will apply to the most recent visit ofthe material to the InventoryRegion.*/Duration cycleTime (in Material aMaterial) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

200 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.5.4 Interface: LotRegion

Inherited Interface: InventoryRegion

Description: A LotRegion is an InventoryRegion specialized to be attached to aprocessing flow. It can handle the entry and exit of lots based on themovement of the lot from step to step. It understands that lots are made upof products so it can provide information about changes to the number ofproducts a lot has while it is in that LotRegion. It has statistics for scraploss, abnormal entry and exit, and other events particular to monitoring asegment of a processing flow.

Normal entry into a LotRegion occurs when a lot enters the first step onthe segment being monitored by completing the last step on the priorsegment. It also occurs when a lot starts at the first step of a processingflow. All other entries are categorized as abnormal.

Normal exit occurs when a lot exits by completing the last step on thesegment being monitored. All other exits are categorized as abnormal.

Since the LotRegion is monitoring lots and the product is traversing asegment of the processing flow, lot movement is interpreted as productmovement by this specialized InventoryRegion.

LotRegions extend the InventoryRegion statistics to include the concept ofyield for a region which takes into account scrap loss between entry andexit of the region.

Exceptions:

/* Signals an attempt to use an invalid time period (e.g., startTime > endTime). */exception TimePeriodInvalidSignal { };

/* Signals an attempt to retrieve exit information when the material has not yet exited. */exception MaterialNotExitedSignal { };

exception HistoryEventNotFoundSignal { };

exception LotNotFoundSignal { };

Published Events: None.

Provided Services:

/* Answer the average day-to-date yield for this LotRegion. The startTime is the start of day forthe factory and the endTime is the time of the query. Yield = passed material / total materialwhere total material = passed + scrapped material. */float dtdAverageYield ( ) raises (FrameworkErrorSignal);

/* Answer the day-to-date number of lots for this LotRegion. This is a count of lots entering thepopulation from the start of day until the time of the query. */unsigned long dtdLotsExistingQuantity ( ) raises (FrameworkErrorSignal);

/* Answer the day-to-date amount of material passed for this LotRegion. Passed material is non-scrapped material at the time of exit. */unsigned long dtdPassedQuantity ( ) raises (FrameworkErrorSignal);

CIM Framework Interfaces 201

Technology Transfer # 93061697J-ENG SEMATECH

/* Answer the day-to-date amount of material scrapped for this LotRegion. */unsigned long dtdScrappedQuantity ( ) raises (FrameworkErrorSignal);

/* Answer the average month-to-date yield for this LotRegion. */float mtdAverageYield ( ) raises (FrameworkErrorSignal);

/* Answer the number of lots for this LotRegion from the start of month until the time of thequery. */unsigned long mtdLotsExistingQuantity ( ) raises (FrameworkErrorSignal);

/* Answer the month-to-date amount of material passed for this LotRegion. */unsigned long mtdPassedQuantity ( ) raises (FrameworkErrorSignal);

/* Answer the month-to-date amount of material scrapped for this LotRegion. */unsigned long mtdScrappedQuantity ( ) raises (FrameworkErrorSignal);

/* Answer the average year-to-date yield for this LotRegion. */float ytdAverageYield ( ) raises (FrameworkErrorSignal);

/* Answer the number of lots for this LotRegion from the start of month until the time of thequery. */unsigned long ytdLotsExistingQuantity ( ) raises (FrameworkErrorSignal);

/* Answer the year-to-date amount of material passed for this LotRegion. */unsigned long ytdPassedQuantity ( ) raises (FrameworkErrorSignal);

/* Answer the year-to-date amount of material scrapped for this LotRegion. */unsigned long ytdScrappedQuantity ( ) raises (FrameworkErrorSignal);

/* Answer the yield for a specified time period. The yield will be calculated for lots exiting theregion during the time period, regardless of the enter time. If the time stamps represent the startand stop of a shift, the yield is for that shift. If the time stamps represent the start and stop of theday, the yield is for that day. */float yield (in TimeWindow timePeriod)

raises (FrameworkErrorSignal,TimePeriodInvalidSignal);

/* Record and update that an abnormal entry happened for this LotRegion. */void abnormalLotEnter (in Lot aLot) raises (FrameworkErrorSignal);

/* Record and update that an abnormal exit happened for this LotRegion. */void abnormalLotExit (in Lot aLot) raises (FrameworkErrorSignal);

/* Record and update that an entry happened for this LotRegion. */void lotEnter (in Lot aLot) raises (FrameworkErrorSignal);

/* Record and update that an exit happened for this LotRegion. */void lotExit (in Lot aLot) raises (FrameworkErrorSignal);

/* The following operations provide historical information. */

/* Answer the quantity (for example: number of wafer) that were contained in the lot when itentered the region for this event. */unsigned long getEnterQuantity (in HistoryEvent aHistoryEvent)

raises (FrameworkErrorSignal);

202 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Answer the quantity (for example: number of wafer) that were contained in the lot when itexited the region for this event. */unsigned long getExitQuantity (in HistoryEvent aHistoryEvent)

raises (FrameworkErrorSignal);

/* Answer the original enter quantity for this event. */unsigned long getOriginalEnterQuantity (in HistoryEvent aHistoryEvent)

raises (FrameworkErrorSignal);

/*Answer if the lot has moved from this ProcessOperation during the time period. If the timeperiod is invalid raise an exception. */boolean lotMovedFromOperation (in Lot aLot,

in ProcessOperation ProcessOperation, in TimeWindow timePeriod)

raises (FrameworkErrorSignal,TimePeriodInvalidSignal);

/* Answer the normal quantity exited for this Lot. If the lot has not exited, raise an exception.*/unsigned long normalQuantityExited (in Lot aLot)

raises (FrameworkErrorSignal,MaterialNotExitedSignal);

/* Answer the sequence of ProcessOperations that have been completed for the lot of this eventduring this time period. If the time period is invalid raise an exception. */ProcessOperationSequence operationsUsed (in Lot aLot,

in TimeWindow timePeriod)

raises (FrameworkErrorSignal,TimePeriodInvalidSignal);

/* Answer the number of product moves that happened during the time period. This is based onthe number of operations completed and the amount of product processed at each operation. Ifthe time period is incorrect (startTime > endTime) raise an exception. */unsigned long quantityOfProductMoves(in TimeWindow timePeriod)

raises (FrameworkErrorSignal,TimePeriodInvalidSignal);

/* Answer the number of product moves that happened during the time period for this specificProcessOperation. If the operation does not exist, the answer is zero. If the time period isincorrect(startTime > endTime) raise an exception. */unsigned long quantityOfProductMoves_forOperationNamed (in TimeWindow timePeriod,

in string processOperationName)

raises (FrameworkErrorSignal,TimePeriodInvalidSignal);

/* Answer the number of product scrapped during this timeperiod.*/unsigned long quantityScrapped (in TimeWindow timePeriod)

raises (FrameworkErrorSignal,TimePeriodInvalidSignal);

/*Return the last Lot that entered the region. */Lot lastLotEnter ( )

raises (FrameworkErrorSignal,LotNotFoundSignal);

/*Return the last Lot that exited the region. */Lot lastLotExit ( )

raises (FrameworkErrorSignal,LotNotFoundSignal);

/* Get the last enter history event for the Lot. */HistoryEvent lastEnterEventForLot (in Lot aLot)

raises (FrameworkErrorSignal,HistoryEventNotFoundSignal);

CIM Framework Interfaces 203

Technology Transfer # 93061697J-ENG SEMATECH

/* Get the last exit history event for the Lot. */HistoryEvent lastExitEventForLot (in Lot aLot)

raises (FrameworkErrorSignal,HistoryEventNotFoundSignal);

/*Get all history events for the Lot with respect to this region. */HistoryEventSequence getHistoryEventsForLot (in Lot aLot)

raises (FrameworkErrorSignal,HistoryEventNotFoundSignal);

Contracted Services: None.

Dynamic Model: None.

204 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.5.5 Interface: RegionSensor

Inherited Interface: OwnedEntity

Description: The RegionSensor provides an indirect means of hooking up a thing(machine, area, step, etc.) to InventoryRegions in severalInventoryRegionSystems. The location of interest (thing) has a sensorwhich is notified on entry or exit of material. The sensor notifiesInventoryRegions, in different InventoryRegionSystems, interested inthese movements.

While the sensor provides an unobtrusive way of notifyingInventoryRegions, any object in the framework which uses them must beable to find its own specific sensor and know when to send the enter andexit messages.

For example: a CIM system could have a step in a flow(ProcessOperation) holding onto RegionSensorXYZ. Every time a lot ismoved to that step, the step does RegionSensorXYZ enter (the lot) theInventoryRegion registered with RegionSensorXYZ by doingRegionSensorXYZ notifyOnEntry (theInventoryRegion). NowRegionSensorXYZ will the notify this registered InventoryRegion on eachentry.

Exceptions:

/* Signals an attempt to re-register an InventoryRegion with the RegionSensor. */exception DuplicateRegistrationSignal { };

Published Events: None.

Provided Services:

/* Set and get the unique identifier for this system. */string getIdentifier ( ) raises (FrameworkErrorSignal);

void setIdentifier (in string identifier)

raises (FrameworkErrorSignal, DuplicateIdentifierSignal);

/* Register an InventoryRegion with this sensor for notification of entries. */void notifyOnEntry (in InventoryRegion anInventoryRegion)

raises (FrameworkErrorSignal, DuplicateRegistrationSignal);

/* Register an InventoryRegion with this sensor for notification of exits. */void notifyOnExit (in InventoryRegion anInventoryRegion)

raises (FrameworkErrorSignal, DuplicateRegistrationSignal);

/* Notify the sensor that an abnormal entry happened for this sensor which will in turn notifyinterestedInEntry registrants. */void abnormalEnter (in Material aMaterial) raises (FrameworkErrorSignal);

/* Notify the sensor that an abnormal exit happened for this sensor which will in turn notifyinterestedInExit registrants. */void abnormalExit (in Material aMaterial) raises (FrameworkErrorSignal);

CIM Framework Interfaces 205

Technology Transfer # 93061697J-ENG SEMATECH

/* Notify the sensor that an entry happened for this sensor which will in turn notifyinterestedInEntry registrants. */void enter (in Material aMaterial) raises (FrameworkErrorSignal);

/* Note the sensor that an exit happened for this sensor which will in turn notify interestedInExitregistrants. */void exit (in Material aMaterial) raises (FrameworkErrorSignal);

/* Answer which InventoryRegions have registered an interest in entries with this sensor. */RegisteredEntitiesSequence interestedInEntry ( ) raises (FrameworkErrorSignal);

/* Answer which InventoryRegions have registered an interest in exits with this sensor. */RegisteredEntitiesSequence interestedInExit ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

206 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.6 Bill of Material Specification Component

This component is used to define the specification of a Bill of Material (BOM) and uses theDocument Management component to provide the means for managing the many BOMspecifications that are present in the factory. Once a BOM specification has been created it isthen link to product specifications that uses the BOM.

The Bill of Material Specification Component Information Model can be seen in Figure 47. TheBill of Material Specification Component includes the following interfaces:

• BOMSpecificationManager

• BOMSpecification

• BOMBody

MESFactory

ComponentManager

BOMSpecification Manager

BOMSpecification

Product BOMBody

DocumentRevision

has

tells how to

create

contains

creates and manages

provides

versioncontrol

Figure 47 Bill of Material Specification Component Information Model

CIM Framework Interfaces 207

Technology Transfer # 93061697J-ENG SEMATECH

4.6.6.1 Interface: BOMSpecificationManager

Inherited Interface: ComponentManager

Description: The BOMSpecificationManager is responsible for creating and managingthe Bill of Material specifications (maintains a collection) used by theproducts in the factory.

Exceptions:

/* This signal is raised when a BOMSpecification retrieval operation fails. */exception BOMSpecificationNotFoundSignal {

string identifier;};

exception BOMSpecificationRemovalFailedSignal {

string identifier;};

Published Events:BOMSpecificationLifecycleEvent

Provided Services:

/* Creates a BOMSpecification, places it by identifier and priority in the collection ofBOMSpecifications and sets the pointer to its Document. Priority indicates the main BOM andalternative BOMs for a ProductSpecification (Priority of 0 means that it is a main BOM. */BOMSpecification createBOMSpecificationNamed_inDocument

(in string identifier, in DocumentSpecification aDocumentSpecification,

in ProductSpecification aProductSpecification, in long Priority)

raises (FrameworkErrorSignal, DuplicateIdentifierSignal);

/* Remove and delete a BOMSpecification. */void removeBOMSpecification

(in BOMSpecification aBOMSpecification)

raises (FrameworkErrorSignal,

BOMSpecificationRemovalFailedSignal);

/* Returns a set of all of the BOMSpecifications for a ProductSpecification. Sequence is sortedby priority. */BOMSpecificationSequence allBOMSpecifications_forProduct

(in ProductSpecification aProductSpecification)

raises (FrameworkErrorSignal);

/* Returns a set of all of the BOMSpecifications that are managed by the BOMSpecificationManager. */BOMSpecificationSequence allBOMSpecifications ( ) raises (FrameworkErrorSignal);

/* Finds a BOMSpecification. */BOMSpecification findBOMSpecificationNamed (in string identifier)

raises (FrameworkErrorSignal, BOMSpecificationNotFoundSignal);

Contracted Services: None.

Dynamic Model: None.

208 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.6.2 Interface: BOMSpecification

Inherited Interface: NamedEntity

Description: The BOMSpecification interface is responsible for the specification of Billof Material. Instances of this interface contain a single-level of BOMinformation for a product. This interface has a collection of child parts anda required quantity that are required for a product. Usually the main BOMand alternate BOMs are required for a complete product specification.

Exceptions:

/* This signal is raised when an attempt is made to create a BOMBody with a child product thatis used by an existing BOMBody. Returns the existing BOMBody. */exception DuplicateBOMBodySignal {BOMBody aBOMBody;};

Published Events: None.

Provided Services:

/* Get the ProductSpecification that uses this BOMSpecification. */ProductSpecification getParentProductSpecification ( )

raises (FrameworkErrorSignal);

/* Get the priority associated with the BOMSpecification. */long getPriority ( ) raises (FrameworkErrorSignal);

/* Get the DocumentRevision associated with the BOMSpecification. */DocumentRevision getDocumentRevision ( ) raises (FrameworkErrorSignal);

/* Set and get the unique identifier for the BOMSpecification. */string getIdentifier ( ) raises (FrameworkErrorSignal);

void setIdentifier (in string identifier)

raises (FrameworkErrorSignal, DuplicateIdentifierSignal);

/* Create and add a BOMBody into the collection of BOMBod (ies) for thisBOMSpecification.*/BOMBody createBOMBody (in ProductSpecification childProduct)

raises (FrameworkErrorSignal, DuplicateBOMBodySignal);

/* Remove and delete a BOMBody from the collection of BOMBod (ies) for thisBOMSpecification. */void removeBOMBody (in BOMBody aBOMBody) raises (FrameworkErrorSignal);

/* Return all BOMBod (ies) of this BOMSpecification. */BOMBodySequence allBOMBodies ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 209

Technology Transfer # 93061697J-ENG SEMATECH

4.6.6.3 Interface: BOMBody

Inherited Interface: NamedEntity

Description: The BOMBody interface is the body of the Bill of Material. Instances ofthis interface represent one record of single-level of BOM information fora product.

Exceptions: None.

Published Events: None.

Provided Services:

/* Get the child product. */ProductSpecification getChildProductSpecification ( ) raises (FrameworkErrorSignal);

/* Set and get the unit of child parts (Wafer, Die, etc.) */Unit getChildPartsUnit ( ) raises (FrameworkErrorSignal);

void setChildPartsUnit (in Unit childPartsUnit)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

/* Set and get the required quantity of child parts. */float getRequiredQuantity ( ) raises (FrameworkErrorSignal);

void setRequiredQuantity (in float requiredQuantity)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

Contracted Services: None.

Dynamic Model: None.

210 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.7 Product Specification Management Component

This component provides the list of ProductSpecifications available for use in creating a Lot. Aswith the Process Specification Management Component, it will provide a full life cycle definition(i.e., create, edit, etc.) for the specifications in a later release of the framework.

ProductSpecificationManagementComponent

ProductSpecification

ManagerProcess

FlowContext

ProductSpecification

ProcessFlow

Iterator

v manages

ProductRequest

DocumentRevision

LotJob

< trackedwith

< navigatedwith

managedin >

< adheres to

requests build of >

Figure 48 Product Specification Management Component Information Model

The information model shows the relationship between the component’s interfaces and otherinterfaces external to the component. The principal entry point to the component is theProductSpecificationManager. It shows that a ProductRequest has a ProductSpecification fordefinition of a Lot. The Lot can then use the ProductSpecification from the ProductRequest tocreate its ProcessFlowContext.

CIM Framework Interfaces 211

Technology Transfer # 93061697J-ENG SEMATECH

4.6.7.1 Interface: ProductSpecificationManager

Inherited Interface: ComponentManager

Description: The ProductSpecificationManager is responsible for creating andmanaging the product specifications (maintains a collection) used by theproducts in the factory.

Exceptions:

/* This signal is raised when a ProductSpecification retrieval operation fails. */exception ProductSpecificationNotFoundSignal {

string productSpecificationName;};

Published Events: None.

Provided Services:

/* Returns a set of all of the ProductSpecifications that are managed by theProductSpecificationManager. */ProductSpecificationSequence allProductSpecifications ( )

raises (FrameworkErrorSignal);

/* Finds a ProductSpecification. */ProductSpecification findProductSpecificationNamed

(in string productSpecificationName)

raises (FrameworkErrorSignal,ProductSpecificationNotFoundSignal);

Contracted Services: None.

Dynamic Model: None.

212 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.6.7.2 Interface: ProductSpecification

Inherited Interface: NamedEntity

Description: The ProductSpecification interface is used to create process lots andproducts. It is needed by the ProductRequest to produce the desiredproduct.

Exceptions: None.

Published Events: None.

Provided Services:

/* Set and get the unique identifier. */string getIdentifier ( ) raises (FrameworkErrorSignal);

void setIdentifier (in string identifier)

raises (FrameworkErrorSignal, DuplicateIdentifierSignal);

/* Used to create a ProcessFlowContext. */ProcessFlowContext createProcessFlowContext ( ) raises (FrameworkErrorSignal);

/* Used to create a ProcessFlowIterator. */ProcessFlowIterator createProcessFlowIterator ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 213

Technology Transfer # 93061697J-ENG SEMATECH

4.7 Process Specification Management Group

The components that make up this group provide an architecture for the management and use ofCIM system process specifications. These components allow for use and manipulation within thefactory of online specifications of processes. These components support the generation ofmachine-independent (effects-level) process specifications that are machine readable. Thecomponents support specification management either in a paper or a paperless operation.

The Process Specification Management group includes the following components:

• Process Specification Management – provides interfaces for traversing a sequence ofProcess Operation Specifications and the tracking the current Process Operation for a lot.

• Process Capability Management – provides the means for generically describing whatprocess operations ProcessResources are capable of performing.

This specification does not provide the components and interfaces needed to define processspecifications. It is meant to provide the limited interfaces necessary to support the use of thepre-defined process specifications within a factory. These interfaces provide only the processspecification functionality required by the other components of the CIM Framework.

The process specification definition interfaces were part of the CIM Framework through the 1.4revision as the Process Definition Management Component. They were removed from thespecification in the 1.5 revision with the expectation that they would be revised and reintroducedfor 2.0. However, in the subsequent deliberations of the Process Specification Focus Team, thedecision was reached to defer specification of the definitional aspects of process specificationsdue to apparent competitive advantage concerns of a majority of the participants.

ProcessSpecification

ProductSpecification

Lot

LotJob

ProcessResource

ProcessSpecificationManagement

uses

tracksprogress with

tracksprogress of

definesprocess for

ProcessCapability

can beperformed by

uses

Figure 49 Process Specification Management Component Relationships

214 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.7.1 Process Specification Management Component

This component provides the interface to process specifications that have already been defined.This includes the steps (ProcessOperationSpecifications) a lot or product will follow, a lot orproduct’s location in a ProcessOperationSpecification sequence, and the step specificinformation (e.g., recipe and durables).

ProcessSpecificationManagementComponentProcess

SpecificationManager

ProcessFlow

Context

ProcessFlow

Iterator

ProcessOperation

Specification

ProcessOperation

LotJob

LotProduct

Specification

ProcessResource

ProcessCapability

has current

navigates flow with

manages

tracksprogress with

tracksprogress of

has current

template for

manages

uses

uses

uses

uses

Figure 50 Process Specification Management Component Information Model

The relationship among components:

• ProcessOperationSpecification and ProcessOperation

A ProcessOperationSpecification is used by the ProcessFlowContext to create theProcessOperation. The ProcessOperationSpecification contains some static information thatis needed for scheduling and planning. It also has information that cannot be determined untilthe ProcessFlowContext reaches the ProcessOperationSpecification and produces aProcessOperation. Currently, this information is not specified in the framework.

CIM Framework Interfaces 215

Technology Transfer # 93061697J-ENG SEMATECH

• ProcessFlowContext and ProcessFlowIterator

A ProcessFlowIterator is used to navigate along the ProcessOperationSpecifications. Itmaintains a current location in the ProcessOperationSpecification sequence and allowsnavigation forwards or backwards from a given location until it reaches the beginning or end.The ProcessFlowIterator offers visibility to alternative ProcessOperationSpecifications toallow navigation through different paths. The ProcessFlowContext is similar to theProcessFlowIterator except that it adds the ability to produce a ProcessOperation from aProcessOperationSpecification.

The Process Specification Management information model shows relationships between theinterfaces in the component as well as affected interfaces from other components. In particular,this model shows the following:

• A LotJob has a ProcessFlowContext to maintain the current location in theProcessOperationSpecification sequence.

• The ProcessSpecificationManager creates the ProcessFlowContext for a specific lot using theProductSpecification.

• A ProcessOperation is derived from a ProcessOperationSpecification.

• ProcessOperationSpecification and ProcessOperation both reference a collection ofProcessResources capable of performing the specified operation.

• A ProcessFlowContext can be used to create a ProcessFlowIterator where the currentProcessOperationSpecification in the ProcessFlowContext is the current location in the newlycreated ProcessFlowIterator.

• A ProductSpecification can also be used to create a ProcessFlowIterator where its startinglocation is the first ProcessOperationSpecification for the ProductSpecification.

216 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.7.1.1 Interface: ProcessSpecificationManager

Inherited Interface: ComponentManager

Description: The ProcessSpecificationManager provides services similar to theComponentManager, but extends and enhances them to be applicable toProcessFlowIterator and ProcessFlowContext lifecycle management.

Exceptions:exception ProcessFlowIteratorNotAssignedSignal { };

exception ProcessFlowContextNotAssignedSignal { };

exception ProcessFlowContextRemovalFailedSignal { };

exception ProcessFlowIteratorRemovalFailedSignal { };

exception DuplicateProcessFlowContextSignal{ };

Published Events: None.

Provided Services:

/* Create a ProcessFlowContext based on the Lot provided as an argument. This operationreturns the ProcessFlowContext with the currentProcessOperation initialized to return the firstProcessOperation in the flow. */ProcessFlowContext createProcessFlowContext (in Lot aLot)

raises (FrameworkErrorSignal, DuplicateProcessFlowContextSignal);

/* Create a ProcessFlowIterator based on the ProductSpecification provided as an argument.This operation returns with the currentProcessOperationSpecification initialized to return the firstProcessOperationSpecification in the flow. */ProcessFlowIterator createProcessFlowIteratorFromProductSpecification

(in ProductSpecification aProductSpecification)

raises (FrameworkErrorSignal);

/* Create a ProcessFlowIterator based on the ProcessFlowContext provided as an argument. Thisoperation returns a ProcessFlowIterator with the currentProcessOperationSpecification initializedto return the ProcessOperationSpecification corresponding to the currentProcessOperation of theProcessFlowContext.*/ProcessFlowIterator createProcessFlowIteratorFromProcessFlowContext

(in ProcessFlowContext aProcessFlowContext)

raises (FrameworkErrorSignal);

/* Delete a ProcessFlowIterator.*/void removeProcessFlowIterator (in ProcessFlowIterator aProcessFlowIterator)

raises (FrameworkErrorSignal, ProcessFlowIteratorNotAssignedSignal,

ProcessFlowIteratorRemovalFailedSignal);

/* Delete a ProcessFlowContext.*/void removeProcessFlowContext (in ProcessFlowContext aProcessFlowContext)

raises (FrameworkErrorSignal, ProcessFlowContextNotAssignedSignal,

ProcessFlowContextRemovalFailedSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 217

Technology Transfer # 93061697J-ENG SEMATECH

4.7.1.2 Interface: ProcessFlowIterator

Inherited Interface: NamedEntity

Description: This interface is used for the sole purpose of moving up and down on theprocess flow. It maintains a current position and provides operations tomove forward and backward through the flow. This hides the structuraldetails of ProcessOperationSpecification navigation from othercomponents. When an iterator is created, it will either point to the firstProcessOperationSpecification or to a specificProcessOperationSpecification based on the current pointer in theProcessFlowContext. Movement of the ProcessFlowIterator eitherproceeds along the default path or is controlled explicitly throughProcessOperationSpecification choices based on alternatives exposed bythe iterator. Backward movement follows the actualProcessOperationSpecifications traversed during the process flow’s historywhen the ProcessFlowIterator is based on a ProcessFlowContext.Backward movement will follow the most recently visitedProcessOperationSpecification path when the ProcessFlowIterator is basedon a ProductSpecification.

Exceptions:

/* This exception is raised when there are no more ProcessOperationSpecifications in theProcessFlowContext to process.*/exception NoMoreProcessOperationSpecificationsSignal { };

exception InvalidProcessOperationSpecificationMovementSignal { };

Published Events: None.

Provided Services:

/* Set and get the unique identifier. */string getIdentifier ( )

raises (FrameworkErrorSignal);

void setIdentifier (in string identifier)

raises (FrameworkErrorSignal, DuplicateIdentifierSignal);

/* Returns the ProcessOperationSpecification that is the next in the default traversal of the flow.If there are no more ProcessOperationSpecifications, raise the exceptionNoMoreProcessOperationSpecificationsSignal. */ProcessOperationSpecification getNextProcessOperationSpecificationOnDefaultPath ()

raises (FrameworkErrorSignal, NoMoreProcessOperationSpecificationsSignal);

/* Returns the ProcessOperationSpecification that is the previous in the backward traversal of theflow. The operation will return the ProcessOperationSpecification previously visited or the priorinstance along the default path. If there are no more ProcessOperationSpecifications, raise theexception NoMoreProcessOperationSpecificationsSignal. */ProcessOperationSpecification getPreviousProcessOperationSpecification ()

raises (FrameworkErrorSignal, NoMoreProcessOperationSpecificationsSignal);

218 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Returns a sequence of the ProcessOperationSpecifications that are next in the forward traversalof the flow. If there are no alternatives the default ProcessOperationSpecification will bereturned in a sequence of one. The order of the returned ProcessOperationSpecifications is notsignificant. If there are no more ProcessOperationSpecifications, raise the exceptionNoMoreProcessOperationSpecificationsSignal. */ProcessOperationSpecificationSequence

getAlternativeProcessOperationSpecifications ()

raises (FrameworkErrorSignal,

NoMoreProcessOperationSpecificationsSignal);

/* Updates the current ProcessOperationSpecification to the next defaultProcessOperationSpecification in the flow. If there are no more ProcessOperationSpecifications,raise the exception, but keep the pointer at the last known ProcessOperationSpecification. */void moveToNextProcessOperationSpecificationOnDefaultPath ( )

raises (FrameworkErrorSignal, NoMoreProcessOperationSpecificationsSignal);

/* Updates the current ProcessOperationSpecification to the previousProcessOperationSpecification visited in the flow. If there are no moreProcessOperationSpecifications, raise the exception, but keep the pointer at the last knownProcessOperationSpecification. */void moveToPreviousProcessOperationSpecification ( )

raises (FrameworkErrorSignal, NoMoreProcessOperationSpecificationsSignal);

/* Updates the current ProcessOperationSpecification to the ProcessOperationSpecificationprovided as an argument. If the target ProcessOperationSpecification is not reachable from thecurrentProcessOperationSpecification, raise the exceptionInvalidProcessOperationSpecificationMovementSignal. */void moveToProcessOperationSpecification

(in ProcessOperationSpecification aProcessOperationSpecification)

raises (FrameworkErrorSignal,

InvalidProcessOperationSpecificationMovementSignal);

/* Returns the current ProcessOperationSpecification in the flow.*/ProcessOperationSpecification currentProcessOperationSpecification ( )

raises (FrameworkErrorSignal);

/* Tests to determine if the currentProcessOperationSpecification is the lastProcessOperationSpecification in the flow. */boolean isAtLastProcessOperationSpecification ( )

raises (FrameworkErrorSignal);

/* Returns the ProductSpecification that is associated with this ProcessFlowIterator. */ProductSpecification getProductSpecification ( )

raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 219

Technology Transfer # 93061697J-ENG SEMATECH

4.7.1.3 Interface: ProcessOperationSpecification

Inherited Interface: NamedEntity

Description: This interface serves two purposes:

• It is the basis for creating the ProcessOperation.

• It also contains enough information for CIM systemscheduling/planning.

This interface has static information that can be retrieved by othercomponents. It has some dynamic information definitions that will not beresolved until a ProcessOperation is created by the ProcessFlowContext.This resolution of dynamic information occurs within the ProcessSpecification Management component and is not exposed through theinterfaces.

A ProcessOperationSpecification defines an activity to be performed on aProcessGroup during one visit to a ProcessResource.

Exceptions:

/* This exception is raised when the ProcessResource requested is not assigned to thisProcessOperationSpecification. */exception ProcessResourceNotAssignedSignal { } ;

Published Events: None.

Provided Services:

/* Set and get the unique identifier. */string getIdentifier ( ) raises (FrameworkErrorSignal);

void setIdentifier (in string identifier)

raises (FrameworkErrorSignal, DuplicateIdentifierSignal);

/* Returns the set of ProcessResources that can possibly perform the specifiedProcessOperation. The order of the sequence may imply the priority ofProcessResource selection. Returns NULL if no ProcessResources qualify. */ProcessResourceSequence processResources ( ) raises (FrameworkErrorSignal);

/* Returns the set of durables required for this ProcessResource to perform thisProcessOperationSpecification. Returns NULL if no durables are required. */DurableSequence getDurablesForProcessResource

(in ProcessResource aProcessResource)

raises (FrameworkErrorSignal, ProcessResourceNotAssignedSignal);

/* Returns the set of consumables required for this ProcessResource to perform thisProcessOperationSpecification. Returns NULL if no consumables are required. */ConsumableSequence getConsumablesForProcessResource

(in ProcessResource aProcessResource)

raises (FrameworkErrorSignal, ProcessResourceNotAssignedSignal);

220 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Returns the processing time required for this ProcessResource to perform thisProcessOperationSpecification. */Duration getProcessingTimeForProcessResource

(in ProcessResource aProcessResource)

raises (FrameworkErrorSignal, ProcessResourceNotAssignedSignal);

/*Note for future consideration: These operations on ProcessOperation may also be needed forProcessOperationSpecification - getRecipeforProcessResource - getOperatorInstructions fPR - getRequiredSetup fPR - getSettings fPRThey are part of the specification (in the hidden ProcessSpec document).

*/

/* Returns a boolean on the comparison between ProcessOperationSpecifications. */boolean isEqualTo

(in ProcessOperationSpecification testProcessOperationSpecification)

raises (FrameworkErrorSignal);

/* Returns a boolean on the comparison of flow membership. */boolean isInSameFlowAs

(in ProcessOperationSpecification testProcessOperationSpecification)

raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 221

Technology Transfer # 93061697J-ENG SEMATECH

4.7.1.4 Interface: ProcessFlowContext

Inherited Interface: NamedEntity

Description: The purpose of this interface is to maintain where the product is in itsprocess flow and how the product gets to the next ProcessOperationindependent of how the flow is represented. It creates ProcessOperationsbased on the current ProcessOperationSpecification. During the creation ofthe ProcessOperation, the ProcessFlowContext resolves all dynamicdefinitions in the ProcessOperationSpecification.

Exceptions:

/* This exception is raised when continueProcessing is requested for a Lot that is not in thecorrect state to support a transition of the currentProcessOperation to the next ProcessOperationin the flow. */exception InvalidLotStateSignal { } ;

Published Events:

/* This event is posted when the Process Flow Context changes. This willoccur whenever the result of the currentProcessOperation operation wouldchange due to a continueProcessing request. */ProcessFlowContextChangedEvent

Provided Services:

/* Set and get the unique identifier. */string getIdentifier ( ) raises (FrameworkErrorSignal);

void setIdentifier (in string identifier)

raises (FrameworkErrorSignal, DuplicateIdentifierSignal);

/* Updates the current ProcessOperation to the next ProcessOperation in the flow. TheProcessFlowContext is associated with a specific Lot being processed. Conditionals and loops inthe process flow will be interpreted by the implementation of continueProcessing, but will not beexposed in the interface. */void continueProcessing ()

raises (FrameworkErrorSignal, InvalidLotStateSignal);

/* Returns the current ProcessOperation in the flow. */ProcessOperation currentProcessOperation ( ) raises (FrameworkErrorSignal);

/* Returns the ProductSpecification that is associated with this ProcessFlowContext. */ProductSpecification getProductSpecification ( ) raises (FrameworkErrorSignal);

/* Tests to determine whether the currentProcessOperation is the last ProcessOperation in theflow for the ProcessFlowContext. */boolean isAtLastProcessOperation ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

222 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.7.1.5 Interface: ProcessOperation

Inherited Interface: NamedEntity

Description: The purpose of this interface is to give the specified runtime informationassociated with the processing of a product. The dynamic informationdefined in the ProcessOperationSpecification will be resolved by theProcessFlowContext. This information can then be used during processingand stored as history. A ProcessOperation defines the activity to beperformed on each successive ProcessGroup in a designatedProcessResource during a ProcessMachineJob.

Exceptions:

/* This exception is raised when the ProcessResource requested is assigned to thisProcessOperation. */exception ProcessResourceNotAssignedSignal { };

/* This exception is raised when there is no recipe for the requested ProcessResource. */exception RecipeNotFoundSignal { } ;

Published Events: None.

Provided Services:

/* Set and get the unique identifier. */string getIdentifier ( ) raises (FrameworkErrorSignal);

void setIdentifier (in string identifier)

raises (FrameworkErrorSignal, DuplicateIdentifierSignal);

/* Returns the ProcessCapability that defines all of the ProcessResources that can possiblyperform the specified ProcessOperation.*/ProcessCapability getProcessCapability ( ) raises (FrameworkErrorSignal);

/* Returns the sequence of ProcessResources that can possibly perform the specifiedProcessOperation. The order of the sequence may imply the priority of ProcessResourceselection. The returned sequence of ProcessResources is based on the appropriateProcessCapability. Returns NULL if no ProcessResources qualify. */ProcessResourceSequence processResources ( ) raises (FrameworkErrorSignal);

/* Returns a Boolean on the comparison between ProcessOperations. This is not a test foridentity; it is a test of equivalence defined by the interface implementation.*/boolean isEqualTo (in ProcessOperation testProcessOperation)

raises (FrameworkErrorSignal);

/* Returns the set of durables for a specific ProcessResource. Returns NULL if no durables arerequired. */DurableSequence getDurablesForProcessResource

(in ProcessResource aProcessResource)

raises (FrameworkErrorSignal, ProcessResourceNotAssignedSignal);

CIM Framework Interfaces 223

Technology Transfer # 93061697J-ENG SEMATECH

/* Returns the set of consumables for a specific ProcessResource. Returns NULL if noconsumables are required. */ConsumableSequence getConsumablesForProcessResource

(in ProcessResource aProcessResource)

raises (FrameworkErrorSignal, ProcessResourceNotAssignedSignal);

/* Returns the Target Setup for a specific ProcessResource. */string getSetupForProcessResource

(in ProcessResource aProcessResource)

raises (FrameworkErrorSignal, ProcessResourceNotAssignedSignal);

/* Returns the settings for a specific ProcessResource. */SettingSequence getSettingsForProcessResource

(in ProcessResource aProcessResource)

raises (FrameworkErrorSignal, ProcessResourceNotAssignedSignal);

/* Returns the recipe for a specific ProcessResource. */ string getRecipeNameForProcessResource

(in ProcessResource aProcessResource)

raises (FrameworkErrorSignal, ProcessResourceNotAssignedSignal,

RecipeNotFoundSignal);

/* Returns the operator instructions for this operation. */any getOperatorInstructions ( ) raises (FrameworkErrorSignal);

/* Returns the ProcessOperationSpecification used as a template to create a ProcessOperation. */ProcessOperationSpecification getProcessOperationSpecification ( )

raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

224 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.7.2 Process Capability Management Component

This component is used to identify generic capabilities of process resources and to maintain linksto those process resources capable of performing the operations the capabilities represent. Itprovides for creation and maintenance of process capabilities. Process capabilities are usedprimarily in support of process specification management.

Figure 51 is the Information Model for the Process Capability Management Component. Theinterfaces represent the areas necessary for Process Capability support (i.e., Top-levelmanagement of the Process Capability objects and their relationship to external components).

ProcessCapabilityManagementComponent

ProcessCapabilityManager

ProcessOperation Process

Capability

v manages

ProcessResource

identifiesresources

with >

< capable ofperforming

Figure 51 Process Capability Component Information Model

CIM Framework Interfaces 225

Technology Transfer # 93061697J-ENG SEMATECH

4.7.2.1 Interface: ProcessCapabilityManager

Inherited Interface: ComponentManager

Description: The ProcessCapabilityManager interface is responsible for managing theprocess capabilities.

Exceptions:

/* This signal is raised when an attempt is made to create an exisiting ProcessCapability.*/exception ProcessCapabilityDuplicateSignal {string processCapabilityName;};

/* This signal is raised when a ProcessCapability is not found. */exception ProcessCapabilityNotFoundSignal {string processCapabilityName;};

/* This signal is raised when a ProcessCapability removal fails. */exception ProcessCapabilityRemovalFailedSignal {string processCapabilityName;};

exception ProcessCapabilityNotAssignedSignal {string processCapabilityName;};

Published Events:ProcessCapabilityLifeCycleEvent

Provided Services:

/* Creates a ProcessCapability and places it by name in the collection of ProcessCapabilities. */ProcessCapability createProcessCapabilityNamed (in string processCapabilityName)

raises (FrameworkErrorSignal,ProcessCapabilityDuplicateSignal);

/* Removes a ProcessCapability. */void removeProcessCapabilityNamed (in string processCapabilityName)

raises (FrameworkErrorSignal,ProcessCapabilityRemovalFailedSignal,

ProcessCapabilityNotAssignedSignal);

/* Provides a set of all of the ProcessCapabilities that are being managed by theProcessCapabilityManager. */ProcessCapabilitySequence allProcessCapabilities ( ) raises (FrameworkErrorSignal);

/* Finds a ProcessCapability. */ProcessCapability findProcessCapabilityNamed (in string processCapabilityName)

raises (FrameworkErrorSignal,ProcessCapabilityNotFoundSignal);

Contracted Services: None.

Dynamic Model: None.

226 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.7.2.2 Interface: ProcessCapability

Inherited Interface: NamedEntity

Description: The ProcessCapability interface provides the means to identify a set ofProcessResources by a generic representation of the Process Operationsthey are capable of performing. The ProcessCapability provides the meansby which processes can be specified independently of the equipment thatperforms them.

Exceptions: None.

Published Events:ProcessCapabilityMachineChangedEvent

Provided Services:

/* Get the unique identifier for the ProcessCapability. */string getProcessCapabilityIdentifier ( ) raises (FrameworkErrorSignal);

/* Adds a ProcessResource to the set of ProcessResources that can perform thisProcessCapability. */void addProcessResource (in ProcessResource aProcessResource)

raises (FrameworkErrorSignal);

/* Remove a ProcessResource from the set of ProcessResources that can perform thisProcessCapability. */void removeProcessResource (in ProcessResource aProcessResource)

raises (FrameworkErrorSignal);

/* Set the unique identifier for the ProcessCapability. */void setProcessCapabilityIdentifier (in string identifier)

raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Compares this processCapability to another processCapability. */boolean isEqualTo (in ProcessCapability testProcessCapability)

raises (FrameworkErrorSignal);

/* Return the set of ProcessResources that can perform this ProcessCapability. */ProcessResourceSequence processResources ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 227

Technology Transfer # 93061697J-ENG SEMATECH

4.8 Material Movement

The Material Movement Interfaces provide Interfaces from the Material Movement levelsystems. This level of material movement is factory level movement, i.e., movement of productand durables between machines or material locations. There may be multiple material movementapplications in the factory; however, the MaterialMovementManager is the only interface theother factory level interfaces need deal with.

4.8.1 Material Movement Abstract Interface Group

The abstract interfaces associated with the Material Movement Component are as follows:

• TransportJobSupervisor – instantiated by the Material Movement Manager

• TransportJob

• TransportGroup

• MaterialMovementController

NOTE: This group and the Material Movement Component were defined prior to the JobArchitecture. Therefore the interfaces are not in full alignment with the Job Architecture.

creates andmanages

creates and manages

MaterialMovementManager MaterialMovementController TransportJob

registers and delegates to

JobSupervisor JobComponentManager

TransportJobSupervisor

Material Movement Abstract Interface GroupMaterial Movement

Management

Figure 52 Material Movement Information Model

228 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.8.1.1 Interface: TransportJobSupervisor

Inherited Interface: JobSupervisor

Description: TransportJobSupervisor is an abstract interface that provides theoperations needed by clients to request, track and control materialmovement within the domain of the specific TransportJobSupervisor. Anyentity that is responsible for moving material will inherit and implementTransportJobSupervisor.

Exceptions:exception UnsupportedDestinationTypeSignal { };

exception AreaNotReachableSignal { };

exception AreaNotEnabledSignal { };

exception MachineNotReachableSignal { };

exception MachineNotEnabledSignal { };

exception MaterialPortNotReachableSignal { };

exception MaterialPortNotEnabledSignal { };

Published Events: TransportJobSupervisorConfigurationChangedEvent

Provided Services:

/* These services act as the main entry points into the transport system(s). Each service willcreate a new TransportJob that will move a TransportGroup to the provided destination(thesource location is provided by the TransportGroup’s contained material). Actual materialmovement systems may vary in their specification for the granularity of movement; therefore,there are three services to provide the destination specification:

Area Destination can be any StorageMachine that supports the given Area and it is theresponsibility of the material movement system to decide where to put the material.

Machine Destination is a specific machine (most likely, but not necessarily, a process machine). Thematerial movement system can decide which port on the machine should be used.

PortSequence Destination is one of the specific ports listed in this sequence (note that the sequence cancontain only one port for a very specific move.) If the sequence contains more than one port,it is up to the material movement system to decide which port to use.

Some instances of TransportJobSupervisors may not accept all forms of destination type, hencethe ability to throw exceptions for unsupported destination types.

The parameter for requester is the instance that will be notified when the TransportJob iscompleted. The requester must implement the informJobCompleted method.

CIM Framework Interfaces 229

Technology Transfer # 93061697J-ENG SEMATECH

If the TransportJobSupervisor already has a job for the given TransportGroup and a new create isrequested, it is an implementation detail as to how that is handled. Possibilities include acancellation of the current move and creation of a new move, waiting for the first move tocomplete prior to executing the next move, or rejecting it. */TransportJob createTransportJob_toArea (in TransportGroup aTransportGroup,

in Area destination, in Machine origination, in any requester)

raises (FrameworkErrorSignal,UnsupportedDestinationTypeSignal,

AreaNotReachableSignal,AreaNotEnabledSignal,

MachineNotReachableSignal,MachineNotEnabledSignal);

TransportJob createTransportJob_toMachine (in TransportGroup aTransportGroup,

in Machine destination, in Machine origination, in any requester)

raises (FrameworkErrorSignal,UnsupportedDestinationTypeSignal,

MachineNotReachableSignal,MachineNotEnabledSignal);

TransportJob createTransportJob_toMaterialPorts (in TransportGroup aTransportGroup,

in MaterialPortSequence destination, in Machine origination,

in any requester)

raises (FrameworkErrorSignal,UnsupportedDestinationTypeSignal,

MaterialPortNotReachableSignal, MaterialPortNotEnabledSignal,

MachineNotReachableSignal,MachineNotEnabledSignal);

/*Returns a sequence containing all of the Areas that the entities controlled by theTransportJobSupervisor can physically reach.*/AreaSequence allReachableAreas ( ) raises (FrameworkErrorSignal);

/*Returns a sequence containing all of the Areas that the entities controlled by theTransportJobSupervisor are authorized to reach.*/AreaSequence allEnabledAreas ( ) raises (FrameworkErrorSignal);

/*Adds or removes Areas to the enabled list.*/void enableArea (in Area anArea)

raises(FrameworkErrorSignal, AreaNotReachableSignal);

void disableArea (in Area anArea) raises(FrameworkErrorSignal,AreaNotEnabledSignal);

/*Returns a sequence containing all of the Machines that the entities controlled by thisTransportJobSupervisor can physically reach.*/MachineSequence allReachableMachines ( ) raises (FrameworkErrorSignal);

/*Returns a sequence containing all of the Machines that the entities controlled by theTransportJobSupervisor are authorized to reach.*/MachineSequence allEnabledMachines ( ) raises (FrameworkErrorSignal);

/*Adds or removes Machines to the enabled list.*/void enableMachine (in Machine aMachine)

raises (FrameworkErrorSignal, MachineNotReachableSignal);

void disableMachine (in Machine aMachine)

raises (FrameworkErrorSignal, MachineNotEnabledSignal);

/*Returns a sequence containing all of the MaterialPorts that the entities controlled by thisTransportJobSupervisor can physically reach directly.*/MaterialPortSequence allReachableMaterialPorts ( ) raises (FrameworkErrorSignal);

230 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/*Returns a sequence containing all of the MaterialPorts that the entities controlled by theTransportJobSupervisor are authorized to reach.*/MaterialPortSequence allEnabledMaterialPorts ( ) raises (FrameworkErrorSignal);

/*Adds or removes MaterialPorts to the enabled list.*/void enableMaterialPort (in MaterialPort aMaterialPort)

raises(FrameworkErrorSignal,MaterialPortNotReachableSignal);

void disableMaterialPort (in MaterialPort aMaterialPort)

raises(FrameworkErrorSignal,MaterialPortNotEnabledSignal);

/*Inform the TransportJobSupervisor that the machine involved is ready for sending or receivingMaterial. */void informMachineReadyforMaterialTransfer

(in Port aPort, in Machine aMachine, in TransportJob aTransportJob);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 231

Technology Transfer # 93061697J-ENG SEMATECH

4.8.1.2 Interface: TransportJob

Inherited Interface: Job

Description: This type of Job performs a specific movement of material. The materialand the priority are in the TransportGroup. The ongoing status of the movecan be monitored by subscribing to the appropriate managed job events.This is a abstract interface but concrete derivatives are unlikely to add newinterface.

Exceptions:exception AreaUndeterminableSignal { };

exception MachineUndeterminableSignal { };

exception MaterialPortUndeterminableSignal { };

exception TimeUndeterminableSignal { };

Published Events: Same as Job.

Provided Services:

/* Destinations can be specified in several ways. A query asking for the same format as was usedat job creation can always be answered. Other queries should be answered if the component candetermine the answer. */Area getDestinationArea ( )

raises (FrameworkErrorSignal, AreaUndeterminableSignal);

Machine getDestinationMachine ( )

raises (FrameworkErrorSignal,MachineUndeterminableSignal);

PortSequence getDestinationPorts ( )

raises (FrameworkErrorSignal,MaterialPortUndeterminableSignal);

Area getOriginationArea ( )

raises (FrameworkErrorSignal, AreaUndeterminableSignal);

Machine getOriginationMachine ( )

raises (FrameworkErrorSignal,MachineUndeterminableSignal);

PortSequence getOriginationPorts ( )

raises (FrameworkErrorSignal,MaterialPortUndeterminableSignal);

/* Return the transport group. */TransportGroup getTransportGroup ( ) raises (FrameworkErrorSignal);

/* This is essentially a hint that this job should be completed by the specified time. The jobexecutor may ignore this hint or it may try to do intelligent buffering or scheduling. Setting thisdoes not make the job active. */void setTargetCompletionTime (in TimeStamp targetCompletionTime)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

TimeStamp getTargetCompletionTime( ) raises (FrameworkErrorSignal);

/* Determine if the move can be completed by the specified time.*/boolean canCompleteBy (in TimeStamp whenNeeded)

raises(FrameworkErrorSignal,TimeUndeterminableSignal);

232 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Estimate how long this job will take once it begins. */Duration transportTime ( )

raises(FrameworkErrorSignal,TimeUndeterminableSignal);

/* Estimate when this job could begin execution, given current scheduling constraints. */TimeStamp couldStartTime ( )

raises(FrameworkErrorSignal,TimeUndeterminableSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 233

Technology Transfer # 93061697J-ENG SEMATECH

4.8.1.3 Interface: MaterialMovementController

Inherited Interface: TransportJobSupervisor

Description: A MaterialMovementController accepts transport requests, schedules themand executes them in order to move material around the factory or a part ofthe factory.

Exceptions: None.

Published Events: None.

Provided Services:

/*Returns a list of all material in the domain of this material movement controller. */MaterialSequence allMaterial ( ) raises (FrameworkErrorSignal);

/*Returns a list of all material in transit in the domain of this material movement controller. */MaterialSequence allMaterialInTransit ( ) raises (FrameworkErrorSignal);

/*Returns a list of all material in storage in the domain of this material movement controller. */MaterialSequence allMaterialInStorage ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

234 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.8.2 Material Movement Component

This component is concerned only with factory-wide material movement and not the movementof material within a piece of equipment. Also note that material can be either product, durables,or consumables.

Automated material handling systems(AMHSs) are an important part of any semiconductorfactory and have typically been implemented and integrated with a MES as a separate logicalsoftware entity. An AMHS is made up of the Material Control Systems (MCS) (the software) andthe movement and storage machines (the hardware). In keeping with this tradition, the CIMFramework views the AMHS as a blackbox where the interface into that system is important butthe inner workings and control of that system is the responsibility of the AMHS supplier and notin the domain of the MES.

The CIM Framework must recognize the potential for multiple AMHSs within a single factory(e.g., one supplier of interbay movement and another supplier of intrabay movement). The MES,however, wants to only have to issue a move request (move this material from here to there)without regard to whether that movement spans one or more AMHSs. Therefore, the componentsupporting material movement requires a single entry point for initiating material movement thatwill be through the Material Movement Manager.

At the same time, the Material Movement Manager must be able to recognize and executetransport jobs on many different AMHSs. Therefore, the Material Movement Manager willregister and manage one-to-many Material Movement Controllers that are the public interface tothe material control systems. The Material Movement Controller provides standard interfaces fora variety of CIM Framework conformant MCSs. The low-level interaction of the materialmovement controllers with the physical equipment (transport machines, storage machines, andports) is not within the scope of this component at this time. The MCS will handle the low levelinteraction of material movement. Note that the component manager does not provide lifecycleservices for it’s managed material movement controllers. The interface for the component itselfis the MaterialMovementManager.

The Material Movement Component is designed to specify interfaces for the systems andmachines that schedule and execute material movement in a semiconductor factory. The actualcontrol of and interface to equipment is the responsibility of the Machine ManagementComponent. Inventory and tracking of material is handled by the Inventory Region Componentand Material Management.

CIM Framework Interfaces 235

Technology Transfer # 93061697J-ENG SEMATECH

4.8.2.1 Interface: MaterialMovementManager

Inherited Interface: ComponentManager, TransportJobSupervisor

Description: A MaterialMovementManager accepts requests to move material via thecreateTransportJob operations. It performs these TransportJobs bybreaking them into separate tasks to be performed byMaterialMovementControllers. The MaterialMovementManager issuesrequests to the specific MaterialMovement Controllers needed to completethem.

Exceptions:exception MaterialMovementControllerNotRegisteredSignal { };

Published Events: None.

Provided Services:

/* Add a MaterialMovementController to the collection of MaterialMovementControllers that theMaterialMovementManager can use to carry out jobs. */void registerMaterialMovementController

(in MaterialMovementController aMaterialMovementController)

raises (FrameworkErrorSignal);

/* Remove a MaterialMovementController from the list of resources available to theMaterialMovementManager. No new jobs will be issued but, existing jobs will be unaffected. */void unregisterMaterialMovementController

(in MaterialMovementController aMaterialMovementController)

raises (FrameworkErrorSignal,

MaterialMovementControllerNotRegisteredSignal);

/* Return a list of all MaterialMovementControllers managed by MaterialMovementManager. */MaterialMovementControllerSequence allMaterialMovementControllers ( )

raises (FrameworkErrorSignal);

/*Returns a list of all material in the material movement system. */MaterialSequence allMaterial ( ) raises (FrameworkErrorSignal);

/*Returns a list of all material in transit in the material movement system. */MaterialSequence allMaterialInTransit ( ) raises (FrameworkErrorSignal);

/*Returns a list of all material in storage in the material movement system. */MaterialSequence allMaterialInStorage ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

236 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.9 Machine Control Group

This group provides the basic architecture to represent a Machine (i.e., equipment and itscorrespondent support resources) in the Factory. It identifies the information and controlnecessary for factory automation and interfacing. High level machine capabilities include: CIMsystem interface and process execution. Figure 53 shows the relationships among the differentMachine components (within dotted line) and with other Factory components. For simplicity, thisfigure has only the major relationships. The components and interactions between componentsare presented in the following sections.

FactoryOperations

MachineGroup

ResourceTracking

RecipeManagement

MaterialMovement

AdvancedProcessControl

Factory Labor

manages PMspecifications forsupportresources

perform PMs forsupport resources

manages recipes,performs recipeupload, download,and updates

providessynchronizationfor materialmovement

requests and tracksprocessing in

informs PMneeded

providessettings andtests resultsfor APC

HistoryManagement

recordsprocessinghistory for

Figure 53 Machine Control Group Component Relationships

The Machine Control Group includes the following components:

• Machine Group: Machine and resource management and control process job and materialtracking interfaces

• Recipe Management: Provides recipe management and storage for process resources

• Resource Tracking: Tracks Machine’s support resources maintenance

CIM Framework Interfaces 237

Technology Transfer # 93061697J-ENG SEMATECH

4.9.1 Machine Management Group

A piece of equipment is an independent physical manufacturing tool that presents itself logicallyas a single tool to the operator and/or host system. It may be manual or automated. An instanceof the interface Machine is the software representation for such a piece of equipment in theFactory. Although it may communicate with the equipment’s control system, it is a part of theCIM system and is available independent of the tool itself. The CIM Framework describes ageneral Machine and one specialization: ProcessMachine The diagram below shows the group ofinterfaces needed to define Machines. Some relationships to interfaces outside the group are alsodisplayed.

ResourceDataCollector

Port

Machine

Sensor

ProcessResource

MachineGroup

MachineRegister

registers

MachineResource

Area

groups

ProcessCapability

1+

possible andassigned

ProcessMachine

MaterialTrackingLocation

Material

SupportResource

RecipeControl

1+

1+

1+

has a

maintainslocation of

material

has one ormore ports

Figure 54 Machine Management Group Information Model

The Process Machine Management component implements the Job Supervision capability. It isat this level (from the Factory System point of view) that work is actually performed. Thismeans simply that work requested of the ProcessMachine is not delegated to any lower levelentity known to the Factory System. As a result of this worker role, the interface responsible fordelegated work, the JobExecutor does not appear in this Job Supervision derivative. Derivativeswhere it does appear include the Factory Operations and Product Request levels.

238 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

ProcessGroup

LotJobExecutorJobSupervisor

ProcessOperation

Job

ProcessMachine

Machine JobRequestor

ProcessMachineJob

1+

performs

performsacts upon

requests process job fora process operation

tracks progress

Figure 55 Process Machine and Process Machine Job

The Process Machine Management component primarily exists to perform processing on groupsof product. For any ProcessMachineJob, it will perform a sequence of ProcessOperations(usually one) on the specified product. Process Operations could include more operational stepsas is in the case of Cluster tools. The CIM Framework does not specify the required interfaces,but it recommends to be aligned with current proposals for Process Program Management,Recipe Management, and the Object Based Equipment Model (OBEM).

CIM Framework Interfaces 239

Technology Transfer # 93061697J-ENG SEMATECH

4.9.1.1 Interface: SupportResource

Inherited Interface: Resource

Description: The SupportResource is an abstract interface that provides the ability fordifferent levels of detail for the state behavior of its child interfaces. It is asoftware proxy for equipment, equipment modules, equipment subsystems,equipment ports, and fixtures(such as reticles and burn in boards).

The ResourceTrackingManager will track the PM intervals forSupportResources that have them. The PM interval is the calendar time,process time, or units allowable from the time one PM is done until thenext is due.

Exceptions: None.

Published Events:

/* Event indicating that the SupportResource has changed states. */SupportResourceStateChangedEvent

Provided Services:

/* Reserve a SupportResource. SupportResources may be reserved for only one entity. Returntrue if successful. Note: Reserving a SupportResource may effect the reserver more than thereserved. */boolean reserveFor (in NamedEntity requester)

raises (FrameworkErrorSignal);

/* Unreserve a SupportResource. */void unReserve () raises (FrameworkErrorSignal);

/* Return true if the SupportResource has been reserved. */boolean isReserved () raises (FrameworkErrorSignal);

/* Return the NamedEntity for which the SupportResource has been reserved. */NamedEntity reservedFor () raises (FrameworkErrorSignal);

/*Get the PMSpecification(s) associated with this Support Resource, return null if noPMSpecification is associated. */PMSpecificationSequence getPMSpecifications ()

raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Same as Inherited Interface.

240 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.9.1.2 Interface: MachineResource

Inherited Interface: SupportResource

Description: This abstract interface corresponds to a physical subsystem on equipmentand representing the concept of a resource in a Machine performing sometype of work. Different subinterfacees of MachineResources arespecialized to perform different tasks. A specific Machine may be made upof multiple MachineResources The methods for adding and removing aMachineResource to a MachineResource or Machine were considered forthis interface. However, the consensus of the focus team was that theseare functions of a configuration application and that the machine wouldprovide this information at registration or if queried. The same goes forthe methods to set Vendor, Model Number, Serial Number, andSoftwareVersion number.

Exceptions:

/* An attempt to set a value was made that is not within acceptable range or format. */exception SetValueOutOfRangeSignal { };

/* A MachineResource specified in the service is not existent or was not found. */exception MachineResourceNotFoundSignal { };

/* A specified Sensor in the service is not existent or was not found. */exception SensorNotFoundSignal { };

/* E10 State change setting for the resource is not a valid transition. */exception InvalidStateTransitionSignal { };

Published Events:

/* An E10 State change has occured in the MachineResource that theFactory needs to know. */MachineResourceE10StateChangedEvent

Provided Services:

/* Set and get a description for the MachineResource. */string getDescription ( ) raises (FrameworkErrorSignal);

void setDescription (in string description)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

/* Get a manufacturer for the MachineResource. */string getVendor ( ) raises (FrameworkErrorSignal);

/* Get a model number for the MachineResource. */string getModelNumber ( ) raises (FrameworkErrorSignal);

/* Get a serial number for the MachineResource. */string getSerialNumber ( ) raises (FrameworkErrorSignal);

/* Set and get the factory inventory control number, which may be different from the Machineidentifier.*/

CIM Framework Interfaces 241

Technology Transfer # 93061697J-ENG SEMATECH

string getInventoryControlIdentifier ( ) raises (FrameworkErrorSignal);

void setInventoryControlIdentifier

(in string inventoryControlIdentifier)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

/* Get a software version number for the MachineResource. */string getSoftwareVersionNumber ( ) raises (FrameworkErrorSignal);

/* Get the Machine this MachineResource is assigned to. Return null if there is no containingMachine. */Machine getContainingMachine ( ) raises (FrameworkErrorSignal);

/* Get the MachineResource this MachineResource is assigned to. Return null if there is nocontaining MachineResource. */Machine getContainingMachineResource ( ) raises (FrameworkErrorSignal);

/*Get the MachineResources contained within this MachineResource.*/MachineResourceSequence allContainedMachineResource ( )

raises (FrameworkErrorSignal);

/*Find a MachineResource by name.*/MachineResource findMachineResourceNamed

(in string aMachineResourceName)

raises (FrameworkErrorSignal, MachineResourceNotFoundSignal);

/*Add or remove a Sensor to or from this MachineResource.*/void addSensor(in Sensor aSensor) raises (FrameworkErrorSignal);

void removeSensor(in Sensor aSensor) raises (FrameworkErrorSignal);

/*Find all Sensors associated with this Machine.*/SensorSequence allSensors ( ) raises (FrameworkErrorSignal);

/*Find a Sensor by name.*/Sensor findSensorNamed (in string aSensorName)

raises(FrameworkErrorSignal, SensorNotFoundSignal);

/*Set and get MachineResource’s E10 state code. Answer the MachineResource's E10 state.The returned string shall be a 4 character string and shall be compliant with the SEMI E58(ARAMS). The first character is a numeric value from 1-6. The second character is a numericvalue (see SEMI E58 for the specific value assignment). The third and fourth character can bealphabetic or numeric and is left up to the implementer. */void setE10StateCode (in string aE10StateCode)

raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

string getE10StateCode ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Same as Inherited Interface.

242 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.9.1.3 Interface: Machine

Inherited Interface: MachineResource, DataCollector

Description: The abstract interface representing the concept of a piece of equipment inthe factory. It is made up of zero, one, or many MachineResources andSupportResources and at least one Port. Therefore, a Machine gives theoverall identity of the physical equipment existing in the factory. The keyto the Machine is that the Factory and CIM System Components talk to theMachine or parts of the machine that it allows to be visible. The simplestinterface for the factory is at the machine level.

The Machine has an attribute location which corresponds to the physicallocation of the equipment in the factory. The Machine also has a(one)MaterialTrackingLocation per type of Material used, held or needed by theMachine. The MaterialTrackingLocation differs from the SEMI conceptof MaterialLocation, which is the location of Material within a Machineand of lesser interest to the Material Management Component or MaterialMovement Component.

Setup definition on a Machine has not been agreed upon by the focus teamworking at SEMATECH. Therefore, definition of setup is left as animplementation detail.

Exceptions:

/* This signal is raised when an attempt is made to assign a Durable to a Machine to which it isalready assigned. */exception DurableAlreadyAssignedSignal {Durable aDurable; } ;

/* This signal is raised when an attempt is made to deassign a Durable from a Machine to whichit is not assigned .*/exception DurableNotCurrentlyAssignedSignal {Durable aDurable; } ;

/* TransportJob Port specification was incorrect or did not match. */exception InvalidPortSignal { };

/* Material specified in the TransportGroup is not at the Machine. */exception InvalidMaterialSignal { };

Published Events:

/* Inform that Machine Setup changed. */MachineSetupChangedEvent

/* Inform that Machine reservation has changed. */MachineReservationChangedEvent

Provided Services:

/*Add and remove Durable to a Machine.*/void assignDurable( in Durable aDurable)

CIM Framework Interfaces 243

Technology Transfer # 93061697J-ENG SEMATECH

raises(FrameworkErrorSignal,DurableAlreadyAssignedSignal);

void removeDurable( in Durable aDurable)

raises(FrameworkErrorSignal,DurableNotCurrentlyAssignedSignal);

/* Answer all Durables currently assigned to this machine. */DurableSequence allAssignedDurables( ) raises (FrameworkErrorSignal);

/* Answer the operators which are currently assigned to work on this machine. */PersonSequence assignedOperators( ) raises (FrameworkErrorSignal);

/* Answer the operators which are currently performing tasks related to this machine. */PersonSequence currentOperators( ) raises (FrameworkErrorSignal);

/* Answer the physical location of this machine. Implementations may use different coordinatesystems for tracking machine locations. This location does not relate toMaterialTrackingLocation. */string location( ) raises (FrameworkErrorSignal);

/*Set the MaterialTrackingLocation for this machine. This is the one location used for trackingthe particular material type that is in, at, or on this machine. Other material types can have aseparate MaterialTrackingLocation on this machine.*/void setMaterialTrackingLocation

(in MaterialTrackingLocation aMaterialTrackingLocation,

in Unit aMaterialType)

raises (FrameworkErrorSignal);

/*Get the MaterialTrackingLocations for this machine, There is one and only oneMaterialTrackingLocation per Material type used in the Machine.*/MaterialTrackingLocationSequence getAllMaterialTrackingLocations ( )

raises (FrameworkErrorSignal);

/*Get the MaterialTrackingLocation of the type requested. Standard unit types can be found inthe SEMI E5 standard. */MaterialTrackingLocation getMaterialTrackingLocation (in Unit aMaterialType)

raises (FrameworkErrorSignal);

/*Request a Machine ready itself to load material. This may involve communication between thePort and the Machine Objects but these need not be public (or may involve communciationbetween the Machine and the Equipment). The TransportJob may have a specific port as itsdestination. The Machine may raise an exception if the specified Port is incorrect. Returns Nullif Machine cannot or refuses to comply.*/Port prepareToReceiveMaterial(in TransportJob aTransportJob)

raises (FrameworkErrorSignal, InvalidPortSignal);

/* Request a Machine make itself to unload material. Returns Null if Machine cannot or refusesto comply.*/Port prepareToSendMaterial(in TransportGroup aTransportGroup)

raises (FrameworkErrorSignal, InvalidMaterialSignal);

/*Answer all Ports.*/PortSequence allPorts ( ) raises (FrameworkErrorSignal);

244 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/*Answers available ports. */PortSequence allNotAllocatedPorts( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Same as inherited Interface.

CIM Framework Interfaces 245

Technology Transfer # 93061697J-ENG SEMATECH

4.9.1.4 Interface: ProcessMachine

Inherited Interface: Machine, JobSupervisor, RecipeControl

Description: ProcessMachine represents a device for processing product. There may bemore than one ProcessMachines as in the case of linked cells.ProcessMachines are made of one or more ProcessResources as is in thecase of Cluster tools. ProcessMachine includes ProcessCapabilities of allits associated ProcessResources.

Exceptions:

/* Intent to remove a ProcessCapability was not possible because it was not assigned to theProcessMachine. */exception NotAssignedCapabilitySignal { };

/* Specified ProcessCapability is not valid for the ProcessMachine. */exception NotPossibleCapabilitySignal { };

Published Events:

/* Indicates that ProcessRunSize for the ProcessMachine has changed. */ProcessRunSizeChangedEvent

/* Indicate that the ProcessMachine has data available for APC. */DataAvailableEvent

/* Indicate that the APC has an event for the Factory */

/* Note: APCMachineEvent is not currently defined. */APCMachineEvent

Provided Services:

/* Answers all the ProcessResources this machine owns. */ProcessResourceSequence allProcessResources( ) raises (FrameworkErrorSignal);

/* Get the minimum batch size for this process machine. */long getProcessGroupSizeMinimum ( ) raises (FrameworkErrorSignal);

/* Get the maximum batch size for this process machine. */long getProcessGroupSizeMaximum ( ) raises (FrameworkErrorSignal);

/*Get the units (e.g., Wafers, Cassette) for this process machine. */Units getProcessGroupSizeUnits ( ) raises (FrameworkErrorSignal);

/* Answer the ProcessCapabilities representing the current setup (configuration of consumablesand fixtures and settings) of this ProcessMachine. These ProcessCapabilities must be in theassigned list and are a list of the capabilities of each of its ProcessResources and theProcessCapabilities that are unique to the ProcessMachine. For example, a ProcessMachine mayhave ProcessResources A and B. Separately they have ProcessCapabilities A1..A10, andB1...B10, but the ProcessMachine has also C1..C10, that neither ProcessResource A or B has.*/ProcessCapabilitySequence allCurrentCapabilities ( ) raises (FrameworkErrorSignal);

246 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Answer a sequence of ProcessCapabilities representing setups allowed for thisProcessMachine. This must be a subset of the total possible capabilities. Furthermore, it includesthe assigned ProcessCapabilities of all its ProcessResources and the ProcessCapabilities that areunique to the ProcessMachine. */ProcessCapabilitySequence allAssignedCapabilities( ) raises (FrameworkErrorSignal);

/* Answer a sequence of ProcessCapabilities representing setups possible for thisProcessMachine capabilities. Furthermore, it includes the possible ProcessCapabilities of all itsProcessResources and the ProcessCapabilities that are unique to the ProcessMachine. */ProcessCapabilitySequence allPossibleCapabilities( ) raises (FrameworkErrorSignal);

/*Answer a sequence of ProcessCapabilities representing the current setup (configuration ofconsumables, fixtures and settings of this ProcessMachine. This query gives a list of thecapabilities unique to the ProcessMachine and does not include the individualProcessCapabilities of the ProcessResources. These ProcessCapabilities must be in the assignedlist.*/ProcessCapabilitySequence allCurrentProcessMachineCapabilities ( )

raises (FrameworkErrorSignal);

/*Answer a sequence of ProcessCapabilities representing the setups allowed for thisProcessMachine. This query gives a list of the capabilities unique to the ProcessMachine anddoes not include the individual ProcessCapabilities of the ProcessResources This must be asubset of the possible capabilities.*/ProcessCapabilitySequence allAssignedProcessMachineCapabilities ( )

raises (FrameworkErrorSignal);

/*Answer a sequence of ProcessCapabilities representing the possible setup of thisProcessMachine. This query gives a list of the capabilities of the unique to the ProcessMachineand does not include the individual Capabilities of the ProcessResources. */ProcessCapabilitySequence allPossibleProcessMachineCapabilities ( )

raises (FrameworkErrorSignal);

/*Answer a sequence of ProcessCapabilities representing the current setup of each of theProcessResources contained within the ProcessMachine.*/ProcessCapabilitySequence allCurrentProcessResourceCapabilities ( )

raises (FrameworkErrorSignal);

/*Answer a sequence of ProcessCapabilities representing the setups allowed for each of theProcessResources contained within the Machine. */ProcessCapabilitySequence allAssignedProcessResourceCapabilities ( )

raises (FrameworkErrorSignal);

/*Answer a sequence of ProcessCapabilities possible for each of the ProcessResources containedwithin the ProcessMachine.*/ProcessCapabilitySequence allPossibleProcessResourceCapabilities ( )

raises (FrameworkErrorSignal);

/*Set the current ProcessCapability of the ProcessMachine directly. */void setCurrentCapability (in ProcessCapability currentCapability)

raises (FrameworkErrorSignal, NotAssignedCapabilitySignal);

CIM Framework Interfaces 247

Technology Transfer # 93061697J-ENG SEMATECH

/* Add a ProcessCapability to the ProcessMachine’s collection of ProcessCapabilities. */void addPossibleCapability (in ProcessCapability aProcessCapability)

raises (FrameworkErrorSignal);

/* Remove a ProcessCapability from the ProcessMachines’s collection of possibleProcessCapabilities. */void removePossibleCapability (in ProcessCapability aProcessCapability)

raises(FrameworkErrorSignal, NotPossibleCapabilitySignal);

/* Add a ProcessCapability to the ProcessMachine’s collection of assigned capabilities. */void addAssignedCapability (in ProcessCapability aProcessCapability)

raises(FrameworkErrorSignal, NotPossibleCapabilitySignal);

void removeAssignedCapability (in ProcessCapability aProcessCapability)

raises(FrameworkErrorSignal, NotAssignedCapabilitySignal);

/* Answer a sequence of the Areas which this ProcessMachine belongs to. */AreaSequence areas( ) raises (FrameworkErrorSignal);

/*Notifies that APC Setup ready for machine. */void notifyAPCSetupReadyForMachine ( ) raises (FrameworkErrorSignal);

/*Notifies that APC is ready to run.*/void notifyAPCReadyToRun ( ) raises (FrameworkErrorSignal);

/*Query for Run data. */ProcessRunData getProcessRunData ( ) raises (FrameworkErrorSignal);

/*The generic JobSupervisor level requires certain parameters be included in everyJobSpecification. The following list extends that required set of parameters.*/

/*Additional JobSpecification Parameters:

Name Value Type Description

“ProcessGroup” ProcessGroup The product to be processed by this job.

“ProcessOperations” ProcessOperationSequence

The ordered set of ProcessOperations to beperformed on the ProcessGroup by this Job.

/*

Contracted Services: None.

Dynamic Model: None.

/* Remove a ProcessCapability from the ProcessMachine’s collection of assigned capabilities. */

248 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.9.1.5 Interface: ProcessMachineJob

Inherited Interface: Job

Description: The ProcessMachineJob is a specialization of the Job interface to includeinformation specific to performing a ProcessOperation. The extensions tothe Job interface reflect the additional parameters in the JobSpecificationat this level.

Exception: None.

Published events: None.

Provided Services:

/*Get the group of Product upon which ProcessMachineJob will act*/ProcessGroup getProcessGroup( ) raises (FrameworkErrorSignal);

/*Get the set of ProcessOperations to be performed by this ProcessMachineJob*/ProcessOperationSequence getProcessOperations ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 249

Technology Transfer # 93061697J-ENG SEMATECH

4.9.1.6 Interface: ProcessResource

Inherited Interface: MachineResource

Description: The abstract interface representing a MachineResource subinterface thatprocesses the product. The ProcessResource performs its functions byexecuting a given set of processing instructions (known as aProcessOperation) for the product with a given set of resources and tools.Finally, the ProcessResource cooperates with Process Control todynamically modify processing parameters to reflect the conditions of theProcessResource and Product.

Exceptions:

/* Specified capability has not been assigned to the ProcessResource. */exception CapabilityNotAssignedSignal { };

/* Indicate that the specified capability is not acceptable to the ProcessResource. */exception NotPossibleCapabilitySignal { };

exception CapabilityRemovalFailedSignal { };

Published Events:

/* Inform Factory that Process Resource Capability has been changed. */ProcessResourceProcessCapabilityChangedEvent

Provided Services:

/* Set and get the single ProcessCapability representing the current setup (configuration ofconsumables and fixtures) of this ProcessResource. This ProcessCapability must be in theassigned list.*/ProcessCapability getCurrentCapability ( ) raises (FrameworkErrorSignal);

void setCurrentCapability (in ProcessCapability aCurrentCapability)

raises (FrameworkErrorSignal, CapabilityNotAssignedSignal);

/* Add a ProcessCapability to the ProcessResource’s collection of possible capabilities. */void addPossibleCapability(in ProcessCapability aProcessCapability)

raises (FrameworkErrorSignal);

/* Remove a ProcessCapability from the ProcessResource’s collection of possible capabilities. */void removePossibleCapability(in ProcessCapability aProcessCapability)

raises (FrameworkErrorSignal, NotPossibleCapabilitySignal,

CapabilityRemovalFailedSignal);

/* Add a ProcessCapability to the ProcessResource’s collection of assigned capabilities. */void addAssignedCapability(in ProcessCapability aProcessCapability)

raises (FrameworkErrorSignal, NotPossibleCapabilitySignal);

/* Remove a ProcessCapability from the ProcessResource’s collection of assigned capabilities. */void removeAssignedCapability(in ProcessCapability aProcessCapability)

raises (FrameworkErrorSignal, CapabilityNotAssignedSignal,

CapabilityRemovalFailedSignal);

250 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Answer a sequence of ProcessCapabilities representing setups allowed for thisProcessResource. This must be a subset of the total possible capabilities. */ProcessCapabilitySequence assignedCapabilities( )

raises (FrameworkErrorSignal);

/* Answer a sequence of ProcessCapabilities representing setups possible for thisProcessResource. This must be a subset of the total possible capabilities. */ProcessCapabilitySequence possibleCapabilities( ) raises (FrameworkErrorSignal);

/* Answer the history of processing for this ProcessResource. */HistoryEventSequence getProcessResourceHistory ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Same as Inherited Interface (MachineResource).

CIM Framework Interfaces 251

Technology Transfer # 93061697J-ENG SEMATECH

4.9.1.7 Interface: Port

Inherited Interface: SupportResource

Description: The Port represents the point at which a change of ownership occursduring a material transfer. Each Port has at least one associated Machineand the Port may be thought of as an access point to the Machine.Reservation and change of states from Available to NotAvailable are donethrough the inherited interfaces.

Exceptions: None.

Published Events:

/*Inform Factory that the Port state has changed. */PortStateChangedEvent

/* Inform Factory or subscriber that the Port is available. */PortAvailableEvent

Provided Services:

/*Query is the Port Ready to accept a reservation. If the Port is in the NotReady state the Port canrefuse to prepare itsself to receive or to send.*/boolean isReady( ) raises (FrameworkErrorSignal);

/*Query is the Port reserved to receive or send material. */boolean isReservedToReceive( ) raises (FrameworkErrorSignal);

boolean isReservedToSend( ) raises (FrameworkErrorSignal);

/*Query to determine the PortType.*/boolean isInputPort ( ) raises (FrameworkErrorSignal);

boolean isOutputPort ( ) raises (FrameworkErrorSignal);

boolean isInputOutputPort ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: The dynamic model included here is a reservation model for the port. TheCIM systems group feels that the MES system does not need all the detaildescribed in the Port Model defined in SEMI E30 but that this modelshould not conflict with it.

This Dynamic Model is an inherited model(from Resource) and it has beenextended to provide the needed functionality.

252 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

READY

NOT READY

RESERVEDTO

RECEIVE

RESERVEDTO SEND

NOTRESERVED

3

2

4

5 6

1

7 8

NOTAVAILABLEAVAILABLE

Figure 56 State Model for Port

Table 20 Port State Definition and Query Table

State Substate Definition Query for State via

nonexistent NA Port not registered NA

AVAILABLE None Port registered and availablefor interaction. The port mayalready be performing a loador unload, or may be allocatedto the equipment

boolean isAvailable(); fromthe inherited interface

NOTAVAILABLE None Port is not available fordispatching or schedulingbecause it has not beinginitialized internally.

boolean isNotAvailable();from the inherited interface.

AVAILABLE READY Port is available fordispatching or scheduling.The port may be reserved bythe Factory to send or receivematerial or be in theLoad/Unload active states(See SEMI E30).

boolean isReady ();

CIM Framework Interfaces 253

Technology Transfer # 93061697J-ENG SEMATECH

State Substate Definition Query for State via

AVAILABLE NOT READY Port is available but is notacccepting reservationsbecause it is currently makinga transition from completingthe loading/unloading ofmaterial or it may beinitializing. This is equivalentto the Alocated to Equipmentstate (See SEMI E30).

READY NOT RESERVED Port is available fordispatching or scheduling, andthe port is not reserved forloading or unloading. This issimilar to the Allocated toEquipment state (See SEMIE30).

boolean isNotReserved ();

READY RESERVED TORECEIVE

Port reserved to receive newmaterial or work. An event istriggered to indicate to thehost that the Port is Allocatedto Load and to indicate thestart of the load once materialis received (See SEMI E30).

booleanisReservedToReceive ();

READY RESERVED TOSEND

Port reserved to send newprocessed material or work.An event is triggered toindicate host when the Porthas reached Allocated toUnload and to indicate thestart of the unload (See SEMIE30).

boolean isReadyToSend ();

254 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Table 21 Port State Transition Table

# Current State Trigger New State Action Comment

1 Unknown Registration of Port NOTAVAILABLE

None Port must bemadeAVAILABLEbefore it can bereserved.

2 NOTAVAILABLE

makeAvailable() oran event generated bythe equipment.

NOT READY This is a state tosynchronize thephysical port. Thehost cannotaccess the Port

At the end of themakeAvaila-ble(), the Porttransitions to theNOTRESERVEDdefault state.

3 AVAILABLE makeUnavailable()or an event generatedby the equipment.

NOTAVAILABLE

Port may be outof service and isbeing removed toavoid schedulingor dispatching.

4 NOT READY Port makes transitionfrom Allocated toequipment to NotAllocated. (SEMIE30)

NOTRESERVED

PortStateChangedEvent published.Waiting for Portto completeinitialization ortransition to theNot Allocatedstate (See SEMIE30).

This is aninternal triggerwhen the Portreaches the NotAllocated state.

5 NOTRESERVED

voidprepareToReceiveMaterial (in TransportJobaTransportJob); sentto reserve the port tobe ready for materialto be deliver.

RESERVED TORECEIVE

PortStateChangedEvent andPortAvailableEvent publishedaccordingly.

Indicates whenthe Porttransitions fromthe Assigned toLoad to the LoadActive state. (SeeSEMI E30)

6 NOTRESERVED

voidprepareToSendMaterial (in TransportGroupaTransportGroup);sent to reserve theport to unloadprocessed material .

RESERVED TOSEND

PortStateChangedEvent andPortAvailableEvent publishedaccordingly.

Indicates whenthe Porttransitions fromthe Assigned toUnload to theUnload Activestate. (See SEMIE30)

CIM Framework Interfaces 255

Technology Transfer # 93061697J-ENG SEMATECH

# Current State Trigger New State Action Comment

7 READY This transition istriggered internallyafter the Portconcluded loading orunloading materialand is Allocated toEquipment.

NOT READY PortStateChangedEvent published

8 READY Transition triggeredby a change ofreservation of thePort. Using theUnreserve() service.

NOT READY None Permitted only ifthe Port has notreached the Loador Unload Activestates (See SEMIE30).

256 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.9.1.8 Interface: MaterialTrackingLocation

Inherited Interface: OwnedEntity

Description: Abstract interface. A MaterialTrackingLocation is a place where Materialmay be held. The "type" of the location is based on the type of Materialthat the location can hold (e.g., locations to hold wafers are of a "Wafer"type and can only hold this Material type). To other components of anMES each machine has one MaterialTrackingLocation of each type. In theSEMI OBEM model a machine may have more than oneMaterialLocation, but this is internal to a machine and not within the MESconcern(or focus anyway). Currently we have discussed the idea of anobject(or of MaterialTrackingLocation as having an attribute of type) thatmay have a Material Tracking Location such as a table or rack, but havenot found a suitable name for this object or interface. TheMaterialTrackingLocation also has a capacity.

Exceptions:

/* Specified value is not valid for this particular attribute. */exception SetValueOutOfRangeSignal { };

/* Material specified in the call is not a valid Material for this MaterialTrackingLocation. */exception InvalidMaterialTypeSignal { };

/* Intent to assign more Material to the MaterialTrackingLocation failed because it is full. */exception MaterialTrackingLocationFullSignal { };

/*Identifier specified in the service has already been used. */exception DuplicateIdentifierSignal { };

/* Units for the MaterialTrackingLocation are not valid. */exception InvalidUnitSignal { };

Published Events: MaterialTrackingLocationMaterialChangedEvent

MaterialTrackingLocationStateChangedEvent

Provided Services:

/*return the Material at the MaterialTrackingLocation, return nil if the location is empty.*/MaterialSequence allMaterialHeld () raises (FrameworkErrorSignal);

/* Set Material type for the MaterialTrackingLocation. */void setMaterial (in Material material)

raises (FrameworkErrorSignal,SetValueOutOfRangeSignal,

InvalidMaterialTypeSignal,MaterialTrackingLocationFullSignal);

/* Get and set the unique identifier for the MaterialTrackingLocation. */string getIdentifier ( ) raises (FrameworkErrorSignal);

void setIdentifier (in string identifier)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal,

DuplicateIdentifierSignal);

CIM Framework Interfaces 257

Technology Transfer # 93061697J-ENG SEMATECH

/*Answer the Machine that holds this MaterialTrackingLocation, return nil if this is aMaterialTrackingLocation with no Machine (e.i., a table or other place). */Machine getMachine ( ) raises (FrameworkErrorSignal);

/*Set the material types that can be held in the MaterialTrackingLocation. For example; if theMaterialTrackingLocation is to hold wafers, the type could be wafer. If it was a particular size ofWafer, the format could be 200mmWafer. This set of types should be standardized on a list ofMaterial formats for each given industry. For the semiconductor industry that set of standardsshould be based on E5. This will usually be not product, but durables like Cassette, SMIF pod,reticle holder etc. */void setUnit (in Unit aMaterialType)

raises(FrameworkErrorSignal, InvalidUnitSignal);

/*Get the units fo the MaterialTrackingLocation. */Unit getUnits ( ) raises (FrameworkErrorSignal);

/*Get the Maximum Capacity for the MaterialTrackingLocation. */long getMaximumCapacity ( ) raises (FrameworkErrorSignal);

/*Get the Available Capacity for the MaterialTrackingLocation. */long getAvailableCapacity ( ) raises (FrameworkErrorSignal);

/*This is a query for the availability status of the MaterialTrackingLocation. Available means theMaterialTrackingLocation has available capacity in which more material could go. */boolean hasAvailableCapacity ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

258 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.9.1.9 Interface: Sensor

Inherited Interface: SupportResource, DataCollector

Description: Sensor is a interface that may or may not be associated with aMachineResource. It can standalone to collect data. For example, thebarometer or humidity detector can be used to collect the information in abay.

Exceptions: None.

Published Events: None.

Provided Services:

/*returns the MachineResource that this Sensor is assigned to, return null if the sensor is notasssigned or is a standalone sensor.*/MachineResource getMachineResource ( ) raises (FrameworkErrorSignal);

Contracted services: None.

Dynamic Model: None.

CIM Framework Interfaces 259

Technology Transfer # 93061697J-ENG SEMATECH

4.9.2 Recipe Management Component

Recipe Management provides a management approach for applying machine recipes across thefactory. Recipes for multiple machines of the same process capability using the same recipesyntax are managed by specializing the recipes based on specific machine settings.

Typically there will only be one Recipe Management System from which recipes will bemanaged and distributed to the processing equipment in the factory. It is also possible that theremay be more than one Recipe Management System that can be used to manage recipes based onarea groupings or types of equipment. The RecipeNamespaceManager of each available RecipeManagement System should be registered in a trader service.

The Recipe Management System is composed of a RecipeNamespaceManager, aRecipeNamespace and a set of managed recipes. Figure 57 represents a view of the RecipeManagement System and its associated components. A RecipeNamespace stores and manages aset of MachineRecipes. There may be multiple RecipeNamespaces registered within aRecipeNamespaceManager, one for each shared set. A RecipeNamespace could manage recipesused for multiple type of machines. Another RecipeNamespace could manage recipes only forone or more machines of the same type. To be recognized by the system, all RecipeNamespacesmust register with a RecipeNamespaceManager. The RecipeNamespaceManager could manageone or more RecipeNamespaces or be associated with just one RecipeNamespace. A traderservice must be available to recognize all the RecipeNamespace Managers found in the factory.

Recipe Management Component (Factory Level)

RecipeNamespace

Manager

RecipeNamespace

MachineRecipe

ComponentManager

NamedEntity

containsmanages

RecipeControl

Transfersrecipesto/from

1+

ProcessMachine associated with

Figure 57 Factory Level Recipe Management

260 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

A ProcessMachine is a type of RecipeControl as a minimum requirement. Thus aProcessMachine is a Recipe Agent in SEMI E42 [SEMI96] terminology. RecipeControl storesrecipes for short term use but these stored recipes are not managed. A ProcessMachine may alsoprovide formal management of process recipes by implementing a RecipeNamespace and aRecipeNamespaceManager. It must be recognized that ProcessMachines receive aMachineRecipe and a set of Machine Specific Data (shown as an interface for illustrationpurposes), which are merged and transfered to the equipment as Execution Recipes. At thefactory level, the Recipe Management System is only concerned with the management andstorage of generic recipes with default parameters. These parameters are overwritten withmachine specific data when the recipe is downloaded to the specific Process Machine. Theattributes set during creation, update, download, and verification of recipes include the recipebody and the default settings - each defined using the OMGCosPropertyService::Property typedef [CosProp]. Property is a Named Valuepair which includes the name and a value of any appropriate type. The collection of parametersare defined as a sequence of Property’s using the OMGCosPropertyService::Properties typedef (some parameter attributes and values arebased on SEMI E42. See the standard for more detail). The Properties includes a machinerecipe descriptor, its body and a set of specific data parameters associated with the selectedprocess machine. They are merged during the download of the recipe.

The Machine Specific Data may reside in the RecipeNamespace, Document Management or bestored at the ProcessMachine. The choice is implementation dependent. There is only one set ofMachine Specific Data associated with a particular Process Machine. RecipeControl can beimplemented as part of the Machine Component or as a part of the Recipe Management System.Recipe Management at the Machine Management Component includes the RecipeControlinterface. Note that the implementer may choose to implement a complex system withadditional interfaces for recipe management as part of the Machine Management Component orimplement a separate and independent interfaces for recipe management. The Recipe Agentmay contain a RecipeNamespace Manager, RecipeNamespace and a RecipeControl, or just aRecipeControl in the simplest case.

It must be noted that it was initially chosen to include the ProcessResources to inherit fromRecipeControl to include the case where you have a cluster tool that is capable of managing itsown recipes at the process module level. However, this proposal includes the scope of theRecipe Controller only at the ProcessMachine Level. A given cluster tool implementation couldalso provide RecipeControl interfaces, but it is not required by the CIM Framework.

CIM Framework Interfaces 261

Technology Transfer # 93061697J-ENG SEMATECH

4.9.2.1 Interface: MachineRecipe

Inherited Interface: NamedEntity

Description: A MachineRecipe is an object that contains the attributes, that includeinformation needed to manage the recipe, variable parameter definitions,and the recipe body. The recipe contents include the pre-planned andreusable settings and instructions to the machine that determines theprocessing required for the material in the process resource. Recipes maybe classified according to their syntax and/or function.

Exceptions:

Published Events: None.

Provided Services:

/* Get the recipe identifier. */RecipeIdentifier getRecipeIdentifier( ) raises (FrameworkErrorSignal);

/* Get the recipe contents. For additional detail on the structure of the recipe contents refer toSEMI E42. */Properties getRecipeContents( ) raises (FrameworkErrorSignal);

/* Get the recipe’s verified state. The setting of this parameter is implementation dependent butmust comply with the behavior stated in the RMS Standard (See SEMI E42 for more detail). */boolean isRecipeVerified( ) raises (FrameworkErrorSignal);

/* Get the recipe protection status. The setting of this parameter is implementation dependent butmust comply with the behavior stated in the RMS Standard (See SEMI E42 for more detail). */boolean isRecipeProtected( ) raises (FrameworkErrorSignal);

/* Get the recipe approval status. The setting of this parameter is implementation dependent butmust comply with the behavior stated in the RMS Standard (See SEMI E42 for more detail). */short getRecipeApproval( ) raises (FrameworkErrorSignal);

/* Get the recipe certification status. The setting of this parameter is implementation dependentbut must comply with the behavior stated in the RMS Standard (See SEMI E42). */short getRecipeCertification( ) raises (FrameworkErrorSignal);

/* Get and set the estimate of the time the nominal recipe requires to run. */Duration getRecipeEstimatedRunTime( ) raises (FrameworkErrorSignal);

void setRecipeEstimatedRunTime(in Duration aRunTime)

raises (FrameworkErrorSignal, SetValueOutOfRangeSignal);

Contracted Services: None.

Dynamic Model: None.

262 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.9.2.2 Interface: RecipeNamespaceManager

Inherited Interface: ComponentManager

Description: A RecipeNamespaceManager manages RecipeNamespaces that may beshared across multiple ProcessMachines with the same recipe syntax. Fordetailed description of recipe namespace manager, see SEMI E42-96 orlater.

Exceptions:

/* A request to locate a RecipeNamespace has failed. */exception RecipeNamespaceNotFoundSignal {RecipeNamespace aRecipeNamespace;};

/* A request to delete a RecipeNamespace has failed. */exception RecipeNamespaceNotAssignedSignal {RecipeNamespace aRecipeNamespace;};

/* A request to delete a RecipeNamespace has failed. */exception RecipeNamespaceRemovalFailedSignal {RecipeNamespace aRecipeNamespace;};

/* A request to delete a RecipeNamespace has failed because it was not empty.*/exception RecipeNamespaceNotEmptySignal {RecipeNamespace aRecipeNamespace;};

/* A specified process machine is not assigned to a RecipeNamespace. */exception ProcessMachineNotAssignedSignal {ProcessMachine aProcessMachine;} ;

Published Events: None.

Provided Services:

/* Create managed RecipeNamespace. */RecipeNamespace createRecipeNamespace(in string identifier)

raises (FrameworkErrorSignal, DuplicateIdentifierSignal);

/* Remove managed RecipeNameSpace. */void removeRecipeNamespace(in RecipeNamespace aRecipeNamespace)

raises (FrameworkErrorSignal, RecipeNamespaceNotEmptySignal,

RecipeNamespaceNotAssignedSignal,

RecipeNamespaceRemovalFailedSignal);

/* Get RecipeNamespace by name. */RecipeNamespace getRecipeNamespaceByName(in string identifier)

raises (FrameworkErrorSignal, RecipeNamespaceNotFoundSignal);

/* Get all RecipeNamespaces managed. */RecipeNamespaceSequence getAllRecipeNamespaces ( ) raises (FrameworkErrorSignal);

/* Get RecipeNamespace for ProcessMachine. */RecipeNamespace getRecipeNamespaceForProcessMachine

(in ProcessMachine aProcessMachine)

raises (FrameworkErrorSignal, ProcessMachineNotAssignedSignal,

RecipeNamespaceNotFoundSignal);

CIM Framework Interfaces 263

Technology Transfer # 93061697J-ENG SEMATECH

/* Get ProcessMachines for RecipeNamespace. Returns NULL if no ProcessMachine has beenassigned. */ProcessMachineSequence getProcessMachineForRecipeNamespace

(in RecipeNamespace aRecipeNamespace)

raises (FrameworkErrorSignal, RecipeNamespaceNotFoundSignal);

Contracted Services: None.

Dynamic Model : None.

264 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.9.2.3 Interface: RecipeNamespace

Inherited Interface: NamedEntity

Description: A RecipeNamespace is a repository for managing MachineRecipes thatmay be shared across multiple ProcessMachines that use the same recipesyntax and semantics. A RecipeNamespace may be provided by aRecipeNamespaceManager as well as by the ProcessMachine. The laterscenario is not included in this document since it is implementationdependent.

Exceptions:

/* A specified recipe was not found.*/exception RecipeNotFoundSignal {RecipeIdentifier aRecipeIdentifier; } ;

exception RecipeOutOfDateSignal {RecipeIdentifier aRecipeIdentifier;};

/* A request to add a ProcessMachine to a RecipeNamespace has failed. */exception ProcessMachineDuplicateSignal {ProcessMachine aProcessMachine;};

/* A request to remove a ProcessMachine from a RecipeNamespace has failed. */exception ProcessMachineRemovalFailedSignal {ProcessMachine aProcessMachine;};

/* A specified process machine is not assigned to a RecipeNamespace. */exception ProcessMachineNotAssignedSignal{ProcessMachine aProcessMachine;} ;

exception ProcessMachineNotFoundSignal { };

/* An attempt was made to change or delete a protected recipe.*/exception RecipeProtectedSignal {RecipeIdentifier aRecipeIdentifier;} ;

/* A requested operation (link, verify, download, upload) failed.*/exception RecipeOperationFailedSignal {RecipeIdentifier aRecipeIdentifier;} ;

/* A request to delete a MachineRecipe has failed because it was not assigned. */exception MachineRecipeNotAssignedSignal {MachineRecipe aMachineRecipe;};

/* A request to delete a MachineRecipe has failed because it did not exist or it was protected. */exception MachineRecipeRemovalFailedSignal {MachineRecipe aMachineRecipe;};

Published Events:

/* Recipe attribute parameter(s) have changed and must inform to updateusage. */RecipeParameterChangedEvent

Provided Services:

/* Add ProcessMachine to RecipeNamespace. */void addProcessMachine(in ProcessMachine aProcessMachine)

raises (FrameworkErrorSignal, ProcessMachineDuplicateSignal);

/* Remove ProcessMachine From RecipeNamespace. */void removeProcessMachine(in ProcessMachine aProcessMachine)

raises(FrameworkErrorSignal, ProcessMachineNotAssignedSignal,

ProcessMachineRemovalFailedSignal);

CIM Framework Interfaces 265

Technology Transfer # 93061697J-ENG SEMATECH

/* Get all ProcessMachines assigned to the RecipeNamespace. */ProcessMachineSequence getProcessMachines( ) raises (FrameworkErrorSignal);

/* Create a recipe in the RecipeNamespace with the given contents including the recipe body.This method does not specify the mechanics of the creation that may involve the storage of therecipe in a managed document repository. For detail information on the recipe contents refer toSEMI E42.*/MachineRecipe createRecipe(in RecipeIdentifier aRecipeIdentifier,

in Properties aMachineRecipeContent)

raises (FrameworkErrorSignal, DuplicateIdentifierSignal,

RecipeOperationFailedSignal);

/* Add a MachineRecipe to the set of machine recipes in the RecipeNamespace. */void addMachineRecipe(in MachineRecipe aMachineRecipe,

in RecipeIdentifier newRecipeIdentifier)

raises (FrameworkErrorSignal, DuplicateIdentifierSignal,

RecipeOperationFailedSignal);

/* Update an existing recipe with the given contents. The behavior of this interface is based onbusiness rules. This method is provided to update recipe contents in the RecipeNamespace. Itsbehavior is not the same as the one used to update parameter settings in the selected recipe forthe process job. */void updateRecipe(in MachineRecipe aMachineRecipe,

in Properties aMachineRecipeContents)

raises (FrameworkErrorSignal, RecipeProtectedSignal,

RecipeOperationFailedSignal);

/* Get a recipe from a RecipeNamespace or from a document specification as appropriate.*/MachineRecipe getMachineRecipe(in RecipeIdentifier aRecipeIdentifier)

raises (FrameworkErrorSignal, RecipeNotFoundSignal,

RecipeOutOfDateSignal);

/* Delete recipes from RecipeNamespace.*/void deleteRecipe(in MachineRecipe aMachineRecipe)

raises (FrameworkErrorSignal, RecipeProtectedSignal,

MachineRecipeNotAssignedSignal,

MachineRecipeRemovalFailedSignal);

/* Download a recipe from the RecipeNamespace into the Process Machine storage.*/void downloadRecipeToMachine

(in RecipeIdentifier aRecipeIdentifier,

in ProcessMachine aProcessMachine)

raises (FrameworkErrorSignal, RecipeOperationFailedSignal,

ProcessMachineNotFoundSignal) ;

/* Upload a recipe from the Recipe Control on a specific ProcessMachine and store in theRecipeNamespace. The creation or update of the uploaded recipe is based on business rules.*/void uploadRecipeFromMachine

(in RecipeIdentifier aRecipeIdentifier,

in ProcessMachine aProcessMachine)

raises (FrameworkErrorSignal, RecipeNotFoundSignal,

ProcessMachineNotFoundSignal);

266 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Check the version of a Recipe from the ProcessMachine. */boolean checkVersion(in string aVersion,

in RecipeIdentifier aRecipeIdentifier)

raises(FrameworkErrorSignal, RecipeNotFoundSignal,

RecipeOperationFailedSignal);

Contracted Services: None.

Dynamic Model : None.

CIM Framework Interfaces 267

Technology Transfer # 93061697J-ENG SEMATECH

4.9.2.4 Interface: RecipeControl

Inherited Interface: NamedEntity

Description: Abstract interface implemented with the Machine Group. A RecipeControltransfers, stores, and controls recipes for a ProcessMachine. It is the onlyobject that is guaranteed to understand the recipe and its contents (bodyplus parameter attributes). It verifies the recipe syntax, select recipes, andprepare them for execution. The update of parameters requires calls tooperations on the ProcessMachineJob for the ProcessMachine using theRecipeControl interfaces.

Exceptions:

/* A recipe download request fails because it was out of date. */exception RecipeOutOfDateSignal {RecipeIdentifier aRecipeIdentifier;};

/* A specified recipe was not found.*/exception RecipeNotFoundSignal {RecipeIdentifier aRecipeIdentifier; } ;

/* An attempt was made to change or delete a protected recipe.*/exception RecipeProtectedSignal {RecipeIdentifier aRecipeIdentifier;} ;

/* A requested operation (link, verify, download, upload) failed.*/exception RecipeOperationFailedSignal {RecipeIdentifier aRecipeIdentifier;} ;

/* A request to get a RecipeNamespace has failed. */exception RecipeNamespaceNotAssignedSignal {RecipeNamespace aRecipeNamespace;};

exception RecipeNamespaceAlreadyAssignedSignal {RecipeNamespace aRecipeNamespace;};

Published Events: None.

Provided Services:

/* Set and get default (internal) RecipeNamespace to be used by this Recipe Control. */void setDefaultRecipeNamespace(in RecipeNamespace aRecipeNamespace)

raises(FrameworkErrorSignal, RecipeNamespaceAlreadyAssignedSignal);

RecipeNamespace getDefaultRecipeNamespace( )

raises (FrameworkErrorSignal, RecipeNamespaceNotAssignedSignal);

/* Set and get (external) RecipeNamespace to be used by this Recipe Control. */void setRecipeNamespace(in RecipeNamespace aRecipeNamespace)

raises(FrameworkErrorSignal, RecipeNamespaceAlreadyAssignedSignal);

RecipeNamespace getRecipeNamespace( )

raises (FrameworkErrorSignal, RecipeNamespaceNotAssignedSignal);

/* Check the version of a Recipe from the ProcessMachine. */boolean checkVersion(in string aVersion,

in RecipeIdentifier aRecipeIdentifier)

raises(FrameworkErrorSignal, RecipeNotFoundSignal,

RecipeOperationFailedSignal);

268 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Delete one or more stored recipes from the ProcessMachine. */void deleteRecipe(in RecipeIdentifier aRecipeIdentifier)

raises (FrameworkErrorSignal, RecipeProtectedSignal);

/* Verify the syntax of the body of a stored recipe before execution for valid parameter settingdefinition included in the body of this recipe. */boolean verifyRecipe( in RecipeIdentifier aRecipeIdentifier)

raises (FrameworkErrorSignal, RecipeOperationFailedSignal);

/* Download a recipe from the RecipeNamespace into the ProcessMachine using the specificProperties for that ProcessMachine. */void downloadRecipe

(in RecipeIdentifier aRecipeIdentifier,

in Properties aMachineRecipeContents)

raises (FrameworkErrorSignal, RecipeOperationFailedSignal,

RecipeOutOfDateSignal);

/* Upload a recipe from ProcessMachine. */Properties uploadRecipe( in RecipeIdentifier aRecipeIdentifier)

raises (FrameworkErrorSignal, RecipeNotFoundSignal,

RecipeOperationFailedSignal);

/* Select recipe to be used in the next process run. This is intended primarily for PMs, quals,engineering runs, etc.*/void selectRecipe ( in RecipeIdentifier aRecipeIdentifier)

raises (FrameworkErrorSignal, RecipeNotFoundSignal,

RecipeOperationFailedSignal);

/* Start the recipe for execution. This allows parameters settings to be updated by APC oroperator for the process job in conjunction with autostart disabled. /*void executeRecipe ( in RecipeIdentifier aRecipeIdentifier,

in Properties aRecipeParameters)

raises (FrameworkErrorSignal, RecipeNotFoundSignal,

RecipeOperationFailedSignal);

/* Deselect recipe used from Process Machine. */void deselectRecipe ( in RecipeIdentifier aRecipeIdentifier)

raises (FrameworkErrorSignal, RecipeNotFoundSignal,

RecipeOperationFailedSignal);

Contracted Services: None.

Dynamic Model : None.

CIM Framework Interfaces 269

Technology Transfer # 93061697J-ENG SEMATECH

4.9.3 Resource Tracking Component

The Resource Tracking Component is used to aid in the support of defining, scheduling, andtracking SupportResources and their maintenance. SupportResources are the software reflectionof physical equipment and fixtures such as reticles. Some relationships to interfaces outside thegroup are also displayed. The Resource tracking manager monitors factory events to determinestatus of SupportResources in regards to their PM requirements.

Resource TrackingComponent

JobSupervisor

PMSpecification

DocumentRevision

SupportResource

FactorySupervisor

Person

defines

assigned to

stored in

ResourceTrackingManager

ComponentManager

compareswith PMinterval

informsPM

Activitydue

PM Job

performs

requests PMJob

reserves resource for PM

Figure 58 Resource Tracking Information Model

270 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.9.3.1.1 Interface: ResourceTrackingManager

Inherited Interface: ComponentManager, JobSupervisor

Description: The Resource Tracking Manager manages a list of Support Resources andassociated PM Specifications. Its interfaces provide mechanisms fortracking and informing when maintenance is needed for a supportresource.

Exceptions:

/* Specified SupportResource was not found. */exception SupportResourceNotFoundSignal { };

/* SupportResource has already been assigned. */exception SupportResourceAlreadyAssignedSignal { };

/* SupportResource has not been assigned to this manager. */exception SupportResourceNotAssignedSignal { };

exception SupportResourceDuplicateSignal { };

exception SupportResourceRemovalFailedSignal { };

exception PMSpecificationNotFoundSignal { };

Published Events:

/*Inform Factory that a PMActivity is due now. */PMActivityStateChangedEvent

/* Inform that the PMSpecification for the specified SupportResource haschanged for future PMActivity monitoring. */PMSpecificationChangedEvent

Provided Services:

/* Answer the support resources for which a PM activity is due now. Returns NULL if no PM isnow due.*/SupportResourceSequence allPMActivitiesDueNow( ) raises (FrameworkErrorSignal);

/*Find all PMActivities due for allSupportResources for which the ResourceTrackingManager isresponsible for during a designated time period.*/PMActivitySequence allPMActivitesDuringDuration(in TimeWindow aTimeWindow)

raises (FrameworkErrorSignal, TimePeriodInvalidSignal);

/*Find all PMActivities due for allSupportResources in a particular area and for which theResourceTrackingManager is responsible for during a designated time period. Returns NULL ifno PM is due.*/PMActivitySequence allAreaPMActivitesDuringDuration

(in Area anArea, in TimeWindow aTimeWindow)

raises (FrameworkErrorSignal, TimePeriodInvalidSignal);

/*Find all PMActivities due right now for allSupportResources in a particular area and for whichthe ResourceTrackingManager is responsible for. Returns NULL if no PM is due.*/PMActivitySequence allAreaPMActivitesDueNow(in Area anArea)

raises (FrameworkErrorSignal);

CIM Framework Interfaces 271

Technology Transfer # 93061697J-ENG SEMATECH

/*Answer the number of wafers or runs able to be processed before a PMActivity is due for aparticular SupportResource.*/Units findNumberOfUnitsUntilPM (in SupportResource aSupportResource,

in PMSpecification aPMSpecification)

raises (FrameworkErrorSignal, SupportResourceNotAssignedSignal);

/*Answer the time before a PMActivity is due for a particular SupportResource. This may beraw time or the internal logic may calculate the time based on the expected amount of Processtime.*/Duration findTimeUntilPM (in SupportResource aSupportResource,

in PMSpecification aPMSpecification)

raises (FrameworkErrorSignal, SupportResourceNotAssignedSignal);

/*Answer the units processed since the last preventative maintenance task was performed.*/Units unitsProcessedSinceLastPM (in SupportResource aSupportResource)

raises (FrameworkErrorSignal);

/*The time since the last PM, may be raw time or run time.*/Duration timeSinceLastPM (in SupportResource aSupportResource)

raises (FrameworkErrorSignal);

/*Find all the PMActivities due now for a particular SupportResource. Returns NULL if no PMis due.*/PMActivitySequence allSupportResourcePMActivitiesDueNow

(in SupportResource aSupportResource)

raises (FrameworkErrorSignal, SupportResourceNotAssignedSignal);

/*Find all PMActivities due for designated time period for the paticular SupportResource*/PMActivitySequence allPMActivitiesForPeriod

(in SupportResource aSuppportResource,

in TimeWindow aTimeWindow)

raises (FrameworkErrorSignal, SupportResourceNotAssignedSignal,

TimePeriodInvalidSignal);

/* Add a SupportResource to the set of SupportResources(s) for which theResourceTrackingManager tracks the PM interval. */void addSupportResource (in SupportResource aSupportResource)

raises (FrameworkErrorSignal, SupportResourceAlreadyAssignedSignal,

SupportResourceDuplicateSignal);

/* Remove a SupportResource from the set of SupportResource for which theResourceTrackingManager tracks the PM interval. */void removeSupportResource (in SupportResource aSupportResource)

raises (FrameworkErrorSignal, SupportResourceNotAssignedSignal,

SupportResourceRemovalFailedSignal);

/* Answer a sequence of all SupportResources for which the ResourceTrackingManager tracksthe PM interval. Returns NULL if no SupportResources. */SupportResourceSequence allSupportResources ( ) raises (FrameworkErrorSignal);

SupportResource findSupportResourceNamed (in string aSupportResource)

raises (FrameworkErrorSignal, SupportResourceNotAssignedSignal,

SupportResourceNotFoundSignal) ;

272 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Inform PMActivity complete. */void informPMActivityComplete(in PMActivity aPMActivity)

raises (FrameworkErrorSignal);

/* Inform the PMActivity started. */void informPMActivityStarted(in PMActivity aPMActivity)

raises (FrameworkErrorSignal);

/* Increment the units run in this PM interval. */void incrementQuantityBy (in long count,

in Unit unittypes, in SupportResource aSupportResource)

raises (FrameworkErrorSignal);

/* Increment the Process Time during this PM Interval. */void incrementProcessTimeBy (in Duration aDuration,

in SupportResource aSupportResource)

raises (FrameworkErrorSignal);

/*Gives a list of all PMSpecifications that this particular ResourceTrackingManager is awareof.*/PMSpecificationSequence allPMSpecifications ( ) raises (FrameworkErrorSignal);

/*Find a PMSpecification by name. */PMSpecification findPMSpecificationNamed (in string identifier)

raises (FrameworkErrorSignal, PMSpecificationNotFoundSignal) ;

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 273

Technology Transfer # 93061697J-ENG SEMATECH

4.9.3.1.2 Interface: PMSpecification

Inherited Interface: NamedEntity

Description: The PMSpecification is an interface that documents the Maintenanceschedule for SupportResources. The creation of PMSpecificaton isinternal to the component. The component uses document and versionmanagement to control the document. The eventSuppportResourceAddedEvent indicates changes in the PM requirementsof the SupportResource.

Exceptions:

/* SupportResource has already been assigned to this PMSpecification. */exception SupportResourceAlreadyAssignedSignal { };

/* Specified SupportResource has not been assigned to this PMSpecification. */exception SupportResourceNotAssignedSignal { };

exception SupportResourceDuplicateSignal { };

exception SupportResourceRemovalFailedSignal { };

exception SupportResourceNotFoundSignal { };

Published Events:

/* A new PMSpecification has been created for this SupportResource. */PMSpecificationCreatedEvent

/* A SupportResource has been added to the collection of resources thisPMSpecification serves. */SupportResourceAddedEvent

Provided Services:

/*Add or remove a SupportResource from the list of SupportResources with thisPMSpecification. */void addSupportResource(in SupportResource aSupportResource)

raises (FrameworkErrorSignal, SupportResourceDuplicateSignal);

void removeSupportResource(in SupportResource aSupportResource)

raises (FrameworkErrorSignal, SupportResourceNotAssignedSignal,

SupportResourceRemovalFailedSignal);

/* Get all SupportResources with this PMSpecification. Returns NULL is no SupportResourcesare assigned. */SupportResourceSequence allSupportResources( ) raises (FrameworkErrorSignal);

SupportResource findSupportResourceNamed (in string aSupportResource)

raises (FrameworkErrorSignal, SupportResourceNotAssignedSignal,

SupportResourceNotFoundSignal) ;

/*Returns the document revision for the PMSpecification.*/DocumentRevision getDocumentRevision( ) raises (FrameworkErrorSignal);

274 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Get all PM definitions for this PM Specification Returns NULL if no PMDefinitions areassigned. */PMDefinitionSequence allPMDefinitions( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 275

Technology Transfer # 93061697J-ENG SEMATECH

4.9.3.1.3 Interface: PMJob

Inherited Interface: Job

Description: The PMJob interface is used to track and start Maintenance.

Exceptions: None.

Published Events:

/* Inform that the PMJob state has changed. */PMJobStateChangedEvent

Provided Services:

/* Get the SupportResources to be worked on for this PMJob. Returns NULL if noSupportResources are assigned.*/SupportResourceSequence getSupportResource ( ) raises (FrameworkErrorSignal);

/* Get the persons assigned to work on this PMJob Returns NULL if no Persons are assigned.*/PersonSequence getPersons ( ) raises (FrameworkErrorSignal);

/* Get the PMActivity that spurred this PMJob. Note: This is as equivalent to theProcessOperationSpecification used in ProcessMachineJob. */PMActivity getPMActivity ( ) raises (FrameworkErrorSignal);

/*Additional JobSpecification Parameters

Name Value Type Description

PMActivity PMActivity Details time required for PMSand the description of the task,the skills needed to perform andthe type of PM

Persons PersonSequence Persons assigned to perform thejob

SupportResource SupportResource Object requiring PM

*/

Contracted Services: None.

Dynamic Model: Same as Inherited Interface.

276 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.10 Advanced Process Control Group

The Advanced Process Control Group provides the capability to integrate supervisory controlfunctions with the factory CIM system using a small set of component interfaces provided by anequally small set of classes. The components are defined principally along boundaries wheresuppliers are anticipated to offer to provide products meeting the needs of process control in thefactory. However, several component boundaries are drawn to allow implementers freedom tolocate processes in multiple servers without cutting component boundaries. This is arbitrary, asthere is nothing in the CIM Framework Specification that prevents a component from consistingof multiple processes running on different servers; however, commonly a provider will wish tomaintain component integrity in an implementation. It is anticipated that some suppliers mayoffer multiple components, perhaps all of the components specified in this group. The componentboundaries provide the customer flexibility to use multiple suppliers’ products even when theprincipal supplier provides a conformant component.

The scope of the group is at the supervisory level, meaning this is a CIM specification, not aspecification for tool-level, real-time control. The interfaces proposed support a controlgranularity of no finer than wafer-to-wafer adjustments, and such APC applications as faultdetection and classification and run-to-run feedback and feedforward control spanning one ormore process tools or modules. Specifications of other organizations address that more fine-grained control domain. The interfaces are very high-level such that a factory CIM system cancommunicate with a tool or set of tools providing process control unaware of the details of howthat control is carried out.

ControlExecutor

PluginManagement

ControlManager

MachineGroup

PluginExecutor

ControlDataBase

provides controlstrategies

provides plugins

execute plug-ins

stores short-termcontrol data

requests processcontrol actions

History

storeshistorical data

providesplugincontext

Figure 59 Advanced Process Control Group

CIM Framework Interfaces 277

Technology Transfer # 93061697J-ENG SEMATECH

The APC Group utilizes the JobSupervision abstract interfaces to manage control activities.Control activities are requested of this Group by dispatching a Job Request to theControlExecutionManager, which inherits the interface of a JobSupervisor. A specialization ofthe Job interface, in the form of a ControlExecutor, is created to carry out the activities of therequested control job.

This specification assumes that the OMG Trading Object Service [CosTrade] is utilized by theCIM Framework. In general, this service facilitates the offering and the discovery of instances ofservices of particular types. A trader is an object through which other objects can advertise theircapabilities and match their needs against advertised capabilities. Advertising a capability oroffering a service is called export. Matching against needs or discovering services is calledimport. In the Process Control specification, Control Strategies include the definition ofcapabilities that are required of component instances to carry out execution of those strategies.Component instances, such as a Plugin Executor will export to the trader a service type ofPlugInExecutor and a property of Matlab, for example, if the PluginExecutor is capable ofexecuting Matlab plugins. The Control Executor Manager, upon initial examination orsubsequent execution of the Control Strategy, will obtain a sequence of offers or objectreferences to capable Plugin Executors by importing a service type of PlugInExecutor and aconstraint of Matlab. The Control Executor Manager may choose from this sequence of capablePlugin Executor offers.

It is also assumed that the Control Management and Plugin Management components willinvolve document management and versioned objects. For example, the Control Managermanages Control Strategy objects. There may be multiple versions of a particular ControlStrategy object. The issue of how to provide version control, signoff, and effectivity are issuesthat will be addressed at some point by the Specification Management Focus Team. This designmay be influenced by the OMG Product Data Management Enablers Request For Proposal(RFP). Initial submissions to this RFP have been received and are being reviewed by the OMG.Revised submissions are schedule for January, 1998. Subsequent Specification ManagementFocus Team version control specifications will likely impact the design of this group. Until thistime, Process Control specifications do not explicitly provide document management and versioncontrol interfaces.

278 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.10.1 Plugin Management Component

The Plugin Management Component provides management and retrieval for control plugins. Itconsists of two interfaces that cooperate to implement control algorithms in the CIM system. Theflexibility is present to employ algorithms developed using third-party tools know by controlengineers or to utilize algorithms from a restricted set known only internally to the system.

PLUGIN MANAGEMENT

ComponentManager

Plugin

PluginFactory

PluginManager

creates, deletes

manages

Figure 60 Plugin Management Component Information Model

CIM Framework Interfaces 279

Technology Transfer # 93061697J-ENG SEMATECH

4.10.1.1 Interface: PluginFactory

Inherited Interface: NamedEntity

Description: The PluginFactory provides interfaces required to create a plugin, lookup aspecific plugin, or to provide a sequence of plugin descriptions (may beused by configuration GUI).

Exceptions:

/* Plugin removal requested failed. */exception PluginRemovalFailedSignal {pluginName apluginName;};

/* Plugin requested was not found. */exception PluginNotFoundSignal {pluginName apluginName;};

/* Plugin not created successfully. */exception CreatePluginFailedSignal {PluginSpecification aPluginSpecification ; } ;

Published Events: None.

Provided Services:

/* Create a Plugin and associate it into the system. */void createPlugin (in PluginSpecification aPluginSpecification,

in PluginContents aPluginContents )

raises (FrameworkErrorSignal, CreatePluginFailedSignal ) ;

/*Provides a Plugin object given a pluginName. */Plugin lookupPlugin (in pluginName apluginName)

raises (FrameworkErrorSignal, PluginNotFoundSignal) ;

/* Provides a sequence of plugin descriptions that are defined in the component.

Specification of how many plugin descriptions to return may be provided. */PluginDescriptionSequence describePlugins (in long maxReturned)

raises (FrameworkErrorSignal);

void removePlugin (in pluginName aPluginName)

raises (FrameworkErrorSignal, PluginRemovalFailedSignal);

Contracted Services: None.

Dynamic Model: None.

280 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.10.1.2 Interface: PluginManager

Inherited Interface: ComponentManager

Description: The PluginManager is responsible for supporting the registration andcontrol (enabling/disabling) of this component. It provides an interface toprovide a factory.

Exceptions: None.

Provided Services:

/* Allows the engineer doing the configuration or importing of a Plugin to get a reference to therequired factory. At runtime the PluginExecutor uses this method to get the factory for doinglookup. */PluginFactory getPluginFactory ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 281

Technology Transfer # 93061697J-ENG SEMATECH

4.10.1.3 Interface: Plugin

Inherited Interface: NamedEntity

Description: The Plugin encapsulates the code to do a specific control calculationaccording to a specific algorithm. The Plugin is intended to be used toincorporate algorithms developed on third-party platforms into the CIMenvironment for use in process control applications for a semiconductorfab. The universe of Plugins available to the CIM system can be eitherclosed or open depending on the operating philosophy of the customer.

Exceptions:

/* No contents are defined for this plugin for the specified type. */exception NoContentForTypeSignal {PluginContentType aType ; } ;

Published Events: None.

Provided Services:

/* Provides a sequence of plugin contents (executable algorithm, source algorithm, etc. definedfor this plugin. */PluginContents getAllContents ( ) raises (FrameworkErrorSignal);

/*Provides plugin contents for this plugin for a given contents type. */PluginContents getContentByType (in PluginContentType aPluginContentType)

raises (FrameworkErrorSignal, NoContentForTypeSignal);

/* Returns the PluginSpecification for this plugin. Among other things, it provides capabilitiesrequired of plugin executors to execute this plugin. The control executor will obtain a capableplugin executor by querying the trader. */PluginDescription getDescription ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

282 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.10.2 Plugin Execution Component

The information model, Figure 61, shows the relationship between the PluginExecutor and thePlugin Management Component.

PLUGIN EXECUTION

ComponentManager

Plugin PluginExecutor

is executed by

Figure 61 Plugin Execution Component Information Model

CIM Framework Interfaces 283

Technology Transfer # 93061697J-ENG SEMATECH

4.10.2.1 Interface: PluginExecutor

Inherited Interface: ComponentManager

Description: The PluginExecutor provides execution environments for applicationplugins. This is isolated as a component to allow suppliers of Pluginproducts to build custom versions to handle their products for Frameworkapplications. In a typical implementation scenario, the control executorwould be the user of the services of the plugin executor described below.The plugin object would contain a specification of the capabilities a pluginexecutor must provide to execute the plugin. Using this specification, thecontrol executor would find a plugin executor with the requiredcapabilities using an OMG compliant Trader Service.

Exceptions:exception UnableToSetupSignal {string msg; Plugin aPlugin ; } ;

exception UnableToExecuteSignal {string msg; PluginHandle aPluginHandle ; } ;

exception BadPluginHandleSignal {string msg; PluginHandle aPluginHandle; } ;

exception UnableToUnSetupSignal {string msg; Plugin aPlugin ; } ;

Published Events: None.

Provided Services:

/* Prepares a plugin and its execution environment for execution. */PluginHandle setupPlugin (in Plugin aPlugin)

raises (FrameworkErrorSignal, UnableToSetupSignal);

/* Executes the previously setup plugin and returns the data result. */ControlValues executePlugin (in PluginHandle aPluginHandle,

in PerformanceData aPerformanceData)

raises (FrameworkErrorSignal,

UnableToExecuteSignal, BadPluginHandleSignal);

/* Removes the plugin and eliminates all traces of the previously setup plugin from the executionenvironment. */void unsetupPlugin (in PluginHandle aPluginHandle)

raises (FrameworkErrorSignal,

BadPluginHandleSignal, UnableToUnSetupSignal);

Contracted Services: None.

Dynamic Model: None.

284 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.10.3 Control Management Component

This component contains and manages the objects that describe and direct process control. Adescription of the operations for control are encapsulated in the ControlStrategy object. TheRunningStrategy contains a copy of (or pointer to) a ControlStrategy. The RunningStrategy usesits copy to provide process control operation tracking to the ControlExecutor. The ControlManagement Component interface provides methods for creation, lookup, status, and control toother components.

CONTROL MANAGEMENT

ComponentManager

*

is provided by is held by

provides

RunningControlStrategyFactory

ControlStrategy

RunningControlStrategy

ControlManager

ControlStrategyFactory

selects

creates

creates, deletes

Figure 62 Control Management Component Object Model

CIM Framework Interfaces 285

Technology Transfer # 93061697J-ENG SEMATECH

4.10.3.1 Interface: ControlManager

Inherited Interface: ComponentManager

Description: This provides the interface for managing the Control Managementcomponent, as well as looking up the Factories for ControlStrategies andRunningControlStrategies. This interface also provides methods foraccessing or selecting a RunningControlStrategy at run-time based uponthe context of the run.

Exceptions:exception NoRunningControlStrategyForContextSignal

{string errorMsg; ExecutionContext theContext ; } ;

exception NoRunningControlStrategyForIDSignal

{string errorMsg; ExecutionContext theContext ; } ;

Published Events: None.

Provided Services:

/* Return the Factory. */ControlStrategyFactory getControlStrategyFactory ( )

raises (FrameworkErrorSignal);

RunningControlStrategyFactory getRunningControlStrategyFactory ( )

raises (FrameworkErrorSignal);

/* This method returns a RunningControlStrategy selected based upon the ExecutionContextpassed. */RunningControlStrategy selectStrategy (in ExecutionContext aContext)

raises (FrameworkErrorSignal, NoRunningControlStrategyForContextSignal);

/* This method aborts a RunningControlStrategy using the RunningControlStrategy’s unique ID.*/void abortRunningControlStrategy

(in RunningControlStrategyID theRunningControlStrategyID )

raises (FrameworkErrorSignal, NoRunningControlStrategyForIDSignal);

Contracted Services: None.

Dynamic Model: None.

286 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.10.3.2 Interface: ControlStrategyFactory

Inherited Interface: NamedEntity

Description: The ControlStrategyFactory interface provides the means for a processengineer to configure the ControlStrategy with its implementation objectsand make the new ControlStrategy known to the system.

Exceptions:exception UnableToCreateSignal

{ControlStrategyDescription aDescription;

Contents aContents; ContextSpec aSpec;};

exception NoControlStrategyNamedSignal {ControlStrategyName aName;};

exception DuplicateNameSignal {ControlStrategyName aName;};

Published Events: None.

Provided Services:

/* Creates a ControlStrategy. */ControlStrategy createControlStrategy

(in ControlStrategyDescription ControlStrategyDescription,

in Contents aContents, in ContextSpec aContextSpec )

raises (FrameworkErrorSignal,

UnableToCreateSignal, DuplicateNameSignal);

/* Looks-up a ControlStrategy based upon its unique name. */ControlStrategy lookupControlStrategy (in ControlStrategyName aName)

raises (FrameworkErrorSignal, NoControlStrategyNamedSignal);

/* Returns a sequence of ControlStrategyDescriptions, up to maxNumberReturned. */ControlStrategyDescriptionSequence describeControlStrategies

(in long maxNumberReturned)

raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 287

Technology Transfer # 93061697J-ENG SEMATECH

4.10.3.3 Interface: RunningControlStrategyFactory

Inherited Interface: NamedEntity

Description: The RunningControlStrategyFactory interface provides the means to findand access the running control strategies that are managed by the ControlManager at a specific point in time.

Exceptions:exception NoRunningControlStrategyWithIDSignal {RunningControlStrategyID anID;};

exception NoRunningControlStrategyForNameSignal {ControlStrategyName aName;};

exception NoRunningControlStrategyForExecutionContextSignal

{ExecutionContext aContext;};

Published Events: None.

Provided Services:

/* Looks up a RunningControlStrategy based upon its unique ID. */RunningControlStrategy lookupRunningControlStrategyByID

(in RunningControlStrategyID anID)

raises (FrameworkErrorSignal, NoRunningControlStrategyWithIDSignal);

/* Looks up all RunningControlStrategies based upon their ControlStrategy’s name. */RunningControlStrategyDescriptionSequence lookupRunningControlStrategyByName

(in ControlStrategyName aName, in long maxNumberReturned)

raises (FrameworkErrorSignal, NoRunningControlStrategyForNameSignal);

/* Returns a sequence of RunningControlStrategyDescriptions up to maxNumberReturned thatpartially match the ExecutionContext. */RunningControlStrategyDescriptionSequence

lookupRunningControlStrategyByExecutionContext

(in ExecutionContext aContext, in long maxNumberReturned )

raises (FrameworkErrorSignal,

NoRunningControlStrategyForExecutionContextSignal);

/* Returns a sequence of RunningControlStrategyDescriptions up to maxNumberReturned. */RunningControlStrategyDescriptionSequence describeRunningControlStrategies

(in long maxNumberReturned)

raises (FrameworkErrorSignal);

/* Returns a sequence of RunningControlStrategyDescriptions up to maxNumberReturned thatexactly match the ExecutionContext that started the RunningControlStrategy. */RunningControlStrategy getRunningControlStrategy

(in ExecutionContext theExecutionContext)

raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

288 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.10.3.4 Interface: ControlStrategy

Inherited Interface: NamedEntity

Description: The ControlStrategy contains the complete description of what activitiesneed to be performed in order to do APC for a given context. The Contentsof a ControlStrategy contains that description. Some content types couldbe Data Collection Plans, targets, scripted action sequences, etc.Additionally, the ControlStrategy contains a ContextSpec, which is someinformation whitch can be used by the Control Manager to select ControlStrategies based upon run-time context information.

Exceptions:exception NoContentForTypeSignal {ContentType aType;};

Published Events: None.

Provided Services:

/* This method returns the complete Contents of the ControlStrategy. */Contents getContents ( ) raises (FrameworkErrorSignal);

/* This method returns the ControlStrategyDescription of the ControlStrategy. */ControlStrategyDescription getControlStrategyDescription ( )

raises (FrameworkErrorSignal);

/* This method returns the ContextSpec of the ControlStrategy. */ContextSpec getContextSpec ( ) raises (FrameworkErrorSignal);

/* This method returns the a portion of the Contents of the ControlStrategy specified by theContentType. */Contents getContentsByType (in ContentType theType)

raises (FrameworkErrorSignal, NoContentForTypeSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 289

Technology Transfer # 93061697J-ENG SEMATECH

4.10.3.5 Interface: RunningControlStrategy

Inherited Interface: NamedEntity

Description: The RunningControlStrategy interface provides a means to accessinformation about a currently executing Control Strategy. A currentlyexecuting control strategy is one that is guiding and directing a ControlExecutor in performing APC actions.

Exceptions: None.

Published Events: None.

Provided Services:

/* This method returns the unique ID of the RunningControlStrategy. */RunningControlStrategyID getID ( ) raises (FrameworkErrorSignal);

/* This method returns the ExecutionContext that the RunningControlStrategy was startedunder. */ExecutionContext getRunningContext ( ) raises (FrameworkErrorSignal);

/* This method returns the a reference to the ControlStrategy that this RunningControlStrategy isusing. */ControlStrategy getControlStrategy ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

290 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.10.4 Control Execution Component

Because the Control Executor is central to scenario implementation for process control, inaddition to the relationships within this component, the information model below illustratesrelationships with interfaces in other components to aid in understanding these interfaces.

ControlExecutionManager

ControlExecutor

PluginExecutor

ComponentManager

PluginManager

obtains pluginsfrom

manages

obtains controlstrategies from

ControlDatabase

directsplugin

executionControl

Manager

saves data toand retrieves

from

History

saves datato

JobSupervisor

Job

DataCollection

PlanManager

RunningControlStrategy

Trader

DataCollector

obtains plansfrom

refers to

obtainsprocess or

sensor datafrom

get initialreferences

1+

Figure 63 Control Execution Component

CIM Framework Interfaces 291

Technology Transfer # 93061697J-ENG SEMATECH

4.10.4.1 Interface: ControlExecutionManager

Inherited Interface: ComponentManager, JobSupervisor

Description: The ControlExecutionManager performs the functions of aComponentManager for the Control Execution Component. It also is aJobSupervisor, receiving ControlJobRequests and creatingControlExecutors which are responsible for completing each ControlJob.It provides interfaces for retrieving all valid ControlExecutors.

Exceptions:exception ControlExecutionFailedSignal { ControlExecutor aControlExecutor ; } ;

Published Events: None.

Provided Services:

/* Launches a control executor, which implements the Job interface based on aControlJobSpecification. */ControlExecutor RequestControl (in ControlJobSpecification aControlJobSpecification)

raises (FrameworkErrorSignal);

/* Returns a list of the currently running executors. */ControlExecutorSequence getExecutors ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

292 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.10.4.2 Interface: ControlExecutor

Inherited Interface: Job

Description: The ControlExecutor is a specialization of Job for APC. TheControlExecutor executes control actions such as settings calculations,fault detection, or data collection. It is a Job, executing whatever actionsare specified by the RunningControlStrategy, which is selected using datacontained in the ControlJobSpecification.

Exceptions:exception InvalidStateTransitionSignal { ControlExecutor aControlExecutor ; } ;

Published Events:

/*This event is emitted upon every status change in the Executor. */ControlExecutorStatusEvent

APCFaultEvent

Provided Services:

/* Return the ExecutionType. */ExecutionType getExecutionType( ) raises (FrameworkErrorSignal);

/* Return ExecutionContext. */ExecutionContext getExecutionContext( ) raises (FrameworkErrorSignal);

/* Return RunningControlStrategy. */RunningControlStrategy getRunningControlStrategy( ) raises (FrameworkErrorSignal);

/* Return Controller Arguments. */ControllerArguments getControllerArguments( ) raises (FrameworkErrorSignal);

/* Return Controller Results. */ControllerResults getControlResults( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Same as inherited interface.

CIM Framework Interfaces 293

Technology Transfer # 93061697J-ENG SEMATECH

4.10.5 Data Collection Plan Management Component

The DataCollectionPlan Management Component provides management and retrieval forDataCollectionPlans. It consists of two interfaces that cooperate to provide access toDataCollectionPlans in the CIM system. Hence, it is not intended for use only by the APCGroup, but rather by all parts of the MES that utilize or need access to Data Collection Plans. Assuch it can be implemented independently of the rest of the APC Group. Data Collection Plansare the specifications by which a tool or sensor is directed to collect data. They contain suchthings as which variables are to be measured and at which frequencies (SamplingPlan), underwhich circumstances (DurationPlan), and when the data should be reported back to the requestor(ReportingPlan). Data Collection Plans each have a unique name in the system so they can belooked-up using this name. In addition, Data Collection Plans can be associated with aContextSpec, like Control Strategies, and then selected based upon the execution context at run-time.

DATACOLLECTIONPLANMANAGER

DataCollectionPlanManager

DataCollectionPlanFactory

manages

COMPONENTMANAGER

External Entity

selectsDataCollectionPlans

based on context

selectsDataCollectionPlans

based on name

Figure 64 DataCollectionPlanManager Component

294 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* DataCollectionPlans are composed primarily of name/value sequences, which were chosen fortheir flexibility. However, when sensors and fab tools are built (or their Machine equivalents),specific names will have to be chosen (StartEvent v. StartEventSource). These names should beopenly distrubuted and reused as much as possible. DurationPlan – Specifies when datacollection should begin and end. Some example name-value pairs that could be used to specifystart and stop events are given in the following table:*/

/*StartEventSource Name of object (source) that emits the start event.

Step1EventSource Source (object name) of event that triggers end of step one of a data collectinplan.

… …

StepNEventSource Source of event that triggers end of step N of a data collectin plan.

EndEventSource Source that emits the end of data collection plan event.

*/

CIM Framework Interfaces 295

Technology Transfer # 93061697J-ENG SEMATECH

4.10.5.1 Interface: DataCollectionPlanFactory

Inherited Interface: NamedEntity

Description: The DataCollectionPlanFactory provides interfaces required to create aDataCollectionPlan, lookup a specific DataCollectionPlan (based onname), or to provide a sequence of DataCollectionPlan descriptions (maybe used by configuration graphical user interface [GUI]).

Exceptions:

/* DataCollectionPlan requested in lookup does not exist. */exception NoDataCollectionPlanNamedSignal {

DataCollectionPlanName aDataCollectionPlanName;} ;

/*DataCollectionPlan not created successfully. */exception CreateDataCollectionPlanFailedSignal

{DataCollectionPlanSpecification aDataCollectionPlanSpecification;};

exception DuplicateDataCollectionPlanContextSignal {ContextSpec aContextSpec;};

Published Events: None.

Provided Services:

/* Create a DataCollectionPlan and associate it into the system. */void createDataCollectionPlan (

in DataCollectionPlanSpecification aDataCollectionPlanSpecification,

in DataCollectionPlan aDataCollectionPlan,

in ContextSpec aContextSpec )

raises (FrameworkErrorSignal, CreateDataCollectionPlanFailedSignal,

DuplicateDataCollectionPlanContextSignal ) ;

/*Provides a DataCollectionPlan object given a DataCollectionPlanName. */DataCollectionPlan lookupDataCollectionPlan

(in DataCollectionPlanName aDataCollectionPlanName )

raises (FrameworkErrorSignal, NoDataCollectionPlanNamedSignal ) ;

/* Provides a sequence of DataCollectionPlan descriptions that are defined in the component.Specification of how many DataCollectionPlan descriptions to return may be provided. */DataCollectionPlanDescriptionSequence describeDataCollectionPlans

(in long maxReturned)

raises (FrameworkErrorSignal);

/* Delete an unused or obsolete DataCollectionPlan */void removeDataCollectionPlan ( in DataCollectionPlanName aDataCollectionPlanName)

raises (FrameworkErrorSignal, NoDataCollectionPlanNamedSignal ) ;

Contracted Services: None.

Dynamic Model: None.

296 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.10.5.2 Interface: DataCollectionPlanManager

Inherited Interface: ComponentManager

Description: The DataCollectionPlanManager is responsible for supporting theregistration and control (enabling/disabling) of this component. Itprovides an interface to access a DataCollectionPlan factory as well asselecting a DataCollectionPlan based on execution context.

Exceptions:exception NoDataCollectionPlanForContextSignal { ExecutionContext aContext;};

Published Events: None.

Provided Services:

/* Allows the engineer doing the configuration or importing of a DataCollectionPlan to get areference to the required factory. At runtime the DataCollectionPlanExecutor uses this methodto get the factory for doing lookup. */DataCollectionPlanFactory getDataCollectionPlanFactory ( )

raises (FrameworkErrorSignal);

DataCollectionPlan selectDataCollectionPlan ( in ExecutionContext aContext )

raises (FrameworkErrorSignal, NoDataCollectionPlanForContextSignal );

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 297

Technology Transfer # 93061697J-ENG SEMATECH

4.10.6 Control Database Component

The Control Database Component provides a specialized, high speed, light weight persistencefacility for control data to be shared across multiple process operations in the fab to enablefeedforward, feedback, and fault detection applications requiring data from multiple areas in thefab.

The advent of the History Management proposal in the CIM Framework came to late to impactthis component significantly, but a brief review of the proposal indicates that it holds promise toenable replacement of large portions of this component with interfaces based upon inheritanceand use of the interfaces in that proposal. This modification to the specification should bepursued as part of the SEMI standardization process.

CONTROL DATABASE

CONTROLDATABASEMANAGER

CONTROLDATA

manages

COMPONENTMANAGER

Figure 65 Control Database Component Information Model

298 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.10.6.1 Interface: ControlDatabaseManager

Inherited Interface: ComponentManager

Description: The ControlDatabaseManager allows the storage and retrieval of data,parameters and control actions for use by multiple processes involved in acontrol strategy.

Exceptions:

/* Exception for a failed attempt to delete data from the control database. */exception UnableToDeleteSignal {ControlData aControlData;};

/* Exception for a failed attempt to add data to the control database, DataTagSequence must beunique. */exception DataTagSequenceDuplicateSignal {DataTagSequence aDataTagSequence;};

/* Exception for a reference to an invalid DataTagSequence. */exception BadDataTagSequenceSignal {DataTagSequence tagsequence;};

/* Exception for a failed attempt to query data from the control database. */exception DataNotFoundSignal {DataTagSequence tagsequence;};

Published Events: None.

Provided Services:

/* Add data to the control database. */ControlData addControlData

(in DataTagSequence aDataTagSequence,

in NameValueSequence aNameValueSequence)

raises (FrameworkErrorSignal, DataTagSequenceDuplicateSignal,

BadDataTagSequenceSignal);

/* FindControlData returns the ControlData object for which the DataTag matches exactly. */ControlData findControlData (in DataTagSequence aDataTagSequence)

raises (FrameworkErrorSignal, BadDataTagSequenceSignal,

DataNotFoundSignal);

/* QueryControlData returns a list of all (up to maxNumberOfMatches) ControlData objects thatmatch on a partial basis the fields in the DataTag. */ControlDataSequence queryControlData

(in DataTagSequence aDataTagSequence, in long maxNumberOfMatches)

raises (FrameworkErrorSignal, BadDataTagSequenceSignal,

DataNotFoundSignal);

/* Remove data from the control database. */void deleteData (in ControlData aControlData)

raises (FrameworkErrorSignal, UnableToDeleteSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 299

Technology Transfer # 93061697J-ENG SEMATECH

4.10.6.2 Interface: ControlData

Inherited Interface: None.

Description: The ControlData interface encapsulates the various data required incontrol implementations.

Exceptions:

/* Failed attempt to access aNamedValueSequence. */exception NoNameInNVSequenceSignal {NameValueSequence namevaluesequence;};

Published Events: None.

Provided Services:

/* Access the NameValueSequence from ControlData. */NameValueSequence getValues ( ) raises (FrameworkErrorSignal);

/* Access the DataTagSequence from ControlData. */DataTagSequence getTags ( ) raises (FrameworkErrorSignal);

/* Appends or replaces NameValues in the database, depending on whether the NameValueexists or not. */void updateValues (in NameValueSequence aNameValueSequence)

raises (FrameworkErrorSignal);

/* Replace an existing NameValueSequence in the ControlData. */void replaceValues (in NameValueSequence aNameValueSequence)

raises (FrameworkErrorSignal);

/* Return a NameValue from the ControlData. */Value getNamedValue (in string name)

raises (FrameworkErrorSignal, NoNameInNVSequenceSignal);

Contracted Services: None.

Dynamic Model: None.

300 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.10.6.3 Interface: DataCollector

Inherited Interface: NamedEntity

Description: The DataCollector interface is an abstract interface that provides methodsfor controlling activities on entities that collect data. Interfaces that couldimplement DataCollector are ProcessMachine and Sensor.

This interface is required as an abstract interface in the MachineManagement Component. It is not part of the Process Control Section ofthe document, but is offered here for reference.

Exceptions:exception UnableToSetupDataCollectionSignal

{ DataCollectionPlanSequence aDataCollectionPlanSequence; };

exception InvalidDataCollectionID { DataCollectionID aDataCollectionID; };

exception InvalidMoniker { string moniker; };

Published Events: None.

Provided Services:

/* Transmits to the DataCollector the specification (e.g., DataCollectionPlan) for how data is tobe collected and returned. */DataCollectionID setupDataCollection

(in DataCollectionPlanSequence aDataCollectionPlanSequence )

raises (FrameworkErrorSignal, UnableToSetupDataCollectionSignal );

/* Discontinues data collection for the DataCollectionPlan(s) referenced by the DCID; all datacollected under those plans is also deleted. */void unsetupDataCollection(in DataCollectionID aDataCollectionID)

raises (FrameworkErrorSignal, InvalidDataCollectionID );

/* Allows data collection to begin based on the start conditions specified in theDataCollectionPlans. */void enableDataCollection(in DataCollectionID aDataCollectionID)

raises (FrameworkErrorSignal, InvalidDataCollectionID );

/* Disables data collection to begin based on the start conditions specified in theDataCollectionPlans. */void disableDataCollection(in DataCollectionID aDataCollectionID)

raises (FrameworkErrorSignal, InvalidDataCollectionID );

/* Return the collected data if it was not included in the DataAvailableEvent. */RunData getCollectedData(in DataCollectionID aDataCollectionID, in moniker amoniker )

raises (FrameworkErrorSignal, InvalidDataCollectionID,

InvalidMoniker );

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 301

Technology Transfer # 93061697J-ENG SEMATECH

4.11 Schedule Management Group

The Schedule Management Group performs decision making and scheduling functions based oncurrent factory status, production route definitions, and internally-defined business rules. Thesefunctions are used to assist operating components and applications, that need to perform someproduction activity by selecting a preferred alternative or ranked set of alternatives among thepossible activities available for work.

The Schedule Management Group includes the following component:

• Dispatching: provides lists of options of immediate activity.

A Scheduling Component, that provides detailed activity schedules for some interval into the future, maybe developed in a future specification.

Scheduling Management Functional Group

FactoryOperations

MaterialManagement

PersonManagement

ProductRelease

Dispatching

ProcessSpecification

creates lots to bescheduled

provides processspecifications

interprets and executesschedules

assignsoperators

requestsactive lots

Scheduling

provides lists of optionsof immediate activity

Figure 66 Schedule Management Group Component Relationships

302 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.11.1 Dispatching Component

The Dispatching Component provides the basic architecture for dispatch decision making forsuch questions as

• What is next for this Machine?

• Where does this Lot goes next?

• What is next for this Operator?

Any resource within the factory should be able to have a dispatch decision associated with it. TheDispatching Component includes the following interfaces:

• DispatchingManager

• Dispatcher

• DispatchList

• DispatchDecision

The Dispatching Component Information Model is shown in Figure 67.

CIM Framework Interfaces 303

Technology Transfer # 93061697J-ENG SEMATECH

ComponentManager

DispatchingManager

Dispatcher

DispatchList

DispatchDecision

Resource

DispatchingComponent

manages

providescontent

information

contains

holds information aboutactivities

Figure 67 Dispatching Component Information Model

304 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.11.1.1 Interface: DispatchingManager

Inherited Interface: ComponentManager

Description: The DispatchingManager manages the lifecycle, collection and queryservices of the many possible Dispatchers in the factory.

Exceptions:

/* An attempt was made to retrieve a given Dispatcher that did not exist. */exception DispatcherNotFoundSignal { };

exception DispatcherNotAssignedSignal { };

exception DispatcherRemovalFailedSignal { };

Published Events:DispatchLifecycleEvent

Provided Services:

/* Create and add a Dispatcher to the set of Dispatchers managed by this manager. Return theDispatcher created. */Dispatcher createDispatcher ( ) raises (FrameworkErrorSignal);

/* Remove and delete a Dispatcher from the set of Dispatchers managed by this manager. */void removeDispatcher (in Dispatcher aDispatcher)

raises (FrameworkErrorSignal,DispatcherNotAssignedSignal,

DispatcherRemovalFailedSignal);

/* Return a sequence of all Dispatchers managed by this manager. */DispatcherSequence allDispatchers ( ) raises (FrameworkErrorSignal);

/* Return the Dispatcher responsible for creating ScheduledActivities for the specific object.Raise the exception if the specific object does not have a Dispatcher defined for it. */

Dispatcher findDispatcherFor (in Resource targetObject)

raises (FrameworkErrorSignal, DispatcherNotFoundSignal);

Contracted Services: None.

Dynamic Model: Same as inherited interface ComponentManager.

CIM Framework Interfaces 305

Technology Transfer # 93061697J-ENG SEMATECH

4.11.1.2 Interface: Dispatcher

Inherited Interface: Resource

Description: The Dispatcher makes dispatching decisions (i.e., what’s next) for specificobjects.

Exceptions:

/* An attempt was made to request a dispatch decision for an object that is not in the scope ofthis dispatcher. */exception DispatchableObjectNotInScopeSignal {

Resource requestedObject;};

/* An attempt was made to remove a dispatchable object that isn’t in this Dispatcher’s scope. */exception DispatchableObjectRemovalFailedSignal { };

exception DispatchableObjectNotAssignedSignal { };

exception DispatchListRemovalFailedSignal { };

exception DispatchListNotAssignedSignal { };

Published Events: None.

Provided Services:

/* Add a dispatchable object to the set of dispatchable objects for which this Dispatcher canmake a dispatch decision. */void addDispatchableObject (in Resource dispatchableObject)

raises (FrameworkErrorSignal);

/* Remove a dispatchable object from the set of dispatchable objects for which this Dispatchercan make dispatch decisions. Raise the exception if the dispatchable object was not found. */

void removeDispatchableObject (in Resource dispatchableObject)

raises (FrameworkErrorSignal, DispatchableObjectRemovalFailedSignal,

DispatchableObjectNotAssignedSignal);

/* Return a dispatch decision for the requested object. */

DispatchList whatNextForMachine (in Machine aMachine)

raises (FrameworkErrorSignal, DispatchableObjectNotInScopeSignal);

DispatchList whatNextForPerson (in Person aPerson) raises (FrameworkErrorSignal);

DispatchList whereNextForLot (in Lot aLot) raises (FrameworkErrorSignal);

DispatchList dispatchUsingLots (in LotSequence lots) raises (FrameworkErrorSignal);

/* Delete DispatchList and all DispatchDecisions (and related ScheduledActivities) in the list. */void deleteDispatchList (in DispatchList aDispatchList)

raises (FrameworkErrorSignal,DispatchListRemovalFailedSignal,

DispatchListNotAssignedSignal);

/* Return all dispatchable objects in the scope of this Dispatcher. */ResourceSequence allDispatchableObjects ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

306 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.11.1.3 Interface: DispatchList

Inherited Interface: NamedEntity

Description: The DispatchList serves as a container and lifecycle manager for thecollection of DispatchDecision objects that describe the contents of theDispatchList returned by the Dispatcher in response to a dispatching query.

Exceptions:

/* Exception raised when referencing a non-existent entry in the DispatchList sequence. */exception InvalidDispatchDecisionIndexSignal { };

Published Events: None.

Provided Services:

/* Add a DispatchDecision to the end of the DispatchList. */void addDispatchDecision (in DispatchDecision aDispatchDecision)

raises (FrameworkErrorSignal);

/* Remove a DispatchDecision from the list as indicated by the given sequence index. */void removeDispatchDecision (in long decisionIndex)

raises (FrameworkErrorSignal, InvalidDispatchDecisionIndexSignal);

/* Choose a DispatchDecision in the list as indicated by the given sequence index. All otherDispatchDecisions and ScheduledActivities will be deleted by this method. */void selectDispatchDecision (in long decisionIndex)

raises (FrameworkErrorSignal, InvalidDispatchDecisionIndexSignal);

/* Access the DispatchDecisions which make up this DispatchList. */DispatchDecisionSequence getDispatchDecisions ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

CIM Framework Interfaces 307

Technology Transfer # 93061697J-ENG SEMATECH

4.11.1.4 Interface: DispatchDecision

Inherited Interface: OwnedEntity

Description: The DispatchDecision interface is an indicator for the activity that thedispatcher determines is appropriate at the current time.

Exceptions: None.

Published Events: None.

Provided Services:

/* Methods for setting and accessing the explanation behind this DispatchDecision entry in theDispatchList. */void setExplanation (in string explanationText) raises (FrameworkErrorSignal);

string getExplanation ( ) raises (FrameworkErrorSignal);

/* Returns the PM activity structure that is needed for the dispatch decision.*/PMActivity getPMActivityInformation ( ) raises (FrameworkErrorSignal);

/*Returns the ProcessMachineJob that is needed for the dispatch decision.*/ProcessMachineJob getProcessMachineJob ( ) raises (FrameworkErrorSignal);

/*Returns the TransportJob that is needed for the dispatch decision.*/TransportJob getTransportJob ( ) raises (FrameworkErrorSignal);

/* Answers true if this dispatch decision is a PMActivity.*/boolean isPMActivity ( ) raises (FrameworkErrorSignal);

/* Answers true if this dispatch decision is a ProcessMachineJob.*/boolean isProcessMachineJob ( ) raises (FrameworkErrorSignal);

/*Answers true if this dispatch decision is a TransportMachineJob.*/boolean isTransportJob ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

308 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.12 Factory Labor Group

The Factory Labor Group supports the qualification and management of human resources formanufacturing operations associated with factory equipment. Specifically, this group providesthe following services:

• Manages the assignment of qualified and available labor resources for factory operations.

• Manages the training and medical requirements for factory operations.

• Maintains personnel information (full name, employee number, department, shiftassignment, machines qualified to operate, course and medical examination records).

• Manages the skill qualification histories (courses and medical examinations successfullycompleted) of factory personnel.

The Factory Labor Group is divided into two components:

• Person Management, which tracks, logs and maintains availability and task assignmentfor factory operations personnel within the manufacturing facility. Also managespersonnel information, training, and medical qualifications.

• Skill Management, which manages training and medical requirements for operatingfactory operations.

Figure 68 depicts the relationships between these two components and their interaction withother factory components.

CIM Framework Interfaces 309

Technology Transfer # 93061697J-ENG SEMATECH

Factory Labor

identify/assign qualified/available person to

perform a job

assigns person toshift(s) / area(s) /

machine(s)

requestsprocessing tobe performed

requests personnel toperform PMs for

support resources

define skillsneeded forcapability

SkillManagement

requests manualmaterial movement

compare personnelmedical / training historywith skill requirements

PersonManagement

MaterialMovement

Management

ProcessingManagement

ProcessCapabilityManager

MachineGroup

FactoryManagement

Scheduling(to be defined)

Figure 68 Factory Labor Group Component Relationships

310 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.12.1 Person Management Component

This component defines factory personnel (Person interface) to the CIM system. Persons areviewed as resources in the manufacturing environment, are assigned to a factory area, and own adetailed training and medical examination history. At any given time, a Person may be assignedto one or more process or material handling jobs associated with other factory resources.

The Component Information Model for Person Management is shown in Figure 69.

PersonManagementComponent

has a

creates andmanages

qualificationsto perform

factoryoperations are

definedby

has assignedto

assignedto

assignedto

NamedEntity MESFactory ComponentManager Resource

PersonManager

QualificationData Person Area

Machine

JobSkill

Figure 69 Person Management Component Information Model

CIM Framework Interfaces 311

Technology Transfer # 93061697J-ENG SEMATECH

4.12.1.1 Interface: PersonManager

Inherited Interface: ComponentManager

Description: This is the interface between the Person Management Component and therest of the CIM environment. The PersonManager creates instances ofPersons within the factory and manages those Persons (shift, jobassignment and status information). There are no limitations to the numberof PersonManagers within a factory.

Exceptions:

/* This signal is raised with attempted creation of Person through the use of a Person identifierthat already exists. */exception PersonDuplicateSignal {string identificationNumber;};

/* This signal is raised when a retrieval operation fails because the Person specified by theargument could not be located. */exception PersonNotFoundSignal {string identificationNumber;};

/* This signal is raised when a removal operation fails because the Person specified by theargument is not assigned to the PersonManager. */exception PersonNotAssignedSignal {Person unknownPerson;};

exception PersonRemovalFailedSignal { };

Published Events:PersonLifecycleEvent

Provided Services:

/* Create an instance of Person with a unique identifier and add to the list managed byPersonManager. */Person createPersonWithIdentifier (in string identificationNumber)

raises (FrameworkErrorSignal, PersonDuplicateSignal);

/* Delete the Person identified by the argument from the list managed by PersonManager. */void removePerson (in Person aPerson)

raises (FrameworkErrorSignal,PersonRemovalFailedSignal,

PersonNotAssignedSignal);

/* Return a set of Persons managed by the PersonManager. */PersonSequence allPersons ( ) raises (FrameworkErrorSignal);

/* Search for an instance of Person using its unique identifier. Raises an exception if the Personis not found. */Person findByIdentifier (in string identificationNumber)

raises (FrameworkErrorSignal, PersonNotFoundSignal);

/* Return a set of all Persons logged on to the specified shift. */PersonSequence allOnShiftPersons (in Shift aShift) raises (FrameworkErrorSignal);

/* Return a set of all Persons available for work. */PersonSequence allAvailableForWorkPersons ( ) raises (FrameworkErrorSignal);

/* Return a set of all Persons not available for work. */PersonSequence allNotAvailableForWorkPersons ( ) raises (FrameworkErrorSignal);

312 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Manage Person / Machine relationship. */

/* Return a set of Persons qualified to operate a process or material handling machine. ThePerson is qualified to operate the machine if the machine is noted in the Person’s skill list or if acomparison of the person’s course and medical exam histories satisfy the requirements definedwithin the Skill Management Component for the noted machine. This method does not check theavailability of the person to actually perform a task. */PersonSequence allPersonsWithSkill (in Skill aSkill) raises (FrameworkErrorSignal);

/* Return a set of Persons available (on duty on the current shift) to operate the specifiedmachine. This service assumes that a Person is qualified to operate the machine. */PersonSequence allPersonsAvailableForMachine (in Machine aMachine)

raises (FrameworkErrorSignal);

/* Return a set of all Persons currently assigned to the specified machine. */PersonSequence allPersonsAssignedToMachine (in Machine aMachine)

raises (FrameworkErrorSignal);

/* Return a set of all Persons currently assigned to machines. */PersonSequence allAssignedToMachinesPersons ( ) raises (FrameworkErrorSignal);

/* Manage Person / Job relationship. */

/* Return a set of Persons qualified to perform a process or material handling job. The Person isqualified for the job if the job is noted in the person’s skill list or if a comparison of the person'scourse and medical exam histories satisfy the requirements defined within the Skill ManagementComponent for the noted job. This method does not check the availability of the person toactually perform a task. */PersonSequence allPersonsQualifiedForJob (in Job aJob)

raises (FrameworkErrorSignal);

/* Return a set of Persons available (on duty on the current shift) to perform a process or materialmovement job. This service assumes that a Person is qualified to perform the job. */PersonSequence allPersonsAvailableForJob (in Job aJob)

raises (FrameworkErrorSignal);

/* Return a set of Persons currently assigned to the specified job. */PersonSequence allPersonsAssignedToJob (in Job aJob) raises (FrameworkErrorSignal);

/* Return a set of all Persons currently assigned to jobs. */PersonSequence allAssignedToJobsPersons ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: Same as inherited interface (Component Manager).

CIM Framework Interfaces 313

Technology Transfer # 93061697J-ENG SEMATECH

4.12.1.2 Interface: Person

Inherited Interface: Resource

Description: This interface represents factory personnel. As currently defined, Personrefers specifically to operating personnel within the manufacturing facility.Instances of this interface hold the following information pertaining tothese individuals: employee information (full name, identification number,department, shift assignment); training and medical certification; andmachines qualified to operate.

Exceptions:

/* This signal is raised when an addition operation fails because the Qualification specified bythe argument already exists. */exception QualificationDuplicateSignal {

QualificationData qualificationInformation;};

/* This signal is raised when a removal operation fails because the Qualification specified by theargument could not be located. */exception QualificationNotAssignedSignal {string identificationNumber;};

/* This signal is raised when a retrieval operation fails because the Qualification specified by theargument could not be located. */exception QualificationNotFoundSignal {string identificationNumber;};

/* This signal is raised when an addition operation fails because the Responsibility specified bythe argument already exists. */exception ResponsibilityDuplicateSignal {any responsibility ;

string responsibilityCategory;};

/* This signal is raised when an operation fails because the Responsibility category specified bythe argument could not be located. */exception ResponsibilityCategoryNotFoundSignal {

string responsibilityCategory;};

exception ResponsibilityCategoryRemovalFailedSignal { };

/* This signal is raised when a removal operation fails because the Responsibility specified bythe argument could not be located. */exception ResponsibilityRemovalFailedSignal {

any responsibility;string responsibilityCategory;};

/* This signal is raised when an addition operation fails because the skill specified by theargument already exists. */exception SkillDuplicateSignal {Skill aSkill;};

/* This signal is raised when a removal operation fails because the skill specified by the argumentcould not be located. */exception SkillRemovalFailedSignal {Skill aSkill;};

exception SkillNotAssignedSignal {Skill aSkill;};

exception SkillNotFoundSignal {Skill aSkill;};

314 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Published Events:

/* This event is posted when a Person’s capacity to do work has changed.This includes assignment to/deassignment from machines and jobs. It alsoincludes the changing the number of jobs and/or machines to which aPerson may be assigned. */PersonCapacityChangedEvent

/* This event is posted when a Person’s availability has changed. Thisincludes logging on/off a shift, leaving/returning to a work station, orcapacity exceeded. */PersonStateChangedEvent

/* This event is posted when a Person has been reassigned to a differentshift. */PersonShiftChangedEvent

Provided Services:

/* Set and get the Person’s department. */void setDepartment (in string department)

raises (SetValueOutOfRangeSignal, FrameworkErrorSignal);

string getDepartment ( ) raises (FrameworkErrorSignal);

/* Set and get the Person’s name. */void setFullname (in string fullname)

raises (SetValueOutOfRangeSignal, FrameworkErrorSignal);

string getFullname ( ) raises (FrameworkErrorSignal);

/* Set and get the Person’s identification number. */void setIdentificationNumber (in string idNumber)

raises (SetValueOutOfRangeSignal, FrameworkErrorSignal);

string getIdentificationNumber ( ) raises (FrameworkErrorSignal);

/* Set and get the maximum the number of jobs to which a Person can be assignedsimultaneously. */void setMaximumAssignedJobs (in long maximumJobs)

raises (SetValueOutOfRangeSignal, FrameworkErrorSignal);

long getMaximumAssignedJobs ( ) raises (FrameworkErrorSignal);

/* Set and get the maximum number of machines to which a Person can be assignedsimultaneously. */void setMaximumAssignedMachines (in long maximumMachine)

raises (SetValueOutOfRangeSignal, FrameworkErrorSignal);

long getMaximumAssignedMachines ( ) raises (FrameworkErrorSignal);

/* Set and get the Person’s shift assignment. */void setShift (in Shift aShift)

raises (SetValueOutOfRangeSignal, FrameworkErrorSignal);

Shift getShift ( ) raises (FrameworkErrorSignal);

/* Add an object within the factory to a Person’s responsibility category. The concept ofresponsibility implies that a Person is authorized to perform, operate or access the factory object.It does not imply ownership. The first argument represents the responsibility (object within the

CIM Framework Interfaces 315

Technology Transfer # 93061697J-ENG SEMATECH

factory) which is associated with a responsibility category, while the second argument is thecategory. If the specified category does not exist, it is created. The service returns the addedfactory object.

For example, add a machine to the Person’s maintenance responsibilities category. Anotherexample: add a change notice to a Person’s signoff responsibility category. */any addResponsibility_toCategory (in any responsibility,

in string responsibilityCategory)raises (FrameworkErrorSignal, ResponsibilityDuplicateSignal,

ResponsibilityCategoryNotFoundSignal );

/* Remove an object within the factory from a Person’s responsibility category. If the specifiedcategory, or responsibility does not exist, then an exception is raised. */void removeResponsibility_fromCategory (in any responsibility,

in string responsibilityCategory)raises (FrameworkErrorSignal, ResponsibilityRemovalFailedSignal,

ResponsibilityCategoryRemovalFailedSignal);

/* Return the responsibilities (objects within a factory) that are assigned to a Person'sresponsibility category. For example, return all of the specifications in the category specificationmanagement. A dictionary of key/value pairs is returned that represents these responsibilityassociations. The key is the responsibility category name while the value is the set of factoryobjects associated with that category. */ResponsibilitySequence responsibilities ( ) raises (FrameworkErrorSignal);

/* Add the skill (qualification to operate a specific machine) to the Person’s list of skills. Skillsmay be assigned or obtained through the completion of specified course (s) and medicalexamination (s). This service does not detail specific course and medical examinationrequirements. */void addSkill (in Skill aSkill)

raises (FrameworkErrorSignal, SkillDuplicateSignal);

/* Remove the skill from the Person’s list of skills. */void removeSkill (in Skill aSkill)

raises (FrameworkErrorSignal, SkillRemovalFailedSignal,

SkillNotFoundSignal);

/* Retrieve the set of skills for which this Person is qualified. */SkillSequence skills ( ) raises (FrameworkErrorSignal);

/* Add the specified qualification (training course or medical examination) data to the training ormedical history of a Person. */void addQualification (in QualificationData qualificationInformation)

raises (FrameworkErrorSignal, QualificationDuplicateSignal);

/* Remove the specified qualification data from the training or medical history of a Person. */void removeQualification (in QualificationData qualificationInformation)

raises (FrameworkErrorSignal, QualificationNotAssignedSignal);

/* Retrieve all information relative to a Person’s particular qualification by performing a searchusing its unique identifier. */QualificationData findQualificationByIdentifier (in string identifier)

raises (FrameworkErrorSignal, QualificationNotFoundSignal);

316 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

/* Retrieve the set of qualifications attained by this Person. */QualificationDataSequence qualifications ( ) raises (FrameworkErrorSignal);

/* Return the sequence of process capabilities which this Person is qualified to perform. */CapabilitySequence processCapabilities ( ) raises (FrameworkErrorSignal);

/* The following services provide basic state control and query. */

/* Denote that this has logged on to the current shift and is AVAILABLE. */void makeOnShift ( ) raises (FrameworkErrorSignal);

/* Denote that this has logged off of the current shift and is NOT AVAILABLE. */void makeOffShift ( ) raises (FrameworkErrorSignal);

/* Denote that this Person is at a work station and available for work. It is required that thePerson has logged on to the current shift. Assignment to machine (s) and/or job (s) may or maynot have occurred. */void makeAtWorkStation ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal );

/* Denote that this Person is not immediately available at a work station and cannot performwork. An example of this condition is an operator taking a personal break during a shift. */void makeNotAtWorkStation ( )

raises (FrameworkErrorSignal, InvalidStateTransitionSignal );

/* Return a boolean denoting whether or not a Person is logged on to the current shift. */boolean isOnShift ( ) raises (FrameworkErrorSignal);

/* Return a boolean denoting whether or not a Person is available for work. */boolean isAvailableForWork ( ) raises (FrameworkErrorSignal);

/* Return a boolean denoting whether or not a Person is at their work station. */boolean isAtWorkStation ( ) raises (FrameworkErrorSignal);

/* The following services support machine assignment. */

/* Determine if a Person is qualified to perform a process or material handling job for a specificmachine (has a specific skill.) The Person is qualified to operate the machine if the machine isnoted in the Person’s skill list, or if a comparison of the Person’s course and medical examhistories satisfy the requirements defined within the Skill Management Component for the notedmachine. This service does not check the availability of the Person to actually perform a task. */boolean hasSkill (in Skill aSkill) raises (FrameworkErrorSignal);

/* Return a boolean denoting whether or not a Person is qualified for any machine. */boolean hasSkills ( ) raises (FrameworkErrorSignal);

/* Return a boolean denoting whether or not a Person is available for the specified machine. */boolean isAvailableForMachine (in Machine aMachine) raises (FrameworkErrorSignal);

/* Assign a Person to a machine. A Person may be assigned to more than one machine. */void assignToMachine (in Machine aMachine) raises (FrameworkErrorSignal);

/* Terminates personnel assignment to a machine. */void deassignFromMachine (in Machine aMachine) raises (FrameworkErrorSignal);

/* Return a boolean denoting whether or not a Person is assigned to the specified machine. */

CIM Framework Interfaces 317

Technology Transfer # 93061697J-ENG SEMATECH

boolean isAssignedToMachine (in Machine aMachine) raises (FrameworkErrorSignal);

/* Return a boolean denoting whether or not a Person is assigned to any machine. */boolean isAssignedToMachines ( ) raises (FrameworkErrorSignal);

/* Retrieve the set of machines to which a Person is assigned. */MachineSequence assignedMachines ( ) raises (FrameworkErrorSignal);

/* Return a boolean denoting whether or not a Person is available to be assigned to moremachines. */boolean isAvailableForMoreMachineAssignments ( ) raises (FrameworkErrorSignal);

/* The following services support job assignment. */

/* Return a boolean denoting whether or not a Person is qualified for the specified job. */boolean isQualifiedForJob (in Job aJob) raises (FrameworkErrorSignal);

/* Return a boolean denoting whether or not a Person is qualified for any job. */boolean isQualifiedForJobs ( ) raises (FrameworkErrorSignal);

/* Return a boolean denoting whether or not a Person is available for the specified job. */boolean isAvailableForJob (in Job aJob) raises (FrameworkErrorSignal);

/* Assigns a Person to a job. A Person may be allocated to more than one job at a time. */void assignToJob (in Job aJob) raises (FrameworkErrorSignal);

/* Terminates personnel assignment to a job. */void deassignFromJob (in Job aJob) raises (FrameworkErrorSignal);

/* Return a boolean denoting whether or not a Person is assigned to the specified job. */boolean isAssignedToJob (in Job aJob) raises (FrameworkErrorSignal);

/* Return a boolean denoting whether or not a Person is assigned to any jobs. */boolean isAssignedToJobs ( ) raises (FrameworkErrorSignal);

/* Retrieve the set of jobs to which a Person is assigned. */JobSequence assignedJobs ( ) raises (FrameworkErrorSignal);

/* Return a boolean denoting whether or not a Person is available for more jobs. */boolean isAvailableForMoreJobAssignments ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

318 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

Dynamic Model:

UNASSIGNEDTO MACHINES

UNASSIGNEDTO JOBS

AT WORKSTATION

AVAILABLEFOR MORE

ASSIGNMENTS

ASSIGNMENTAT CAPACITYEXCEEDED

ASSIGNEDTO

MACHINESASSIGNEDTO JOBS

ASSIGNMENTAT CAPACITYEXCEEDED

2

1

3

4 7

5 6

12

Person

AVAILABLE

NOT AVAILABLE

NOTAT WORKSTATION

AVAILABLEFOR MORE

ASSIGNMENTS

9 10

811

Figure 70 Person Dynamic Model

CIM Framework Interfaces 319

Technology Transfer # 93061697J-ENG SEMATECH

Object State Tables:

Table 22 Person State Definitions and Query Table

State Definition Query for State via

NOTAVAILABLE

In this state, a Person is notclocked on to shift and cannotperform work.

boolean isOnShift ( ) sent to instance of Personreturns FALSE.Person NOT included in set returned byPersonManager servicesPersonSequence allOnShiftPersons (in Shift aShift)or allAvailableForWorkPersons.

AVAILABLE In this superstate, a Person isclocked on to a shift and isready to perform work.

boolean isOnShift( ) sent to instance of Personreturns TRUE.Person included in set returned by PersonManagerservicesPersonSequence allOnShiftPersons (in Shift aShift)or allAvailableForWorkPersons.

AT WORKSTATION

A Person is available toperform some manufacturingtask; that is, the Person isphysically present at his or herwork site.

boolean isAtWorkStation ( ) sent to instance ofPerson returns TRUE.

NOT AT WORKSTATION

A Person is not available toperform any manufacturingtask; that is, the Person isphysically absent from his orher work site.

boolean isAtWorkStation ( ) sent to instance ofPerson returns FALSE.

UNASSIGNEDTO MACHINES

In this state, a Person has notbeen assigned to anymachines. A Person may ormay not be assigned to ajob(s).

boolean isAssignedToMachines ( ) or booleanisAssignedToMachine (in Machine aMachine) sentto instance of Person returns FALSE. Person NOTincluded in set returned by Person serviceassignedMachines() or PersonManager servicesPersonSequence allPersonsAssignedToMachine (inMachine aMachine) orPersonSequence allAssignedToMachinesPersons ( ).

ASSIGNED TOMACHINES

In this parent state, a Personhas been assigned to one ormore machines.

boolean isAssignedToMachines ( ) or booleanisAssignedToMachine (in Machine aMachine) sentto instance of Person returns TRUE. Personincluded in set returned by Person serviceassignedMachines() or PersonManager servicesPersonSequence allPersonsAssignedToMachine (inMachine aMachine) or PersonSequenceallAssignedToMachinesPersons ( ).

AVAILABLEFOR MOREASSIGNMENTS

In this substate, a Person isavailable for assignments tomore machines.

boolean isAvailableForMoreMachineAssignments( ) sent to instance of Person returns TRUE.

320 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

State Definition Query for State via

ASSIGNMENTAT CAPACITYEXCEEDED

In this substate, a Person canno longer be assigned toanother machine; that is, theyare AT CAPACITY withregard to machine assignment.

boolean isAvailableForMoreMachineAssignments()sent to instance of Person returns FALSE.

UNASSIGNEDTO JOBS

In this state a Person has notbeen assigned to any jobs. APerson may or may not beassigned to job(s).

boolean isAssignedToJobs ( ) or booleanisAssignedToJob (in Job aJob) sent to instance ofPerson returns FALSE. Person NOT included in setreturned by Person service assignedJobs() orPersonManager services PersonSequenceallPersonsAssignedToJob (in Job aJob) orPersonSequence allAssignedToJobsPersons ( ).

ASSIGNED TOJOBS

In this parent state, a Personhas been assigned to one ormore job(s).

boolean isAssignedToJobs ( ) or booleanisAssignedToJob (in Job aJob) sent to instance ofPerson returns TRUE. Person included in setreturned by Person service assignedJobs() orPersonManager services PersonSequenceallPersonsAssignedToJob (in Job aJob) orPersonSequence allAssignedToJobsPersons ( ).

AVAILABLEFOR MOREASSIGNMENTS

In this substate, a Person isavailable for assignments tomore jobs.

boolean isAvailableForMoreJobAssignments ( ) sentto instance of Person returns TRUE. Personincluded in set returned by PersonManager servicePersonSequence allPersonsAvailableForJob (in JobaJob) .

ASSIGNMENTAT CAPACITYEXCEEDED

In this substate, a Person canno longer be assigned toanother job; that is, they areAT CAPACITY with regardto job assignment.

boolean isAvailableForMoreJobAssignments ( ) sentto instance of Person returns FALSE. Person notincluded in set returned by PersonManager servicePersonSequence allPersonsAvailableForJob (in JobaJob).

CIM Framework Interfaces 321

Technology Transfer # 93061697J-ENG SEMATECH

Table 23 Person State Transition Table

# Current State Trigger New State Action Comment

non-existent createPersonWithIdentifier(in stringidentificationNumber);sent to an instance ofPersonManager

NOTAVAILABLE

1 NOTAVAILABLE

makeOnShift( ); sent toinstance of Person.

AVAILABLE PersonShiftChangedevent posted byinstance of Person.

PersonStateChangedevent posted byinstance of Person.

Person logged on toshift. Person isassumed to beinitially available forwork (at work station)and not assigned tomachines or jobs.

2 AT WORKSTATION

makeNotAtWorkStation( ); sent to instance ofPerson.

NOT AT WORKSTATION

PersonStateChangedevent posted byinstance of Person.

Typically used forsituation wherePerson is notphysically present atwork site (e.g., on abreak). Person is stillassigned to machine(s) and/or job (s).Person may be busywith a job.

3 NOT AT WORKSTATION

makeAtWorkStation ( );sent to instance of Person.

AT WORKSTATION

PersonStateChangedevent posted byinstance of Person.

Person is physicallypresent at work site.

4 UNASSIGNEDTO MACHINES

assignToMachine (...);sent to instance of Person.

ASSIGNED TOMACHINES

PersonCapacityChanged event posted byinstance of Person.

Person assigned to amachine. Forexample, aSchedulingComponent mightassign an operator toa machine.

5 AVAILABLEFOR MOREASSIGNMENTS

SendingassignToMachine (...); toinstance of Personincrements number ofmachine assignments toAT CAPACITY level.

ASSIGNMENTAT CAPACITYEXCEEDED

PersonStateChangedevent posted byinstance of Person.

6 ASSIGNMENTAT CAPACITYEXCEEDED

SendingdeassignFromMa-chine(...); to instance of Persondecrements number ofmachine assignmentsbelow AT CAPACITYlevel.

AVAILABLEFOR MOREASSIGNMENTS

PersonStateChangedevent posted byinstance of Person.

322 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

# Current State Trigger New State Action Comment

7 ASSIGNED TOMACHINES

SendingdeassignFromMa-chine(...); decrements numberof machine assignmentsto nil.

UNASSIGNEDTO MACHINES

PersonCapacityChanged event posted byinstance of Person.

Person not assignedto any machines.

8 UNASSIGNEDTO JOBS

assignToJob (...); sent toinstance of Person.

ASSIGNED TOJOBS

PersonCapacityChanged event posted byinstance of Person.

Person assigned tojob. Allocates aPerson to amanufacturing task. APerson may beallocated to more thanone task at a time.

9 AVAILABLEFOR MOREASSIGNMENTS

Sending assignToJob (...);to instance of Personincrements number of jobassignments to ATCAPACITY level.

ASSIGNMENTAT CAPACITYEXCEEDED

PersonStateChangedevent posted byinstance of Person.

10 ASSIGNMENTAT CAPACITYEXCEEDED

Sending deassignFromJob(...); to instance of Persondecrements number of jobassignments below ATCAPACITY level.

AVAILABLEFOR MOREASSIGNMENTS

PersonStateChangedevent posted byinstance of Person.

11 ASSIGNED TOJOBS

Sending deassignFromJob(...) decrements numberof job assignments to nil.

UNASSIGNEDTO JOBS

PersonCapacityChanged event posted byinstance of Person.

Person not assignedto any jobs.

12 AVAILABLE makeOnShift (); sent toinstance of Person.

NOTAVAILABLE

PersonShiftChangedevent posted byinstance of Person.

PersonStateChangedevent posted byinstance of Person.

Person logged off ofshift.

CIM Framework Interfaces 323

Technology Transfer # 93061697J-ENG SEMATECH

4.12.1.3 Interface: QualificationDataInherited Interface: NamedEntity

Description: This interface represents the record of training and medical examinationstaken by factory personnel. Successful completion of training and medicalexaminations qualifies personnel for operation of a specific piece of factoryequipment (a skill).It is anticipated that a Factory Labor application will specialize andinstantiate this interface to maintain the training and medical examinationhistories of factory personnel. For example, CourseQualificationData andMedicalQualificationData sub-interfaces could be defined. These sub-interfaces would exhibit most of the interesting behavior for this interface.For instance, each sub-interface could be compared with a correspondingsub-interface of the Skill Management Component interfaceSkillRequirement to determine certification (qualification for a skill).

The attribute QualificationHistory indicates that either a specific course or amedical examination was taken information regarding the date and time thePerson tested for the qualification (when testing for a course or a medicalexamination occurred) and the results of that test or examination.

Exceptions: None.

Published Events: None.

Provided Services:

/* Set and get the qualification descriptor (an abbreviated string which serves as a short-handnotation for identifying the course or examination; e.g., a course number.) */void setQualificationDesignator (in string designator)

raises (FrameworkErrorSignal);

string getQualificationDesignator ( ) raises (FrameworkErrorSignal);

/* Set and get the history for a qualification event. Historical information indicates that either aspecific course or a medical examination was taken; information regarding the date and time thePerson tested for the qualification (when testing for a course or a medical examination occurred);and the results of that test or examination. */void setQualificationHistory (in History qualificationHistory)

raises (FrameworkErrorSignal);

History getQualificationHistory( ) raises (FrameworkErrorSignal);

/* Return the date and time of qualification (when certification was made.) */TimeStamp certificationDate ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

324 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.12.2 Skill Management Component

This component supports the management of the skill or skill set required to qualify personnelfor operation of factory equipment. Specifically, the skills required in order that personnel canassist a process resource or job in the performance of a process capability. Support is providedthrough association of skill requirements (training and medical examinations that must becompleted) with a specific skill or skill set. The factory user will interface with this component todefine the training interface and medical examination roadmaps to achieve certification forfactory operations.

The Skill Management Component Information Model is shown in Figure 71.

SkillManagementComponent

ComponentManager

ProcessCapability

SkillRequirement

Person

SkillManager

has

define(s) thequalification

for performinga

MESFactory

Skill

manages

is achievedby satisfying

has

Job

performs

Figure 71 Skill Management Component Information Model

CIM Framework Interfaces 325

Technology Transfer # 93061697J-ENG SEMATECH

4.12.2.1 Interface: SkillManager

Inherited Interface: ComponentManager

Description: This is the interface between the Skill Management Component and therest of the CIM environment. This interface manages the skills or skill setsthat personnel must possess before they are permitted to operate factoryequipment. There are no limitations to the number of SkillManagerswithin a factory.

It is anticipated that a Factory Labor application would maintain theappropriate order (if required) of the qualifications related to a specificskill.

Exceptions:

/* This signal is raised with attempted creation of a duplicated Skill name. */exception SkillDuplicateSignal {string skillName;};

/* This signal is raised when a removal operation fails because the Skill specified by theargument could not be located. */exception SkillNotAssignedSignal {string skillName;};

exception SkillRemovalFailedSignal {string skillName;};

/* This signal is raised when a retrieval operation fails because the Skill specified by theargument could not be found. */exception SkillNotFoundSignal {string skillName;};

Published Events: None.

Provided Services:

/* Create an instance of Skill and add to the list managed by this SkillManager. */Skill createSkillNamed (in string skillName)

raises (FrameworkErrorSignal, SkillDuplicateSignal);

/* Delete a specific skill from the list managed by this SkillManager. */void removeSkillNamed (in string skillName)

raises (FrameworkErrorSignal, SkillNotAssignedSignal,

SkillRemovalFailedSignal);

/* List the skills managed by this SkillManager. */SkillSequence skills ( ) raises (FrameworkErrorSignal);

/* Search for an instance of Skill using its name. Raises an exception if the Skill is not found. */Skill findSkillNamed (in string skillName)

raises (FrameworkErrorSignal, SkillNotFoundSignal );

Contracted Services: None.

Dynamic Model: Same as inherited interface.

326 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.12.2.2 Interface: Skill

Inherited Interface: NamedEntity

Description: This interface describes the specific Skill or set of Skills required to beheld by personnel pursuant to operating factory equipment. Specifically, aSkill is required in order that a Person can assist a process resource or jobin the performance of a process capability. Each Skill is associated withone or more medical examination and/or training course requirements. ASkill may be associated with one or more process capabilities.

A Skill may represent a singular entity, it may categorize other Skills, or itmight be categorized with other Skills. It is anticipated that a FactoryLabor application would maintain the appropriate order (if required) of aset of Skills.

Exceptions:

/* This signal is raised when a definition operation fails because the SkillRequirement specifiedby the argument already exists. */exception SkillRequirementDuplicateSignal {string requirementName;};

/* This signal is raised when a removal operation fails because the SkillRequirement specified bythe argument could not be located. */exception SkillRequirementRemovalFailedSignal {SkillRequirement aRequirement;};

/* This signal is raised when a retrieval operation fails because the SkillRequirement specified bythe argument could not be located. */exception SkillRequirementNotFoundSignal {string requirementName;};

Published Events: None.

Provided Services:

/* Get and set the Skill categories to which this Skill is associated. */void setSkillCategories (in CategorySequence Categories)

raises (FrameworkErrorSignal);

CategorySequence getSkillCategories ( ) raises (FrameworkErrorSignal);

/* Define a training course or medical examination necessary for obtaining an instance of Skill.*/SkillRequirement createSkillRequirementNamed (in string requirementName)

raises (FrameworkErrorSignal, SkillRequirementDuplicateSignal);

/* Delete a training course or medical examination required for an instance of Skill. */void removeSkillRequirement (in SkillRequirement aRequirement)

raises (FrameworkErrorSignal, SkillRequirementRemovalFailedSignal,

SkillRequirementNotFoundSignal);

/* Search for an instance of SkillRequirement using its name. Raises an exception if theSkillRequirement is not found. */SkillRequirement findSkillRequirementNamed (in string requirementName)

raises (FrameworkErrorSignal, SkillRequirementNotFoundSignal);

/* Return the set of ProcessCapabilities to which this Skill is associated. */

CIM Framework Interfaces 327

Technology Transfer # 93061697J-ENG SEMATECH

ProcessCapabilitySequence processCapabilities ( ) raises (FrameworkErrorSignal);

/* List the training course or medical examination requirements that must be completed in orderto be qualified for an instance of Skill. */RequirementSequence requirements ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

328 CIM Framework Interfaces

SEMATECH Technology Transfer # 93061697J-ENG

4.12.2.3 Interface: SkillRequirement

Inherited Interface: NamedEntity

Description: This interface defines training and medical examinations required toachieve a specific skill. The collection of these requirements associatedwith a specific skill constitutes the roadmap for acquiring the skill.

It is anticipated that a Factory Labor application will specialize andinstantiate this interface to maintain the training and medical examinationrequirements for skills. For example, CourseSkillRequirement andMedicalSkillRequirement sub-interface could be defined.

Exceptions: None.

Published Events: None.

Provided Services:

/* Set and get the complete description of this requirement. The requirement is either a trainingcourse which must be successfully completed or a medical examination that must be taken andpassed. */void setDescription (in string description) raises (FrameworkErrorSignal);

string getDescription ( ) raises (FrameworkErrorSignal);

/* Set and get the requirement descriptor. (An abbreviated string which serves as a “short-hand”notation for identifying a training course or examination; e.g., “OPS-ORIENT-1”). */void setDesignator (in string designator) raises (FrameworkErrorSignal);

string getDesignator ( ) raises (FrameworkErrorSignal);

/* Set and get the required training course grade which must be received or medical examinationresult which must be achieved for the requirement. */void setRequiredResult (in string result) raises (FrameworkErrorSignal);

string getRequiredResult ( ) raises (FrameworkErrorSignal);

/* Return the information pertaining to the period of time in which this requirement is in effect.The information includes a starting time and a duration, from which expiration date can becomputed. */TimeWindow effectivity ( ) raises (FrameworkErrorSignal);

Contracted Services: None.

Dynamic Model: None.

Appendix A 329

Technology Transfer # 93061697J-ENG SEMATECH

APPENDIX AGlossary

Abstract class: Class that has no instances. An abstract class is written with the expectation thatits subclasses will add to its structure and behavior.

Abstract interface: An interface that is not instantiable and that standarizes the interfaces for aconcrete implementation of the interface.

Abstraction: A significant concept, function, or service provided by a subsystem. The essentialcharacteristics of an object that distinguish it from all other kinds of objects and thus providecrisply-defined conceptual boundaries relative to the perspective of the viewer. The process offactoring common behavior exhibited by one or more types to a separate super-type with theintention of reusing that behavior through inheritance. The quality criteria concerned with thosesoftware characteristics that determine how well an object, class, mechanism, service, orsubsystem capture the underlying essential characteristics of its behavior appropriate to therequirements

Application: Functionality provided by one or more programs consisting of a collection ofinteroperating objects.

Application framework: A framework that constitutes a generic application for a domain area.

Application Interface: A nonstandardized, application-specific interface.

Application object: An object implementing an Application Interface.

Architecture: The structure of the components of a program/system, their interrelationships, andprinciples and guidelines governing their design and evolution over time.

Attribute: An identifiable association between an object and a value. An attribute may haveaccessor functions to set and retrieve its value.

Behavior: The observable effects of performing a requested service including its results.

Binding: A specific choice of platform technologies and other implementation-specific criteria.

Change notice: A procedural tool employed in typical factories for initiating and specifyingchange(s) to document(s) whose versions are controlled.A change notice is usually associatedwith change approval and change activation processes as well.In a factory, change notices may beof paper or electronic form. Electronic change notices are supported by a software application.The CIM Framework supports such applications by providing standard change notice behaviorand functionality embodied in the Version Management Component.

CIM: Acronym for Computer Integrated Manufacturing. An approach that leverages theinformation handling capability of computers to manage manufacturing information and supportor automate the execution of manufacturing operations.

Class: The shared common structure and common behavior of a set of objects. The definition ofan object type. In CORBA IDL of the CIM Framework, classes are specified using the interfacekeyword, and superclass/subclass relationships are specified using the inherited interfacekeyword.

330 Appendix A

SEMATECH Technology Transfer # 93061697J-ENG

Class hierarchy: The inheritance relationships within a system. In a single-inheritancelanguagelike Smalltalk, this is a tree structure. In a multiple-inheritance language like C++, this is adirected graph.

Class inheritance: The construction of a class by incremental modification of other classes.

Client: An object that uses the services of another object by operating upon it or referencing itsstate.

Compliance: Adherence to the requirements of a specification or standard within anotherspecification or standard (also see conformance)..

Component: A package of functionality comprising any number of actual objects. In the CIMFramework, a component has a well-specified functionality with standard interfaces andbehaviors The component is the element of standardization and substitutability.

Concrete interface: An interface that may be instantiable.

Conformance: A relation defined over types such that type x conforms to type y if any value thatsatisfies type x also satisfies type y. Adherence to a specified standard or specification in theimplementation of a product, process, or service. If an implementation conformance statement ismade, then those requirements that apply to unsupported options are considered not to berelevant.

Conformance point: A reference point at which behavior may be observed for purposes ofconformance.

Conformance requirement: Identification in the specification of behavior and/or capabilitiesrequired by an implementation for it to conform to that specification.

Conforming implementation: An implementation that satisfies all relevant specifiedconformance requirements.

CORBA: Common Object Request Broker Architecture. An OMG standard architecture andspecification for an Object Request Broker, which is the fundamental object communicationmechanism in the OMG Object Management Architecture.

Distributed system: An integrated system consisting of several processing and memorycomponents working together to serve an application.

Domain Interface: An application domain-specific interface.

Domain object: An object implementing a Domain Interface.

Event: A message of some importance (for example, state change or new object created) sentasynchronously. An event channel is the intermediate object that forwards published events tointerested subscribers, providing a decoupling of event publishers and event subscribers.

Exception: An infrastructure mechanism used to notify a calling client of an operation that anunusual condition occurred in carrying out the operation.

Extensibility: The ability to extend or specialize existing components and add new objectclasses or components while preserving architecture integrity and component conformance tostandards.

Appendix A 331

Technology Transfer # 93061697J-ENG SEMATECH

Framework: A collection of classes or components that provide a set of services andfunctionality for a particular domain.

Functional group: A grouping of CIM Framework components and related application entities.Used to communicate the functional scope of portions of the CIM Framework. Functionalgroupings are arbitrary − they are not standard groupings or partitions in the CIM Framework.

IDL (OMG IDL): Interface Definition Language − a C++-like syntax for specifying a type’sattributes, services, exceptions, etc., Defined by the Object Management Group.

Implementation: The internal view of a class, object or module, including any non-publicbehavior. The specific code and functionality that implements an interface.

Implementation conformance statement: A statement made by the supplier of animplementation or system claiming to conform to one or more specifications and stating whichcapabilities have been implemented. It specifically includes the relevant optional capabilities andlimits.

Implementation inheritance: The construction of an implementation by incrementalmodification of other implementations (see interface inheritance). The CIM Framework does notspecify implementation inheritance.

Infrastructure: The services, facilities, and communications mechanisms that support thecollaboration between and lifecycle of distributed objects.

Inheritance: A relationship among classes wherein one class (a subclass) shares the structure orbehavior defined in one or more other classes (superclass). A subclass typically specializes itssuperclasses by augmenting or redefining existing structure and behavior.

Interface: The external view of a class, object, or module that emphasizes its abstraction whilehiding its structure and internal behavior. An interface definition ideally includes the semantics.

Interface inheritance: The construction of an interface by incremental modification of otherinterfaces (see implementation inheritance). The CIM Framework specifies interface inheritancebut not implementation inheritance.

Interoperability: The ability for two applications or the parts of an application to cooperate. Inthe CIM Framework, interoperability requires that application components share data, invokeeach others’ behavior (services), exchange events, and publish service exceptions.

Job: Some system level operation whose execution may be requested by an entity whoseresponsibility it is to manage jobs (in the CIM Framework, this entity is the JobSupervisor classcontained in the Job Supervisor Component).The job concept is analogous to operationsperformed on the “factory floor” in a physical factory. There, operators are requested to performoperations (jobs) requested by their managing supervisors or some other managing source.A joboften spans a significant amount of time and multiple resources within the system. In the CIMFramework, the job construct is intended for specialization to enable specific job supervisors andjobs to provide system solutions.

Life cycle: The life of an object, including creation, deletion, copy, and move.

MES: Manufacturing Execution System.

332 Appendix A

SEMATECH Technology Transfer # 93061697J-ENG

Method: An operation upon an object defined as part of the declaration of a class. In general, theterms message, method and operation can be used interchangeably. Technically, a method isdefined within a class and an operation is defined within the IDL. An operation is implementedby a method.

Method binding: The selection of the method to perform a requested service.

Object: An identifiable encapsulated entity that implements one or more services that can berequested by a client. An instance of a class.

Object diagram: Part of the notation of object-oriented design that is used to show the existenceof objects and their relationships in the logical design of a system and that primarily illustratesthe semantics of key mechanisms in the logicaldesign.

Object oriented analysis: A method of analysis in which requirements are examined from theperspective of the classes and objects found in the vocabulary of the problem domain.

Object oriented design: A method of design encompassing the process of object-orienteddecomposition and a notation for depicting both logical and physical as well as static anddynamic models of the system under design. This notation includes class diagrams, objectdiagrams, module diagrams, and process diagrams.

Object oriented programming: A method of implementation in which programs are organizedas cooperative collections of objects, each of which represents an instance of some class andwhose classes are all members of a hierarchy of classes united through inheritance relationships.In such programs, classes are generally viewed as static, whereas objects typically have a muchmore dynamic nature.

Object system: An object system is a collection of objects that isolates the requesters of servicesfrom the providers of services by a well-defined encapsulating interface. In particular, clients areisolated from the implementation of services as data representations and executable code.

OMA: Acronym for Object Management Architecture, an architecture for distributed objectcomputing developed by the OMG.

OMG: Acronym for Object Management Group, an international consortium dedicated to thedevelopment of open specifications for distributed, heterogeneous, object-oriented systems.

Operation: An operation is an entity, identified by an operation identifier that denotes a servicethat can be requested. An operation has a signature that describes the legitimate values of requestparameters and returned results, including any exceptions.

ORB: Acronym for Object Request Broker, which is the fundamental object communicationmechanism in the OMG Object Management Architecture.

Persistent object: An object that can survive the process or thread that created it.

Polymorphism: The ability to substitute objects of matching interfaces for another at run-time.

Process definition: As used in this specification, information related to manufacturingprocessess. This information includes an estimate for the time a process resource will be engagedin the process; process resource settings; and the process capabilities required for the process.

Appendix A 333

Technology Transfer # 93061697J-ENG SEMATECH

Process flow: The part of a product specification that defines the sequence of process steps forthe manufacturing of a specific product. The data structure for representing a process flow is thedirected graph; specifically, a tree structure. The nodes of the tree are called process flow nodes(see below). Services are required to navigate the process flow.

Process flow context: Navigational information pertaining to a product’s progress as it traversesits context process flow.

Process flownode: A data structure element (a node) within a directed graph which is used by aspecification management system to represent a process flow. A process flow node correspondsto a point along a process flow where processing is defined. An operation set specification is atype of process flow node.

Process sequence node: A data structure element (a node) within a directed graph representingmaterial routing. A set of linked process sequence nodes describes the routing of a materialwithin a machine.

Process step: The smallest unit of processing activity which can be defined in a process flow.One or more process steps are sequenced to define an operation set.

Recipe: The pre-planned and reusable portion of the set of instructions, settings and parametersthat determine how a job is to be performed.For example, recipes are used to describeProcessSteps and are typically contained within a ProductSpecification. They determine theprocessing environment seen by a manufactured product (e.g., wafer). Processing recipes may besubject to change between product runs or processing cycles.

Server object: An object providing a response to a request for service.

Signature: A signature is the name, parameters, return values and exceptions for a specificoperation.

Standard: A component specification subscribed to by the consensus of implementers of theCIM Framework under control of the appropriate governing body and subject to documentrevision.

Substitutability: The ability to replace a given component from one supplier with a functionallyequivalent component from another supplier without impacting the other components or itsclients in the system.

Thread of control: (control thread) A single, sequential flow of control within a computerprogram. Some operating systems support the simultaneous execution of control threads inparallel. A thread of control may represent the functionality of a sub-task within a larger task. Forexample, a factory startup task might initiate several threads of control, each of which isresponsible for the startup of a particular piece of processing equipment.

Validation: A continuing process to ensure that requirements at various levels are correct, thussatisfying project requirements.

Version managed revision: A change (revision) of a document which requires the application ofspecial practices in order to manage the approval and activation (use) of the change.For example,a document specifying exact equipment settings for performing a process on military grade

334 Appendix A

SEMATECH Technology Transfer # 93061697J-ENG

products typically requires its revisions to be managed whereas a message (“document”)specifying the location of a meeting may not.

Wrapper: A software implementation that forms a layer surrounding another implementation forthe purposes of presenting interface and functional behavior required by other implementations.The need for wrappers often arises when migrating existing applications to embrace a new, moreadvanced approach. This typically occurs when migration is preferred to wholesale replacementfor cost/benefit reasons.

Appendix B 335

Technology Transfer # 93061697J-ENG SEMATECH

APPENDIX BAcronyms

AMHS Automated Material Handlng System

APCFI Advanced Process Control Framework Initative

API Application Programming Interface

ARAMS Automated Reliability, Availability, and Maintainability Standard (SEMI)

CIM Computer Integrated Manufacturing

CF Common Facility

CORBA Common Object Request Broker Architecture

COSS Common Object Services Specification

CTMC Cluster Tool Module Communications

DCE Distributed Computing Environment

EID Equipment Interface Development

GEM Generic Equipment Model

IDL Interface Definition Language

JIT Just In Time

MES Manufacturing Execution System

MMMS Material Movement Management Services (SEMI)

OBA Object Behavior Analysis

OBEM Object Based Equipment Model

OMA Object Management Architecture

OMG Object Management Group

OMT Object Modeling Technique

OO Object-Oriented

OOA Object-Oriented Analysis

OOD Object-Oriented Design

OODB Object-Oriented Data Base

ORB Object Request Broker

OS Object Service

RAM Reliability, Availability, and Maintainability

RMS Recipe Management System

336 Appendix B

SEMATECH Technology Transfer # 93061697J-ENG

RPC Remote Procedure Call

SECS-II SEMI Equipment Communications Standard 2

SEMI Semiconductor Equipment and Materials International

UI User Interface

WIP Work In Process

Appendix C 337

Technology Transfer # 93061697J-ENG SEMATECH

APPENDIX CReferences

[Alb] Albus, J.S. “Outline for a Theory of Intelligence,” IEEE (Institute of Electricaland Electronics Engineers) Transactions on Systems, Man, and Cybernetics 21,n3 p473-509 May/Jun 91.

[Boo91] Booch, G. Objected-Oriented Design with Applications, Benjamin Cummings,1991.

[CIMArch] Computer Integrated Manufacturing (CIM) Framework Architecture Concepts,Principles and Guidelines, Version 1.0, Technology Transfer #97103379A-ENG.Austin, TX: SEMATECH.

[ComFac] Object Management Group. Common Facilities Architecture, Revision 4.0.Document Number 95-01-02. Framingham, MA: Object Management Group,1995.

[CORBA] Object Management Group. Common Object Request Broker: Architecture andSpecification, Revision 2.1. Framingham, MA: Object Management Group, 1997.ftp://ftp.omg.org/pub/docs/formal/97-10-01.pdf.

[COS] Object Management Group. CORBAservices: Common Object ServicesSpecification. Framingham, MA: Object Management Group, November 22,1996.

[CosEvent] Object Management Group. CORBAservices - Event Management Service.Document Number 97-07-13. Framingham, MA: Object Management Group,1997. ftp://ftp.omg.org/pub/docs/formal/97-07-13.pdf.

[CosProp] Object Management Group. CORBAservices - Property Service. DocumentNumber 97-07-22. Framingham, MA: Object Management Group, 1997.ftp://ftp.omg.org/pub/docs/formal/97-07-22.pdf.

[CosTime] Object Management Group. Object Time Service Specification. DocumentNumber 97-07-25. Framingham, MA: Object Management Group, 1997.ftp://ftp.omg.org/pub/docs/ab/97-07-25.pdf.

[CosTrade] Object Management Group. CORBAservices - Trader Service. Document Number97-07-26. Framingham, MA: Object Management Group, 1997.ftp://ftp.omg.org/pub/docs/formal/97-07-26.pdf.

[Gam94] Gamma, Eric, et. al., Design Patterns: elements of resuable object-orientedsoftware. Reading, MA. Addison-Wesley, 1994.

[Haw] Hawker, J.S., An Organization for Intelligent Robot Control, Ph.D. Dissertation,Lehigh University, Bethlehem, Pennsylvania, 1990.

[ISA] Standard ISA-S88.01 - Batch Control, Part 1: Models and Terminology,Instrument Society of America, Research Triangle Park, North Carolina, 1995.

338 Appendix C

SEMATECH Technology Transfer # 93061697J-ENG

[OMA] Object Management Group. Object Management Architecture Guide, Revision3.0. Framingham, MA: Object Management Group, 1995.ftp://ftp.omg.org/pub/docs/ab/97-05-05.pdf.

[Rum91] Rumbaugh, J. et al. Object-Oriented Modeling and Design. Englewood Cliffs, NJ:Prentice-Hall, 1991.

[SEMA95] Implementation Handbook for the Computer Integrated Manufacturing (CIM)Application Framework Specification 1.2, Technology Transfer#95092971A-ENG. Austin, TX: SEMATECH.

[SEMI95] Semiconductor Equipment and Materials International. Equipment Automation/Software, Volume 1. Mountain View, CA: Semiconductor Equipment andMaterials International, 1995.

[SEMI96] Semiconductor Equipment and Materials International. EquipmentAutomation/Software, Volume 2. Mountain View, CA: Semiconductor Equipmentand Materials International, 1996.

[SEMI97] Semiconductor Equipment and Materials International. EquipmentCommunications Standard 2. Document Number E5-1296 Mountain View, CA:Semiconductor Equipment and Materials International, 1997.

[SysMan] Object Management Group. Systems Management: Common ManagementFacilities, Volume 1, Version 2. OMG Document Number formal/97-06-08.X/Open Company, 1997. ftp://ftp.omg.org/pub/docs/ab/97-06-08.pdf.

[Tay90] Taylor, D. Object-Oriented Technology: A Manager’s Guide, Servio, 1990.

[Will] Williams, T.J; Zeng-Jin Han, An Overview of the Purdue CIM ReferenceArchitecture, Asia-Pacific Engineering Journa, Part A (Electrical Engineering),vol.3, no.1-2, pp.143-163, Singapore, 1993.

Appendix D 339

Technology Transfer # 93061697J-ENG SEMATECH

APPENDIX DCIM Framework Events

Property is based on the COSS Property Service definition.

Job Supervisor (Not Used)

/* Managed Job lifecycle event definition. */#define JobLifecycleSubject “/JobSupervisor/JobSupervisor/JobLifecycle”

typedef struct JobLifecycleFilter_Structure {

Property name; // “Name”, aJob’s name 2

Property lifecycle

; // “LifecycleEvent”, LifecycleState

} JobLifecycleFilters;

typedef struct JobLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

JobLifecycleFilters eventFilterData;

Properties eventNews;

Job aJob;

// Except on “Delete” where value will be nil

} JobLifecycleEvent;

Job

/* Job state change event definition. */#define JobStateChangedSubject “/JobManagement/Job/StateChanged”

enum JobState { JobUndefined, JobCreated, JobQueued, JobCancelled, JobActive,JobExecuting, JobNotPaused, JobPausing, JobPaused, JobNotStopping, JobStopping,JobNotAborting, JobAborting, JobFinished, JobCompleted, JobStopped, JobAborted };

typedef struct JobStateChangedFilter_Structure {

Property name; // “Name”, aJob’s name

Property formerState; // “FormerState”, JobState

Property newState; // “NewState”, JobState

} JobStateChangedFilters;

typedef struct JobStateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

JobStateChangedFilters eventFilterData;

Properties eventNews;

Job aJob;

} JobStateChangedEvent;

MESFactory

/* MES Factory state change event definition. */

2 The use of “name” here (and in all other events) indicates the string value for the name or identifier of the object to which the event refers.Since filtering does not support object reference comparisons, the filtering must be on the “name” of the object. Since all events are aboutobjects that inherit from NamedEntity, they all have names. In some cases, such as Lot, the object has a defined unique identifier. In thosecases, the identifier attribute should be used rather than the name from NamedEntity inheritance.

340 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

#define MESFactoryStateChangedSubject “/Factory/MESFactory/StateChanged”

enum MESFactoryState { FactoryUndefined, FactoryStartingUp, FactoryOperating,

FactoryGoingToStandby, FactoryStandby, FactoryShuttingDownImmediately,

FactoryShuttingDownNormally, FactoryOff };

typedef struct MESFactoryStateChangedFilter_Structure {

Property name; // “Name”, aMESFactory’s name

Property formerState; // “FormerState”, MESFactoryState

Property newState; // “NewState”, MESFactoryState

} MESFactoryStateChangedFilters;

typedef struct MESFactoryStateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

MESFactoryStateChangedFilters eventFilterData;

Properties eventNews;

MESFactory aMESFactory;

} MESFactoryStateChangedEvent;

Area

/* Area configuration changed event definition. */#define AreaConfigurationChangedSubject “/Factory/Area/AreaConfigurationChanged”

enum AreaChangeType { MachinesChanged, PersonsChanged, SubAreaChanged };

typedef struct AreaConfigurationChangedFilter_Structure {

Property name; // “Name”, anArea’s name

Property changeType; //“ChangeType”, AreaChangeType

} AreaConfigurationChangedFilters;

typedef struct AreaConfigurationChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

AreaConfigurationChangedFilters eventFilterData;

Properties eventNews;

Area anArea;

} AreaConfigurationChangedEvent;

FactoryCalendar

/* Area shutdown changed event definition. */#define AreaShutdownChangedSubject “/Factory/FactoryCalendar/AreaShutdownChanged”

typedef struct AreaShutdownChangedFilter_Structure {

Property name; // “Name”, anArea’s name

Property shutdownDate; //“ShutdownDate”, TimeStamp for new shutdown

} AreaShutdownChangedFilters;

typedef struct AreaShutdownChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

AreaShutdownChangedFilters eventFilterData;

Properties eventNews;

Area anArea;

} AreaShutdownChangedEvent;

Component Manager

/* Component Manager state changed event definition. */

Appendix D 341

Technology Transfer # 93061697J-ENG SEMATECH

#define ComponentManagerStateChangedSubject “/Resource/ComponentManager/StateChanged”

enum ComponentManagerState { ComponentManagerUndefined, ComponentManagerStopped,ComponentManagerStartingUp, ComponentManagerOperating, ComponentManagerShuttingDown};

typedef struct ComponentManagerStateChangedFilter_Stucture {

Property name; // “Name”, aComponentManager’s name

Property formerState; //“FormerState”,ComponentManagerState

Property newState; //“NewState”, ComponentManagerState

} ComponentManagerStateChangedFilters;

typedef struct ComponentManagerStateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ComponentManagerStateChangedFilters eventFilterData;

Properties eventNews;

ComponentManager aComponentManager;

} ComponentManagerChangedEvent;

/* Component Manager registration changed event definition. */#define RegistrationChangedSubject“/Factory/ComponentManager/ComponentManagerRegistrationChanged”

enum RegistrationState { RegisterationUndefined, Registered, NotRegistered };

typedef struct RegistrationChangedFilter_Structure {

Property MESFactoryName; // “MESFactoryName”, aMESFactory’s name

Property ComponentManagerName;

// “ComponentManagerName”, aComponentManager’s name

Property newState; // “NewState”, RegistrationState

} RegistrationChangedFilters;

typedef struct RegistrationChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

RegistrationChangedFilters eventFilterData;

Properties eventNews;

MESFactory aMESFactory;

ComponentManager aComponentManager;

} ComponentManagerRegistrationChangedEvent;

Product Manager

/* Process group lifecycle event definition. */#define ProcessGroupLifecycleSubject“/ProductManagement/ProductManager/ProcessGroupLifecycle”

typedef struct ProcessGroupLifecycleFilter_Structure {

Property name; // “Name”, aProcessGroup’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} ProcessGroupLifecycleFilters;

typedef struct ProcessGroupLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ProcessGroupLifecycleFilters eventFilterData;

Properties eventNews;

ProcessGroup aProcessGroup;

} ProcessGroupLifecycleEvent;

342 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

/* Lot lifecycle event definition. */#define LotLifecycleSubject “/ProductManagement/ProductManager/LotLifecycle”

typedef struct LotLifecycleFilter_Structure {

Property name; // “Name”, aLot’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} LotLifecycleFilters;

typedef struct LotLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

LotLifecycleFilters eventFilterData;

Properties eventNews;

Lot aLot;

} LotLifecycleEvent;

/* Wafer lifecycle event definition. */#define WaferLifecycleSubject “/ProductManagement/ProductManager/WaferLifecycle”

typedef struct WaferLifecycleFilters_Structure {

Property name; // “Name”, aWafer’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} WaferLifecycleFilters;

typedef struct WaferLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

WaferLifecycleFilters eventFilterData;

Properties eventNews;

Wafer aWafer;

} WaferLifecycleEvent;

Lot

/* Lot state change event definition. */#define LotStateChangedSubject “/ProductManagement/Lot/StateChanged”

enum LotState { LotUndefined, LotCreated, LotReleased, LotActive, LotInProduction,LotInRework, LotOnHold, LotNotOnHold, LotWaitingToLogin, LotLoggedIn, LotLoggedOut,LotFinished, LotCompleted, LotEmptied, LotScrapped, LotShipped };

typedef struct LotStateChangedFilters_Structure {

Property name; // “Name”, aLot’s name

Property formerState; // “FormerState”, LotState

Property newState; // “NewState”, LotState

} LotStateChangedFilters;

typedef struct LotStateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

LotStateChangedFilters eventFilterData;

Properties eventNews;

Lot aLot;

} LotStateChangedEvent;

/* Lot quantity change event definition. This event is posted when a Lot’s quantity of Product aschanged due to scrap, loss, splits or joins. */#define LotQuantityChangedSubject “/ProductManagement/Lot/QuantityChanged”

Appendix D 343

Technology Transfer # 93061697J-ENG SEMATECH

enum QuantityChangeReason {ChangeReasonUndefined,ChangeReasonScrap,ChangeReasonLoss,ChangeReasonSplit,ChangeReasonJoin,ChangeReasonEngineeringBuy };

typedef struct LotQuantityChangedFilters_Structure {

Property name; // “Name”, aLot’s name

Property reason; //“Reason”,QuantityChangeReason

Property formerQuantity;

//“FormerQuantity”, aLot’s former quantity

Property newQuantity; // “NewQuantity”, aLot’s new quantity

} LotQuantityChangedFilters;

typedef struct LotQuantityChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

LotQuantityChangedFilters eventFilterData;

Properties eventNews;

Lot aLot;

} LotQuantityChangedEvent;

/* Lot priority change event definition. This event is posted whenever a Lot’s priority changes. */#define LotPriorityChangedSubject “/ProductManagement/Lot/PriorityChanged”

typedef struct LotPriorityChangedFilters_Structure {

Property name; // “Name”, aLot’s name

Property formerPriority;

// “FormerPriority”, aLot’s former priority

Property newPriority; // “NewPriority”, aLot’s new priority

} LotPriorityChangedFilters;

typedef struct LotPriorityChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

LotPriorityChangedFilters eventFilterData;

Properties eventNews;

Lot aLot;

} LotPriorityChangedEvent;

/* Lot due data change event definition. */#define LotDueDateChangedSubject “/ProductManagement/Lot/DueDateChanged”

typedef struct LotDueDateChangedFilters_Structure {

Property name; // “Name”, aLot’s name

Property newDueDate; // “NewDueDate”, aLot’s new due date

} LotDueDateChangedFilters;

typedef struct LotDueDateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

LotDueDateChangedFilters eventFilterData;

Properties eventNews;

Lot aLot;

} LotDueDateChangedEvent;

/* Lot flow position adjusted event definition. This event is posted when a Lot is adjusted in itsflow position. This event is not necessary when the flow position adjustment is in its normal,next sequential operation but only when the Lot is adjusted to a radically differenct position inthe flow (usually due to an engineering decision about rework). */

344 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

#define LotFlowPositionAdjustedSubject “/ProductManagement/Lot/FlowPositionAdjusted”

typedef struct LotFlowPositionAdjustedFilters_Structure {

Property lotname; // “LotName”, aLot’s name

Property oldPositionName;// “OldProcessOperationName”,

// aLot’s former flow position’s name

Property newPositionName;// “NewProcessOperationName”,

// aLot’s new flow position’s name

} LotFlowPositionAdjustedFilters;

typedef struct LotFlowPositionAdjustedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

LotFlowPositionAdjustedFilters eventFilterData;

Properties eventNews;

Lot aLot;

} LotFlowPositionAdjustedEvent;

/* Lot process flow changed event definition. This event is posted when a Lot is moved to adifferent ProcessFlow from its current ProcessFlow. This can occur because a given Lot hasfailed some sort of inspection and will become a downgraded product type or because a Lot ismoved onto a different rework flow. Typically, when a Lot is split, it is so that part of the Productof the Lot can move onto a different flow temporarily and eventually be joined back to theoriginal Lot for continued processing on the “normal” flow. */#define LotProcessFlowChangedSubject “/ProductManagement/Lot/ProcessFlowChanged”

typedef struct LotProcessFlowChangedFilters_Structure {

Property lotName; //“LotName”,value = aLot’s name

Property oldProcessFlowName; // “OldProcessFlowName”,

// aLot’s old ProcessFlow’s name

Property newProcessFlowName; // “NewProcessFlowName”,

//aLot’s new ProcessFlow’s name

Property theProcessStepName; // “ProcessStep”,

//aLot’s new ProcessStep’s name

} LotProcessFlowChangedFilters;

typedef struct LotProcessFlowChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

LotProcessFlowChangedFilters eventFilterData;

Properties eventNews;

Lot aLot;

// ProcessFlow oldProcessFlow;

// ProcessFlow newProcessFlow;

// ProcessStep newProcessStep;

} LotProcessFlowChangedEvent;

/* Lot reservation changed event. This event is posted when a Lot is placed on reserve by someentity or when a reservation is removed. When a Lot is reserved, it should no longer beconsidered for dispatching decisions. */#define LotReservationChangedSubject “/ProductManagement/Lot/ReservationChanged”

typedef struct LotReservationChangedFilters_Structure {

Property name; // “Name”, aLot’s name

Property state; //“ReservationState”, aLot’s reservation state

Property reservingObjectName; // “ReservingObjectName”,

Appendix D 345

Technology Transfer # 93061697J-ENG SEMATECH

// aLot’s reserving object’s name

} LotReservationChangedFilters;

typedef struct LotReservationChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

LotReservationChangedFilters eventFilterData;

Properties eventNews;

Lot aLot;

any aReservingObject;

} LotReservationChangedEvent;

Durable Manager

/* TransportGroup lifecycle event definition. */#define TransportGroupLifecycleSubject“/DurableManagement/DurableManager/TransportGroupLifecycle”

typedef struct TransportGroupLifecycleFilters_Structure {

Property name; // “Name”, aTransportGroup’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} TransportGroupLifecycleFilters;

typedef struct TransportGroupLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

TransportGroupLifecycleFilters eventFilterData;

Properties eventNews;

TransportGroup aTransportGroup;

// Except when “Delete” where value will be nil

} TransportGroupLifecycleEvent;

/* MaterialContainer lifecycle event definition. */#define MaterialContainerLifecycleSubject“/DurableManagement/DurableManager/MaterialContainerLifecycle”

typedef struct MaterialContainerLifecycleFilters_Structure {

Property name; // “Name”, aMaterialContainer’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} MaterialContainerLifecycleFilters;

typedef struct MaterialContainerLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

MaterialContainerLifecycleFilters eventFilterData;

Properties eventNews;

MaterialContainer aMaterialContainer; // Except when Delete”where value will be nil

} MaterialContainerLifecycleEvent;

/* ProcessDurable lifecycle event definition. */#define ProcessDurableLifecycleSubject“/DurableManagement/DurableManager/ProcessDurableLifecycle”

typedef struct ProcessDurableLifecycleFilters_Structure {

Property name; // “Name”, aProcessDurable’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} ProcessDurableLifecycleFilters;

typedef struct ProcessDurableLifecycleEvent_Structure {

string eventSubject;

346 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

TimeStamp eventTimeStamp;

ProcessDurableLifecycleFilters eventFilterData;

Properties eventNews;

ProcessDurable aProcessDurable;

// Except when “Delete” where value will be nil

} ProcessDurableLifecycleEvent;

Durable

/* Durable state change event definition. */#define DurableStateChangedSubject “/DurableManagement/Durable/StateChanged”

enum DurableState {DurableUndefined, DurableAvailable, DurableNotAvailable,

DurableInUse, DurableScrapped };

typedef struct DurableStateChangedFilters_Structure {

Property name; // “Name”, aDurable’s name

Property formerState; // “formerState”, DurableState

Property newState; // “newState”, DurableState

} DurableStateChangedFilters;

typedef struct DurableStateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

DurableStateChangedFilters eventFilterData;

Properties eventNews;

Durable aDurable;

} DurableStateChangedEvent;

/* Durable’s location changed event definition. */#define DurableLocationChangedSubject “/DurableManagement/Durable/LocationChanged”

typedef struct DurableLocationChangedFilters_Structure {

Property name; // “DurableName”, aDurable’s name

Property newAssignedMachineName; //“MachineName”,aMachine’s name

} DurableLocationChangedFilters;

typedef struct DurableLocationChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

DurableLocationChangedFilters eventFilterData;

Properties eventNews;

Durable aDurable;

Machine aMachine;

} DurableLocationChangedEvent;

/* Durable reservation changed event. This event is posted when a Durable is placed on reserveby some entity or when a reservation is removed. */#define DurableReservationChangedSubject“/DurableManagement/Durable/ReservationChanged”

typedef struct DurableReservationChangedFilters_Structure {

Property durableName; // “DurableName”, aDurable’s name

Property state; // “ReservationState”, ReservationState

Property reservingObjectName;

//“ReservingObjectName”,reserving object’s name

} DurableReservationChangedFilters;

typedef struct DurableReservationChangedEvent_Structure {

string eventSubject;

Appendix D 347

Technology Transfer # 93061697J-ENG SEMATECH

TimeStamp eventTimeStamp;

DurableReservationChangedFilters eventFilterData;

Properties eventNews;

Durable aDurable;

any ReservingObject;

} DurableReservationChangedEvent;

Consumable Manager

/* Consumable lifecycle event definition. */#define ConsumableLifecycleSubject“/ConsumableManagement/ConsumableManager/ConsumableLifecycle”

typedef struct ConsumableLifecycleFilters_Structure {

Property name; // “Name”, aConsumable’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} ConsumableLifecycleFilters;

typedef struct ConsumableLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ConsumableLifecycleFilters eventFilterData;

Properties eventNews;

Consumable aConsumable; // Except when “Delete” wherevalue will be nil

} ConsumableLifecycleEvent;

Consumable

/* Consumable depletion and addition event definition. */

#define ConsumableStateChangedSubject “/ConsumableManagement/Consumable/ConsumableStateChanged ”enum ConsumableState { ConsumableUndefined, ConsumableAvailable, ConsumableDepleted };

typedef struct ConsumableStateChangedFilters_Structure {

Property name; // “Name”, aConsumable’s name

Property state; // “NewState”, ConsumableState

} ConsumableStateChangedFilters;

typedef struct ConsumableStateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ConsumableStateChangedFilters eventFilterData;

Properties eventNews;

Consumable aConsumable;

} ConsumableStateChangedEvent;

/* Consumable increment or decrement quantity event definition. */#define ConsumableQuantityChangedSubject“/ConsumableManagement/Consumable/ConsumableQuantityChanged”

enum ConsumableQuantityChanged { ConsumableAdded, ConsumableDeleted };

typedef struct ConsumableQuantityChangedFilters_Structure {

Property name; // “Name”, aConsumable’s name

Property changeType; // ConsumableQuantityChanged

} ConsumableQuantityChangedFilters;

typedef struct ConsumableQuantityChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

348 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

ConsumableQuantityChangedFilters eventFilterData;

Properties eventNews;

Consumable aConsumable;

} ConsumableQuantityChangedEvent;

Document Manager

/* Document lifecycle event definition. */#define DocumentLifecycleSubject“/DocumentManagement/DocumentManager/DocumentLifecycle”

typedef struct DocumentLifecycleFilters_Structure {

Property name; // “Name”, aDocumentSpecification’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} DocumentLifecycleFilters;

typedef struct DocumentLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

DocumentLifecycleFilters eventFilterData;

Properties eventNews;

DocumentSpecification aDocumentSpecification;

// Except when “Delete” where value will be nil

} DocumentLifecycleEvent;

/* Version management on or off event definition. */#define VersionManagementRequiredSubject“/DocumentManagement/DocumentManager/VersioningRequired”

enum VersionManagementState { VersionManagementOn, VersionManagementOff };

typedef struct VersionManagementRequiredFilters_Structure {

Property state; // “VersionManagementState”, VersionManagementState

} VersionManagementRequiredFilters;

typedef struct VersionManagementRequiredEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

VersionManagementRequiredFilters eventFilterData;

Properties eventNews;

} VersionManagementRequiredEvent;

Document Specification

/* Document Revision lifecycle event definition. */#define DocumentRevisionLifecycleSubject“/DocumentManagement/DocumentSpecification/DocumentRevisionLifecycle”

typedef struct DocumentRevisionLifecycleFilters_Structure {

Property name; // “name”, aDocumentRevision’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} DocumentRevisionLifecycleFilters;

typedef struct DocumentRevisionLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

DocumentRevisionLifecycleFilters eventFilterData;

Properties eventNews;

DocumentRevision aDocumentRevision;

// Except when “Delete” where value will be nil

} DocumentRevisionLifecycleEvent;

Appendix D 349

Technology Transfer # 93061697J-ENG SEMATECH

Document Revision

/* Document Revision state changed event definition. */#define DocumentRevisionStateChangedSubject“/DocumentManagement/DocumentRevision/StateChanged”

enum DocumentRevisionState { DocumentRevisionUndefined, DocumentRevisionInWork,

DocumentRevisionActive, DocumentRevisionInactive };

typedef struct DocumentRevisionStateChangedFilters_Structure {

Property name; // “Name”, aDocumentRevision’s name

Property formerState; // “formerState”, DocumentRevisionState

Property newState; // “newState”, DocumentRevisionState

} DocumentRevisionStateChangedFilters;

typedef struct DocumentRevisionStateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

DocumentRevisionStateChangedFilters eventFilterData;

Properties eventNews;

DocumentRevision aDocumentRevision;

} DocumentRevisionStateChangedEvent;

Version Manager

/* Change Notice lifecycle event definition. */#define ChangeNoticeLifecycleSubject“/VersionManagement/VersionManager/ChangeNoticeLifecycle”

typedef struct ChangeNoticeLifecycleFilters_Structure {

Property name; // “Name”, aChangeNotice’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} ChangeNoticeLifecycleFilters;

typedef struct ChangeNoticeLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ChangeNoticeLifecycleFilters eventFilterData;

Properties eventNews;

ChangeNotice aChangeNotice;

// Except when “Delete” where value will be nil

} ChangeNoticeLifecycleEvent;

Change Notice

/* Change Notice state changed event definition. */#define ChangeNoticeStateChangedSubject “/VersionManagement/ChangeNotice/StateChanged”

enum ChangeNoticeState {ChangeNoticeUndefined, ChangeNoticeInWork,ChangeNoticeActivated, ChangeNoticePreparingToActivate };

typedef struct ChangeNoticeStateChangedFilters_Structure {

Property name; // “Name”, aChangeNotice’s name

Property formerState; // “formerState”, ChangeNoticeState

Property newState; // “newState”, ChangeNoticeState

} ChangeNoticeStateChangedFilters;

typedef struct ChangeNoticeStateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ChangeNoticeStateChangedFilters eventFilterData;

Properties eventNews;

350 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

ChangeNotice aChangeNotice;

} ChangeNoticeStateChangedEvent;

/* Rejected Change Notice event definition. This event is published when the change notice isundergoing signoff validation and is rejected by one of the participants in the review process. */#define ChangeNoticeRejectedSubject “/VersionManagement/ChangeNotice/Rejected”

typedef struct ChangeNoticeRejectedFilters_Structure {

Property name; // “Name”, aChangeNotice’s name

} ChangeNoticeRejectedFilters;

typedef struct ChangeNoticeRejectedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ChangeNoticeRejectedFilters eventFilterData;

Properties eventNews;

ChangeNotice aChangeNotice;

} ChangeNoticeRejectedEvent;

/* Change Notice sign-off set changes event definition. */#define ChangeNoticeSignoffsChangedSubject“/VersionManagement/ChangeNotice/SignoffsChanged”

typedef struct ChangeNoticeSignoffsChangedFilters_Structure {

Property name; // “Name”, aChangeNotice’s name

} ChangeNoticeSignoffsChangedFilters;

typedef struct ChangeNoticeSignoffsChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ChangeNoticeSignoffsChangedFilters eventFilterData;

Properties eventNews;

ChangeNotice aChangeNotice;

} ChangeNoticeSignoffsChangedEvent;

Process Definition Manager

/* Process Definition lifecycle event definition. */#define ProcessDefinitionLifecycleSubject“/ProcessDefinitionManagement/ProcessDefinitionManager/ProcessDefinitionLifecycle”

typedef struct ProcessDefinitionLifecycleFilters_Structure {

Property name; // “Name”, aProcessDefinition’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} ProcessDefinitionLifecycleFilters;

typedef struct ProcessDefinitionLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ProcessDefinitionLifecycleFilters eventFilterData;

Properties eventNews;

// ProcessDefinition aProcessDefinition;

// Except when “Delete” where value wil be nil

} ProcessDefinitionLifecycleEvent;

/* Process Flow lifecycle event definition. */

#define ProcessFlowLifecycleSubject

“/ProcessDefinitionManagement/ProcessDefinitionManager/ProcessFlowLifecycle”

typedef struct ProcessFlowLifecycleFilters_Structure {

Appendix D 351

Technology Transfer # 93061697J-ENG SEMATECH

Property name; // “Name”, aProcessFlow’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} ProcessFlowLifecycleFilters;

typedef struct ProcessFlowLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ProcessFlowLifecycleFilters eventFilterData;

Properties eventNews;

// ProcessFlow aProcessFlow;

// Except when “Delete” where value will be nil

} ProcessFlowLifecycleEvent;

/* Process Flow Context lifecycle event definition. */#define ProcessFlowContextLifecycleSubject

“/ProcessDefinitionManagement/ProcessDefinitionManager/ProcessFlowContextLifecycle”

typedef struct ProcessFlowContextLifecycleFilters_Structure {

Property name; // “Name”, aProcessFlowContext’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} ProcessFlowContextLifecycleFilters;

typedef struct ProcessFlowContextLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ProcessFlowContextLifecycleFilters eventFilterData;

Properties eventNews;

ProcessFlowContext aProcessFlowContext;

// Except when “Delete” where value will be nil

} ProcessFlowContextLifecycleEvent;

Product Specification Manager

/* Product Specification lifecycle event definition. */#define ProductSpecificationLifecycleSubject

“/ProductSpecificationManagement/ProductSpecificationManager/ProductSpecificationLifecycle”

typedef struct ProductSpecificationLifecycleFilters_Structure {

Property name; // “Name”, aProductSpecification’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} ProductSpecificationLifecycleFilters;

typedef struct ProductSpecificationLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ProductSpecificationLifecycleFilters eventFilterData;

Properties eventNews;

ProductSpecification aProductSpecification;

// Except when “Delete” where value is nil

} ProductSpecificationLifecycleEvent;

Bill of Material Specification Manager

/* Bill of Material Specification lifecycle event definition. */#define BOMSpecificationLifecycleSubject“/BOMSpecificationManagement/BOMSpecificationManager/BOMSpecificationLifecycle”

typedef struct BOMSpecificationLifecycleFilters_Structure {

Property name; // “Name”, aBOMSpecification’s name

352 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} BOMSpecificationLifecycleFilters;

typedef struct BOMSpecificationLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

BOMSpecificationLifecycleFilters eventFilterData;

Properties eventNews;

BOMSpecification aBOMSpecification;

// Except when “Delete” where value will be nil

} BOMSpecificationLifecycleEvent;

Machine Manager

/* Machine lifecycle event definition. */#define MachineLifecycleSubject “/MachineManagement/MachineManager/MachineLifecycle”

enum MachineType{ ProcessMachineType, StorageMachineType, TransportMachineType };

typedef struct MachineLifecycleFilters_Structure {

Property name; // “Name”, aMachine’s name

Property typeOfMachine; // “MachineType”, MachineType

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} MachineLifecycleFilters;

typedef struct MachineLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

MachineLifecycleFilters eventFilterData;

Properties eventNews;

Machine aMachine;

} MachineLifecycleEvent;

Machine

/* Port available event definition. */#define PortAvailableSubject “/MachineManagement/Machine/PortAvailable”

typedef struct PortAvailableFilters_Structure {

Property machineName; // “MachineName”, aMachine’s name

Property locationName;

// “MaterialTrackingLocationName”,

// MaterialTrackingLocation’s name

} PortAvailableFilters;

typedef struct PortAvailableEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

PortAvailableFilters eventFilterData;

Properties eventNews;

Machine aMachine;

MaterialTrackingLocation aMaterialTrackingLocation;

} PortAvailableEvent;

/* Machine setup changed event definition. */#define MachineSetupChangedSubject “/MachineManagement/Machine/SetupChanged”

typedef struct MachineSetupChangedFilters_Structure {

Property name; // “Name”, aMachine’s name

} MachineSetupChangedFilters;

Appendix D 353

Technology Transfer # 93061697J-ENG SEMATECH

typedef struct MachineSetupChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

MachineSetupChangedFilters eventFilterData;

Properties eventNews;

Machine aMachine;

} MachineSetupChangedEvent;

/* Machine E10 state changed event definition. */#define MachineE10StateChangedSubject “/MachineManagement/Machine/E10StateChanged”

typedef struct MachineE10StateChangedFilters_Structure {

Property name; // “Name”, aMachine’s name

Property formerState; // “FormerState”, E10State

Property newState; // “NewState”, E10State

} MachineE10StateChangedFilters;

typedef struct MachineE10StateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

MachineE10StateChangedFilters eventFilterData;

Properties eventNews;

Machine aMachine;

} MachineE10StateChangedEvent;

/* Machine resources lifecycle event definition. */#define MachineResourceLifecycleSubject“/MachineManagement/Machine/MachineResourceLifecycle”

enum MachineResourceType { BufferResourceType, PortResourceType,TransportResourceType, ProcessResourceType };

typedef struct MachineResourceLifecycleFilters_Structure {

Property machineName; // “MachineName”, aMachine’s name

Property machineResourceName;

// “MachineResourceName”, aMachineResource’s name

Property typeOfMachineResource;

// “MachineResourceType”, MachineResourceType

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} MachineResourceLifecycleFilters;

typedef struct MachineResourceLifecycleEvent_Structure {

string eventSubject;TimeStamp eventTimeStamp;MachineResourceLifecycleFilters eventFilterData;Properties eventNews;Machine aMachine;MachineResource aMachineResource;

// Except when “Delete” where value will be nil

} MachineResourceLifecycleEvent;

/* Machine reservation changed event definition. */#define MachineReservationChangedSubject“/MachineManagement/Machine/MachineReservationChanged”

typedef struct MachineReservationChangedFilters_Structure {

Property machineName; // “MachineName”, aMachine’s nameProperty state; // “ReservationState”, ReservationStateProperty reservingObjectName; // “ReservingObjectName”,

// the reserving object’s name

354 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

} MachineReservationChangedFilters;

typedef struct MachineReservationChangedEvent_Structure {

string eventSubject;TimeStamp eventTimeStamp;MachineReservationChangedFilters eventFilterData;Properties eventNews;Machine aMachine;any reservingObject;

} MachineReservationChangedEvent;

/* Machine process capabilities changed event definition. */#define MachineProcessCapabilitiesChangedSubject

“/MachineManagement/Machine/MachineProcessCapabilitiesChanged”

typedef struct MachineProcessCapabilitiesChangedFilters_Structure {

Property name; // “Name”, aMachine’s name

} MachineProcessCapabilitiesChangedFilters;

typedef struct MachineProcessCapabilitiesChangedEvent_Structure {

string eventSubject;TimeStamp eventTimeStamp;MachineProcessCapabilitiesChangedFilters eventFilterData;Properties eventNews;Machine aMachine;

} MachineProcessCapabilitiesChangedEvent;

/* Port state changed event definition */#define PortStateChangedSubject “/MachineManagement/Port/PortStateChanged”

//enum PortStateChangedType{/* SEE SEMI E30 for state definition */}

typedef struct PortStateChangedFilter_Structure {

Property name; // “Name”,aPort’s nameProperty changeType; //“PortStateChanged”,

} PortStateChangedFilters;

typedef struct PortStateChangedEvent_Structure {

string eventSubject;TimeStamp eventTimeStamp;PortStateChangedFilters eventFilterData;Properties eventNews;Port aPort;

} PortStateChangedEvent;

Process Machine

/* Process Run Size changed event definition. */#define ProcessRunSizeChangedSubject“/MachineManagement/Machine/ProcessRunSizeChanged”

typedef struct ProcessRunSizeChangedFilters_Structure {

Property name; // “Name”, aMachine’s name

} ProcessRunSizeChangedFilters;

typedef struct ProcessRunSizeChangedEvent_Structure {

string eventSubject;TimeStamp eventTimeStamp;ProcessRunSizeChangedFilters eventFilterData;Properties eventNews;Machine aMachine;

} ProcessRunSizeChangedEvent;

Appendix D 355

Technology Transfer # 93061697J-ENG SEMATECH

Machine Resource

/* Machine Resource E10 state changed event definition. */#define MachineResourceE10StateChangedSubject“/MachineManagement/MachineResource/E10StateChanged”

typedef struct MachineResourceE10StateChangedFilters_Structure {

Property name; // “Name”, aMachineResource’s nameProperty formerState; // “FormerState”, E10StateProperty newState; // “NewState”, E10State

} MachineResourceE10StateChangedFilters;

typedef struct MachineResourceE10StateChangedEvent_Structure {

string eventSubject;TimeStamp eventTimeStamp;MachineResourceE10StateChangedFilters eventFilterData;Properties eventNews;MachineResource aMachineResource;

} MachineResourceE10StateChangedEvent;

/* Machine Resource state changed event definition. */

#define MachineResourceStateChangedSubject“/MachineManagement/MachineResource/StateChanged”

enum MachineResourceState {MachineUndefined, MachineInitializing, MachineWaiting,MachineActive, MachineExecuting, MachineNotPaused, MachinePausing, MachinePaused,MachineNotStopping, MachineStopping, MachineNotAborting, MachineAborting };

typedef struct MachineResourceStateChangedFilters_Structure {

Property name; // “Name”, aMachineResource’s nameProperty formerState; // “formerState”, MachineResourceStateProperty newState; // “newState”, MachineResourceState

} MachineResourceStateChangedFilters;

typedef struct MachineResourceStateChangedEvent_Structure {

string eventSubject;TimeStamp eventTimeStamp;MachineResourceStateChangedFilters eventFilterData;Properties eventNews;MachineResource aMachineResource;

} MachineResourceStateChangedEvent;

/* Material Location lifecycle event definition. */#define MaterialTrackingLocationLifecycleSubject“/MachineManagement/MachineResource/MaterialTrackingLocationLifecycle”

typedef struct MaterialTrackingLocationLifecycleFilters_Structure {

Property machineResourceName; // “MachineResourceName”,// aMachineResource’s name

Property MaterialTrackingLocationName; // “MaterialTrackingLocationName”,// aMaterialTrackingLocation’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} MaterialTrackingLocationLifecycleFilters;

typedef struct MaterialTrackingLocationLifecycleEvent_Structure {

string eventSubject;TimeStamp eventTimeStamp;MaterialTrackingLocationLifecycleFilters eventFilterData;Properties eventNews;MachineResource aMachineResource;MaterialTrackingLocation aMaterialTrackingLocation;

// Except when “Delete” where value will be nil

} MaterialTrackingLocationLifecycleEvent;

356 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

ProcessResource

/* Process Resource ProcessCapability Changed event definition. */#define ProcessResourceProcessCapabilityChangedSubject“/MachineManagement/ProcessResource/ProcessCapabilityChanged”

enum ProcessResourceProcessCapabilityChangeType{ CurrentCapabilityChanged,AssignedCapabilityChanged, PossibleCapabilityChanged };

typedef struct ProcessResourceProcessCapabilityChangedFilter_Structure {

Property name; // “Name”,aProcessResource’s name

Property changeType; //“ChangeType”,

ProcessResourceProcessCapabilityChangeType

} ProcessResourceProcessCapabilityChangedFilters;

typedef struct ProcessResourceProcessCapabilityChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ProcessResourceProcessCapabilityChangedFilters eventFilterData;

Properties eventNews;

ProcessResource aProcessResource;

} ProcessResourceProcessCapabilityChangedEvent;

/* Product Processing Changed event definition */#define ProductProcessingChangedSubject“/MachineManagement/ProcessResource/ProductProcessingChanged”

enum ProductProcessingChangedType{ ProductProcessingStarted,ProductProcessingCompleted};

typedef struct ProductProcessingChangedFilter_Structure {

Property name; // “Name”,aProduct’s name

Property changeType; //“ProductProcessingChanged”,

} ProductProcessingChangedFilters;

typedef struct ProductProcessingChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ProductProcessingChangedFilters eventFilterData;

Properties eventNews;

ProcessResource aProcessResource;

} ProductProcessingChangedEvent;

ProcessResourceHistory

/* Process ResourceHistory added event definition. */#define ProcessingHistoryAddedSubject“/ProcessHistory/ProcessResourceHistory/ProcessingHistoryAdded”

typedef struct ProcessingHistoryAddedFilter_Structure {

Property name; // “Name”,aProcessResource’s name

// Property; //“ProcessingHistoryAdded”,

} ProcessingHistoryAddedFilters;

typedef struct ProcessingHistoryAddedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ProcessingHistoryAddedFilters eventFilterData;

Properties eventNews;

// ProcessResourceHistory aProcessResourceHistory;

} ProcessResourceHistoryAddedEvent;

Appendix D 357

Technology Transfer # 93061697J-ENG SEMATECH

Material Location

/* Material Location send or receive of material. */#define MaterialTrackingLocationMaterialChangedSubject“/MachineManagement/MaterialTrackingLocation/MaterialChanged”

enum MaterialChangedState { MaterialUndefined, MaterialReceived, MaterialSent };

typedef struct MaterialTrackingLocationMaterialChangedFilters_Structure {

Property machineName; // “MachineName”, aMachine’s name

Property MaterialTrackingLocationName;

// “MaterialTrackingLocationName”,

// aMaterialTrackingLocation’s name

Property materialName; // “MaterialName”, aMaterial’s name

Property state; //“MaterialChangedState”,MaterialChangedState

} MaterialTrackingLocationMaterialChangedFilters;

typedef struct MaterialTrackingLocationMaterialChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

MaterialTrackingLocationMaterialChangedFilters eventFilterData;

Properties eventNews;

Machine aMachine;

MaterialTrackingLocation aMaterialTrackingLocation;

Material aMaterial;

} MaterialTrackingLocationMaterialChangedEvent;

/* Material Location state changed event definition. */#define MaterialTrackingLocationStateChangedSubject“/MachineGroup/MaterialTrackingLocation/StateChanged”

enum MaterialTrackingLocationState {MaterialTrackingLocationUndefined,MaterialTrackingLocationOccupied, MaterialTrackingLocationNotOccupied,MaterialTrackingLocationAllocated, MaterialTrackingLocationNotAllocated,MaterialTrackingLocationInService, MaterialTrackingLocationOutOfService };

typedef struct MaterialTrackingLocationStateChangedFilters_Structure {

Property machineName; // “MachineName”, aMachine’s name

Property MaterialTrackingLocationName;

//“MaterialTrackingLocationName”,

// aMaterialTrackingLocation’s name

Property formerState; // “formerState”,

// MaterialTrackingLocationState

Property newState; // “newState”,

// MaterialTrackingLocationState

} MaterialTrackingLocationStateChangedFilters;

typedef struct MaterialTrackingLocationStateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

MaterialTrackingLocationStateChangedFilters eventFilterData;

Properties eventNews;

Machine aMachine;

MaterialTrackingLocation aMaterialTrackingLocation;

} MaterialTrackingLocationStateChangedEvent;

358 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

Process Capability Manager

/* Process Capability lifecycle event definition. */#define ProcessCapabilityLifecycleSubject“/ProcessCapabilityManagement/ProcessCapabilityManager/ProcessCapabilityLifecycle”

typedef struct ProcessCapabilityLifecycleFilters_Structure {

Property name; // “Name”, aProcessCapability’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} ProcessCapabilityLifecycleFilters;

typedef struct ProcessCapabilityLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ProcessCapabilityLifecycleFilters eventFilterData;

Properties eventNews;

ProcessCapability aProcessCapability;

// Except when “Delete” where value will be nil

} ProcessCapabilityLifecycleEvent;

Process Capability

/* Change in the machines capable of performing a specific process capability. */#define ProcessCapabilityMachineChangedSubject“/ProcessCapabilityManagement/ProcessCapability/MachineChanged”

typedef struct ProcessCapabilityMachineChangedFilters_Structure {

Property name; // “Name”, aProcessCapability’s name

} ProcessCapabilityMachineChangedFilters;

typedef struct ProcessCapabilityMachineChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ProcessCapabilityMachineChangedFilters eventFilterData;

Properties eventNews;

ProcessCapability aProcessCapability;

} ProcessCapabilityMachineChangedEvent;

Preventive Maintenance (PM) Schedule Manager

/* PM Schedule lifecycle event definition. */#define PMScheduleLifecycleSubject“/PreventiveMaintenance/PMScheduleManager/PMScheduleLifecycle”

typedef struct PMScheduleLifecycleFilters_Structure {

Property name; // “Name”, aPMSchedule’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} PMScheduleLifecycleFilters;

typedef struct PMScheduleLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

PMScheduleLifecycleFilters eventFilterData;

Properties eventNews;

// PMSchedule aPMSchedule;

// Except when “Delete” where value will be nil

} PMScheduleLifecycleEvent;

Appendix D 359

Technology Transfer # 93061697J-ENG SEMATECH

Preventive Maintenance (PM) Schedule

/* Preventive maintenance schedule state changed event definition. */#define PMScheduleStateChangedSubject “/PreventiveMainentance/PMSchedule/StateChanged”

enum PMScheduleState { PMScheduleUndefined, PMScheduleQueued, PMScheduleActive,PMScheduleCompleted, PMScheduleCancelled };

typedef struct PMScheduleStateChangedFilters_Structure {

Property name; // “Name”, aPMSchedule’s name

Property formerState; // “formerState”, PMScheduleState

Property newState; // “newState”, PMScheduleState

} PMScheduleStateChangedFilters;

typedef struct PMScheduleStateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

PMScheduleStateChangedFilters eventFilterData;

Properties eventNews;

// PMSchedule aPMSchedule;

} PMScheduleStateChangedEvent;

Recipe Manager

/* Machine Recipe lifecycle event definition. */#define MachineRecipeLifecycleSubject“/RecipeManagement/RecipeManager/MachineRecipeLifecycle”

typedef struct MachineRecipeLifecycleFilters_Structure {

Property name; // “Name”, aMachineRecipe’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} MachineRecipeLifecycleFilters;

typedef struct MachineRecipeLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

MachineRecipeLifecycleFilters eventFilterData;

Properties eventNews;

// MachineRecipe aMachineRecipe;

// Except when “Delete” where value will be nil

} MachineRecipeLifecycleEvent;

MachineRecipe

/* Change in the parameters for a machine recipe. */#define MachineRecipeParameterChangedSubject“/RecipeManagement/MachineRecipe/ParameterChanged”

typedef struct MachineRecipeParameterChangedFilters_Structure {

Property name; // “Name”, aMachineRecipe’s name

} MachineRecipeParameterChangedFilters;

typedef struct MachineRecipeParameterChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

MachineRecipeParameterChangedFilters eventFilterData;

Properties eventNews;

// MachineRecipe aMachineRecipe;

} MachineRecipeParameterChangedEvent;

360 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

/* Change in the recipe machine assignments. */#define MachineRecipeAssignmentChangedSubject“/RecipeManagement/MachineRecipe/AssignmentChanged”

typedef struct MachineRecipeAssignmentChangedFilters_Structure {

Property name; // “Name”, aMachineRecipe’s name

} MachineRecipeAssignmentChangedFilters;

typedef struct MachineRecipeAssignmentChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

MachineRecipeAssignmentChangedFilters eventFilterData;

Properties eventNews;

// MachineRecipe aMachineRecipe;

} MachineRecipeAssignmentChangedEvent;

Data Collection Manager

/* Data Collection Specification lifecycle event definition. */#define DataCollectionSpecificationLifecycleSubject“/DataCollectionSpecificationManagement/DataCollectionSpecificationManager/DataCollectionSpecificationLifecycle”

typedef struct DataCollectionSpecificationLifecycleFilters_Structure {

Property name; // “Name”,aDataCollectionSpecification’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} DataCollectionSpecificationLifecycleFilters;

typedef struct DataCollectionSpecificationLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

DataCollectionSpecificationLifecycleFilters eventFilterData;

Properties eventNews;

// DataCollectionSpecification aDataCollectionSpecification;

// Except when “Delete” where value will be nil

} DataCollectionSpecificationLifecycleEvent;

Order Manager

/* Order lifecycle event definition. */#define OrderLifecycleSubject “/OrderManagement/OrderManager/OrderLifecycle”

typedef struct OrderLifecycleFilters_Structure {

Property name; // “Name”, aOrder’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} OrderLifecycleFilters;

typedef struct OrderLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

OrderLifecycleFilters eventFilterData;

Properties eventNews;

// Order anOrder;

// Except when “Delete” where value will be nil

} OrderLifecycleEvent;

Plan Manager

/* Product Request lifecycle event definition. */

Appendix D 361

Technology Transfer # 93061697J-ENG SEMATECH

#define ProductRequestLifecycleSubject“/PlanManagement/PlanManager/ProductRequestLifecycle”

typedef struct ProductRequestLifecycleFilters_Structure {

Property name; // “Name”, aProductRequest’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} ProductRequestLifecycleFilters;

typedef struct ProductRequestLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ProductRequestLifecycleFilters eventFilterData;

Properties eventNews;

ProductRequest aProductRequest;

// Except when “Delete” where value will be nil

} ProductRequestLifecycleEvent;

Plan

/* Plan changed event definition. */#define PlanChangedSubject “/PlanManagement/Plan/Changed”

typedef struct PlanChangedFilters_Structure {

Property name; // “Name”, aPlan’s name

} PlanChangedFilters;

typedef struct PlandChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

PlanChangedFilters eventFilterData;

Properties eventNews;

// Plan aPlan;

} PlanChangedEvent;

Product Request

/* Product request state changed event definition. */#define ProductRequestStateChangedSubject “/Enterprise/ProductRequest/StateChanged”

enum ProductRequestState {ProductRequestUndefined, ProductRequestNotPlanned,ProductRequestPlanned, ProductRequestNotInRelease, ProductRequestInRelease,ProductRequestInWork, ProductRequestOnHold, ProductRequestCompleted };

typedef struct ProductRequestStateChangedFilters_Structure {

Property name; // “Name”, aProductRequest’s name

Property formerState; // “formerState”, ProductRequestState

Property newState; // “newState”, ProductRequestState

} ProductRequestStateChangedFilters;

typedef struct ProductRequestStateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ProductRequestStateChangedFilters eventFilterData;

Properties eventNews;

ProductRequest aProductRequest;

} ProductRequestStateChangedEvent;

362 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

Dispatching Manager

/* Dispatcher lifecycle event definition. */#define DispatcherLifecycleSubject“/ScheduleManagement/DispatchingManager/DispatcherLifecycle”

typedef struct DispatcherLifecycleFilters_Structure {

Property name; // “Name”, aDispatcher’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} DispatcherLifecycleFilters;

typedef struct DispatcherLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

DispatcherLifecycleFilters eventFilterData;

Properties eventNews;

Dispatcher aDispatcher;

// Except when “Delete” where value will be nil

} DispatcherLifecycleEvent;

Person Manager

/* Person lifecycle event definition. */#define PersonLifecycleSubject “/PersonManagement/PersonManager/PersonLifecycle”

typedef struct PersonLifecycleFilters_Structure {

Property name; // “Name”, aPerson’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} PersonLifecycleFilters;

typedef struct PersonLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

PersonLifecycleFilters eventFilterData;

Properties eventNews;

Person aPerson;

// Except when “Delete” where value will be nil

} PersonLifecycleEvent;

Person

/* Person capacity changed event definition. */#define PersonCapacityChangedSubject “/PersonManagement/Person/CapabilityChanged”

typedef struct PersonCapacityChangedFilters_Structure {

Property name; // “Name”, aPerson’s name

} PersonCapacityChangedFilters;

typedef struct PersonCapacityChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

PersonCapacityChangedFilters eventFilterData;

Properties eventNews;

Person aPerson;

} PersonCapacityChangedEvent;

Appendix D 363

Technology Transfer # 93061697J-ENG SEMATECH

/* Person state changed event definition. */#define PersonStateChangedSubject “/PersonManagement/Person/StateChanged”

enum PersonState {PersonDefined, PersonOffShift, PersonOnShift,PersonAvailableForWork, PersonNotAvailableForWork, PersonUnassignedToMachines,PersonAssignedToJobs, PersonAssignedToMachines, PersonAvailableForMoreAssignments,PersonAssignmentAtCapacityExceeded, PersonIdleWithJob, PersonBusyWithJob };

typedef struct PersonStateChangedFilters_Structure {

Property name; // “Name”, aPerson’s name

Property formerState; // “FormerState”, PersonState

Property newState; // “NewState”, PersonState

} PersonStateChangedFilters;

typedef struct PersonStateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

PersonStateChangedFilters eventFilterData;

Properties eventNews;

Person aPerson;

} PersonStateChangedEvent;

/* Person shift worked changed event definition. */#define PersonShiftChangedSubject “/PersonManagement/Person/ShiftChanged”

typedef struct PersonShiftChangedFilters_Structure {

Property name; // “Name”, aPerson’s name

Property fromShift; // “FromShift”, former shift

Property toShift; // “ToShift”, new shift

} PersonShiftChangedFilters;

typedef struct PersonShiftChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

PersonShiftChangedFilters eventFilterData;

Properties eventNews;

Person aPerson;

} PersonShiftChangedEvent;

Material Movement#define TransportJobSupervisorConfigurationChangedsubject“/MaterialMovementManagement/TransportJobSupervisor/ConfigurationChanged”

enum TransportJobSupervisorConfiguration { AreaEnabled, AreaDisabled, MachineEnabled,MachineDisabled, MaterialPortEnabled, MaterialPortDisabled } ;

typedef struct TransportJobSupervisorConfigurationChangedFilter_Structure {

Property Name; //TransportJobSupervisor’s name

Property TransportJobSupervisorConfiguration;

Property destinationName;//Name of the particular entity that changed

} TransportJobSupervisorConfigurationChangedFilter;

typedef struct TransportJobSupervisorConfigurationChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

TransportJobSupervisorConfigurationChangedFilter eventFilterData;

Properties eventNews;

TransportJobSupervisor aTransportJobSupervisor;

} TransportJobSupervisorConfigurationChangedEvent;

364 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

Process Control#define ControlExecutorStatusSignal “/ControlExecution/ControlExecutor/StatusChanged”

typedef struct ControlExecutorStatusNews_Structure {

Property theControlExecutor;

Property identifier;

Property strategy; // name = “RunningStrategy”, value =aRunningStrategy

Property status; // name = “ExecutorStatus”, value = Status

} ControlExecutorStatusNews ;

/* This event is emitted upon every status change in the Executor */typedef struct ControlExecutorStatusEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

ControlExecutorStatusNews eventNews ;

} ControlExecutorStatusEvent ;

/* The FaultEvent is emitted by the ControlExecutor in response to a fault being detected throughanalysis. The information in the event includes the fab tool the fault occurred on, the lot andwafer number, as well as data for one or more charts that will be used to illustrate the fault.*/#defineAPCFaultSignal “/ControlExecution/ControlExecutor/APCFault”

typedef struct APCFaultEventFilters_Structure {

Property name; // “MachineName”, aMachine’s name

} APCFaultEventFilters;

typedef struct APCFaultEventNews_Structure {

Property machineInfo; // name=MachineName, value=theMachineName

Property eventInfo; // name=EventType, value=theEventType

Property lotInfo; // name=LotNumber, value=theLotNumber

Property waferInfo; // name=WaferID, value=theWaferID;

Property xyData; // name=LineGraphSequence, //value=theLineGraphSequence

} APCFaultEventNews;

typedef struct APCFaultEvent_Structure {

string eventSubject; // APCFaultSignal

TimeStamp eventTimeStamp;

APCFaultEventFilters eventFilterData;

APCFaultEventNews eventNews;

} APCFaultEvent;

LotJob

/* LotJob priority changed event definition. */#define LotJobPriorityChangedSubject “/FactoryOperations/LotJob/LotJobPriorityChanged”

typedef struct LotJobPriorityChangedFilter_Structure {

Property name; // “Name”, LotJob’s name

Property priority; //“Priority”, the new priority

} LotJobPriorityChangedFilters;

typedef struct LotJobPriorityChangedEvent_Structure {

string eventSubject;

Appendix D 365

Technology Transfer # 93061697J-ENG SEMATECH

TimeStamp eventTimeStamp;

LotJobPriorityChangedFilters eventFilterData;

Properties eventNews;

LotJob aLotJob;

} LotJobPriorityChangedEvent;

/* LotJob product specification changed event definition. */#define LotJobProductSpecificationChangedSubject“/FactoryOperations/LotJob/LotJobProductSpecificationyChanged”

typedef struct LotJobProductSpecificationChangedFilter_Structure {

Property name; // “Name”, LotJob’s name

Property specName; //“SpecName”, ProductSpecification’s name

} LotJobProductSpecificationChangedFilters;

typedef struct LotJobProductSpecificationChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

LotJobProductSpecificationChangedFilters eventFilterData;

Properties eventNews;

LotJob aLotJob;

} LotJobProductSpecificationChangedEvent;

SupportResource

/* SupportResource state changed event definition. */#define SupportResourceStateChangedSubject“/MachineManagement/SupportResource/SupportResourceStateChanged”

typedef struct SupportResourceStateChangedFilters_Structure {

Property name; // “Name”, aResource’s name

Property formerState; // “FormerState”, State

Property newState; // “NewState”, State

} SupportResourceStateChangedFilters;

typedef struct SupportResourceStateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

SupportResourceStateChangedFilters eventFilterData;

Properties eventNews;

SupportResource aSupportResource;

} SupportResourceStateChangedEvent;

Resource Tracking Manager

/* PM Schedule lifecycle event definition. */#define PMSpecificationLifecycleSubject“/ResourceTracking/ResourceTrackingManager/PMSpecificationLifecycle”

typedef struct PMSpecificationLifecycleFilters_Structure {

Property name; // “Name”, aPMSpecification’s name

Property lifecycleEvent; // “LifecycleEvent”, LifecycleState

} PMSpecificationLifecycleFilters;

typedef struct PMSpecificationLifecycleEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

PMSpecificationLifecycleFilters eventFilterData;

Properties eventNews;

PMSpecification aPMSpecification;

366 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

// Except when “Delete” where value will be nil

} PMSpecificationLifecycleEvent;

Recipe Management

/* RecipeNamespace lifecycle event definition. */#define RecipeNamespaceLifecycleSubject“/RecipeManagement/RecipeNamespaceManager/RecipeNamespaceLifecycle”

typedef struct RecipeNamespaceLifecycleFilters_Structure {

Property name; // “Name”, aRecipeNamespace nameProperty lifecycleEvent; // “LifecycleEvent”, LifecycleState

} RecipeNamespaceLifecycleFilters;

typedef struct RecipeNamespaceLifecycleEvent_Structure {

string eventSubject;TimeStamp eventTimeStamp;RecipeNamespaceLifecycleFilters eventFilterData;Properties eventNews;RecipeNamespace aRecipeNamespace;// Except when “Delete” where value will be nil

} RecipeNamespaceLifecycleEvent;

RecipeNamespace

/* Change in the parameters for a machine recipe. */#define RecipeParameterChangedSubject“/RecipeManagement/RecipeNamespace/RecipeParameterChanged”

typedef struct RecipeParameterChangedFilters_Structure {

Property name; // “Name”, aRecipe’s name

} RecipeParameterChangedFilters;

typedef struct RecipeParameterChangedEvent_Structure {

string eventSubject;TimeStamp eventTimeStamp;RecipeParameterChangedFilters eventFilterData;Properties eventNews;

// MachineRecipe aMachineRecipe;

} RecipeParameterChangedEvent;

PMSpecification

/* Preventive maintenance schedule state changed event definition. */#define PMSpecificationStateChangedSubject“/PreventiveMainentance/PMSpecification/StateChanged”

enum PMSpecificationState { PMSpecificationUndefined, PMSpecificationQueued,PMSpecificationActive, PMSpecificationCompleted, PMSpecificationCancelled };

typedef struct PMSpecificationStateChangedFilters_Structure {

Property name; // “Name”, aPMSpecification’s nameProperty formerState; // “formerState”, PMSpecificationStateProperty newState; // “newState”, PMSpecificationState

} PMSpecificationStateChangedFilters;

typedef struct PMSpecificationStateChangedEvent_Structure {

string eventSubject;TimeStamp eventTimeStamp;PMSpecificationStateChangedFilters eventFilterData;Properties eventNews;PMSpecification aPMSpecification;

} PMSpecificationStateChangedEvent;

Appendix D 367

Technology Transfer # 93061697J-ENG SEMATECH

/* Preventive Maintenance activity state changed event definition. */#define PMActivityStateChangedSubject“/ResourceTracking/ResourceTrackingManager/PMActiviyStateChanged”

typedef struct PMActivityStateChangedFilters_Structure {

Property name; // “Name”, aPMActivity’s name

Property formerState; // “formerState”, PMActivityState

Property newState; // “newState”, PMActivityState

} PMActivityStateChangedFilters;

typedef struct PMActivityStateChangedEvent_Structure {

string eventSubject;

TimeStamp eventTimeStamp;

PMActivityStateChangedFilters eventFilterData;

Properties eventNews;

PMSpecification aPMSpecification;

} PMActivityStateChangedEvent;

368 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

List of All Events in the CIM Framework

The following is just a simple list of the events from the above section in one convenient place.

Events /JobManagement/JobSupervisor/JobLifecycle

/JobManagement/Job/StateChanged

/Factory/MESFactory/StateChanged

/Factory/Area/AreaConfigurationChanged

/Resource/ComponentManager/StateChanged

/Factory/ComponentManager/ComponentManagerRegistrationChanged

/ProductManagement/ProductManager/ProcessGroupLifecycle

/ProductManagement/ProductManager/LotLifecycle

/ProductManagement/ProductManager/WaferLifecycle

/ProductManagement/Lot/StateChanged

/ProductManagement/Lot/QuantityChanged

/ProductManagement/Lot/PriorityChanged

/ProductManagement/Lot/DueDateChanged

/ProductManagement/Lot/FlowPositionAdjusted

/ProductManagement/Lot/ProcessFlowChanged

/ProductManagement/Lot/ReservationChanged

/DurableManagement/DurableManager/TransportGroupLifecycle

/DurableManagement/DurableManager/MaterialContainerLifecycle

/DurableManagement/DurableManager/ProcessDurableLifecycle

/DurableManagement/Durable/StateChanged

/DurableManagement/Durable/LocationChanged

/DurableManagement/Durable/ReservationChanged

/ConsumableManagement/ConsumableManager/ConsumableLifecycle

/ConsumableManagement/Consumable/ConsumableStateChanged

/ConsumableManagement/Consumable/ConsumableQuantityChanged

/DocumentManagement/DocumentManager/DocumentLifecycle

/DocumentManagement/DocumentManager/VersioningRequired

/DocumentManagement/DocumentSpecification/DocumentRevisionLifecycle

/DocumentManagement/DocumentRevision/StateChanged

/VersionManagement/VersionManager/ChangeNoticeLifecycle

/VersionManagement/ChangeNotice/StateChanged

/VersionManagement/ChangeNotice/Rejected

/VersionManagement/ChangeNotice/SignoffsChanged

/ProcessDefinitionManagement/ProcessDefinitionManager/ProcessDefinitionLifecycle

/ProcessDefinitionManagement/ProcessDefinitionManager/ProcessFlowLifecycle

/ProcessDefinitionManagement/ProcessDefinitionManager/ProcessFlowContextLifecycle

/ProductSpecificationManagement/ProductSpecificationManager/ProductSpecificationLifecycle

/BOMSpecificationManagement/BOMSpecificationManager/BOMSpecificationLifecycle

/MachineManagement/MachineManager/MachineLifecycle

/MachineManagement/Machine/PortAvailable

/MachineManagement/Machine/SetupChanged

/MachineManagement/Machine/ProcessRunSizeChanged

/MachineManagement/Machine/E10StateChanged

/MachineManagement/Machine/MachineResourceLifecycle

/MachineManagement/Machine/MachineReservationChanged

Appendix D 369

Technology Transfer # 93061697J-ENG SEMATECH

/MachineManagement/Machine/MachineProcessCapabilitiesChanged

/MachineManagement/StorageMachine/CapacityChanged

/MachineManagement/StorageMachine/MachinesChanged

/MachineManagement/TransportMachine/CapacityChanged

/MachineManagement/MachineResource/E10StateChanged

/MachineManagement/MachineResource/StateChanged

/MachineManagement/MachineResource/MaterialTrackingLocationLifecycle

/MachineManagement/MaterialTrackingLocation/MaterialChanged

/MachineManagement/MaterialTrackingLocation/StateChanged

/MachineManagement/ProcessResource/ProcessCapabilityChanged

/ProcessHistory/ProcessResourceHistory/ProcessingHistoryAdded

/ProcessCapabilityManagement/ProcessCapabilityManager/ProcessCapabilityLifecycle

/ProcessCapabilityManagement/ProcessCapability/MachineChanged

/PreventiveMaintenance/PMScheduleManager/PMScheduleLifecycle

/PreventiveMainentance/PMSchedule/StateChanged

/RecipeManagement/RecipeManager/MachineRecipeLifecycle

/RecipeManagement/MachineRecipe/ParameterChanged

/RecipeManagement/MachineRecipe/AssignmentChanged

/DataCollectionSpecificationManagement/DataCollectionSpecificationManager/DataCollectionSpecificationLifecycle

/OrderManagement/OrderManager/OrderLifecycle

/PlanManagement/PlanManager/ProductRequestLifecycle

/PlanManagement/Plan/Changed

/PlanManagement/ProductRequest/StateChanged

/ScheduleManagement/DispatchingManager/DispatcherLifecycle

/PersonManagement/PersonManager/PersonLifecycle

/PersonManagement/Person/AvailabilityChanged

/PersonManagement/Person/StateChanged

/PersonManagement/Person/ShiftChanged

/FactoryOperations/ScheduleInterpreterManager/ScheduleInterpreterLifecycle

/MaterialMovementManagement/TransportJobSupervisor/ConfigurationChanged

370 Appendix D

SEMATECH Technology Transfer # 93061697J-ENG

General Rules for Event Definition

This section generalizes the rules found in the analysis of the current CIM Framework events.These rules can be used by future domain focus teams that are evolving the CIM Framework todecide when and how to define new events.

Rule #1: When to define a new event?

The most important aspect of this rule is to understand that events are not meant to provide flowof control within the CIM Framework. In other words, an event should not be used to generate anexpected action upon another object. Events are informational in intent only. If an event has anexpected consumer and an expected action to result from this event, it should not be an event butshould instead be a direct method invocation.

The easiest way to answer whether an informational event should be generated is to ask thequestion: “Would a monitoring application be interested in this information?” Examples ofmonitoring applications can include scheduling or planning applications, manufacturing statusdisplay applications, or an ad-hoc engineer developed monitoring query for a specific process orproduct.

Rule #2: What informational events should be defined?

There is a certain subset of informational events that should always be defined. They are:

ì Life cycle events: creation, deletion, copy and move of any managed object

ì State changed events: any object that changes state must publish a single event to representthe state change. This implies that the interface for that object must have an enumerated typedefined for all of its states. The states that are defined in the enumerated type must be thelowest level states, not any of the super-states.

ì Important attribute changes: any object that has a significant change to its attributes shouldpublish an event for that. The domain experts will know what attributes are important enoughto be published when changed.

ì Business rule changes: any object that encompasses a business rule that may impact howother objects work must publish an event when that business rule changes. An example ofthis is with the version management on and off condition managed by the Document Managerinterface.

Rule #3: What filterable items should be defined with an event?

This rule is more flexible in nature but does have a certain minimum requirement. For each of thestandard events that are defined, the following filterable items should accompany them:

For all types: The name (or identifier) of the object publishing the event. Theactual object reference should be included as part of body of theevent (non-filterable data) and should be nil when it is a lifecycledelete event.

Lifecycle: The enumerated value for the lifecycle event that occured

Appendix D 371

Technology Transfer # 93061697J-ENG SEMATECH

State changes: The enumerated value for the former state of the instance publishingthe event. The enumerated value for the new state of the instancepublishing the event.

Attribute changes: The new value of the attribute that changed

Business rule changes: The new value of the business rule that changed

Rule #4: How “fine-grained” should the event be?The decision for this rule can best be answered by the domain experts. However, the question to beanswered revolves around not causing event ordering issues. The designers should ask: “If the eventsdefined for this interface are all published through separate event channels (which means their orderwill not be guaranteed), could the consumer of the events get confused?” If the answer is yes, theresolution of the event is too fine and must be generalized to fewer events that don’t cause thatproblem. This is why all state change events must be published through a single event subject.

Rule #5: Inheritance of events

Events should be inherited from a superclass to a subclass during publication of events. Forexample, a TransportJob or a ProcessMachineJob should publish all events for Job since they arespecializations of that interface. However, the subclass interface does not need to redefine theevent

Appendix E 373

Technology Transfer # 93061697J-ENG SEMATECH

APPENDIX ESCENARIO EXAMPLES

These scenario diagrams offer interpretations of the Process Control section of the CIMFramework. These diagrams can be viewed as paper validations of the interfaces in that section.The first set of diagrams, in object interaction format, are from the APCFI Consortium andillustrate their interpretation of the interfaces for a startup, three execution, and an abort scenario.The second set is from Texas Instruments and, similarly, offers TI’s interpretation of thespecification to implement a control and fault detection scenario. These diagrams are notinterpreted as part of the specification, but, rather as illustrations that different implementationsare feasible using the same set of interfaces.

374 Appendix E

SEMATECH Technology Transfer # 93061697J-ENG

APCFI Consortium Scenarios

15: add_run_data(RunData)16: close()

Plug-InManager

ControlExecutor

PlugIn

Plug-In Manager

Control Executor

Control Execution OID

Plug-InExecutor

Plug-In Executor

Machine

Machine Control

ControlDB

Manager

ControlData

ControlArchive

Run Record

ControlArchiveManager

Control Database

Control Archive

14: run_recordcreate_run_record(ExecutionContext)

10: downloadRecipeUpdates( RunData)11: setupMachine()12: startMachine()

4: Plugin lookupPlugin(PluginName)

13: MachineEvent

private to APC

public

private to APCprivate to APC

7.1: PluginContents GetContentsByType(PluginContentsType)

public

Control Manager

Control Manager

Note: For execute_control invocations with anexecution_type of "script", the script will dictate theinteractions and sequence of interactions. Thisparticular diagram is intended to depict using modelparameters from the control database to calculate newrecipe settings.

Additional Notes:5. Gets the type of plugin (optional; only used if thereare different types of plugins, each executed by adifferent Plugin Executor)6. Gets the Plugin Executor for this type of Plugin fromthe Trader

Plug-inFactory

3. FactorylookupPluginFactory(

FactoryType)

Trader

1: ControlExecutorStatusEvent{Status = "StrategyStarted"}18: ControlExecutorStatusEvent{Status = "StrategyCompleted"}

5.PluginContentsGetContentsByType(PluginContentsType)

6. query

7: PluginHandle setupPlugin(Plugin)8: ControlValues executePlugin(

PluginHandle,PerformanceData)

9: unsetupPlugin(PluginHandle)

17: updateValues(NameValueSequence)

2: ControlDatafindData(

DataTagSequence)

Appendix E 375

Technology Transfer # 93061697J-ENG SEMATECH

This scenario covers the initiation of control activity by some other component of the CIMFramework. In response to the executeControl call on the Control Executor Manager, the ControlStrategy to be executed is selected by the Control Manager. The Control Executor Managermakes two GetContentsByType calls on the returned RunningControlStrategy. The first call isused to get the capabilities required by the Control Strategy to be executed (for example,ContentType = RequiredCapabilities). The returned capabilities are used to query servers tofullfill those capabilities through the Trader. Finally, the second GetContentsByType call is usedto get the scripted action sequence that will be executed by the Control Executor (for example,ContentType = “Script”).

376 Appendix E

SEMATECH Technology Transfer # 93061697J-ENG

ControlStrategyExecutor

Control Executor

Control Execution OID

Machine

Machine Control

ControlDatabaseManager

ControlData Control

ArchiveRun Record

ControlArchiveManager

Control DatabaseControl Archive

15: run_recordcreate_run_record(execution_context)

16: add_run_data(run_data)18: close()

2: setupDataCollection(DataCollectionPlanSequence)3: enableDataCollection()4: setupMachine()5: startMachine()

6: DataAvailableEvent

private to APC

public

public

Control Manager

Control Manager

7: ControlDatafindControlData(

DataTagSequence)

Note: For execute_control invocations with anexecution_type of "script", the script will dictate theinteractions and sequence of interactions. Thisparticular OID is intended to represent update modelparameters based on metrology data.

Plug-InManager

PlugIn

Plug-In Manager

Plug-InExecutor

Plug-In Executor

12: PluginHandle setupPlugin(Plugin)13: ControlValues executePlugin(PluginHandle, PerformanceData)14: unsetupPlugin(PluginHandle)

private to APC

12.1: PluginContents GetContentsByType(PluginContentsType)

Plug-inFactory

8. FactorylookupFactory(FactoryType)

9: Plugin lookupPlugin(PluginName)

1: ControlExecutorStatusEvent{Status = "StrategyStarted"}

19: ControlExecutorStatusEvent{Status = "StrategyCompleted"}

17: updateValues(NameValueSequence)

ControlData

11. query

10: PluginContentsGetContentsByType(PluginContentsType)

Appendix E 377

Technology Transfer # 93061697J-ENG SEMATECH

Plug-InManager

PlugIn

Plug-InManager

private to APC

Plug-inFactory

ControlStrategyExecutor

13: Plugin lookupPlugin(PluginName)

Control Executor

Control Execution OID

Plug-InExecutor

Plug-In Executor

Machine (Tool)

Machine Control

16: PluginHandle setupPlugin(Plugin)17: ControlValues

executePlugin(PluginHandle,PerformanceData)

18: unsetupPlugin(PluginHandle)

ControlDatabaseManager

ControlData

ControlArchive

Run Record

ControlArchive

Manager

Control DatabaseControl Archive

2: run_record create_run_record(execution_context)

3: setupDataCollection(DataCollectionPlanSequence)6: enableDataCollection()7: setupMachine()8: startMachine()

11: add_run_data(run_data)19: add_run_data(run_data)

22: close()

9: DataAvailableEvent

private to APCpublic

private to APC

16.1: PluginContents GetContentsByType(PluginContentsType)

public

Control Manager

Control Manager

20: ControlDataaddContolData

(DataTagSequence,NameValueSequence)

Note: For execute_control invocations with anexecution_type of "script", the script will dictate theinteractions and sequence of interactions. Thisparticular diagram is intended to depict performingfault detection based on tool trace and sensor data.Results are displayed and stored.

Machine(AddOnSensor)

10: DataAvailableEvent

4: setupDataCollection(DataCollectionPlanSequenc)5: enableDataCollection()

21: update_display(display_data)

Operator GUI

Operator GUI

12. FactorylookupFactory(FactoryType)

1: ControlExecutorStatusEvent{Status = "StrategyStarted"}

23: ControlExecutorStatusEvent{Status = "StrategyCompleted"}

Trader

15. PluginContentsGetContentsByType(PluginContentsType)

14. query

378 Appendix E

SEMATECH Technology Transfer # 93061697J-ENG

ControlManager

ControlExecutorManager

1.1: RunningControlStrategy selectStrategy( ExecutionContext)

RunningControlStrategy

1:ControllerReturnsexecute_control (ExecutionType,ExecutionContext,ControllerArguments);

Trader

1.4: query

OtherCIM Framework

Component

ControlExecutor

Control Manager

Trader Service

Control Executor

Inside APC

Outside APC

Control Startup OID

ControlStrategy

1.2 ControlStrategygetControlStrategy()1.3: Contents

GetContentsByType(ContentsType)

1.5: ContentsGetContentsByType(ContentsType)

Appendix E 379

Technology Transfer # 93061697J-ENG SEMATECH

ControlStrategyExecutor

Control Executor

Abort OID

Machine

Machine Control

ControlDatabaseManager

ControlData

ControlArchive

Run Record

ControlArchiveManager

Control DatabaseControl Archive

15: run_recordcreate_run_record(ExecutionContext) 21: add_event_data(

event_data)22: close()

6: DataAvailableEvent

private to APCpublic

public

Control Manager

Control Manager

Note: The abort message can appear at any point in thesequence of actions. An alternate sequence isperformed to abort the run. In this example, a note isput in the run record and the run record closed.

Abort Tool

17. RunningStrategygetRunningStrategy()20. makeAborting()

2: setupDataCollection(DataCollectionPlanSequence)3: enableDataCollection()4: setupMachine()5: startMachine()

Plug-InManager

PlugIn

Plug-In Manager

Plug-InExecutor

Plug-In Executor

12: PluginHandle setupPlugin(Plugin)13: ControlValues

executePlugin(PluginHandle,PerformanceData)

14: unsetupPlugin(PluginHandle)

private to APC

12.1: PluginContentsGetContentsByType(PluginContentsType)

Plug-inFactory

8. PluginFactorylookupPluginFactory()

9: Plugin lookupPlugin(PluginName)

1: ControlExecutorStatusEvent{Status = "StrategyStarted"}23: ControlExecutorStatusEvent{Status = "StrategyAborted"}

RunningControlStrategy

ControlExecutorManager

16: ControlExecutorSeqgetExecutors()

18. RunningControlStrategyIDgetID()

19. ExecutionContextgetRunningContext()

7: ControlDatafindControlData(

DataTagSequence)

Trader11. query

10: PluginContentsGetContentsByType(PluginContentsType)

380 Appendix E

SEMATECH Technology Transfer # 93061697J-ENG

Texas Instruments Scenarios

ActivityManager

RecipeManager

ControlExecutorManager

ControlExecutor

ControlManager

RunningControlStrategy

ControlStrategy

PluginManager

PluginFactory

PluginExecutor

Plugin

executeControl()

running

selectStrategy()

getControlStrategy()

getContentsAllContents()

lookupFactory()

running

calculatedSettings()

selectRecipe()

machineSettings()

Machi

downloadRecipe()

Calculate Settings Scenario

This scenario describes a message sequence for performing a calculate settings transaction via a plugin application uFramework specification. Some of the details relating to argument types, return values and database interface have beclarity. Some objects and messages/events in the above scenario are application specific (i.e. not part of the APC FramThese types of components are expected in any implementaiton of the Framework, and may be encompassed in other Framework spec. The non-APC Framework objects, messages and events are indicated by ital

setupPlugin()

unsetupPlugin()

executePlugin()

Appendix E 381

Technology Transfer # 93061697J-ENG SEMATECH

ActivityManager

ControlExecutorManager

ControlExecutor

ControlManager

RunningControlStrategy

ControlStrategy

PluginFactory

PluginExecutor

Plugin

executeControl()

running

selectStrategy()

getControlStrategy()

getContentsAllContents()

running

Machi

Fault Detection Scenario

This scenario describes a message sequence for performing fault detection via a plugin application using the APC Frameworthe details relating to argument types, return values and database interface have bee removed for clarity. Some objects and mabove scenario are application specific (i.e. not part of the APC Framework Spec). This particular scenario uses a plugin to arun. The analysis identifies a fault and returns the analysis reults to the Control Executor. The COntrol Executor then initiatesthe machine by way of an equipment manager. These types of components are expected in any implementaiton of the Frameencompassed in other parts of the CIM Framework spec. The non-APC Framework objects, messages and events are indicate

EquipmentManager

setupDataCollection()

startDataCollection()

analysisResults()

shutDownMachine()

runDataAvailable()

data

shutdown

PluginManager

lookupPlugin()

setupPlugin()

executePlugin()

unsetupPlugin()

E.1 Factory Operations Scenario

ProductRequestExector FactorySupervisor LotJob

1: requestJob (JobType, Properties, JobRequestor)

2: Return Job

3: InformJobStarted (Job)

4: informJobCompleted (Job)

Figure 72 Factory Operations Scenario

382 Appendix E

SEMATECH Technology Transfer # 93061697J-ENG

1. The ProductRequestExecutor, on behalf of a product request received by Factory Operations(probably externally to MES), requests the creation of a lot production task. The request isreceived and processed by the FactorySupervisor.

2. In response to the request, the FactorySupervisor facilitates the creation of a LotJob torepresent the task. A handle to the LotJob is returned to the ProductRequestExecutor(assuming the LotJob request is accepted).

3. The Job Supervision component (e.g., in the form of the LotJob) informs theProductRequestExecutor when the LotJob begins.

4. The Job Supervision component (e.g., in the form of the LotJob) informs theProductRequestExecutor when the LotJob has completed (assuming successful completion).

E.2 Product Request Scenario

EnterpriseExecutor ProductRequestManager ProductReqestJob

1: requestJob (JobType, Properties, JobRequestor)

2: Return Job

3: informJobStarted (Job)

4: informJobCompleted (Job)

Figure 73 Product Request Scenario

1. The EnterpriseExecutor, on behalf of a product request received by Factory Operations(probably externally to MES), requests the creation of a task to fulfill a product request. Therequest is received and processed by the ProductRequestManager.

2. In response to the request, the ProductRequestManager facilitates the creation of aProductRequestJob to represent the task. A handle to the ProductRequestJob is returned tothe EnterpriseExecutor (assuming the ProductRequestJob request is accepted).

3. The Job Supervision component (e.g. in the form of the ProductRequestJob) informs theEnterpriseExecutor when the ProductRequestJob begins.

4. The Job Supervision component (e.g. in the form of the ProductRequestJob) informs theEnterpriseExecutor when the ProductRequestJob has completed (assuming successfulcompletion).

Index 383

Technology Transfer # 93061697J-ENG SEMATECH

A

abnormalEnter ................................................ 201, 207, 210abnormalExit .................................................. 201, 207, 211abortAllJobs ..................................................................... 68abortRunningControlStrategy......................................... 299activeCassettes................................................................ 177activeRevision .................................................................. 80actualCompletionTime ........................................... 163, 171addArea .......................................................................... 103addAssignedCapability........................................... 259, 262addChannelForEvent ........................................................ 92addControlData .............................................................. 312addDays.......................................................................... 111addDie_atCoordinate...................................................... 159addDispatchableObject................................................... 320addDispatchDecision...................................................... 322addDurationUsed............................................................ 179addHistory ........................................................................ 96addHistoryEvent............................................................... 97addLot ............................................................................ 173addMachine ............................................................ 109, 116addMachineRecipe ......................................................... 279addMaterial............................................................. 140, 182addMaterialAtPosition.................................................... 184addMaterialContainer ..................................................... 188addMaterialGroup .......................................................... 140addMaterials ................................................................... 140addNameToDefaultSignOffSet......................................... 87addNonCycleTime.......................................................... 202addPerson ....................................................................... 110addPlannedShutDown .................................................... 111addPlannedStartUp......................................................... 111addPossibleCapability ............................................ 259, 262addProcessMachine ........................................................ 278addProcessResource ....................................................... 236addProcessRun ............................................................... 149addProductType ............................................................. 145addQualification ............................................................. 332addResponsibility_toCategory........................................ 332addRevision...................................................................... 79addSensor ....................................................................... 252addSkill .......................................................................... 332addSubArea .................................................................... 109addSupportResource............................................... 285, 287addWafer_atPosition ...................................................... 186age .................................................................. 121, 162, 205allAbortedJobs.................................................................. 69allAbortingJobs ................................................................ 69allActiveJobs .................................................................... 69allAreaPMActivitesDueNow.......................................... 285allAreaPMActivitesDuringDuration............................... 284allAreas........................................................................... 103allAssignedCapabilities .................................................. 258allAssignedDurables....................................................... 255allAssignedProcessMachineCapabilities ........................ 258allAssignedProcessResourceCapabilities ....................... 258allAssignedToJobsPersons ............................................. 328

allAssignedToMachinesPersons .....................................328allAvailableForWorkPersons ..........................................328allBOMBodies ................................................................215allBOMSpecifications.....................................................213allBOMSpecifications_forProduct ..................................213allCalendarDays..............................................................111allCanceledJobs ................................................................69allCassettes......................................................................177allChangeNotices ..............................................................86allCompletedJobs..............................................................69allComponentManagers ..................................................103allConsumables...............................................................191allContainedMachineResource .......................................252allCurrentCapabilities .....................................................258allCurrentProcessMachineCapabilities ...........................258allCurrentProcessResourceCapabilities ..........................258allDescendantLots...........................................................162allDie ..............................................................................159allDispatchableObjects ...................................................321allDispatchers..................................................................319allEnabledAreas ..............................................................240allEnabledMachines........................................................240allEnabledMaterialPorts..................................................241allEventChannelsFor.........................................................93allExecutingJobs ...............................................................69allFinishedJobs .................................................................69allHistories ........................................................................96allInventoryRegionNames...............................................200allInventoryRegions................................................198, 200allInventoryRegionSystemNames...................................197allInventoryRegionSystems ............................................197allJobs ...............................................................................69allJobSupervisors ..............................................................73allLotFamilies .................................................................145allLots .....................................................................145, 186allLotsActive...................................................................146allLotsCompleted............................................................146allLotsCreated.................................................................146allLotsEmptied................................................................146allLotsFinished ...............................................................146allLotsInProduction ........................................................146allLotsInRework .............................................................146allLotsNotOnHold ..........................................................146allLotsOnHold ................................................................146allLotsReleased...............................................................146allLotsScrapped ..............................................................146allLotsShipped ................................................................146allMachines.............................................................103, 116allMaterial...............................................................244, 246allMaterialContainers......................................................189allMaterialGroups ...........................................................141allMaterialHeld ...............................................................269allMaterialInStorage ...............................................244, 246allMaterialInTransit ................................................244, 246allMaterialMovementControllers ....................................246allMaterials .....................................................................141allNotAllocatedPorts.......................................................256allNotAvailableForWorkPersons ....................................328allNotPausedJobs ..............................................................69allOnShiftPersons ...........................................................327allPausedJobs ....................................................................69

384 Index

SEMATECH Technology Transfer # 93061697J-ENG

allPausingJobs .................................................................. 69allPersons ....................................................................... 327allPersonsAssignedToJob............................................... 328allPersonsAssignedToMachine ...................................... 328allPersonsAvailableForJob ............................................. 328allPersonsAvailableForMachine..................................... 328allPersonsQualifiedForJob ............................................. 328allPersonsWithSkill ........................................................ 328allPlannedShutDowns .................................................... 111allPlannedStartUps ......................................................... 112allPMActivitesDuringDuration ...................................... 284allPMActivitiesDueNow ................................................ 284allPMActivitiesForPeriod............................................... 285allPMDefinitions ............................................................ 288allPMSpecifications........................................................ 286allPorts ........................................................................... 256allPossibleCapabilities.................................................... 258allPossibleProcessMachineCapabilities.......................... 258allPossibleProcessResourceCapabilities ......................... 259allProcessCapabilities..................................................... 235allProcessDurables ......................................................... 177allProcessMachines ........................................................ 116allProcessResources ....................................................... 257allProducts.............................................................. 147, 162allProductsActive ........................................................... 146allProductsAllocated ...................................................... 146allProductsCreated ......................................................... 146allProductsFinished ........................................................ 146allProductsIdle................................................................ 146allProductsInInventory ................................................... 146allProductsInProduction ................................................. 146allProductsInRework ...................................................... 146allProductsNotOnHold ................................................... 146allProductsOnHold ......................................................... 146allProductSpecifications ................................................. 218allProductsProcessing..................................................... 146allProductsProcessingCompleted ................................... 146allProductsScrapped ....................................................... 146allProductsShipped......................................................... 146allProductsTraveling ...................................................... 146allProductTypes.............................................................. 147allProductUnits............................................................... 110allQueuedJobs .................................................................. 69allReachableAreas .......................................................... 240allReachableMachines.................................................... 240allReachableMaterialPorts.............................................. 240allRevisions ................................................................ 77, 80allSensors ....................................................................... 252allStoppedJobs.................................................................. 69allStoppingJobs ................................................................ 69allSupportResourcePMActivitiesDueNow ..................... 285allSupportResources ............................................... 286, 287anySequence..................................................................... 41APCMachineEvent ......................................................... 257archive ............................................................................ 172Area ................................................................................ 109AreaConfigurationChangedEvent........................... 109, 358areas................................................................................ 259AreaShutdownChangedEvent................................. 111, 358assignDurable ................................................................. 255assignedCapabilities ....................................................... 263

assignedJobs ...................................................................335assignedMachines ...........................................................334assignedOperators ...........................................................255assignToJob ....................................................................334assignToMachine ....................................................179, 334availableCassettes ...........................................................177averageCycleTime...................................................145, 203averagePopulation...........................................................202

B

BOMBody.......................................................................216BOMSpecification ..........................................................215BOMSpecificationLifecycleEvent ..........................213, 370BOMSpecificationManager ............................................213

C

CalendarDay .....................................................................43CalendarDaySequence ......................................................43canCompleteBy...............................................................242canPerform........................................................................68Cassette ...........................................................................186certificationDate..............................................................341changeNameForInventoryRegion_to ..............................200ChangeNotice....................................................................87ChangeNoticeLifecycleEvent....................................86, 367ChangeNoticeRejectedEvent.....................................87, 368ChangeNoticeSignoffsChangedEvent.......................87, 368ChangeNoticeStateChangedEvent ............................87, 368checkVersion ..........................................................280, 281ComponentManager........61, 77, 86, 92, 119, 130, 135, 143,

176, 191, 197, 213, 218, 223, 235, 246, 276, 284, 294,297, 299, 305, 310, 312, 319, 327, 343

ComponentManagerChangedEvent ................................359ComponentManagerRegistrationChangedEvent .......61, 359ComponentManagerStateChangedEvent ..........................61configureContainer .........................................................182Consumable ....................................................................192Consumable Management Component ...........................190ConsumableLifecycleEvent ....................................191, 365ConsumableManager ......................................................191ConsumableQuantityChangedEvent .......................192, 366ConsumableStateChangedEvent .............................192, 365consumablesUsedBy .......................................................191containedMaterial ...........................................................183contentsOfPosition..........................................................185continueProcessing .........................................................230Control Database Component .........................................311Control Execution Component .......................................304Control Management Component ...................................298ControlData.....................................................................313ControlDatabaseManager................................................312ControlExecutionManager ..............................................305ControlExecutor..............................................................306ControlExecutorStatusEvent ...........................................382ControlManager ..............................................................299ControlStrategy...............................................................302

Index 385

Technology Transfer # 93061697J-ENG SEMATECH

ControlStrategyFactory .................................................. 300Coordinate2D ................................................................... 40couldStartTime ............................................................... 243count................................................................................. 98createAndReleaseLotsforProductRequests ..................... 135createBOMBody............................................................. 215createBOMSpecificationNamed_inDocument................ 213createCassetteNamed...................................................... 176createChangeNoticeNamed_inDocument......................... 86createConsumable........................................................... 191createControlStrategy ..................................................... 300createDataCollectionPlan ............................................... 309createDieNamed ............................................................. 144createDispatcher ............................................................. 319createDocumentNamed..................................................... 77createInventoryRegionNamed ........................................ 199createInventoryRegionNamed_withDescription_afterInvent

oryRegion.................................................................. 200createInventoryRegionSystemNamed............................. 197createLotUsing ............................................................... 144createLotUsing_fromProducts........................................ 144createLotUsing_withIdentifiers ...................................... 144createPackageNamed...................................................... 144createPersonWithIdentifier............................................. 327createPlugin.................................................................... 293createProcessCapabilityNamed ...................................... 235createProcessDurableNamed .......................................... 177createProcessFlowContext...................................... 219, 223createProcessFlowIterator .............................................. 219createProcessFlowIteratorFromProcessFlowContext ..... 223createProcessFlowIteratorFromProductSpecification..... 223createProcessGroup ........................................................ 144createRecipe ................................................................... 279createRecipeNamespace ................................................. 276createRegionSensor ........................................................ 197createRevisionNamed_with.............................................. 79createSkillNamed ........................................................... 343createSkillRequirementNamed....................................... 344createSplitLot ................................................................. 144createTransportGroupNamed ......................................... 176createTransportJob_toArea............................................. 240createTransportJob_toMachine ...................................... 240createTransportJob_toMaterialPorts............................... 240createWaferNamed......................................................... 144currentAssignedMachine ................................................ 179currentLots ..................................................................... 171currentLotsWithProductSpecification ............................ 145currentMachines ............................................................. 162currentOperators............................................................. 255currentPopulation ........................................................... 202currentPosition ............................................................... 149currentProcessOperation ................................................ 230currentProcessOperationSpecification............................ 226currentValue ................................................................... 115currentYield.................................................................... 162cycleTime............................................................... 162, 205

D

Data Collection Plan Management Component ..............307DataAvailableEvent ........................................................257DataCollectionPlanFactory .............................................309DataCollectionPlanManager ...........................................310DataCollectionSpecificationLifecycleEvent ...................378DataCollector ..................................................254, 271, 314Day....................................................................................42DaysWorked .....................................................................42deassignFromJob ............................................................334deassignFromMachine ....................................................334decrementQuantityBy .....................................................192defaultSignOffSet .............................................................88deleteData .......................................................................312deleteDispatchList...........................................................320deleteRecipe............................................................279, 282deliveryDateTime............................................................171describeControlStrategies ...............................................300describeDataCollectionPlans ..........................................309describePlugins ...............................................................293describeRunningControlStrategies..................................301deselectRecipe ................................................................282Die ..................................................................................158disableArea .....................................................................240disableDataCollection .....................................................314disableMachine ...............................................................240disableMaterialPort .........................................................241DispatchableObjectNotInScopeSignal ............................320DispatchDecision ............................................................323Dispatcher .......................................................................320DispatcherLifecycleEvent...............................................380Dispatching Component..................................................317DispatchingManager .......................................................319DispatchLifecycleEvent ..................................................319DispatchList ....................................................................322dispatchUsingLots ..........................................................320Document Management Component.................................76DocumentLifecycleEvent..........................................77, 366DocumentManager............................................................77DocumentRevision............................................................81DocumentRevisionLifecycleEvent............................79, 366DocumentRevisionStateChangedEvent ....................81, 367DocumentSpecification.....................................................79downloadRecipe..............................................................282downloadRecipeToMachine ...........................................279dtdAverageAge ...............................................................203dtdAverageCycleTime ....................................................203dtdAverageNonCycleTime..............................................203dtdAverageYield.............................................................206dtdLotsExistingQuantity .................................................206dtdPassedQuantity ..........................................................207dtdScrappedQuantity ......................................................207DuplicateIdentifierSignal ..................................................50Durable ...........................................................178, 181, 182Durable Management Component ..................................174DurableLocationChangedEvent ..............................178, 364DurableManager .............................................................176DurableReservationChangedEvent .........................178, 365DurableStateChangedEvent ....................................178, 364

386 Index

SEMATECH Technology Transfer # 93061697J-ENG

Duration............................................................................ 42durationRemaining ......................................................... 179durationUsed .................................................................. 179

E

E10State ........................................................................... 41effectivity........................................................................ 346emptyPositions ............................................................... 184enableArea...................................................................... 240enableDataCollection ..................................................... 314enableMachine ............................................................... 240enableMaterialPort ......................................................... 241enter........................................................................ 202, 211Enterprise Abstract Interface .......................................... 123EnterpriseExecutor ......................................................... 124entries ............................................................................. 203Event Broker .................................................................... 91EventBroker ..................................................................... 92executePlugin ................................................................. 297executeRecipe................................................................. 282exit.......................................................................... 202, 211exits ................................................................................ 203

F

Factory Component ........................................................ 101Factory Operations Component...................................... 117Factory Operations Scenario .............................................. 9FactoryCalendar ............................................................. 111FactorySupervisor .......................................................... 119findActiveJobNamed........................................................ 68findAnAvailableCassette ................................................ 177findBOMSpecificationNamed ........................................ 213findByIdentifier .............................................................. 327findCassetteNamed......................................................... 177findChangeNoticeNamed ................................................. 86findCompletedJobNamed ................................................. 68findConsumableNamed .................................................. 191findControlData.............................................................. 312findDispatcherFor........................................................... 319findDocumentNamed........................................................ 78findHistory ....................................................................... 96findHistoryEvent .............................................................. 97findInventoryRegionNamed ........................................... 200findJobNamed .................................................................. 68findLotNamed ................................................................ 145findMachineNamed ........................................................ 116findMachineResourceNamed ......................................... 252findNumberOfUnitsUntilPM.......................................... 285findPMSpecificationNamed ........................................... 286findProcessCapabilityNamed ......................................... 235findProductNamed.......................................................... 146findProductSpecificationNamed..................................... 218findQualificationByIdentifier ......................................... 333findQueuedJobNamed ...................................................... 68findRevisionNamed.......................................................... 80findSensorNamed ........................................................... 252

findSupportResourceNamed ...................................286, 287findSystemNamed...........................................................198findTimeUntilPM............................................................285firstMaterial ....................................................................185FrameworkErrorSignal......................................................50from_to .............................................................................97

G

getActivationDate .............................................................81getAllContents ................................................................295getAllMaterialTrackingLocations ...................................255getAllRecipeNamespaces................................................276getAlternativeProcessOperationSpecifications ...............226getAreaIdentifier .............................................................109getAvailableCapacity......................................................270getBin..............................................................................158getCapacity .....................................................................182getChildPartsUnit ...........................................................216getChildProductSpecification .........................................216getCollectedData.............................................................314getCommissionedTimeStamp .........................................179getConsummablesForProcessResource...........................233getConsummablesForProcessResources .........................228getContainingMachine....................................................252getContainingMachineResource .....................................252getContentByType ..........................................................295getContents .............................................................182, 302getContentsByType.........................................................302getContextSpec ...............................................................302getControllerArguments..................................................306getControlResults............................................................306getControlStrategy ..........................................................303getControlStrategyDescription........................................302getControlStrategyFactory ..............................................299getCurrentCapability.......................................................262getCurrentProcessOperation ...........................................149getCurrentProcessOperations..........................................120getDataCollectionPlanFactory ........................................310getDeadline .......................................................................70getDefaultInventoryRegionSequence..............................199getDefaultRecipeNamespace...........................................281getDefaultValue ..............................................................114getDepartment.................................................................331getDescription.........................................201, 251, 295, 346getDesignator ..................................................................346getDestinationArea .........................................................242getDestinationMachine ...................................................242getDestinationPorts .........................................................242getDispatchDecisions......................................................322getDispatchers.................................................................119getDocumentContents.......................................................81getDocumentRevision.............................................215, 288getDurablesForProcessResource.....................................232getDurablesForProcessResources ...................................228getDurationLimit.............................................................178getE10StateCode.............................................................252getEnterQuantity .............................................................208getEnterTime...................................................................204

Index 387

Technology Transfer # 93061697J-ENG SEMATECH

getExecutionContext ...................................................... 306getExecutionType........................................................... 306getExecutors ................................................................... 305getExitQuantity .............................................................. 208getExitTime.................................................................... 204getExplanation........................................................ 114, 323getFacilityValue ............................................................. 115getFactoryCalendar......................................................... 110getFactorySupervisor...................................................... 132getFullname.................................................................... 331getHistoryCollection......................................................... 56getHistoryCollections ....................................................... 97getHistoryEvents ...................................................... 56, 201getHistoryEventsForLot ................................................. 209getHistoryEventsForMaterial ......................................... 204getID............................................................................... 303getIdentificationNumber................................................. 331getIdentifier ... 139, 140, 171, 199, 201, 210, 215, 219, 225,

228, 230, 232, 269getInventoryControlIdentifier......................................... 252getJobRequestor ............................................................... 70getJobsFor ........................................................................ 73getLot ............................................................................. 148getLotFamilies................................................................ 125getLotFamily .......................................................... 120, 161getLotJob................................................................ 161, 171getMachine ..................................................................... 270getMachineRecipe .......................................................... 279getMachineResource ...................................................... 271getMaterialTrackingLocation ......................... 148, 178, 255getMaximumAssignedJobs............................................. 331getMaximumAssignedMachines..................................... 331getMaximumCapacity..................................................... 270getModelNumber............................................................ 251getName............................................................................ 56getNamedValue .............................................................. 313getNextProcessOperationSpecificationOnDefaultPath... 225getNominalSize ...................................................... 157, 184getNonCycleTime........................................................... 205getNumberOfPositions ................................................... 184getNumberOfUnits ......................................................... 192getOperatorInstructions .................................................. 233getOrderItemIdentifier.................................................... 125getOriginalEnterQuantity ............................................... 208getOriginalWafer............................................................ 158getOriginationArea......................................................... 242getOriginationMachine................................................... 242getOriginationPorts ........................................................ 242getOwner .......................................................................... 57getPackage...................................................................... 158getParentProductSpecification ....................................... 215getPartNumber................................................................ 148getPersons ...................................................................... 289getPlanReleaseTime ....................................................... 125getPluginFactory ............................................................ 294getPMActivity ................................................................ 289getPMSpecifications....................................................... 250getPositionalContainer ................................................... 148getPositions .................................................................... 184getPreviousProcessOperationSpecification .................... 225getPriority................................................................. 71, 215

getProcessCapability.......................................................232getProcessCapabilityIdentifier ........................................236getProcessFlowContext...................................................161getProcessFlowContexts .................................................120getProcessGroup .............................................................261getProcessGroupSizeMaximum......................................257getProcessGroupSizeMinimum.......................................257getProcessGroupSizeUnits..............................................257getProcessingTimeForProcessResource..........................229getProcessMachineForRecipeNamespace.......................277getProcessMachineJob....................................................173getProcessMachines................................................122, 279getProcessOperations......................................................261getProcessOperationSpecification...................................233getProcessResource.........................................................173getProductionHistory ......................................................149getProductManager .........................................................132getProductQuantity .........................................................125getProductRequest ..................................................131, 171getProductRequestIdentifier ...........................................125getProductRequests.........................................................121getProductSpecification ..........................121, 125, 226, 230getProductType...............................................................148getQualificationDesignator .............................................341getRecipeApproval .........................................................275getRecipeCertification ....................................................275getRecipeContents ..........................................................275getRecipeEstimatedRunTime..........................................275getRecipeIdentifier..........................................................275getRecipeNameForProcessResource...............................233getRecipeNamespace ......................................................281getRecipeNamespaceByName ........................................276getRecipeNamespaceForProcessMachine.......................276getRequiredQuantity .......................................................216getRequiredResult...........................................................346getRunData .....................................................................259getRunningContext .........................................................303getRunningControlStrategy ....................................301, 306getRunningControlStrategyFactory ................................299getSerialNumber .....................................................148, 251getSettingsForProcessResource ......................................233getSetupForProcessResource ..........................................233getShift............................................................................331getSkillCategories ...........................................................344getSoftwareVersionNumber............................................252getSpecification ..........................................................81, 87getSuperArea ..................................................................109getSupportResource ........................................................289getTags............................................................................313getTimesUsedLimit.........................................................178getTransportGroup..........................................................242getTransportJob ..............................................................188getTransportJobSupervisors............................................122getUnit ............................................................................192getUnits...........................................................................270getUnreleasedLots...........................................................132getUsedForProduct .........................................................181getUsedInProcess............................................................181getValues ........................................................................313getVendor .......................................................................251getWaferMapCoordinate.................................................158

388 Index

SEMATECH Technology Transfer # 93061697J-ENG

Global Exception Definitions ........................................... 50Global Type Definitions ................................................... 40

H

hasAvailableCapacity ..................................................... 270hasSkill ........................................................................... 333hasSkills ......................................................................... 334History.............................................................................. 97History Management Facility ........................................... 94HistoryCollection ............................................................. 96HistoryEvent..................................................................... 43historyEventCount............................................................ 97HistoryEventSequence ..................................................... 43holds ................................................................................. 81

I

includes .......................................................................... 202incrementProcessTimeBy............................................... 286incrementQuantityBy.............................................. 192, 286incrementTimesUsed...................................................... 179informComponentManagerIsOperating.......................... 103informComponentManagerIsStopped............................. 103informJobCompleted ........................................................ 73informJobStarted .............................................................. 73informJobTerminated ....................................................... 73informMachineReadyforMaterialTransfer...................... 241informPMActivityComplete........................................... 286informPMActivityStarted ............................................... 286interestedInEntry ............................................................ 211interestedInExit .............................................................. 211IntervalT........................................................................... 41InvalidStateTransitionSignal ............................................ 50Inventory Region Management Component................... 194InventoryRegion..................................................... 201, 206InventoryRegionManager............................................... 197InventoryRegionNotFoundSignal................................... 200InventoryRegionSystem ................................................. 199isAborted .......................................................................... 71isAborting......................................................................... 71isActivated........................................................................ 88isActive....................................................................... 71, 81isAllocated...................................................................... 149isAssignedToJob ............................................................ 334isAssignedToJobs........................................................... 334isAssignedToMachine .................................................... 334isAssignedToMachines................................................... 334isAtLastProcessOperation .............................................. 230isAtLastProcessOperationSpecification.......................... 226isAtWorkStation............................................................. 333isAvailable........................................................ 59, 179, 192isAvailableForJob........................................................... 334isAvailableForMachine .................................................. 334isAvailableForMoreJobAssignments.............................. 335isAvailableForMoreMachineAssignments...................... 334isAvailableForWork ....................................................... 333isCancelled ....................................................................... 71

isCompleted ......................................................71, 126, 163isCreated .................................................................149, 162isEmptied ........................................................................163isEmpty.............................................................98, 183, 202isEqualTo........................................................229, 232, 236isFinished..........................................................71, 150, 163isFlowFinished................................................................163isGoingToStandby ..........................................................104isIdle ...............................................................................150isInactive...........................................................................82isInProduction.................................................................149isInputOutputPort ...........................................................264isInputPort ......................................................................264isInSameFlowAs.............................................................229isInUse ............................................................................179isInWork .....................................................................82, 88isLifetimeExpired............................................................179isLoggedIn ......................................................................163isLoggedOut....................................................................163isMemberOf............................................................139, 163isNamed ............................................................................56isNormalEnter.................................................................204isNormalEnterForMaterial ..............................................202isNormalExit...................................................................204isNotAllocated ................................................................149isNotAvailable ..................................................59, 179, 192isNotCompleted ..............................................................126isNotOnHold...................................................126, 150, 163isNotRegistered.................................................................62isOff ................................................................................104isOnHold.........................................................126, 150, 163isOnShift .........................................................................333isOperating......................................................................104isOriginalLot...................................................................163isOutputPort ....................................................................264isPaused ............................................................................71isPausing ...........................................................................71isPreparingToActivate ......................................................88isProcessing ....................................................................150isProcessingCompleted ...................................................150isQualifiedForJob............................................................334isQualifiedForJobs ..........................................................334isQueued ...........................................................................71isReady ...........................................................................264isRecipeProtected............................................................275isRecipeVerified .............................................................275isRegistered.......................................................................62isReleased .......................................................................162isReserved.......................................................163, 179, 250isReservedToReceive......................................................264isReservedToSend...........................................................264isScrapped.......................................................150, 163, 179isShipped ................................................................150, 163isShuttingDown ........................................................62, 104isShuttingDownImmediately...........................................104isStandby.........................................................................104isStartingUp ..............................................................62, 104isStopped ....................................................................62, 71isStopping .........................................................................71isTraveling ......................................................................149isVersionManagementEnabled .........................................78

Index 389

Technology Transfer # 93061697J-ENG SEMATECH

isWaitingToLogin........................................................... 163

J

Job .................................... 70, 120, 131, 242, 261, 289, 306Job Supervisor Abstract Interface Group.......................... 65JobDeadlineCannotBeMetEvent ...................................... 70JobDeadlineChangedEvent............................................... 70JobLifecycleEvent .......................................................... 357JobRequestor ............................................ 73, 122, 124, 132JobStateChangedEvent ............................................. 70, 357JobSupervisor ................... 67, 119, 130, 239, 257, 284, 305joinAll_into .................................................................... 145joinCandidates ................................................................ 162

L

lastEnterEventForLot ..................................................... 209lastExitEventForLot ....................................................... 209lastExitEventForMaterial ............................................... 204lastLotEnter .................................................................... 209lastLotExit ...................................................................... 209lastMaterialEntered ........................................................ 204lastMaterialExited .......................................................... 204LifecycleState................................................................... 41loadLotIntoMaterialContainer ........................................ 162location........................................................................... 255LongSequence .................................................................. 41lookupControlStrategy ................................................... 300lookupDataCollectionPlan.............................................. 309lookupPlugin .................................................................. 293lookupRunningControlStrategyByExecutionContext..... 301lookupRunningControlStrategyByID ............................. 301lookupRunningControlStrategyByName........................ 301Lot .................................................................................. 160LotDueDateChangedEvent............................................. 361LotDueDateChangedFilters ............................................ 361lotEnter ........................................................................... 207lotExit ............................................................................. 207LotFamily ....................................................................... 171LotFlowPositionAdjustedEvent ..................................... 362LotJob............................................................................. 120LotJobExecutor .............................................................. 122LotJobPriorityChangedEvent ................................. 120, 383LotJobProductSpecificationChangedEvent .................... 120LotJobProductSpecificationyChangedEvent .................. 383LotLifecycleEvent .................................................. 144, 360lotMovedFromOperation................................................ 208LotPriorityChangedEvent............................................... 361LotProcessFlowChangedEvent............................... 161, 362LotQuantityChangedEvent ..................................... 160, 361LotQuantityChangedFilters ............................................ 361LotRegion....................................................................... 206LotReservationChangedEvent ................................ 160, 363lots .................................................................................. 173LotStateChangedEvent ........................................... 160, 360

M

Machine ..................................................................254, 257Machine Management Group..........................................248MachineE10StateChangedEvent.....................................371MachineLifecycleEvent ..................................................370MachineListChangedEvent .............................................116MachineProcessCapabilitiesChangedEvent ....................372MachineRecipe ...............................................................275MachineRecipeAssignmentChangedEvent .....................378MachineRecipeLifecycleEvent .......................................377MachineRecipeParameterChangedEvent ........................377MachineRegister .............................................................116MachineReservationChangedEvent ........................254, 372MachineResource....................................................251, 254MachineResourceE10StateChangedEvent ..............251, 373MachineResourceLifecycleEvent....................................371MachineResourceStateChangedEvent ............................373machines .........................................................................110MachineSetupChangedEvent ..................................254, 371makeAborted.....................................................................71makeActivated ..................................................................87makeActive .......................................................................81makeAllocated ................................................................149makeAtWorkStation........................................................333makeAvailable ........................................................179, 192makeCanceled...................................................................71makeCompleted ......................................................126, 161makeCreated ...................................................................161makeEmptied ..................................................................161makeFinished ..........................................................149, 161makeGoingToStandby.....................................................104makeIdle..........................................................................149makeInactive.....................................................................81makeInProduction...........................................................149makeInUse ......................................................................179makeInWork .....................................................................87makeLoggedIn ................................................................161makeLoggedOut..............................................................161makeNotAllocated ..........................................................149makeNotAtWorkStation..................................................333makeNotAvailable ..................................................179, 192makeNotCompleted ........................................................126makeNotOnHold.............................................126, 149, 161makeNotPaused ................................................................71makeNotRegistered...........................................................61makeOff ..........................................................................104makeOffShift...................................................................333makeOnHold...................................................126, 149, 161makeOnShift ...................................................................333makeOperating................................................................104makePaused ......................................................................71makePreparingToActivate.................................................87makeProcessing...............................................................149makeProcessingCompleted .............................................149makeRegistered.................................................................61makeReleased .................................................................161makeScrapped.................................................149, 161, 179makeShipped...........................................................149, 161makeShuttingDown...................................................61, 104

390 Index

SEMATECH Technology Transfer # 93061697J-ENG

makeShuttingDownImmediately .................................... 104makeStandby .................................................................. 104makeStartingUp........................................................ 61, 104makeStopped .............................................................. 61, 71makeTraveling................................................................ 149makeWaitingToLogin..................................................... 161Material .................................................. 139, 148, 178, 192Material Management Abstract Interface Group ............ 138Material Movement Abstract Interface Group................ 237Material Movement Component..................................... 245Material Release Component.......................................... 133MaterialContainer................................................... 182, 184MaterialContainerLifecycleEvent........................... 176, 363materialContainers.......................................................... 163MaterialGroup ........................................ 140, 160, 173, 188materialGroups ............................................................... 139MaterialMovementController ......................................... 244MaterialMovementManager ........................................... 246MaterialReleaseManager ................................................ 135MaterialTrackingLocation .............................................. 269MaterialTrackingLocationLifecycleEvent...................... 374MaterialTrackingLocationMaterialChangedEvent ......... 375MaterialTrackingLocationStateChangedEvent............... 376MESFactory ................................................................... 103MESFactoryStateChangedEvent ............................ 103, 358mostRecentlySplitFrom.................................................. 163moveInventoryRegion_afterInventoryRegion ................ 200moveToNextProcessOperationSpecificationOnDefaultPath

226moveToPreviousProcessOperationSpecification ............ 226moveToProcessOperationSpecification.......................... 226mtdAverageAge.............................................................. 203mtdAverageCycleTime................................................... 203mtdAverageNonCycleTime............................................ 204mtdAverageYield............................................................ 207mtdLotsExistingQuantity................................................ 207mtdPassedQuantity ......................................................... 207mtdScrappedQuantity ..................................................... 207

N

NamedEntity........ 56, 57, 79, 81, 87, 96, 97, 113, 125, 139,140, 171, 199, 215, 216, 219, 225, 228, 230, 232, 236,278, 281, 287, 295

nameQualifiedTo.............................................................. 58newProductRequestsAvailableForRelease ..................... 135None ................................................................................. 73normalQuantityExited .................................................... 208notifyAPCReadyToRun.................................................. 259notifyAPCSetupReadyForMachine ................................ 259notifyOnEntry................................................................. 210notifyOnExit................................................................... 210

O

operationsUsed ...............................................................208OrderLifecycleEvent.......................................................378originalLot ......................................................................171OwnedEntity .................57, 58, 70, 109, 111, 201, 210, 269

P

Package ...........................................................................159pauseAllJobs .....................................................................68Person .............................................................................330Person Management Component ....................................326PersonCapacityChangedEvent ................................331, 380PersonLifecycleEvent .............................................327, 380PersonManager ...............................................................327PersonNotAssigned.........................................................327PersonNotFoundSignal ...................................................327PersonRemovalFailedSignal ...........................................327PersonResponsibility ........................................................43persons ............................................................................110PersonShiftChangedEvent ......................................331, 381PersonStateChangedEvent ......................................331, 381Plan Management Functional Group ..............................315PlanChangedEvent..........................................................379PlannedShutDowns ...........................................................42PlannedStartUps ...............................................................42Plugin..............................................................................295Plugin Execution Component .........................................296Plugin Management Component.....................................292PluginExecutor ...............................................................297PluginFactory..................................................................293PluginManager................................................................294PMActivityStateChangedEvent ..............................284, 385PMDefinition ....................................................................44PMJob.............................................................................289PMJobStateChangedEvent..............................................289PMScheduleLifecycleEvent............................................377PMScheduleStateChangedEvent.....................................377PMSpecification .............................................................287PMSpecificationChangedEvent ......................................284PMSpecificationCreatedEvent ........................................287PMSpecificationLifecycleEvent......................................384PMSpecificationStateChangedEvent ..............................385Policy Management ................................................112, 113PolicyVariable ................................................................113population .......................................................................203populationAt ...................................................................202Port .................................................................................264PortAvailableEvent .................................264, 267, 268, 370PortChangedEvent ..........................................................372PortStateChangedEvent ..................................264, 267, 268PositionalContainer.................................................184, 186possibleCapabilities ........................................................263prepareToReceiveMaterial......................................255, 267prepareToSendMaterial...........................................256, 267PriorityOfEvent.................................................................41Process Capability Management Component..................234Process Specification Management Component .............221

Index 391

Technology Transfer # 93061697J-ENG SEMATECH

Process Specification Management Functional Group ... 236processCapabilities ................................................. 333, 345ProcessCapability ........................................................... 236ProcessCapabilityLifeCycleEvent .......................... 235, 376ProcessCapabilityMachineChangedEvent .............. 236, 376ProcessCapabilityManager ............................................. 235ProcessDefinitionLifecycleEvent ................................... 368ProcessDurable............................................................... 181ProcessDurableLifecycleEvent............................... 176, 364processDurablesUsed ..................................................... 177processDurablesUsedForProduct ................................... 177processDurablesUsedInProcess ...................................... 177ProcessFlowContext ....................................................... 230ProcessFlowContextChangedEvent................................ 230ProcessFlowContextLifecycleEvent............................... 369ProcessFlowIterator........................................................ 225ProcessFlowLifecycleEvent............................................ 369ProcessGroup ................................................................. 173ProcessGroupLifecycleEvent.................................. 144, 359processGroups ................................................................ 163ProcessMachine.............................................................. 257ProcessMachineJob ........................................................ 261ProcessOperation............................................................ 232ProcessOperationSpecification ....................................... 228ProcessResource............................................................. 262ProcessResourceHistoryAddedEvent ............................. 375ProcessResourceProcessCapabilityChangedEvent . 262, 374processResources.................................... 192, 228, 232, 236ProcessRunSizeChangedEvent ............................... 257, 373ProcessSpecificationManager......................................... 223Product ................................................... 148, 157, 158, 159Product Management Component .................................. 142Product Request Management Component .................... 129Product Request Scenario................................................. 10Product Specification Management Component ............ 217ProductManager ............................................................. 143ProductProcessingChangedEvent ................................... 374ProductRequest .............................................................. 125ProductRequestExecutor ................................................ 132ProductRequestJob ......................................................... 131ProductRequestLifecycleEvent....................................... 379ProductRequestManager ................................................ 130productRequestManagers ............................................... 124ProductRequestStateChangedEvent ....................... 125, 379products .......................................................................... 173ProductSpecification ...................................................... 219ProductSpecificationLifecycleEvent .............................. 369ProductSpecificationManager ........................................ 218productUnitsScrapped .................................................... 172

Q

QualificationData ........................................................... 341qualifications .................................................................. 333quantityOfProductMoves ............................................... 208quantityOfProductMoves_forOperationNamed.............. 208quantityScrapped ............................................................ 208quantityStarted ............................................................... 172queryControlData ........................................................... 312

R

Recipe Management Component ....................................272RecipeControl .................................................................281RecipeNamespace ...........................................................278RecipeNamespaceLifecycleEvent...................................384RecipeNamespaceManager .............................................276RecipeParameterChangedEvent..............................278, 384RegionSensor ..................................................................210RegionSystemNotFoundSignal .......................................197registerMaterialMovementController..............................246rejectSignOff.....................................................................87removeAllMaterials ........................................................140removeArea.....................................................................103removeAssignedCapability .....................................259, 263removeBOMBody...........................................................215removeBOMSpecification...............................................213removeCalendarDay........................................................111removeCassette ...............................................................176removeChangeNoticeNamed ............................................86removeChannelForEvent ..................................................92removeConsumable.........................................................191removeDataCollectionPlan .............................................309removeDie_atCoordinate ................................................159removeDispatchableObject .............................................320removeDispatchDecision ................................................322removeDispatcher ...........................................................319removeDocumentNamed...................................................77removeDurable................................................................255removeFinishedJob ...........................................................68removeHistory...................................................................96removeHistoryEvent .........................................................97removeInventoryRegion..................................................200removeInventoryRegionSystem......................................197removeLot.......................................................................173removeMachine.......................................................110, 116removeMaterial .......................................................140, 182removeMaterialContainer ...............................................188removeMaterialFromPosition .........................................184removeMaterialGroup.....................................................141removeNameFromDefaultSignOffSet...............................88removePerson..........................................................110, 327removePlannedShutDown...............................................111removePlannedStartUp ...................................................112removePlugin ..................................................................293removePossibleCapability.......................................259, 262removeProcessCapabilityNamed.....................................235removeProcessDurable....................................................177removeProcessFlowContext............................................223removeProcessFlowIterator.............................................223removeProcessGroup ......................................................145removeProcessMachine ..................................................278removeProcessResource..................................................236removeProductType........................................................145removeQualification........................................................333removeRecipeNamespace ...............................................276removeRegionSensor ......................................................197removeResponsibility_fromCategory..............................332removeRevisionNamed.....................................................79removeSensor..................................................................252

392 Index

SEMATECH Technology Transfer # 93061697J-ENG

removeSkill .................................................................... 332removeSkillNamed......................................................... 343removeSkillRequirement ................................................ 344removeSubArea .............................................................. 110removeSupportResource......................................... 286, 287removeTransportGroup .................................................. 176removeWaferFromPosition............................................. 186replaceValues ................................................................. 313RequestControl............................................................... 305requestJob......................................................................... 68requirements ................................................................... 345ReservationState............................................................... 41reserve .................................................................... 161, 179reservedBy.............................................................. 163, 179reservedFor..................................................................... 250reserveFor....................................................................... 250resetDayToDateStatistics................................................ 202resetMonthToDateStatistics............................................ 202resetYearToDateStatistics............................................... 202Resource ....................... 58, 61, 67, 103, 116, 250, 262, 330Resource Component ....................................................... 55Resource Tracking Component ...................................... 283resourceLevel ................................................................... 58ResourceSchedule ............................................................ 42ResourceScheduleSequence ............................................. 42ResourceTrackingManager............................................. 284responsibilities................................................................ 332ResponsibilitySequence.................................................... 43resumeAllJobs .................................................................. 68RunningControlStrategy................................................. 303RunningControlStrategyFactory..................................... 301

S

selectDataCollectionPlan................................................ 310selectDispatchDecision................................................... 322selectRecipe.................................................................... 282selectStrategy.................................................................. 299Sensor ............................................................................ 271setActivationDate ............................................................. 81setAreaIdentifier ............................................................. 110setBin.............................................................................. 158setChildPartsUnit ........................................................... 216setCurrentCapability............................................... 259, 262setDeadline ....................................................................... 70setDefaultRecipeNamespace .......................................... 281setDefaultValue .............................................................. 114setDepartment................................................................. 331setDescription................................................. 201, 251, 346setDesignator .................................................................. 346setDocumentContents....................................................... 81setDurationLimit ............................................................ 178setE10StateCode............................................................. 252setExplanation ........................................................ 114, 323setFacilityValue.............................................................. 115setFullname .................................................................... 331setIdentificationNumber ................................................. 331setIdentifier............ 139, 140, 171, 199, 210, 215, 219, 225,

228,230, 232, 269

setInventoryControlIdentifier..........................................252setLotFamilies.................................................................125setMaterial ......................................................................269setMaterialTrackingLocation ..........................148, 178, 255setMaximumAssignedJobs..............................................331setMaximumAssignedMachines .....................................331setName ............................................................................56setOrderItemIdentifier.....................................................125setOwner ...........................................................................57setPartNumber ................................................................148setPlanReleaseTime ........................................................125setPositionalContainer ....................................................148setPriority..........................................................................71setProcessCapabilityIdentifier.........................................236setProductQuantity..........................................................125setProductSpecification ..................................................121setProductType ...............................................................148setQualificationDesignator..............................................341setQualificationHistory ...................................................341setRecipeEstimatedRunTime ..........................................275setRecipeNamespace.......................................................281setRequiredQuantity .......................................................216setRequiredResult ...........................................................346setSerialNumber..............................................................148setShift ............................................................................331setSkillCategories ...........................................................344setTargetCompletionTime...............................................242setTimesUsedLimit .........................................................178Setting...............................................................................41SettingSequence................................................................41setTransportJob...............................................................188setUnit.............................................................................270setupDataCollection........................................................314setupPlugin .....................................................................297setUsedForProduct..........................................................181setUsedInProcess ............................................................181SetValueOutOfRangeSignal .............................................50Shift ..................................................................................42ShiftSequence ...................................................................42shutdownImmediate..........................................................58shutdownNormal...............................................................58size ..................................................................................141Skill.................................................................................344Skill Management Component........................................342SkillManager...................................................................343SkillNotFoundSignal ......................................................343SkillRequirement ............................................................346skills........................................................................332, 343startUp ..............................................................................58stopAllJobs .......................................................................68stringSequence ..................................................................41subAreas .........................................................................110subresources......................................................................59SupportResource.....................................250, 251, 264, 271SupportResourceAddedEvent .........................................287SupportResourceStateChangedEvent......................250, 383

Index 393

Technology Transfer # 93061697J-ENG SEMATECH

T

throughput .............................................................. 145, 202Time Services ................................................................... 90timeContribution ............................................................ 204TimePeriodInvalidSignal.................................................. 50timeRemaining ................................................................. 71timeSinceLastPM ........................................................... 285TimeStamp ....................................................................... 41TimeStampSequence ........................................................ 41timeStartedInFactory ...................................................... 171timesUsed ....................................................................... 179TimeT............................................................................... 41TimeWindow.................................................................... 42transferProducts_toLot ................................................... 162transferWafers_toCassette .............................................. 186TransportGroup .............................................................. 188TransportGroupLifecycleEvent .............................. 176, 363transportGroups .............................................................. 183TransportJob................................................................... 242TransportJobSupervisor.................................. 239, 244, 246TransportJobSupervisorConfigurationChangedEvent ... 239,

381transportTime ................................................................. 243

U

Unit................................................................................... 40Units ................................................................................. 40unitsProcessedSinceLastPM........................................... 285unloadAll........................................................................ 185unloadLotFromMaterialContainers ................................ 162unloadMaterialAll .......................................................... 182unregisterMaterialMovementController ......................... 246unReserve ............................................................... 250, 268unsetupDataCollection ................................................... 314unsetupPlugin ................................................................. 297updateRecipe .................................................................. 279updateValues .................................................................. 313uploadRecipe.................................................................. 282uploadRecipeFromMachine ........................................... 279

V

verifyRecipe ................................................................... 282Version Management Component .................................... 85VersioningRequiredEvent ................................................ 77versionManagementOff .................................................... 77versionManagementOn..................................................... 77VersionManagementRequiredEvent............................... 366VersionManager ............................................................... 86

W

Wafer ..............................................................................157WaferLifecycleEvent ..............................................144, 360whatNextForMachine .....................................................320whatNextForPerson ........................................................320whereNextForLot............................................................320wipCount ........................................................................145workDay_for...................................................................112

Y

yield ................................................................................207ytdAverageAge ...............................................................204ytdAverageCycleTime.....................................................204ytdAverageNonCycleTime..............................................204ytdAverageYield.............................................................207ytdLotsExistingQuantity .................................................207ytdPassedQuantity...........................................................207ytdScrappedQuantity.......................................................207

SEMATECH Technology Transfer2706 Montopolis Drive

Austin, TX 78741

http://www.sematech.org