Sie sind auf Seite 1von 410

Computer Integrated Manufacturing

(CIM) Framework Specification


Version 2.0

SEMATECH
Technology Transfer 93061697J-ENG
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 service
marks of their respective companies.

© 1998 SEMATECH, Inc.


Computer Integrated Manufacturing (CIM) Framework Specification
Version 2.0
Technology Transfer # 93061697J-ENG
SEMATECH
January 31, 1998

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

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

Approvals: David Doscher, Editor


Scott Hawker, Project Manager
Gary Gettel, Director
Dan McGowan, Technical Information Transfer Team Leader
iii

Table of Contents

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


2 INTRODUCTION ..................................................................................................................................................3
2.1 Intended Audience ........................................................................................................................................4
2.2 How to Use This Specification .....................................................................................................................5
2.3 Framework Rationale....................................................................................................................................6
2.4 Framework Benefits......................................................................................................................................8
2.5 CIM Framework Scope.................................................................................................................................9
2.5.1 Functional Scope..............................................................................................................................9
2.5.2 Relationship to Object Management Group Specifications .............................................................9
2.6 Specification Notation Overview................................................................................................................10
2.6.1 Graphical Notations .......................................................................................................................11
2.6.1.1 Component Relationship Model .....................................................................................................11
2.6.1.2 Component Information Model ......................................................................................................11
2.6.1.3 Component Interaction Diagram ....................................................................................................12
2.6.1.4 Object Dynamic Model ..................................................................................................................13
2.6.1.5 Object State Tables.........................................................................................................................15
2.6.1.5.1 Object State Definitions and Query Table ......................................................................15
2.6.1.5.2 Object State Transition Tables........................................................................................15
2.6.2 Textual Notations...........................................................................................................................16
2.6.2.1 OMG Interface Definition Language..............................................................................................16
2.6.2.2 CIM Framework Interface Specification Format............................................................................18
2.6.2.3 Interface Specification Example.....................................................................................................19
2.7 Industry Standards and Programs ...............................................................................................................21
3 JOB ARCHITECTURE........................................................................................................................................22
3.1 Functional Architecture versus Interface Designs.......................................................................................22
3.2 Factory Hierarchy .......................................................................................................................................22
3.2.1 Hierarchical Task Structure ...........................................................................................................23
3.3 Job Control Architecture.............................................................................................................................25
3.3.1 Job Structure ..................................................................................................................................26
3.3.2 Jobs and Job Supervisors ...............................................................................................................26
3.3.3 Hierarchical Job Structure .............................................................................................................26
3.3.4 Job Control Component .................................................................................................................27
3.3.5 CIM Framework Job Structure ......................................................................................................28
3.3.6 Coordinated Threads of Tasks .......................................................................................................29
3.3.7 Production History, Process History and Equipment History ........................................................31
3.4 Job Architecture-Level Design ...................................................................................................................32
3.4.1 Design Goals..................................................................................................................................32
3.4.2 What is a Job? ................................................................................................................................32
3.4.3 Where do Job Supervisors (and Jobs) fit within the CIM Framework...........................................32
3.4.4 General Principles of Job Supervision ...........................................................................................33
3.4.5 Companion Interfaces ....................................................................................................................35
3.4.6 Factory Job Supervisor − Relationship to Scheduler and Dispatcher. ...........................................35
3.4.7 Components Versus Classes ..........................................................................................................35
3.4.8 Lot Versus Factory Job ..................................................................................................................36
3.4.9 Area Supervision............................................................................................................................36
3.4.10 Process Specification .....................................................................................................................36

Technology Transfer # 93061697J-ENG SEMATECH


iv

3.4.11 Structural Detail.............................................................................................................................37


3.4.11.1 Recursive Structure ........................................................................................................................37
3.4.11.2 JobRequestor Companion Interface................................................................................................38
4 CIM FRAMEWORK INTERFACES...................................................................................................................39
4.1 Global Definitions ......................................................................................................................................40
4.1.1 Global Type Definitions ................................................................................................................40
4.1.2 Global Exception Definitions.........................................................................................................50
4.2 Application Objects ....................................................................................................................................51
4.3 Base Interfaces............................................................................................................................................53
4.3.1 Resource Abstract Interface Group................................................................................................53
4.3.1.1 Interface: NamedEntity...................................................................................................................54
4.3.1.2 Interface: OwnedEntity...................................................................................................................55
4.3.1.3 Interface: Resource.........................................................................................................................56
4.3.1.4 Interface: ComponentManager .......................................................................................................59
4.3.2 Job Supervisor Abstract Interface Group .......................................................................................63
4.3.2.1 Interface: JobSupervisor ...............................................................................................................65
4.3.2.2 Interface: Job ................................................................................................................................68
4.3.2.3 Interface: JobRequestor ................................................................................................................71
4.4 Factory Services..........................................................................................................................................73
4.4.1 Document Management Component..............................................................................................74
4.4.1.1 DocumentManager .........................................................................................................................75
4.4.1.2 Interface: DocumentSpecification .................................................................................................77
4.4.1.3 Interface: DocumentRevision .........................................................................................................79
4.4.2 Version Management Component..................................................................................................82
4.4.2.1 Interface: VersionManager .............................................................................................................83
4.4.2.2 Interface: ChangeNotice .................................................................................................................84
4.4.3 Time Services ................................................................................................................................87
4.4.4 Event Broker..................................................................................................................................88
4.4.4.1 Interface: EventBroker ...................................................................................................................89
4.4.5 History Management Facility.........................................................................................................91
4.4.5.1 Interface: HistoryCollection ..........................................................................................................93
4.4.5.2 Interface: History...........................................................................................................................94
4.5 Factory Management Group .......................................................................................................................96
4.5.1 Factory Component........................................................................................................................98
4.5.1.1 Interface: MESFactory .................................................................................................................100
4.5.1.2 Interface: Area..............................................................................................................................106
4.5.1.3 Interface: FactoryCalendar ...........................................................................................................108
4.5.1.4 Interface: PolicyVariable..............................................................................................................110
4.5.1.5 Interface: MachineRegister..........................................................................................................113
4.5.2 Factory Operations Component ...................................................................................................114
4.5.2.1 Interface: FactorySupervisor ......................................................................................................116
4.5.2.2 Interface: LotJob.........................................................................................................................117
4.5.2.3 Interface: LotJobExecutor ..........................................................................................................119
4.5.3 Enterprise Abstract Interface .......................................................................................................120
4.5.3.1 Interface: EnterpriseExecutor .....................................................................................................121
4.5.3.2 Interface: ProductRequest ..........................................................................................................122
4.5.4 Product Request Management Component ..................................................................................125
4.5.4.1 Interface: ProductRequestManager ............................................................................................126
4.5.4.2 Interface: ProductRequestJob .....................................................................................................127
4.5.4.3 Interface: ProductRequestExecutor ............................................................................................128
4.5.5 Product Release Component ........................................................................................................129
4.5.5.1 Interface: ProductReleaseManager ...............................................................................................131

SEMATECH Technology Transfer # 93061697J-ENG


v

4.6 Material Management Group....................................................................................................................133


4.6.1 Material Management Abstract Interface Group..........................................................................134
4.6.1.1 Interface: Material ........................................................................................................................135
4.6.1.2 Interface: MaterialGroup ..............................................................................................................136
4.6.2 Product Management Component................................................................................................138
4.6.2.1 Interface: ProductManager ...........................................................................................................139
4.6.2.2 Interface: Product .........................................................................................................................143
4.6.2.3 Interface: Wafer............................................................................................................................152
4.6.2.4 Interface: Die................................................................................................................................153
4.6.2.5 Interface: Package.........................................................................................................................154
4.6.2.6 Interface: Lot ................................................................................................................................155
4.6.2.7 Interface: LotFamily.....................................................................................................................167
4.6.2.8 Interface: ProcessGroup ...............................................................................................................169
4.6.3 Durable Management Component ...............................................................................................170
4.6.3.1 Interface: DurableManager...........................................................................................................172
4.6.3.2 Interface: Durable.........................................................................................................................174
4.6.3.3 Interface: ProcessDurable.............................................................................................................177
4.6.3.4 Interface: MaterialContainer.........................................................................................................178
4.6.3.5 Interface: PositionalContainer ......................................................................................................180
4.6.3.6 Interface: Cassette.........................................................................................................................182
4.6.3.7 Interface: TransportGroup ............................................................................................................183
4.6.4 Consumable Management Component.........................................................................................185
4.6.4.1 Interface: ConsumableManager....................................................................................................186
4.6.4.2 Interface: Consumable..................................................................................................................187
4.6.5 Inventory Region Management Component.................................................................................188
4.6.5.1 Interface: InventoryRegionManager.............................................................................................191
4.6.5.2 Interface: InventoryRegionSystem ...............................................................................................193
4.6.5.3 Interface: InventoryRegion...........................................................................................................195
4.6.5.4 Interface: LotRegion.....................................................................................................................200
4.6.5.5 Interface: RegionSensor ...............................................................................................................204
4.6.6 Bill of Material Specification Component ...................................................................................206
4.6.6.1 Interface: BOMSpecificationManager..........................................................................................207
4.6.6.2 Interface: BOMSpecification........................................................................................................208
4.6.6.3 Interface: BOMBody ....................................................................................................................209
4.6.7 Product Specification Management Component..........................................................................210
4.6.7.1 Interface: ProductSpecificationManager ......................................................................................211
4.6.7.2 Interface: ProductSpecification ....................................................................................................212
4.7 Process Specification Management Group ...............................................................................................213
4.7.1 Process Specification Management Component ..........................................................................214
4.7.1.1 Interface: ProcessSpecificationManager.......................................................................................216
4.7.1.2 Interface: ProcessFlowIterator......................................................................................................217
4.7.1.3 Interface: ProcessOperationSpecification.....................................................................................219
4.7.1.4 Interface: ProcessFlowContext.....................................................................................................221
4.7.1.5 Interface: ProcessOperation..........................................................................................................222
4.7.2 Process Capability Management Component...............................................................................224
4.7.2.1 Interface: ProcessCapabilityManager ...........................................................................................225
4.7.2.2 Interface: ProcessCapability .........................................................................................................226
4.8 Material Movement ..................................................................................................................................227
4.8.1 Material Movement Abstract Interface Group .............................................................................227
4.8.1.1 Interface: TransportJobSupervisor...............................................................................................228
4.8.1.2 Interface: TransportJob................................................................................................................231
4.8.1.3 Interface: MaterialMovementController......................................................................................233
4.8.2 Material Movement Component ..................................................................................................234
4.8.2.1 Interface: MaterialMovementManager ........................................................................................235
4.9 Machine Control Group ............................................................................................................................236
4.9.1 Machine Management Group.......................................................................................................237
4.9.1.1 Interface: SupportResource .........................................................................................................239

Technology Transfer # 93061697J-ENG SEMATECH


vi

4.9.1.2 Interface: MachineResource ........................................................................................................240


4.9.1.3 Interface: Machine.......................................................................................................................242
4.9.1.4 Interface: ProcessMachine...........................................................................................................245
4.9.1.5 Interface: ProcessMachineJob .....................................................................................................248
4.9.1.6 Interface: ProcessResource..........................................................................................................249
4.9.1.7 Interface: Port ..............................................................................................................................251
4.9.1.8 Interface: MaterialTrackingLocation ...........................................................................................256
4.9.1.9 Interface: Sensor..........................................................................................................................258
4.9.2 Recipe Management Component .................................................................................................259
4.9.2.1 Interface: MachineRecipe............................................................................................................261
4.9.2.2 Interface: RecipeNamespaceManager..........................................................................................262
4.9.2.3 Interface: RecipeNamespace........................................................................................................264
4.9.2.4 Interface: RecipeControl.............................................................................................................267
4.9.3 Resource Tracking Component....................................................................................................269
4.9.3.1.1 Interface: ResourceTrackingManager..........................................................................270
4.9.3.1.2 Interface: PMSpecification ..........................................................................................273
4.9.3.1.3 Interface: PMJob..........................................................................................................275
4.10 Advanced Process Control Group.............................................................................................................276
4.10.1 Plugin Management Component..................................................................................................278
4.10.1.1 Interface: PluginFactory .............................................................................................................279
4.10.1.2 Interface: PluginManager ............................................................................................................280
4.10.1.3 Interface: Plugin ..........................................................................................................................281
4.10.2 Plugin Execution Component ......................................................................................................282
4.10.2.1 Interface: PluginExecutor ............................................................................................................283
4.10.3 Control Management Component ................................................................................................284
4.10.3.1 Interface: ControlManager ...........................................................................................................285
4.10.3.2 Interface: ControlStrategyFactory ...............................................................................................286
4.10.3.3 Interface: RunningControlStrategyFactory..................................................................................287
4.10.3.4 Interface: ControlStrategy ............................................................................................................288
4.10.3.5 Interface: RunningControlStrategy..............................................................................................289
4.10.4 Control Execution Component.....................................................................................................290
4.10.4.1 Interface: ControlExecutionManager ...........................................................................................291
4.10.4.2 Interface: ControlExecutor ...........................................................................................................292
4.10.5 Data Collection Plan Management Component ...........................................................................293
4.10.5.1 Interface: DataCollectionPlanFactory...........................................................................................295
4.10.5.2 Interface: DataCollectionPlanManager.........................................................................................296
4.10.6 Control Database Component ......................................................................................................297
4.10.6.1 Interface: ControlDatabaseManager ............................................................................................298
4.10.6.2 Interface: ControlData .................................................................................................................299
4.10.6.3 Interface: DataCollector ..............................................................................................................300
4.11 Schedule Management Group...................................................................................................................301
4.11.1 Dispatching Component...............................................................................................................302
4.11.1.1 Interface: DispatchingManager.....................................................................................................304
4.11.1.2 Interface: Dispatcher.....................................................................................................................305
4.11.1.3 Interface: DispatchList .................................................................................................................306
4.11.1.4 Interface: DispatchDecision..........................................................................................................307
4.12 Factory Labor Group ................................................................................................................................308
4.12.1 Person Management Component .................................................................................................310
4.12.1.1 Interface: PersonManager.............................................................................................................311
4.12.1.2 Interface: Person...........................................................................................................................313
4.12.1.3 Interface: QualificationData .........................................................................................................323
4.12.2 Skill Management Component.....................................................................................................324
4.12.2.1 Interface: SkillManager ................................................................................................................325
4.12.2.2 Interface: Skill ..............................................................................................................................326
4.12.2.3 Interface: SkillRequirement..........................................................................................................328

SEMATECH Technology Transfer # 93061697J-ENG


vii

APPENDIX A Glossary.........................................................................................................................................329
APPENDIX B Acronyms ......................................................................................................................................335
APPENDIX C References .....................................................................................................................................337
APPENDIX D CIM Framework Events ................................................................................................................339
APPENDIX E Scenario Examples ........................................................................................................................373
E.1 Factory Operations Scenario.....................................................................................................................381
E.2 Product Request Scenario .........................................................................................................................382

Technology Transfer # 93061697J-ENG SEMATECH


viii

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

SEMATECH Technology Transfer # 93061697J-ENG


ix

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

Technology Transfer # 93061697J-ENG SEMATECH


x

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

SEMATECH Technology Transfer # 93061697J-ENG


xi

Acknowledgements

The editor recognizes the efforts of the people, past and present, who have worked to develop the
CIM Framework Architecture and Specification documents since1991. The continued efforts by
the 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. The
following is a list of SEMATECH personnel and member company assignees who contributed to
the CIM Framework over the years:
SEMATECH: AMD: AT&T: Digital:
Dale Blackwell Terry Bush Frank Yeager Prabhat Deosthali
Jim Hollister Tony Mullins
Carla Jobe Partington
Margaret Pratt
Fred Waskiewicz
Alan Weber

IBM: INTEL: Motorola: National


Semiconductor:
David Doscher John O’Conner Jeff Acklen Paul McGuire
Ken Freed Scott Hawker Vinayak Parikh
Karl Gartland Mark Leonard
Dave Jacobs Lance Rist
Alan Moser Pete Whelan

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, supplier
companies, academic and government facilities—in developing the CIM Framework are also
deeply appreciated.
Thank you!

Technology Transfer # 93061697J-ENG SEMATECH


Executive Summary 1

1 EXECUTIVE SUMMARY
This document is a detailed specification of an application framework for the computer
integrated manufacturing (CIM) systems used in semiconductor factories. A framework is a
software infrastructure that creates a common environment for integrating applications and
sharing information in a given domain. The purpose of this framework is to establish an industry
standard architecture for these complex manufacturing systems, leading to an open, multisupplier
CIM system environment. The framework described in this specification is called the CIM
Framework.
Because of the ever-increasing complexity of semiconductor devices and manufacturing
processing, the production and process control capabilities provided by CIM systems are
essential for the smooth management of semiconductor factories. However, today’s CIM systems
generally are large, monolithic, and difficult to enhance or extend, having evolved over many
years to support the particular needs of an individual company or factory. This results in high
support costs and long delays to add new functionality, which in turn leads to low manufacturing
customer satisfaction and low development/support staff morale.
The CIM Framework defined by this specification addresses many of these problems and charts a
path 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 of
semiconductor 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 new
application development, shorter times for initial factory start-up and ramp-up to production
yields, 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 a
manufacturing systems organization: technical managers, system architects and engineers,
application software developers and integrators, and standards developers. Moreover, they may
be 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 major
sections.
Section Purpose
1, 2 An introduction appropriate to all audiences.
2 How the CIM Framework relates to and uses the Object Management Architecture (OMA). A
summary of notation used in the specification.
3 CIM Framework use of Job concepts that cross functional boundaries.
4 CIM Framework detailed design information, including interface definitions.
Appendixes Glossary, acronyms, references, events.

Technology Transfer # 93061697J-ENG SEMATECH


2 Executive Summary

The CIM Framework Specification must continue to evolve to meet the needs of a competitive
and vital industry. The contents of this version represents a significant amount of real
development 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 as
of this release. The continued evolution of the CIM Framework will be carried on through
industry efforts such as MES product development and installation, and work in various industry
organizations (e.g., SEMI, Object Management Group [OMG], etc.).
Technical assistance for users of this document is available from:
Framework.Request.Information@sematech.org.

SEMATECH Technology Transfer # 93061697J-ENG


Introduction 3

2 INTRODUCTION
The CIM Framework was created by SEMATECH to benefit its members and the overall
industry in the following ways:
• Reduce new Manufacturing Execution System (MES) application
development/integration cost and cycle time through adoption of a pre-designed
and pre-integrated system architecture.
• Reduce new factory ramp-up time because of faster equipment and factory
integration (e.g., make data collection and analysis tools available without
integration delays).
• Provide a stronger, broader base of viable application suppliers (especially
innovative, niche-oriented companies).
• Increase productivity of member company CIM system support teams because the
software is easier to fix and enhance (with limited side effects).
The CIM Framework defines a framework of components that provide the functionality common
across CIM applications and enables integration of those applications. The framework of
components does not, by itself, provide all the functionality of an integrated CIM system.
Framework components are designed to be specialized and extended with additional functions
and behaviors added (as additional application objects) to provide the specific functionality
needed for a given CIM product or solution. The CIM Framework specifies only those portions
of a CIM system necessary for standard application integration. It leaves the rest of the system
unspecified 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 specification
parameter, get machine utilization) that are typically embodied in applications (e.g., material
management, specification management, machine control) and delivered on distributed computer
platforms (e.g., workstations, servers) that use standard software system technologies (e.g.,
communications, database, user interface). The current CIM Framework is specifically targeted at
manufacturing information management and control for both the planning and operational phases
of semiconductor wafer fabrication.
Much of this specification may also be applicable to other manufacturing environments, such as
silicon die packaging and printed wiring board assembly. Related activities targeting these
environments will provide the basis for future convergence of the common aspects of MES
framework specifications.
This introductory section provides a description of the intended audience, a discussion of the
rationale for and benefits of CIM Framework use, guidance on the use of this document, an
overview of the CIM Framework functional scope, and a brief explanation of the graphical and
textual notations used to specify the framework.

Technology Transfer # 93061697J-ENG SEMATECH


4 Introduction

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 semiconductor
manufacturers, software product suppliers, system integrators, equipment suppliers, standards
organizations, universities, national laboratories, and other research organizations.
Technical CIM managers are responsible for managing the development, delivery, and
integration of complex manufacturing software applications. They can use the CIM Framework
specification to plan and organize the development activities and guide component testing and
validation. Moreover, those who buy some of their software from external sources can use it as a
purchasing guide when discussing system architecture and integration requirements with
potential suppliers.
System architects and engineers are responsible for overall system design, including selection of
industry standards for computing and communications infrastructure, software development
processes, product roadmaps, and related topics. They can make extensive use of the CIM
Framework as a starting point for many of their roles, including the partitioning and allocation of
application functions to specific modules, definition of the boundary between the distributed
system infrastructure and the rest of the system, and specification of open interfaces between the
portions of the system they are designing and the external environment. They can also use it to
define a strategic system roadmap for migration to an open, distributed system environment.
Application developers and integrators must produce, install, and support software applications
for semiconductor manufacturing. The CIM Framework specification, in conjunction with a
specific 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, the
CIM Framework defines the scope and boundaries of the essential standard components of a
manufacturing system and can be used principally as an interface specification. However, the
object models can also be used in the internal design of new applications and/or legacy
integration “wrappers,” accelerating the development process even further. Finally, the
specification can form the basis for creating an independent set of tests necessary to verify
conformance.
Finally, standards developers are responsible for defining the public interfaces and shared
information models that allow the many software products found in a modern semiconductor
factory to work together. They can use the CIM Framework as an open source of information for
establishing precise definitions for the many items in a factory that must be represented in
multiple suppliers’ products, including standards for partitioning and communicating with
complex equipment; product and raw material attributes and relationships; process definitions
and routings; equipment data sampling schemes and storage schema; educational and medical
attributes of people; and many others.

SEMATECH Technology Transfer # 93061697J-ENG


Introduction 5

2.2 How to Use This Specification


This document provides information about the CIM Framework in varying levels of detail. CIM
managers should read the Executive Summary and this section. All others should read the entire
document, especially application developers and framework developers. A brief description of
each section is given below.
• Section 1 provides an executive summary of the CIM Framework.
• Section 2 contains introductory information and an overview of the CIM
Framework specifications.
• Section 3 presents an explanation of the CIM Framework’s use of factory job
supervision concepts.
• Section 4 contains the CIM Framework specifications representing interfaces and
behaviors to be provided by conformant product implementations. This is the
main body of the CIM Framework. The subsections containing the actual CIM
Framework specifications are as follows:
 Subsection 4.1 contains the Global Definitions of types and exceptions that are
referenced throughout the remaining specifications.
 Subsection 4.2 contains information on Application Objects and Abstract
Interface.
 Subsection 4.3 contains the Abstract Base Interfaces inherited by other more
specific interface types to provide common behaviors.
 Subsection 4.4 specifies the components that provide Factory Services such as
document and history management.
 Subsection 4.5 specifies components to provide the Factory Management
functionality which represents the factory as a whole.
 Subsection 4.6 specifies components for Material Management, including
components dealing with products, durables, consumables.
 Subsection 4.7 specifies Process Specification components that enable access
to process operation specifications and support their use by factory jobs.
 Subsection 4.8 specifies abstract interfaces and components for Material
Movement.
 Subsection 4.9 specifies components that provide the MES-level Machine
Control capability for representing machines, process jobs, and recipes.
 Subsection 4.10 specifies Advanced Process Control components.
 Subsection 4.11 specifies components for Schedule Management for
dispatching work within the factory.
 Subsection 4.12 specifies components for Factory Labor Management to
represent the capabilities of persons who act as operators within the factory.
• Appendix A provides a glossary.
• Appendix B provides a list of acronyms.

Technology Transfer # 93061697J-ENG SEMATECH


6 Introduction

• Appendix C provides citations for other specifications or documents referenced


within 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 the
companion document, Computer Integrated Manufacturing (CIM) Framework Architecture
Concepts, 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 the
changing technical and business requirements of this industry. Moreover, most semiconductor
manufacturers prefer to purchase commercial MES solutions since software products are not
their core business. At the same time, these manufacturers want to retain the option of
developing competitive-advantage portions of their factory software in-house or mixing products
from multiple suppliers to best suit their particular needs. However, the technologies on which
most current CIM systems are based do not support these requirements. Even if they did, it is
unlikely (and undesirable) to expect a small number of suppliers to support the entire global
industry with closed, proprietary system products.
Current semiconductor CIM systems can generally be classified as large, monolithic, centralized
systems with small distributed islands of automation. The problems associated with these
systems 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 leverage
in dealing with these problems. These advances, listed in Table 1, collectively represent a
fundamental paradigm shift affecting virtually every dimension of manufacturing and computer
science.
From a manufacturing science standpoint, there is a major shift to more flexible and agile
systems able to produce specialized products in less time using lean production strategies. Within
semiconductor manufacturing, there is a trend toward the use of cluster tools that are able to
perform 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 generation
of high performance computer, network, and storage technologies is facilitating the delivery of
robust applications at the point of most need. Finally, and perhaps most importantly, a
revolutionary new approach to software engineering, object-oriented technology, has emerged
that can enable the promise of all of these advances to be realized. This new approach is based on
several fundamental principles of good software engineering.

SEMATECH Technology Transfer # 93061697J-ENG


Introduction 7

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) with
well-defined service interfaces (e.g., continueProcessing), and encapsulated state and behavior.
Objects provide a higher, more understandable, and more stable level of abstraction than
traditional data and procedural abstractions. The principle of encapsulation hides the
implementation details of an object, which makes it easier to change while minimizing the
impact of change on the rest of the system. Inheritance and polymorphism are additional
object-oriented concepts that enable the generation of reusable software components. A detailed
description of the object-oriented approach to software development is beyond the scope of this
specification, but numerous excellent references are available in any bookstore with a computer
science section.

Table 1 Industry Trends


Technology Industry Trend/Paradigm Shift
Manufacturing Agility/Flexibility
Lean Production
Short Cycle Time
Equipment Cluster Tools
Vacuum Processing
Single Wafer Processing
Process In Situ Sensors
In Situ Process Control
Rapid Thermal Processing
Architecture Distributed
Client-Server
Peer-To-Peer
Software Object Technology
Framework Technology
Wrapper Technology
Graphical 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 and
design methods to programming languages and user interfaces. Significant improvements in
software development productivity, quality, and maintenance have been reported from many
users and projects using the technology.
Recently, a more advanced object-oriented architectural concept called a framework has
emerged. Frameworks facilitate the coordinated reuse of large collections of related objects. The
net 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 (collections
of object abstractions), encapsulation (of whole sets of objects), and reuse (of whole object
mechanisms) than objects in and of themselves. The availability of a powerful new approach to
software engineering, coupled with the simultaneous occurrence of several major shifts in
manufacturing and computer science, provides an unparalleled opportunity for dramatic

Technology Transfer # 93061697J-ENG SEMATECH


8 Introduction

improvement in all aspects of semiconductor CIM. The goal of the CIM Framework is to seize
this opportunity by creating a common, modular, flexible, integrated object model that unifies
these 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 will
be necessary to keep the industry on its historical productivity improvement curve. The existence
of a common reference model will benefit the entire industry. Everyone from CIM managers to
process engineers will benefit.
Benefits for the CIM manager include the following:
• A competitive and complementary manufacturing application market that enables “buy
versus 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 integration
code

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 standards
development

SEMATECH Technology Transfer # 93061697J-ENG


Introduction 9

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 work
together to form an integrated manufacturing system. The components of the CIM Framework
Specification 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 a
variety of applications from multiple suppliers with potentially intersecting capabilities can be
accommodated. This means that, given a specific framework binding to a set of computer and
software system technologies, an application can be instantiated and executed in this
environment and will register itself as a set of well known objects that provide a core set of
framework 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 Object
Management Group [OMA][CORBA] in a number of ways. The CIM Framework Specifications
must be considered in the context of this larger collection of software specifications to get a
complete understanding of the specified interfaces. Wherever possible, the CIM Framework

Technology Transfer # 93061697J-ENG SEMATECH


10 Introduction

focuses on semiconductor domain-specific interfaces and defers specifications for infrastructure


or generic software services and facilities to the OMG.
Where existing OMG specifications satisfy CIM Framework requirements, the details of the
OMG specification are only summarized. The reader is referred to the original source OMG
document for a complete description of the technology.
Where the existing OMG specifications only partially meet CIM Framework requirements, the
needed enhancements to the OMG specification are fully defined in this document. It is
SEMATECH’s intention to influence the OMG and software suppliers to revise the
corresponding OMG specification to incorporate those enhancements. The CIM Framework
Specification will be updated to reference the OMG specification when it is revised to address
the requirements delta.
Where existing OMG specifications do not meet CIM Framework requirements, or if an OMG
specification does not exist in the needed area, a complete definition of necessary interfaces is
defined in this document. Again, it is SEMATECH’s intention to work within the OMG process
to express MES requirements for future adoption of OMG specifications to fill in the missing
technology. The CIM Framework Specification will be revised accordingly when the OMG
specification satisfies the existing requirements.
Finally, the OMG is planning to issue specifications in the future that have direct relevance to the
manufacturing 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 the
manufacturing domain wherever possible and specify only the specializations necessary for the
semiconductor manufacturing industry.

2.6 Specification Notation Overview


This part of the introduction provides an overview of the notations chosen to express the CIM
Framework Specification. Readers familiar with these topics may wish to skip this section. This
section is a reference rather than a tutorial. Hence, those unfamiliar with these topics are strongly
encouraged to consult the materials listed in the references for a more thorough explanation.
CIM manufacturing systems requirements and the architectural principles upon which the CIM
Framework development was founded were derived through use of industry standards, practices
reported in the literature, and other state-of-the-art information. The requirements and principles
contained in this specification are described using a combination of graphical and textual
notations. Where applicable, methods were employed and notations developed through the use of
computer-aided software engineering tools.
The section briefly describes the graphical notations used to describe the framework in this
specification, including the following:
Component Relationship Model Shows the logical combination of components within a
group (also called a functional group) and the interactions
among the component parts.
Component Information Model Shows the objects along with their inter-object relationships
and cardinalities.

SEMATECH Technology Transfer # 93061697J-ENG


Introduction 11

Component Interaction Diagram Expresses framework dynamics by describing the sequence


of collaborations between component classes.
Object Dynamic Model Shows object behavior as changes in state that result from
specific events.
Object State Tables Provide supplementary (to the Dynamic Model) state
information. The tables provide descriptive state
definitions, identify state query mechanisms, identify the
triggers effecting state transition, and identify the actions
resulting 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 specification
as a mechanism to show relationships among framework components.
Figure 1 depicts the Component Relationship Model.

Relationship
Component A Component B

Figure 1 Component Relationship Model

2.6.1.2 Component Information Model


Originating in the database community, information modeling traditionally addresses the
relationship of data in order that it can be properly managed in a system database. In this
specification, Rumbaugh’s OMT Object Model [Rum91], which extends the Entity-Relationship
(ER) approach to information modeling, was selected. To paraphrase Rumbaugh, the Information
Model describes the structure of objects in the framework: their identity, relationships with other
objects, and (to some extent) their operations.
It should be noted that information models can indicate persistence of objects along with
interobject relationships and cardinalities. Analogous to conventional databases, object databases
use persistence and cardinality to manage system objects and data. Figure 2 is an example of a
Component Information Model.

Technology Transfer # 93061697J-ENG SEMATECH


12 Introduction

RELATIONSHIP
NAME
ENTITY ENTITY
NAME 2 NAME
EXACTLY
TWO DATA-CARRYING
ONE RELATIONSHIP
ZERO OR
ONE

ASSOCIATION ENTITY
SUBTYPE NAME NAME
RELATIONSHIP

ZERO OR
MANY

ENTITY ENTITY ENTITY


NAME NAME NAME

PART-WHOLE
RELATIONSHIP

COMPONENT COMPONENT
ENTITY ENTITY
NAME NAME

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 a
particular scenario. It is another way to convey the interactions between objects. However, the
Interaction Diagram conveys the notion of sequencing, that is, the order in which object
interactions occur. The CIM Framework Specification uses Interaction Diagrams to portray the
order in which classes within a component interact to achieve some factory operation (e.g., the
sequencing of messages between Material Movement Management component classes to effect
the creation and completion of a transport job).

SEMATECH Technology Transfer # 93061697J-ENG


Introduction 13

The following example (Figure 3) of an Interaction Diagram models a portion of the interaction
between 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 statecharts
simplify the use of Mealy state transition diagrams by adding a notation for hierarchy and
concurrence. Under this notation, states may be divided into substates, thereby forming a
hierarchy. Substates must be one of two types, termed AND substates (representing concurrency)
and exclusive OR substates (representing a finer breakdown of a parent state).

STATE
STATE1 STATE2 C
NAME
state
transition
concurrent states default entry point conditional selector

Figure 4 Harel State Chart

Technology Transfer # 93061697J-ENG SEMATECH


14 Introduction

To illustrate use of Harel state charts, consider the Figure 5 example for an automobile:
start turn on lights
engine stopped engine running engine running
AND lights off AND lights off AND lights on

Figure 5 Harel State Chart Example

A more general Harel state chart showing hierarchy and concurrency for automobile states is
shown in Figure 6.
In Figure 6, the OPERATING parent state is divided into two concurrent substates, which in turn
represent a further breakdown into exclusive OR logical conditions (e.g., the engine can be in the
ENGINE RUNNING state) or (exclusive or) be in the ENGINE STOPPED state.

OPERATING

ENGINE LIGHTS
STOPPED OFF

1 2 3 4

ENGINE LIGHTS
RUNNING ON

Figure 6 Object Dynamic Model

SEMATECH Technology Transfer # 93061697J-ENG


Introduction 15

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 State
Definitions and Query Table. Table 2 provides a detailed description of each object state and
identifies the query mechanism for determining if the object is in that state. Given the example
provided in this section, an entry in the State Definitions and Query Table would appear as
follows.

Table 2 Object State Definitions and Query Table Example


State Definition Query for State Via
ENGINE In this state, the automobile’s boolean isEngineRunning ( );
RUNNING engine is running. sent to instance of Automobile. Returns
true.

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 the
transition number from the Mealy or Harel diagram, the starting and ending states and the event
which 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 to ENGINE tachometer indicates
right RUNNING positive RPM
2 ENGINE RUNNING turn ignition key to ENGINE tachometer indicates zero
left STOPPED RPM
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 take
place in the system, most of which are encapsulated from the driver. Only externally visible
states and triggers have been presented.
Within the CIM Framework specification, only those triggers and state changes relevant to
external 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 will
take place in response to the trigger. In the above example, if the car is out of gas the engine will
not 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 the
CIM Framework, object state should be queried to ensure successful transitioning in response to
a triggering message.

Technology Transfer # 93061697J-ENG SEMATECH


16 Introduction

2.6.2 Textual Notations

2.6.2.1 OMG Interface Definition Language


CORBA [CORBA][CIMArch] defines the architecture of an Object Request Broker, which
enables and regulates interoperability between objects and applications across heterogeneous
languages and computer boundaries. In all OMG specifications, services are defined as object
interfaces expressed in the OMG’s IDL. CORBA standards defines IDL and its mapping to the
other languages (for example, C, C++, Smalltalk, and Java).
IDL, predating CORBA and object-oriented systems, is a language that describes interfaces
independent of the language that the interface’s function is written in. This goal is achieved by
mapping between the IDL syntax and whatever language is used to implement client and server
objects. Because IDL is designed purely for interface specification, it lacks the flow control and
operator constructs of an implementation language. Object classes can implement an interface
differently as long as their behavior conforms to the interface definition. While interface
definitions can be inherited, the mechanism describing how the ORB implementation
resolves/binds these interface definitions to executable code (before or at runtime) is not
described by CORBA.
IDL obeys the same lexical rules as C, while introducing a number of keywords specific to a
distributed 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 the
examples, 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 by
clients to the server (in mode parameters); passed back by the server to the clients (out mode
parameters); or both (inout parameters). The assumption of this document is that object
parameters (service arguments) are handled as object references; thus, only the in parameter
mode is used.
One final note: parameter types must be CORBA basic types (e.g., string, long) or an object type
defined within the CIM Framework Specification.
Exceptions:
Exception declarations follow a C structure-like data structure, with the keyword exception
taking the place of struct. It contains attributes that can be used to pass information about an
exception condition to a service requester. An exception is declared with an identifier
(ExceptionNameSignal, the exception name), which is accessible as a value when the exception
is raised, allowing the client to determine which exception has been received. Data in the
exception, if any, is accessible to the client. An interface uses the keyword raises to indicate it
can throw an exception. The following is the syntax for exception specifications used in this
document.
exception ExceptionNameSignal {
ObjectType anInstance };
...
interfaceDefinition raises (ExceptionNameSignal);

SEMATECH Technology Transfer # 93061697J-ENG


Introduction 17

The following conventions are used throughout this specification when defining exceptions:
• Εxceptions are not reserved for system or programming errors or failures but
should 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 exception
definition.
• All state transition services (makeXXX services) must include the
InvalidStateTransitionSignal 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 appropriate
response. However, services that return a collection of objects will not raise an
exception but will simply return an empty collection.
• Services that perform “add” functions will raise a <ObjectType>DuplicateSignal
exception for the case where the object to be added is already in the target
collection or logical set. The exception will include a field containing a reference
to the currently existing object.
• Services that perform “remove” functions will raise a
<ObjectType>NotAssignedSignal exception for the case when the given object
was 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 such
that 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 CIM
Framework Architecture Guide [CIMArch] contains information on how to use and build events.

Technology Transfer # 93061697J-ENG SEMATECH


18 Introduction

Attributes:
Defining an IDL attribute requires the methods “get” and “set” to be applied to an object's
instance variable. Attributes may be qualified as readonly, meaning that an external entity has
only 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). The
syntax is
typedef sequence<ObjectType> ObjectTypeSequence ;

object type contained is identified within “<” and “>” and precedes the word “Sequence” in the
type name. Thus,
typedef sequence<Machine> MachineSequence ;

There is no explicit order implied in any usage of this definition. Where order is important, it will
be 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 object
provides. This includes the signatures of the operations, and the types of the attributes. An
interface definition ideally includes the semantics as well” [OMA]. The CIM Framework
Specification 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 format
of an object interface. Each description of a object interface in Section 4 follows this format. The
format 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 error
conditions.
• Published Events—The name of the event structure that must be placed on an event
channel. The event structure identifies the event through a subject field. The subject is
composed 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; neither
posting services nor subscribers are identified. Thus, events are not tied to specific
services and may be the result of an internal (to the component) computation.
• Provided Services—A list of publicly available services provided by this interface. In
other words, a list of non-private, named operations. Each is given by a description in
comment form (i.e., /*....*/) followed by its representation in the IDL syntax. The services
can be described as follows:
1. Attributes, represented as “get” and “set” methods on an object's instance variables
2. Configuration Services that

SEMATECH Technology Transfer # 93061697J-ENG


Introduction 19

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 state
may 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 are
being used by public and/or private services in this interface. These methods must be
available in order for the documented interface to provide its described services. Changes
to contracted services may result in changes to the behavior of the interface making use of
these 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 will
appear after the category identifier. If no Exceptions, Published Events, Contracted Services, or
Dynamic Model is defined, then the word None will appear. State Transition Tables occur only in
conjunction with Dynamic Models.

2.6.2.3 Interface Specification Example


The following commented example provides a more complete illustration of IDL and CIM
Framework 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 inherits
from FrameworkObject1.
Exceptions:
/* The following portrays the syntax used to describe exceptions for this interface. ObjectType
and instanceName specify an object instance (supplementary information) returned with the
exception. */
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);

Technology Transfer # 93061697J-ENG SEMATECH


20 Introduction

/* The following defines a method for readonly AttributeName2. */


ObjectType getAttributeName2 ( );

/* The following says operationName1 is a local operation returning an object of the class
ObjectTypeReturned. */
ObjectTypeReturned operationName1 ( );

/* The following says operationName2 is a local operation returning an object of the class
ObjectTypeReturned with an argument instanceName of the object type ObjectTypeName. In
addition, 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 definitions
follow 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 ;

SEMATECH Technology Transfer # 93061697J-ENG


Introduction 21

2.7 Industry Standards and Programs


The following programs, standards, and guidelines were used in development of the CIM
Framework specification:
• Texas Instruments (TI)/Advanced Research Projects Agency (ARPA) U.S. Air Force
Microelectronics Manufacturing Science and Technology (MMST) CIM Development
Program
• 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 Generic
Equipment 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 (material
definition focus)
• SEMATECH Semiconductor Generic Manufacturing Model (SGMM) from the CIM
Architecture 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 suppliers
and manufacturers who are applying the CIM Framework in their business.

Technology Transfer # 93061697J-ENG SEMATECH


22 Job Architecture

3 JOB ARCHITECTURE
This section describes the core functional architecture of the CIM Frameworkthe creation and
execution of factory jobs made up of process jobs, transport jobs, preventive maintenance jobs,
etc. The overall job architecture integrates the CIM Framework material management
components, the resource and machine management components, and the specification
management 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 relationships
between factory entities that carry out work. They may not correspond one-to-one to interfaces
defined in IDL and OMT diagrams in the CIM Framework Specification. For example, the
Machine Management components do not define explicit IDL interfaces for transport and
metrology machines. This does not mean that factories will not have transport and metrology
machines. Rather, it means that a common machine interface type is sufficient for these different
subtypes (framework-compliant implementations may specialize the machine interface). A
factory functional model must include functional entities for transport and metrology machines,
whereas interface design needs to address what interface services are needed to fill those
functional roles.

3.2 Factory Hierarchy


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

Enterprise
... Factory
...
... Area ...
Process Machine Transport Machine Storage Machine Person

Process Resource Transport Resource Storage Resource

Figure 7 Factory Resource Hierarchy Model

SEMATECH Technology Transfer # 93061697J-ENG


Job Architecture 23

• An enterprise often includes multiple factories. The task of the enterprise is to deliver
products to customers.
• A factory is made up of areas and bays with interbay material handling systems. The
task 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 intrabay
material handling systems. The task of the areas or bays is to perform a group of
process operations on groups of materials, move material to the processing
equipment, and perform preventive maintenance and other supporting tasks.
• Complex processing equipment (such as a cluster tool) is made up of processing
chambers and internal material handling and storage resources. The task of the
processing equipment is to perform a process or metrology step or a closely related
group 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 a
collection 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 movement
equipment. The task of the material handling systems is to store and move materials
in transport groups.
• Manufacturing operators and other factory personnel are important resources to
facilitate and supervise material processing and handling and preventive maintenance
and, in some cases, perform manufacturing steps such as moving material or
performing a visual inspection.
The job control architecture defines how tasks are assigned and coordinated across the hierarchy
of 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 single
process or metrology operations or material movements. Through a complex, context-dependent
combination of single tasks, product lots are manufactured and delivered to customers. This
complex combination of single tasks is a task structure as shown in Figure 8. In manufacturing
operations, these structures are pre-defined as task procedures, work flows, process
specifications, etc. To accommodate manufacturing variability and exceptions, though, the
structures must also be adjusted and modified as they are executed. For example, as a scheduler
selects specific machine resources, the job supervisor may insert machine-dependent setup tasks
and operation sequences or transport steps to get the material to the machine.

Technology Transfer # 93061697J-ENG SEMATECH


24 Job Architecture

Level is
e
p r
t er Task: Fill Order
En

Task: Produce Lot 1 Task: Produce Lot 3


ry
to t
c or Task: Produce Lot 2
Fa sp Task: Produce Lot 4
r an
T Move Move
r ...
s te
u ne
Cl chi Litho
a ...
M
Process
n e e Operations
c hi rc
a u
M eso ...
R
Time

Figure 8 Hierarchical Task Structure

Notice in Figure 8 that tasks of a higher level are decomposed into combinations of tasks for
lower level resources. Each manufacturing resource has a thread or flow of tasks that must be
coordinated with the tasks of other resources. The higher level task is completed when the
combination of lower level tasks is completed. Figure 8 illustrates this with the coordination of
material movement and lithography operations and with the coordination of operations within the
lithography equipment. The role of job control is to decompose, coordinate, monitor, adjust, and
report on this hierarchical structure of tasks.
The hierarchical task structure of Figure 8 defines the requirements for a multi-level operation
procedure (task) specification model.
Figure 9 shows the elements of a hierarchical task, indicating some of the additional data for an
overall job control structure. A task is specified as a job request from a superior level. Along
with the request is a task specification, which is often a template or procedure for how to carry
out the task, including a combination of subtasks, monitor and adjustment checkpoints along the
way.
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 be
a roll-up, an abstraction, or simply pointers to lower level job results.

SEMATECH Technology Transfer # 93061697J-ENG


Job Architecture 25

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

Task
Specification
Request
Start End
Event Event
Task

ID: a Sub-
Spec: b
Sub- Sub-Request
Inputs: c Request Request
Results: d
Start End Start End Start End
Event Event Event Event Event Event
Sub-Task Sub-Task Sub-Task

ID: w ID: q ID:


Spec: x Spec: r
Job History time: now Spec:
Inputs: y Inputs: s Inputs:
Results: z Results: t Results:

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. It
defines 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 by
creating and managing machine-level process jobs and transport jobs, coordinated with
Preventive Maintenance jobs and other support jobs. The job control architecture defines and

Technology Transfer # 93061697J-ENG SEMATECH


26 Job Architecture

manages relationships between manufacturing resources (process equipment, transport


equipment, people), material groups (lots, process groups, transport groups) and process
specifications (process flows).

3.3.1 Job Structure


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

Job Requestor
Specified
Task
Job Control

Resources Materials

Resource History Control History Material 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 persistent
entity that responds to job requests. The JobSupervisor interfaces may be inherited by a
component manager or another entity within a component. For example, a
MaterialMovementManager and MaterialMovementController in the CIM Framework may both
be 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 level
job controllers and monitor job progress through status and external feedback. A job controller
often uses multiple lower level job controllers and job resources. For example, a factory job
requires processing jobs and transport jobs, and a given processing job may be divided among
multiple process and metrology resources. At the lowest level, job control results in directly
manipulating equipment actuators based on real-time sensor feedback. (Note, this lowest level of
job control is outside the shop-floor control scope of the CIM Frameworkit is within the scope

SEMATECH Technology Transfer # 93061697J-ENG


Job Architecture 27

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

External Feedback Job


(e.g. sensor data Control
or operator input) Job Job
Status Status Job
Job Request
Request
External Feedback Job Feedback Job
(e.g. sensor data Control Control
or operator input)
Job Job
Status Job Status Job
Request Request

Job Feedback Job


Sensor Feedback
Control Control

Actuation Actuation

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 relationships
among job supervision, job execution, and jobs. For example, in Figure 12 a job supervisor
could take a job request, decompose it into steps, select material or equipment for each step with
the aid of a scheduler, and coordinate and dispatch lower level requests. The job executor
monitors the progress of lower level steps and modifies current or subsequent specifications of
steps as required. In this example, the job itself is a current and historical record of the requested
job, 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 component
depending 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 a
scheduler or dispatcher to optimize resource utilization. The CIM Framework does not specify
the internal architecture of Job Control components, which is an implementation choice.

Technology Transfer # 93061697J-ENG SEMATECH


28 Job Architecture

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

Request

Job Specification
Status

Job Supervisor

Material
Feedback
Job Executor Job
Equipment

History
Job
Specification(s)
Status
Request(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 job
control) for the CIM Framework. Figure 13 shows the job structure of Figure 10 mapped to the
factory resource hierarchy of Figure 7. The material hierarchy is modeled in the Material
Management components of the CIM Framework Specification, the task specification hierarchy
is modeled in the Process Specification Management components, and the resource and control
hierarchies 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 not
shown in Figure 13, but would parallel the process machine and job control structure. The
transport hierarchy is modeled in the Material Movement components of the CIM Framework.

SEMATECH Technology Transfer # 93061697J-ENG


Job Architecture 29

Resource Control Task Material


Specification
(Enterprise Job)
Enterprise Order, OrderItem
Product Request
Product Request
Job
ProductSpecification,
ProcessDefinition
Lot Job
MESFactory Lot, LotFamily,
Process Operation Inventory Region
Sequence
(Area Area Job
Level is Area Inventory Region,
Optional) Process Operation Process Group
Process Sequence
Process Machine Process
Machine Job Group
Process Operation Spec,
Process Operation
(Resource-
Process level job is in Process
Resource equipment Resource
scope) Group

Figure 13 Hierarchical Job Structure

Note that the job control hierarchy provides interfaces to the enterprise at the top level and the
equipment 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 Process
Resource level is also outside the scope of control of the CIM Framework. It is usually
implemented by process controllers embedded in or piggyback on equipment. The Process
Resource level is modeled for the MES to allow process data to be collected and organized for
specific equipment resources such as a specific chamber in a cluster tool. The Area level is
optional 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 or
material groups using specified or allocated (dispatched) resources and equipment shown in
Figure 10. Figure 13 shows the job control hierarchy relationships. The resource aspects are in
Figure 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, and
joins, etc.) are defined as a result of job control deciding what tasks to perform on what material
using what manufacturing resources. This structure of the various material groups and material
genealogy 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 and
Figure 14. A usual approach is to organize job control for similar tasks and resources into a
single job controller and associated resource scheduler/dispatcher with overall resource schedule
coordination performed at the factory operations job control level.

Technology Transfer # 93061697J-ENG SEMATECH


30 Job Architecture

As a manufacturing resource, the product material also has a thread of task activity. This thread
is defined by the process flow specification. It defines the sequence of process operations
mapped to machine resources for processing and supported by transport operations for material
movement.
The LotJob controller (Factory Operations) uses the process flow as a LotJob specification and
maps it to the process resource thread, material movement thread, preventive maintenance thread,
and other implementation threads. Tasks for transport resources are managed by a material
movement control system driven by material movement requests to move material to dispatched
process resources. Preventive maintenance tasks are scheduled and managed by a preventive
maintenance system, driven by changes in manufacturing resource state. Advanced process
control computation tasks are triggered and managed by a process management system driven by
performance of process operations and metrology. Obviously, these separate threads of activity
interact with (enable and constrain) each other and with the material and resources the tasks
modify. Factory operations, with factory scheduling and dispatching, ties together all of these
separate threads of task activity into a coordinated, efficient structure of factory tasks.

... ...
Op5 Op6 Op7
Process Flow Specification
for Lot 2
ry
cto Task: Produce Lot 2
Fa ...
.
rev t.
P ain
t M PM
or ...
sp
Move Move
Level r an ...
T
ess
oc ne
Pr chi Litho PM
a ...
M
Process
e
h in ce Operations
r
ac ou ...
M es
R
Time

Figure 14 Coordinated Threads of Tasks for Separate Resources

SEMATECH Technology Transfer # 93061697J-ENG


Job Architecture 31

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 in
production history associated with the material hierarchy and is used, for example, for material
traceability and defect analysis. Process-oriented data is captured in process history associated
with 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 equipment
hierarchy and is used, for example, for preventive maintenance and warranty tracking.
These various history aspects can be defined as separate History. Alternatively, history data can
be obtained by navigating through relationships such as the equipment/control/material
hierarchies.
The CIM Framework defines a History as a sequence of HistoryEvents (a data structure that
contains access keys, a timestamp, duration, and filterable and non-filterable data). Any entity
can have an associated History or a NamedHistoryCollection. The CIM Framework defines
generic NamedHistoryCollections for Resource, Material, MaterialGroup, and InventoryRegion,
and it defines the specific history entities illustrated in Figure 15. The ControlDatabase and
ControlArchive are specially defined, history-like entities to support advanced process control.
They may be associated with ProcessResourceJobs, ProcessMachineJobs or AreaJobs, depending
on the scope of the control algorithm.

Lot Job
Lot

ProductionHistory
Area Job
Inventory Region

Process InventoryRegionHistory
Machine
Process Job
Machine
Process Operation
Process
Process Resource Process Resource
Resource Job Group
(material in a given
ProcessRun of a
ProcessOperation)

E10PerformanceHistory ControlDatabase
ResourceMaintenanceLogHistory ControlArchive
ProcessResourceHistory

Figure 15 History Structure with Entities Shown in Bold Italics

Technology Transfer # 93061697J-ENG SEMATECH


32 Job Architecture

3.4 Job Architecture-Level Design


This section introduces the design concepts used in the Job Supervision component of Section
4.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 supervised
within the Factory.
2. Provide encapsulation of the Job Supervision function, hiding such detail as the interface
between the JobSupervisor and its Job, how the Job object is created, and which classes
within the Job Supervision component are responsible for what particular work.
3. Define the areas in the CIM Framework where Job Supervision is needed and to
appropriately specialize it for each level.
4. Clearly define the distinction between Job Supervision at a factory-wide level and Schedule
Management and to show where the concept of Dispatcher fits.
5. Position Job Supervision within the factory with regard to the other CIM Framework
components.
6. Clarify the relationship of Lot to Job (and to Material Group) to facilitate the understanding
of 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 factory
entity that results in some change of the overall factory state. Several important aspects of a job
within the CIM Framework follow:
• A job is expected (but not required) to take a non-zero time to perform and have a non-zero
chance of refusal or failure.
• A job may encapsulate a decomposition into a sequence of jobs/tasks/activities that are
delegated 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 following
specializations. Not all components in this version of the CIM Framework have been completely
aligned 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 the
production of Lots to Factory Operations.
Factory Operations: At this level, the activity request coming in is “make a product wafer from a
bare silicon wafer”. The unit of request is Lot. The Factory Operations level guides the lot

SEMATECH Technology Transfer # 93061697J-ENG


Job Architecture 33

through its process flow and makes sure that supporting activities occur (e.g., equipment
qualifications, preventive maintenance tasks, etc.).
Area Job Supervision: This optional level serves Factory Operations and is responsible for
multiple 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 that
have a factory within a factory model with separate but integrated operations management for
separate units of manufacturing capacity. It could also be used by sites transitioning from legacy
systems, with parts of the factory under a next generation CIM Framework-conformant MES and
other parts under a legacy MES that is fronted or wrapped by a CIM Framework conformant
Area Job Supervisor component. Another example could be a site that provides a pseudo-cluster
cell controller to group stand-alone process equipment into an integrated workcell that behaves
like a cluster tool. There are no separate Area Job Supervision interfaces defined in the CIM
Framework Specification. These functions are met by the ProcessMachineJob interfaces with no
change (The same interface serves both functional roles. Areas typically receive a sequence of
process jobs as a request, whereas simple machines usually receive a single process job).
Machine Job Supervision: This level lies within the CIM Framework Machine Management
component. It accepts activities that apply to a single Machine. It delegates work directly to the
physical equipment, either through some equipment interface driver or directly through the
GEM/SECS interface.
Transport Job Supervision: This level takes requests to move material from one location to
another. While the CIM Framework may provide for layers of TransportJobSupervisors in a
complex system, today’s typical installation has a single proprietary Material Handling System
Controller (TransportJobSupervisor). Machines may also be TransportJobSupervisors, taking
simple tasks of handing off or receiving material. This is under consideration for later
enhancements to the Material Movement components.
Advanced Process Control (APC): APC includes lengthy calculation activities that may not
succeed and which impact the performance of other jobs. For example, an algorithm may not
converge, a sensor may emit bad data, or process machine jobs, recipes or job specifications may
be modified.
Preventive Maintenance (PM): Preventive maintenance is a scheduled activity on specific
resources (machines) using labor resources and materials. PM job progress must be reported and
tracked and PM job history can be stored. The Preventive Maintenance components in Machine
Management provide this functionality.

3.4.4 General Principles of Job Supervision


The Job Supervision function is well encapsulated and cohesive. Actual creation of jobs is
internal to the component and not exposed. The division of work between Job and Job
Supervisor 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 Job
Supervisor. The Job Supervisor breaks the activity down to smaller tasks and issues activity
requests to lower level Job Supervisors who in turn may break down the work further and

Technology Transfer # 93061697J-ENG SEMATECH


34 Job Architecture

delegate it to even lower levels. At some point, an activity reaches a resource that can actually
perform the work (e.g., a machine resource).
At any level, the requestor of activity will request work of a JobSupervisor and receive in return
the handle to a Job which represents this work. This requestor will not have visibility to how the
JobSupervisor performs the work beyond what is specified in the original activity specification
and what is reported later as data. Not visible or accessible are the lower activity requests (and
resulting jobs) that may be issued by the JobSupervisor. A requestor will not micromanage the
delegation 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 the
requestor on the success or failure of the effort. There is no limitation on the facilities within the
factory 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 can
call on to perform work. Only activity requests which can be accomplished within the domain of
a JobSupervisor should be issued to/accepted by that JobSupervisor.
The interface of the JobSupervisor provides high level information about the jobs it is currently
engaged in (and perhaps jobs recently completed). The details of any specific job are provided
by 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. For
instance, the MachineJobSupervisor is not able to provide the estimated time to completion or
the process recipe of a MachineJob.
This also applies to the control of jobs. The JobSupervisor initiates the creation of jobs (from the
activity request), but thereafter allows only for control of jobs as a group (e.g., abort all jobs) not
abort job X. However, much thought should be given to the use of these all jobs commands
since 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 provides
all specific control of the job (pause, abort, etc.). This is in compliance with the CIM Framework
architectural guidelines.
A job requestor is not designed to micromanage the job. Instead, the job requestor creates a
specification 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 that
job within the limitations of the job specification and its business rules. The only exceptions are
coarse commands such as abort or pause. For instance, if a JobSupervisor is capable of queuing
multiple jobs, it must also have the means to determine the order in which it should execute those
jobs (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 the
job requestor. This interface defines necessary messages that must be sent by the JobSupervisor
to the requestor . An attempt is made to document who the requestor must/should/might be for a
given Job Supervision derivative, but there may be other job requestors in a factory.

SEMATECH Technology Transfer # 93061697J-ENG


Job Architecture 35

3.4.5 Companion Interfaces


It is important to identify the requestor of activity. The job is supposed to tell the requestor when
the job is done via some direct message. In earlier versions of the CIM Framework, there was
not a way to define this message, since Job Supervision did not contain the requestor class (it was
defined as an any).
Helping to address this problem is a new (or perhaps the revival of an old) concept that has
appeared in the object-oriented design community. This is called a type. A type is analogous to
an interface in Java or a class in C++ that has no implementation of operations (pure virtual
methods) nor any attributes. With no implementation conflicts to worry about, multiple
inheritance becomes less of an issue. This is why Java allows you to inherit implementation
from just one class, but inherit/implement many interface types. This concept is enabled by the
CIM Framework abstract class that was introduced in CIM Framework Specification Version
1.5.
Using this approach, if we define a JobSupervisor that accepts requests to perform activities, we
can also define a JobRequestor type as a companion. JobRequestor defines the interface that
must be implemented by any class that uses JobSupervisor. Since it is only an interface, it can be
implemented by almost any other class as needed. Since we can define this interface along side
the JobSupervisor definition, we can keep all this related information together. This provides a
well defined solution with relatively low coupling.
We say that a class has a contract to supply services to other classes. The companion interface is
an extension to the contract concept where the classes at both ends of the relationship guarantee
related 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 runs
periodically to provide a highly optimized schedule of future activities within the factory. The
Dispatcher is an adjunct to the scheduler that responds to requests of the form “What should I do
next?” If a Scheduler exists, the Dispatcher may answer the question by looking at the most
recent schedule, factoring in recent events and unforeseen changes, and then postulating the best
activity to do next (or, more often, an ordered list of the best things to do next). The Dispatcher
may also operate without a Scheduler, utilizing its own rules to determine the dispatch list. The
Dispatcher is required: the Scheduler is optional for Job Supervision and may be encapsulated by
the Dispatcher.
The FactoryOperations component (which has a JobSupervisor) uses the Dispatcher to decide
what to do next. One familiar scenario cast in this design would have FactoryOperations request
a 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 do
next, and then issue an activity request to a machine based on that choice. This might be thought
of 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 it
is easy to explain which components or objects provide an interface, but difficult to define which

Technology Transfer # 93061697J-ENG SEMATECH


36 Job Architecture

components or objects use it. When classes are defined in a component, they provide an
interfacethis is very clean and predictable. However, since the internal design of each
component is an implementation decision, we cannot say with certainty that a given class will use
an 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 same
or) other classes. It is known which class receives the messages and can surmise the order in
which they are sent. However, the best one can do is to determine the component from which the
message is sent. One cannot determine the specific class within the component that sent the
message. 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 to
create the product. The JobSupervision structure pulls out the job management and shop-floor
control aspects of the Lot, leaving the material tracking and product genealogy. This separation
of concerns simplifies the functionality of a Lot and provides distinct interfaces for addressing
the complexity of fully automated (lights-out) factories. The Lot remains the material container
and also continues to have the context of the eventual product. The FactoryJob takes on the
aspect of executing the process flow and creating the eventual product. The Lot is all that is
required to specify the FactoryJob.

3.4.9 Area Supervision


The Area Supervision component is an optional level of the Job Management hierarchy that
allows a factory implementation to be divided into multiple parts with separate control entities
for each.
Area Supervision receives Jobs from Factory Operations, typically jobs with multiple
ProcessOperations targeted at different ProcessMachines. It then delegates that work to the
MaterialMovement component and to the appropriate ProcessMachines.
This level of Job Supervision is achieved in an implementation by creating a component that
presents the same Job Supervision interfaces to the Factory Operations component as does a
ProcessMachine. To the ProcessMachines, it presents the JobRequestor interface in the manner
of 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 process
operations to perform on the lot. The Specification Management component provides a set of
interfaces into process flows. The ProcessFlowIterator provides mechanisms for navigating a
process flow to get a sequence of defined operations (this same interface is also available to a
scheduler or dispatcher for look-ahead scheduling). The ProcessFlowContext provides a marker
for where the lot is in the flow, that is, its current ProcessOperationSpecification. Each lot has an
associated ProcessFlowContext. As the FactoryOperations component (specifically, the
LotJobExecutor) receives reports of informProcessMachineJobComplete() from lower level
ProcessMachineJobs, it increments the ProcessFlowContext for the lot.

SEMATECH Technology Transfer # 93061697J-ENG


Job Architecture 37

The ProcessFlowContext points to a specific ProcessOperationSpecification in a ProcessFlow.


This specification forms the basis for a ProcessOperation, which is the job specification for
ProcessMachineJobs.

3.4.11 Structural Detail


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

3.4.11.1 Recursive Structure


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

JobSupervisor
1+

Worker Delegator

Figure 16 Recursive Structure

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

Technology Transfer # 93061697J-ENG SEMATECH


38 Job Architecture

exclusive relationship. Alternatively, it would have been reasonable to draw this relationship as
a 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 struck
to perform the work. The requestor is given a job in response to the work request. The job
represents 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 itselfan implementation decision) must
be able to inform the requestor of the completion of the job (or failure). For that, an interface is
needed. This is shown in Figure 17 as an interface class named JobRequestor. Any class that
wishes to request work of a JobSupervisor must inherit the JobRequestor interface. From the
discussion above, the Delegator type of JobSupervisor also issues work requests. Thus, it must
inherit the JobRequestor interface.

JobRequestor
contracts 1+
work from
1+

JobSupervisor
1+

Worker Delegator

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 be
JobSupervisors themselves.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 39

4 CIM FRAMEWORK INTERFACES


This section specifies the global types, exception definitions, and interface specifications that
support the development of semiconductor manufacturing execution systems applications.
Objects implementing these definitions map to the Application Objects element of the OMA
Reference Model (see Section 2).
The information is presented in a manner consistent with Section 2.6.2. A major paragraph
represents each group (also called a functional group). Subparagraphs present the components
belonging to each group. Those component subparagraphs are further divided into paragraphs
describing the externally visible interfaces of the component. Information provided for each
functional 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 document
organization and reader understanding. The functional groups are not a required partitioning or
structure 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 an
interface specification is presented is described in Section 2.6.2.

Technology Transfer # 93061697J-ENG SEMATECH


40 CIM Framework Interfaces

4.1 Global Definitions


This section describes constructs and exceptions that are global in nature. By global it is meant
that they may be applied to any component within the CIM Framework. This specification does
not address how they are implemented within a CIM Framework conformant application. That
level 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 IDL
specifications
• To define aliases for basic object types, but with additional implied semantics (e.g., the
units 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 conforms
to the SEMI E5 [SEMI97] standard for representation of units. In that standard, the string
contains 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;

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 41

/* This type definition represents variable data for a machine that must be controlled by either
manual 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 and
Machine). */
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 increments
that have passed since a base time (October 15, 1582 at 00:00, the Universal Time
Representation which refers to time in Greenwich Mean Time). The CIM Framework uses the
OMG 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 represented
as a struct called IntervalT. */
struct IntervalT
{TimeT lower_bound ;
TimeT upper_bound ; } ;

Technology Transfer # 93061697J-ENG SEMATECH


42 CIM Framework Interfaces

/* 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 used
by any number of CIM Framework entities. It should be noted that “EndTime” should never
proceed “StartTime.” A sequence of these instances would be used to represent a schedule over
time. */
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 increasing


time 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 for


a single day in the MESFactory and should contain information necessary for the description of
the 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;

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 43

/* This is a sequence of CalendarDays that can be used to make up a FactoryCalendar. This


sequence must be in increasing order, and order must be maintained in all manipulations and
there 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 to
which 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 the
following 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 is
a distinction between FilterData and News. Filter data would be data that one would expect to
use as a "key" in a future query against the history, while news would be data which would
probably 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 a
history event. The filterable data should be well known and standardized. News are attributes
and 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;

Technology Transfer # 93061697J-ENG SEMATECH


44 CIM Framework Interfaces

/* 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 pairs
containing values that are relevant to control applications. The alternative is to use the OMG’s
property definition and related services, but that data structure allows an any as the value field in
the name-value pair. The experiences of several implementers of CORBA applications are that
the 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;
};

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 45

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 an
instance of a run of a ControlExecutor. The ControlExecutor running instance will be uniquely
defined by its RunningControlStategy, which is made unique by a combination of a
ControlStategy and the ExecutionContext. Examples of some objects that may be specified in an
ExectionContext include Lot, Machine, ProcessMachineJob, ProcessOperation and
ProcessStep.*/
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 ;

Technology Transfer # 93061697J-ENG SEMATECH


46 CIM Framework Interfaces

/* 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 the


RunningControlStrategyDescription is that the Description is for use with a VersionManagement
component. Since that portion of the CIM Framework is in transition, the Description struct is a
placeholder 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 that
is in some way meaningful for the fault that has been detected.*/
typedef struct GraphData_Structure {
string legend;
LineDataSequence data;
} GraphData;
typedef sequence< GraphData > GraphDataSequence;

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 47

/*The LineGraph structure holds all of the information needed to construct a graph of the fault
data. The structure contains GraphDataSequences for the x and y data, such that multiple x and y
series can be displayed on one chart. The default chart type (which can be overridden), for
example 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 ;

Technology Transfer # 93061697J-ENG SEMATECH


48 CIM Framework Interfaces

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;

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 49

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*/

Technology Transfer # 93061697J-ENG SEMATECH


50 CIM Framework Interfaces

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-existing
identification 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 CIM
Framework.
• 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 51

• 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 an
ambiguous state.

4.2 Application Objects


The remainder of Section 4 is the heart of this document and includes the specification of the
Components and Abstract Interface Groups that make up the CIM Framework. These interface
definitions will be implemented as, or inherited by, framework objects to provide the core set of
interoperability required to build compatible, substitutable applications (Application Objects in
OMG parlance) in the domain of semiconductor CIM. The reader unfamiliar with the Object
Management 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 grouping
components supporting factory capability in some traditionally recognized fashion (e.g.,
document management, equipment integration). A functional group has no relevant architectural
bearing, 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 fundamental
capability within the general heading of a functional group. Component interfaces are intended to
either be inherited by or specialized into an object instance.
Abstract Interface Group—a group that eases understanding, implementation, and use of the
CIM Framework Specification. There are some interfaces defined in the CIM Framework that are
abstract interfaces only. It is understood that suppliers will create implementations of these
interfaces but will not instantiate them. These particular interfaces are more closely aligned with
traditional 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 occurrence
within a Factory. They are simply abstract interfaces in the hierarchy path from which most
instantiated interfaces will inherit. Each supplier must create their own set of these interfaces to
create their particular instantiated interfaces and there is no reason to enforce the same rules to
these interfaces as to components (i.e., ability to be turned-off or the ability to use a different
supplier’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. These
are lower in the inheritance chain and typically concerned with specific components or functional
areas of an MES. The following table lists the abstract interfaces.

Technology Transfer # 93061697J-ENG SEMATECH


52 CIM Framework Interfaces

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

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 53

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 in
specific derivations (i.e. TransportJob, etc.) that utilize the Job Architecture of the CIM
Framework. These interfaces are abstract and are expected to be specialized in a specific
implementation.

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.

NamedEntity HistoryCollection
is associated
with
Resource Abstract
Interface Group

OwnedEntity any
is owned by
another

Resource

Component
Manager

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 with
functions supporting the concept of ownership. A Resource is an OwnedEntity that also takes an
active role in product manufacturing. A ComponentManager is a Resource that manages objects
within a component. The use of interface inheritance is a minimum requirement.
Implementations may also use implementation inheritance as deemed appropriate.

Technology Transfer # 93061697J-ENG SEMATECH


54 CIM Framework Interfaces

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 Framework
NamedEntities (or sub-types). The specific HistoryCollection can be
obtained using the OMG Trader Service [CosTrade] or the
getHistoryCollection 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 will
be 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 is


used.*/
HistoryCollection getHistoryCollection ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 55

4.3.1.2 Interface: OwnedEntity


Inherited Interface: NamedEntity
Description: The abstract interface OwnedEntity provides for the concept of an owned
entity. There may be only one owner for each instance of an OwnedEntity.
The OwnedEntity is able to communicate with the owner to request
services, or forward information of interest. To build a parts of hierarchy, a
series 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.

Technology Transfer # 93061697J-ENG SEMATECH


56 CIM Framework Interfaces

4.3.1.3 Interface: Resource


Inherited Interface: OwnedEntity
Description: Resource is an abstract inherited interface for any entity in
the factory that takes an active role in advancing a product along its
manufacturing life cycle (adds value). This includes the factory itself,
personnel, production, planning and scheduling resources, and all of the
machines 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 that
instance of a Resource. Resource uses the NamedEntity and OwnedEntity
characteristics 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 Resource
specializations.*/
void startUp ( ) raises (FrameworkErrorSignal);

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

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

/* Answer the receiver’s level in the Resource hierarchy. Resource specifies that each different
type of Resource provide a resourceLevel identifier. To illustrate this service, use the Machine
described in the Resource interface description. The level for each of the Resources could answer
the 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. It
is possible (but not recommended) to have multiple instances of a NamedEntity that have the
same string as the name. For the Resource structure to remain flexible yet retain unique
identification, name scoping has been developed. The scoping makes use of the notion of
Resource level and the ownership hierarchy. Unique identification of the MachineResources
within the Machine is obvious but to identify them outside the Machine requires additional
information about their ownership. Thus:

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 57

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 the
implementations of nameQualifiedTo (string); a name need not always be concatenated if a
particular 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 to
accept 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 work
versus maintenance, etc. */
boolean isAvailable ( );

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

Contracted Services: None.

Technology Transfer # 93061697J-ENG SEMATECH


58 CIM Framework Interfaces

Dynamic Model:

1
Available

3 4

5
Not Available

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 physical
entity that the Resource represents. For instance, a Machine is a resource, but the fact that it is
Not Available may not mean the physical equipment is shutdown on the shop floor. In fact, the
equipment may be operating in manual mode. The Resource state represents the availability of
the 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 process Available startUp() service
completion. begins process.
3 Available Completion of normal Not Available shutdownNormal()
shutdown process. begins process.
4 Available shutdownImmediate() Not Available
5 Not Available Resource removed. Nonexistent

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 59

4.3.1.4 Interface: ComponentManager


Inherited Interface: Resource
Description: The ComponentManager is an abstract interface that supports the
registration and control (enabling/disabling) of a component’s interface
and 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 the
factory indicated by the argument. Note this operation will register the Component Manager
with an OMG compliant Trader service [CosTrade]. One of the Trader properties used for
registration 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 Trader
service. */
void makeNotRegistered (in MESFactory aFactory)
raises (FrameworkErrorSignal,InvalidStateTransitionSignal);

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

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

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

Technology Transfer # 93061697J-ENG SEMATECH


60 CIM Framework Interfaces

/* 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:

NOT AVAILABLE

STOPPED
NOT
REGISTERED

3 6

1 2
STARTING SHUTTING
UP DOWN

REGISTERED
4 5

AVAILABLE

Figure 20 Component Manager Dynamic Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 61

Object State Tables:

Table 6 ComponentManager State Definitions and Query Table


State Definition Query for State via
NOT REGISTERED Component is not registered with a boolean isNotRegistered ( );
factory and is not connected to sent to the instance of
system. ComponentManager returns TRUE.
REGISTERED Component is registered with a boolean isRegistered ( );
factory and is connected to system. sent to the instance of
ComponentManager returns TRUE.
STOPPED Component is not able to provide boolean isStopped ( );
services. sent to the instance of
ComponentManager returns TRUE.
STARTING UP Component is performing startup boolean isStartingUp ( );
sequence. sent to the instance of
ComponentManager returns TRUE.
AVAILABLE Component is capable of boolean isAvailable ( );
interacting with other components sent to the instance of
with its full service interface. ComponentManager returns TRUE.
SHUTTING DOWN Component is performing boolean isShuttingDown ( );
shutdown sequence. sent to the instance of
ComponentManager returns TRUE.

Technology Transfer # 93061697J-ENG SEMATECH


62 CIM Framework Interfaces

Table 7 ComponentManager State Transition Table


# Current State Trigger New State Action Comment
Nonexistent No CIM Framework The initial state ComponentMan-ager is an
trigger necessary. is implementa- abstract inherited interface
tion dependent. designed to provide
common behavior for
subclassing. Instance
creation is done by the
subclasses.
Initial state examples: a
component may be
operational when it
registers; a component may
be stopped when it
registers.
1 NOT makeRegistered () REGISTERED Component manager
REGISTERED sent to the instance of registers with a Factory
ComponentMan-ager instance via Trader.
2 REGISTERED makeNotRegistered ( ) NOT Component manager
sent to the instance of REGISTERED removes registration from
ComponentMan-ager the Factory via Trader.
3 STOPPED makeStartingUp ( ) STARTING UP Component manager is
sent to the instance of requested to start up.
ComponentManager
4 STARTING Internal to component OPERATING Component manager has
UP finished its startup
sequence. As an action, it
reports to Factory that it is
able to provide services,
via events.
5 AVAILABLE makeShuttingDown ( ) SHUTTING The component manager
sent to the instance of DOWN recieves shutdown normal
ComponentMan-ager message. As an action it
reports to the Factory that
resources and material are
brought to a safe state.
6 SHUTTING Internal to component STOPPED The component manager
DOWN has finished its shutdown
sequence. Resources and
materials are in a safe state.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 63

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 that
may be requested from the JobSupervisor. The job often spans a significant amount of time and
multiple resources within the system. It is intended for specialization to provide specific job
supervisors and jobs to provide system solutions.

Resource OwnedEntity

Job Requestor

contracts tracks
work from progress via
Person
1+
assigned
supervises to
Job Supervsior Job

Figure 21 Job Supervision Abstract Interface Group

The basic Job Supervision component (or abstract group) does not interact with other
components, except to the extent that other components instantiate its interfaces. Figure 21
shows 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 the
parameters required to sufficiently define the work to be done. This sequence is passed by the
JobRequestor to the JobSupervisor in the JobRequest message. See the JobSupervisor interface
for more details.
JobSupervision levels are hierarchical. One level may accept a Job and delegate portions of that
Job to lower levels. Jobs, however, are not purely hierarchical. A Job accepted by one
JobSupervisor may be broken down, along with other jobs of that component and reconstituted
as needed to optimize the activities of the factory.

Technology Transfer # 93061697J-ENG SEMATECH


64 CIM Framework Interfaces

For example, a ProductRequest may ask for 15 wafers of a particular product. The
ProductRequestManager may delegate a LotJob to Factory Operations with a Lot containing
those 15 wafers and 10 more from a different ProductRequest. In the factory, this Lot may be
split 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 Supervision
allowed great latitude to optimize performance. Its only requirement is to fulfill the specification
of the Job.
The role of Person in JobSupervision within the Factory is an important one. Most jobs in
today’s semiconductor factories may involve a person in one role or another. Other resources will
also be involved in various derivatives of Job.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 65

4.3.2.1 Interface: JobSupervisor


Inherited Interface: Resource
Description: The JobSupervisor manages all the jobs being performed by the
component that implements it. It receives the requests for work, facilitates
the creation1 of a job for the task and returns (a reference to) that job to the
requestor.
A JobSupervisor will have a well defined domain that it can call on to
perform work. These may be CIM Framework Resources if it delegates
the work, or internal resources if it performs the work itself. Only activity
requests which can be accomplished within the domain of a JobSupervisor
should be issued to/accepted by that JobSupervisor.
Jobs accepted by a JobSupervisor shall be named uniquely. Jobs from
different JobSupervisors are not necessarily uniquely named.
The definition of the work to be performed is given in the jobRequest
service by the JobSpecification — a sequence of name/value pairs (see
Properties definition). All jobRequests are required to contain certain
name/value pairs (or parameters), as defined in the following table. See
Job definition for more information. Components which offer derivatives
of Job may require additional parameters.
JobSpecification Parameters
Name Value Type Description
Priority long Integer value, ranges from 1 to 99, where 1 is the highest
priority and 99 is the lowest.
Deadline TimeStamp The Job is expected to be completed no later than the specified
value of the Deadline.

Note: “Value Type”, when listing a class, implies an object reference. Simple types imply pass
by value.
/* Defines the type of job being requested. This enum will need to be expanded to include all
types 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.

Technology Transfer # 93061697J-ENG SEMATECH


66 CIM Framework Interfaces

Provided Services:
/* Request that work be done according to the proffered specification. A Job that represents the
work 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., not
Finished 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 great
caution. It implies potential loss of material due to incomplete processing that may not be able to
be 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 safe
opportunity. Safe indicates no potential damage to the product due to stopping in the middle of
processing. 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 a
JobSupervisor. Persistent information about the job may be captured in a History. It is also
understood that there may be rules for automatic removal of finished jobs based on time, number
of 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);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 67

/* 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.

Technology Transfer # 93061697J-ENG SEMATECH


68 CIM Framework Interfaces

4.3.2.2 Interface: Job


Inherited Interface: OwnedEntity
Description: The Job interface represents a unit of work requested of and performed (or
facilitated) by a factory entity that results in some change of the overall
factory state. Which interface actually performs the work (or delegation of
work) 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 refusal
or failure. A Job may encapsulate a decomposition into a sequence of
jobs/tasks/activities that are delegated to lower level job supervisors. The
Job exists during the execution timeframe. The more persistent record of
the Job should be maintained in a History.
Jobs do not restrict which objects may issue control messages. Any such
limitations 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 should


be sent as early as possible, not necessarily after the deadline has passed.
The ability to determine this may vary by type of Job and other
implementation 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 is
expected to be completed no later than the specified deadline. This provides the JobSupervisor
some ability to plan its execution schedule. The Job shall issue an event when it determines that
this 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 99
is the lowest. This format matches that of Lot priority. */
long getPriority ( ) raises (FrameworkErrorSignal);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 69

/* 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 to
Pausing state and eventually Paused state. */
void makePaused ( )
raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Request the Job resume activity from the previous Pause. Results in the transition to Not
Paused 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 the
Canceled state. */
void makeCanceled ( )
raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

/* Begin the process to stop the Job. This is an orderly termination and should never cause
irreparable problems (e.g., should not stop etching a wafer in mid-cycle). This message results in
the 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 Job
requires immediate termination of the Job and could result is loss of product. This message
results 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 is
dependent both on the specific Job derivative and on the implementation. If the Job is Finished
or Canceled, a zero Duration will be returned. */
Duration timeRemaining ( ) raises (FrameworkErrorSignal);

Technology Transfer # 93061697J-ENG SEMATECH


70 CIM Framework Interfaces

Contracted Services:
Interface Component Service
JobRequestor JobSupervision informJobStarted
JobRequestor JobSupervision informJobCompleted
JobRequestor JobSupervision informJobTerminated

Dynamic Model:

Queued Canceled

Active

Executing

Pausing

Not Paused Paused

Aborting Stopping

Finished

Completed Aborted Stopped

Figure 22 Job Dynamic Model

For implementations (e.g., Job derivatives), the Executing state is expected to be extended by
partitioning it into at least two orthogonal states. One would hold the Pause states. The other
would contain the implementation behavior of Executing.
Note that state transitions are controlled within the component implementing JobSupervision, so
there are no methods to directly change the state of a Job.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 71

4.3.2.3 Interface: JobRequestor


Inherited Interface: Implementation Dependent
Description: In order to request work of a JobSupervisor, a component must implement
the JobRequestor interface. This is a companion interface to
JobSupervisor. The JobRequestor may also subscribe to the state change
events 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.

Technology Transfer # 93061697J-ENG SEMATECH


72 CIM Framework Interfaces

Scenario
aJobRequestor: aJobSupervisor: aJob :Job

JobRequestor JobSupervisor

1: requestJob (JobType, Properties, JobRequestor

Create Job Here


2: Return Job

3: informJobStarted (Job)

4: informJobCompleted (Job)

Figure 23 Job Supervision Scenario

Figure 23 shows the most basic of scenarios for the Job Supervision component. It proceeds in
this fashion:
1. The JobRequestor populates a JobSpecification then requests a job according to that
specification.
2. In response to the Job request, the JobSupervisor facilitates the creation of a Job to represent
the task. A handle to the Job is returned to the JobRequestor (assuming the Job request is
accepted.
3. The Job Supervision component (e.g., in the form of the Job) informs the JobRequestor when
the Job begins.
4. The Job Supervision component (e.g., in the form of the Job) informs the JobRequestor when
the Job has completed (assuming successful completion).

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 73

4.4 Factory Services


Factory Services is composed of several component interface definitions that are expected to be
employed at a factory-wide level. That is, components whose functionality provides support for
factory-wide function, such as versioning and events. Areas of capability provided by Factory
Services 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 all
other components within this specification.

Technology Transfer # 93061697J-ENG SEMATECH


74 CIM Framework Interfaces

4.4.1 Document Management Component


This component is used to create and manage document specifications and their revisions. A
document contains information common to all revisions (such as name). A revision represents
one version of the information carried in a document. Additionally the component provides for
the activation/deactivation of a revision (identifies the revision to use). Only one revision in a
document can be active at any one time. This component is used with the Version Management
component to provide change notice control.
Figure 24 is the Information Model for the Document Management Component. The interfaces
represent the main areas necessary for document management. It provides services for top-level
management of the document specifications and their respective revisions. The
DocumentManager provides control over creation and management of the
DocumentSpecifications (documents). Each DocumentSpecification will contain its
DocumentRevisions (revisions), one of which will be the active revision representing the version
to use in the factory. The revision holds (wraps) the object of interest (e.g., a product
specification).

ComponentManager MESFactory

has a

Document
Management
Component DocumentManager

creates and
manages

DocumentSpecification

creates and
manages

1 holds 1
DocumentRevision ProductSpecification

signoff list for approvals


before making active

ChangeNotice

Figure 24 Document Management Component Information Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 75

4.4.1.1 DocumentManager
Inherited Interface: ComponentManager
Description: The DocumentManager interface is responsible for creating and managing
DocumentSpecifications (maintains a collection of the documents) in the
factory. 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 used
by an existing document. */
exception DocumentSpecificationDuplicateSignal {string documentName;};

/* This signal is raised when a remove document is attempted and that document contains
revisions. */
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 managed


DocumentSpecifications. */
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 (a
document). The order implies revision lineage. */
DocumentRevisionSequence allRevisions ( ) raises (FrameworkErrorSignal);

/* Search for a DocumentSpecification. */


DocumentSpecification findDocumentNamed (in string documentName)
raises (FrameworkErrorSignal, DocumentSpecificationNotFoundSignal);

Technology Transfer # 93061697J-ENG SEMATECH


76 CIM Framework Interfaces

/* Tells whether or not version management is being used. */


boolean isVersionManagementEnabled ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 77

4.4.1.2 Interface: DocumentSpecification


Inherited Interface: NamedEntity
Description: DocumentSpecification interface, colloquially called a document, contains
instances of DocumentRevisions along with the information common to
all DocumentRevisions (such as name). Documents provide the protocol
necessary to create and manage their revisions (maintains a collection).
Revision management is supported by either sub-interfacing
DocumentRevision 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 already
contains 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 to
find 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 the
DocumentSpecification. */
DocumentRevision addRevision (in DocumentRevision aDocumentRevision)
raises (FrameworkErrorSignal, DocumentRevisionDuplicateSignal);

/* Creates a DocumentRevision to hold a versioned object and stores the revision in the
document. */
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 this


DocumentSpecification. */
DocumentRevisionSequence allRevisions ( ) raises (FrameworkErrorSignal);

/* Finds a DocumentRevision. */

Technology Transfer # 93061697J-ENG SEMATECH


78 CIM Framework Interfaces

DocumentRevision findRevisionNamed (in string revisionName)


raises (FrameworkErrorSignal, DocumentRevisionNotFoundSignal);

/* Returns the activeRevision. */


DocumentRevision activeRevision ( )
raises (FrameworkErrorSignal, NoActiveDocumentRevisionFoundSignal);

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 79

4.4.1.3 Interface: DocumentRevision


Inherited Interface: NamedEntity
Description: DocumentRevision interface is colloquially called a “revision.” Its
instances represent the many versions of information carried in a
document. Sub-interfaces contain all application specific information
required in a document. DocumentRevisions are used as wrappers to hold
their assets or holdings, i.e., the object that is managed as a revision (a
product specification). Among the collection of revisions for a document,
there is one “active” revision. This is the revision that is designated as the
member of the collection of revisions to use (see DocumentRevision
Dynamic 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 an
implementation 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 a
document. */
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);

Technology Transfer # 93061697J-ENG SEMATECH


80 CIM Framework Interfaces

/* Checks if the status is IN WORK. */


boolean isInWork ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model:

DocumentRevision

1 4
IN WORK 3 ACTIVE INACTIVE
2 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 DocumentRevision boolean isInWork ( );
can be set up. The instance of sent to the instance of DocumentRevision
DocumentRevision can only by returns TRUE.
modified while in the IN WORK state.
ACTIVE In this state, the DocumentRevision DocumentRevision activeRevision ( ) ;
has been designated as the revision to sent to an instance of DocumentSpecification.
use within the revisions managed by
boolean isActive ( );
the document.
sent to the instance of DocumentRevision
Only one DocumentRevision (per returns TRUE.
DocumentSpecification) is allowed to
be in the ACTIVE state at a time.
Control of this restraint (i.e., swapping
in and out of the ACTIVE state,
concurrent references to the ACTIVE
DocumentRevision) is left to the
implementation.
Not having an ACTIVE
DocumentRevision is permitted,
although it should only be for a brief
time duration as production will be
gated as the system tries to reference
the ACTIVE DocumentRevision.
INACTIVE In this state, the DocumentRevision is boolean isInactive ( );
no longer designated as the ACTIVE sent to the instance of DocumentRevision
revision. returns TRUE.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 81

Table 9 DocumentRevision State Transition Table


Current
# State Trigger New State Action Comment
1 non-existent DocumentRevision IN WORK The DocumentManager
createRevisionNamed_with ( ) ; creates the
sent to an instance of DocumentSpecification,
DocumentSpecification. which in turn creates the
DocumentRevision.
2 IN WORK DocumentRevision non-existent The DocumentManager
removeRevisionNamed ( ) ; sent creates the
to an instance of DocumentSpecification,
DocumentSpecification. which in turn controls the
DocumentRevision.
3 IN WORK void makeActive ( ); sent to the ACTIVE The DocumentRevision is
instance of DocumentRevision. activated. It could only be
modified in the IN WORK
state. Only one ACTIVE
DocumentRevision (per
DocumentSpecification) is
allowed.
4 ACTIVE void makeInactive ( ); sent to INACTIVE Occurs when another
the instance of revision of the same
DocumentRevision. document becomes
ACTIVE.
Note that the
implementation must
provide a transition
strategy if the current
DocumentRevision is
being concurrently
referenced by the system
while a new revision is
trying to become
ACTIVE.
5 INACTIVE void makeActive ( ); ACTIVE Reactivate a previously
sent to the instance of INACTIVE (e.g.,
DocumentRevision. archived)
DocumentRevision.

Technology Transfer # 93061697J-ENG SEMATECH


82 CIM Framework Interfaces

4.4.2 Version Management Component


This component provides the capability to manage all types of document revisions that require
change notice control. This component provides for the creation and maintenance of change
notices. This component is used to augment/extend the Document Management component by
providing change notice control.
Figure 26 is the Information Model for the Version Management Component. The interfaces
represent the areas necessary for Version Management. It provides services for top-level
management of the change notices and the version managed revisions that they cover. The
VersionManager interface provides the protocol for creating and managing change notices.
Minimum states for a change notice are in work, preparing to activate, and activated. Additional
states can be added between those represented in the ChangeNotice Dynamic Model.

ComponentManager MESFactory NamedEntity

has a

Version
Management created and
manages
Component VersionManager ChangeNotice

Figure 26 Version Management Component Information Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 83

4.4.2.1 Interface: VersionManager


Inherited Interface: ComponentManager
Description: The VersionManager is responsible for creating and managing change
notices associated with DocumentSpecifications. It also maintains a
collection 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 is
used 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 by
name 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.

Technology Transfer # 93061697J-ENG SEMATECH


84 CIM Framework Interfaces

4.4.2.2 Interface: ChangeNotice


Inherited Interface: NamedEntity
Description: The ChangeNotice interface supplies change notice control formal revision
approval before being used in the factory. This interface can be specialized
for different types of change notices.
Exceptions:
/* This signal is raised when an attempt is made to cover a change notice with another change
notice. */
exception ChangeNoticeCannotCoverSignal { };

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

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

Published Events
ChangeNoticeStateChangedEvent
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 this
change 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);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 85

/* Provide a set of all the names in the default signoff list. The order may be important in some
cases (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:

ChangeNotice

1 PREPARING TO
IN WORK 3 ACTIVATED
2 ACTIVATE

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 ready boolean isInWork ( );
to set up and can be modified. sent to the instance of ChangeNotice returns
TRUE.
PREPARING TO In this state the ChangeNotice is boolean isPreparingToActivate ( );
ACTIVATE waiting to be approved. sent to the instance of ChangeNotice returns
TRUE.
ACTIVATED In this state the ChangeNotice has been Boolean isActivated ( );
approved. sent to the instance of ChangeNotice returns
TRUE.

Technology Transfer # 93061697J-ENG SEMATECH


86 CIM Framework Interfaces

Table 11 ChangeNotice State Transition Table


Current
# State Trigger New State Action Comment
Non-existent ChangeNotice IN WORK Upon creation, the
createChangeNoticeNamed ChangeNotice should be in the
_inDocument (in string IN WORK state.
changeNoticeName, in
DocumentSpecification
aDocumentSpecification);
sent to an instance of
VersionManager.
IN WORK void removeChangeNotice non-existent
Named (in string
changeNoticeName) ;
sent to an instance of
VersionManager.
1 IN WORK void PREPARING The ChangeNotice is ready to
makePreparingToActivate TO ACTIVATE be approved. As an action,
( ); sent to the instance of inform covered
ChangeNotice. DocumentRevisions. Covered
DocumentRevisions should be
immutable while awaiting
ChangeNotice approval.
2 PREPARING void makeInWork ( ); IN WORK The ChangeNotice has been
TO sent to the instance of rejected. As an action, inform
ACTIVATE ChangeNotice. covered DocumentRevisions.
Covered DocumentRevisions
void rejectSignOff ( ); should be made mutable while
sent to the instance of IN WORK.
ChangeNotice.
3 PREPARING void makeActivated ( ); ACTIVATED The ChangeNotice has been
TO sent to the instance of approved. As an action, inform
ACTIVATE ChangeNotice. covered DocumentRevisions.
Covered DocumentRevisions
should be made active.
ACTIVATED void removeChangeNotice non-existent
Named (in string
changeNoticeName) ;
sent to an instance of
VersionManager.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 87

4.4.3 Time Services


Factory operations require that the CIM Framework Infrastructure provide a means for the
representation 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 end
time.
• A duration of time (a computed delta from a specified timestamp).
The OMG’s Object Time Services specification [CosTime] has been selected to provide this
capability. Each time-related object is discussed in the following paragraphs. It should be noted
that, in an implementation of the CIM Framework Infrastructure, this base capability will be used
to support a factory Calendar. The data structures defined by the Time Sevice and used in this
specification are specified in Section 4.1.1.

Technology Transfer # 93061697J-ENG SEMATECH


88 CIM Framework Interfaces

4.4.4 Event Broker


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

ComponentManager

Event
Management
Services
EventBroker

Figure 28 Event Management Services Information Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 89

4.4.4.1 Interface: EventBroker


Inherited Interface: ComponentManager
Description: This component provides the interface necessary for a producer of an
event to inform a central repository about EventChannels that will handle
certain CIM Framework events and for consumers of those events to be
informed of the EventChannels. Since the interface is also a
ComponentManager, it can be started up, shut down and will be registered
with the MESFactory at startup time. This interface may someday be
replaced with the OMG Trader Service.
Exceptions:
/* This exception is raised when an EventChannel for an event subject that is not defined in the
CIM Framework is registered. Implementers of an EventBroker have a choice as to whether to
force this exception on non-CIM Framework events or not. The EventBroker can easily be
written to support events that are not defined in the CIM Framework if an implementer so
chooses. 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 the
EventBroker does not yet have an EventChannel registered. */
exception NoSupplierForTheRequestedEventSignal { };

/* This exception is raised when an invoker requests the de-registration of an EventChannel that
the 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 object
acting on its behalf) to inform the EventBroker that an Event Channel supporting a specific CIM
Framework event has been created. The invoker must provide an object reference to that channel
such 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 object
acting 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. The
responsibility for the disconnects of the consumers and the destruction of the EventChannel is
not in the scope of the EventBroker. */
void removeChannelForEvent (in string subject,
in CosEventChannelAdmin::EventChannel anEventChannel)
raises (FrameworkErrorSignal, EventChannelNotRegisteredSignal);

Technology Transfer # 93061697J-ENG SEMATECH


90 CIM Framework Interfaces

/* This method is used by a consumer of an event to find out about the EventChannels publishing
that CIM Framework event. It is the responsibility of the consumer to perform its own
connectivity to the returned Event Channels. Note that this service could also be used by a
producer (supplier) of an event to find an EventChannel to use for its publication of events if it
doesn’t wish to create a new one.
The precedence of the exceptions is up to the implementer. For example, if a client of this
service asks for an EventChannel that is not for a CIM Framework event and/or not for an event
yet registered, the implementation may raise either of the last two exceptions. However, if the
implementer is not supporting non-CIM Framework events, the UnsupportedEventSubjectSignal
should be raised rather than the NoSupplierForTheRequestedEventSignal. On the other hand, if
the implementation does support non-CIM Framework events, the exception raised should be the
NoSupplierForTheRequestedEventSignal. */
EventChannelSequence allEventChannelsFor (in string subject)
raises (FrameworkErrorSignal, NoSupplierForTheRequestedEventSignal,
UnsupportedEventSubjectSignal);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 91

4.4.5 History Management Facility


The History Management Facility supports the ability of factory objects to maintain histories and
collections of histories. It also supports access to those histories and their collections. The
History 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 be
associated with some factory entity (e.g., an area). The History Management Facility allows
history to contain timestamped events, which in turn are composed of data. The facility also
provides for management of and navigation through that collection of time-ordered events and
the structure for an event. The History Management Facility does not specify the contents of an
event or its data. It provides for the management of collections of histories based upon a key but
does not define those keys beyond their structure.
Histories may be hierarchical within a factory. However, the History Management Facility
imposes no limitation on defining a hierarchy of histories. In fact, hierarchies of history is
implementation detail.
Collections of history should be available to all factory entities, thereby offering the capability of
maintaining history to a broader range of CIM Framework types. For example, a subtype of
NamedEntity (e.g., Machine) would have an associated history collection. That collection would
represent the various types of history associated with the NamedEntity subtype. For example, a
Machine may have a history collection that includes an alarm history containing all events related
to alarms, and a preventive maintenance history containing all events related to preventive
maintenance. Registration of history collections should be provided by the OMG Trader Service
[CosTrade]. The History Management Facility Information Model conveys the relationships
described in this example.

Technology Transfer # 93061697J-ENG SEMATECH


92 CIM Framework Interfaces

is associated
with
NamedEntity HistoryCollection History
has

History
Management
Facility
OwnedEntity

has

Resource Area

groups

Machine

Figure 29 History Management Facility Information Model

Ultimately, managing collections, defining relationships, and performing queries on those


relationships should be provided by CORBAservices. The bandwidth is not available to perform
an adequate study in time for V2.0 of the CIM Framework Specification. Thus, this type of
behavior will remain in the specification for the time being. Under no circumstances should the
precise definition of history beyond structure be specified at the framework level.
Previously, the CIM Framework specified the representation of history information as a series of
name/value pairs. That design has been retained, although those pairs are now embedded in a
struct.
Recommendation
The specification of these name/values pairs is highly recommended for future CIM Framework Specification
activity.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 93

4.4.5.1 Interface: HistoryCollection


Inherited Interface: NamedEntity
Description: A HistoryCollection provides pointers to sets of History objects using a
key/subject string representing the category of history (e.g.,
“/Machine/ProcessMachine/Alarm/” for alarm history on a process
machine). Data is entered into the History object as name-value pairs. The
History interface can be the standard for data collection in the CIM
Framework. The HistoryCollection for an object may be formed by
searching the Trader Service. A HistoryCollection can be defined for an
object 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 HistoryCollection
is 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. The
History 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);

Technology Transfer # 93061697J-ENG SEMATECH


94 CIM Framework Interfaces

4.4.5.2 Interface: History


Inherited Interface: NamedEntity
Description: The History interface provides storage for a collection of history data. The
History interface supports insertion, deletion and queries against its history
data.
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 of
the historyEventSubject field should allow for wild cards (‘*’) and support user-defined
extensions to the slash delimited hierarchy. If the historyObject field is “null”, no filtering should
be performed against this field. If the field aFilterItemSequence is “null”, then no filterable data
needs 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 criteria
specified. */
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) ;

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 95

/* Returns true if the history is empty. */


boolean isEmpty ( ) raises (FrameworkErrorSignal) ;

Contracted Services: None.


Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


96 CIM Framework Interfaces

4.5 Factory Management Group


The Factory Management Group collects components that represent the factory as a whole and
provide access to factory-wide resources. Its services coordinate CIM system components
through 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 based
upon that interpretation.
• Enterprise Abstract Interface — provides an interface from the Enterprise level system to
the Factory system; issues product requests to the Factory.
• Product Request Management — performs as an intermediary between the Enterprise
level and the Factory level; accepts product requests (as jobs) from the Enterprise. These
product requests are then broken down into lots, which are released into the factory as
appropriate to optimize plant operations.
• Product Release — creates production lots from planned, accepted product requests;
releases those lots into the factory.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 97

Factory Management
Functional Group
Enterprise
Abstract
Interface
Request
factory Request
to fill job(s) Product
to fill
Product
Product
Request
Request
Request Mgmt
Requests
factory-
level Request
services lot(s)
External Factory to fill
Requester Product
Request
Provides
information
on
material to Product
release Release

Factory
Operations

Interpret Initiates
and lot
execute scheduling
schedules

Dispatching

Figure 30 Factory Management Group Component Relationships

Technology Transfer # 93061697J-ENG SEMATECH


98 CIM Framework Interfaces

4.5.1 Factory Component


The Factory component in the Factory Management Group provides configuration, monitoring
and controlling, resource grouping, calendar and querying services. Any CIM component may
use the Factory component to locate another component for its services.
Configuration services provide the ability to specify the existence and connectivity of factory
resources that constitute a factory. This includes area configuration and the registration of CIM
system 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 state
transitions 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 components
are represented by component managers that in turn, provide configuration, control, and query
services 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 it
contains the information which provides the flexibility in factory configuration to achieve
alternative approaches to operations customization (e.g., selecting appropriate business rules).
Resource grouping is achieved through the Area interface, which corresponds to a physical or
logical grouping of factory resources (the complement of machines and/or personnel assigned to
it). An area provides access to a group of machines, a group of persons, other subareas, and other
pertinent information. Areas may be defined for different purposes. A single resource is allowed
to be assigned to multiple areas. Policy management can not be deployed if area is omitted (it is
assumed 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. It
holds representations of startup and shutdown schedules and a collection of calendar dates that
represent each day in the life of the factory.
Figure 31 is the Information Model for the Factory Component. It provides an overview of the
interfaces defined for this component, related interfaces external to the component, and their
relationships.
Descriptions of the visible interfaces within the Factory Component follow.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 99

Resource

Factory Machine
maintains
Component registration
Register
of machines
has
ComponentManager MESFactory
used to
configure
is comprised of
Policy
Variable
uses
FactoryCalendar Area

groups groups

Machine

manages
PersonManager Person

Figure 31 Factory Component Information Model

Technology Transfer # 93061697J-ENG SEMATECH


100 CIM Framework Interfaces

4.5.1.1 Interface: MESFactory


Inherited Interface: Resource
Description: The MESFactory interface is the principal interface to the Factory
Component. An instance of this interface represents one particular factory.
This instance is a composite object referring to the objects that represent
factory resources, particularly CIM system components. The factory
instance 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 the
Resource interface and is started up using the methods defined in that interface. During the
startup and shutdown the factory delegates appropriate requests to all registered components. */
void makeStartingUp ( )
raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 101

/* 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 ( );

Technology Transfer # 93061697J-ENG SEMATECH


102 CIM Framework Interfaces

Dynamic Model:

NOT AVAILABLE

OFF
10
1

STARTING UP
SHUTTING DOWN
9

SHUTTING
DOWN
IMMEDIATELY

5 2 7 6 8
AVAILABLE

OPERATING
GOING TO
3 STANDBY

4
STANDBY

Figure 32 MESFactory Dynamic Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 103

Object State Tables:

Table 12 MESFactory State Definitions and Query Table


State Definition Query for State via
NOT A superstate, inherited from Resource, boolean isAvailable ( );
AVAILABLE encompassing the next four substate sent to the instance of MESFactory returns
definitions. FALSE.
OFF In this state, the MESFactory has a boolean isOff ( );
building, machines and other sent to the instance of MESFactory returns
resources. No CIM activities should be TRUE.
allowed. ComponentManagers should
not be registered yet.
STARTING UP In this state, the MESFactory has boolean isStartingUp ( );
requested startup sequences for all sent to the instance of MESFactory returns
resources. TRUE.
SHUTTING In this state, MESFactory resources boolean isShuttingDown ( );
DOWN and material are brought to a safe state sent to the instance of MESFactory returns
in preparation for terminating in an TRUE.
orderly fashion.
SHUTTING In this state, the MESFactory is boolean isShuttingDownImmediately ( );
DOWN shutting down without regard for the sent to the instance of MESFactory returns
IMMEDIATELY safe state of material or potential TRUE.
product and data loss. All processes
are terminated immediately.
AVAILABLE A superstate, inherited from Resource, boolean isAvailable ( );
encompassing the next three substate sent to the instance of MESFactory returns
definitions. TRUE.
OPERATING In this state, the MESFactory is able to boolean isOperating ( );
process product. Applications are sent to the instance of MESFactory returns
prepared to support factory operations TRUE.
to process product.
GOING TO In this state the MESFactory is boolean isGoingToStandby ( );
STANDBY performing sequences to make the sent to the instance of MESFactory returns
transition to STANDBY. It brings all TRUE.
product and equipment to a safe
stopping place.
STANDBY STANDBY means nearly available for boolean isStandby ( );
immediate use. In this state, the sent to the instance of MESFactory returns
MESFactory is idle and available; TRUE.
applications are able to respond to a
subset of selected messages.

Technology Transfer # 93061697J-ENG SEMATECH


104 CIM Framework Interfaces

Table 13 MESFactory State Transition Table


Current
# State Trigger New State Action Comment
non-existent No CIM Framework OFF Building (s), The MESFactory object
trigger necessary machines and instance is unique in the
other resources Framework. It is the only
are added after object that must be created
this transition. by the implementation.
1 OFF void STARTING Startup sequence
makeStartingUp ( ); UP performed, including
sent to the instance delegated messages to
of MESFactory. component managers.
Resource inherited interface
also defines startup.
2 STARTING void makeOperating OPERATING MESFactory is Relevant registered
UP ( ); sent to the operating components inform the
instance of event published factory when they have
MESFactory. by the instance of completed startup prior to
MESFactory. startup being complete.
3 OPERATING void GOING TO MESFactory is requested to
makeGoingToStand STANDBY go to STANDBY state.
by ();
sent to the instance
of MESFactory.
4 GOING TO void makeStandby STANDBY MESFactory is in All component managers,
STANDBY ( ); sent to the STANDBY state machines and material are
instance of event published idle and in a safe state.
MESFactory. by the instance of
MESFactory.
5 STANDBY void STARTING void startup ( ); Since standby means nearly
makeStartingup ( ); UP sent to an available for immediate use,
sent to MESFactory instance of this startup transition should
Component- be minimal.
Manager.
6 OPERATING void SHUTTING void shutdown As an action, messages
makeShutdown- DOWN Normal ( ); delegated to component
Normally ( ); sent to all managers in performing this
sent to the instance instances of transition.
of MESFactory. registered
The Resource inherited
Component-
interface also implements
Managers.
shutdownNormal.
7 AVAILABLE void SHUTTING void shutdown As an action, messages
makeShuttingDown DOWN Immediately ( ); delegated to component
Immediately ( ); IMME- sent to all managers.
sent to the instance DIATLEY instances of
The Resource inherited
of MESFactory. registered
interface also implements
Component
shutdownImmediate
Managers.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 105

Current
# State Trigger New State Action Comment
8 STANDBY void SHUTTING void shutdown As an action, messages
makeShuttingDown DOWN Normally ( ); delegated to component
Normally ( ); sent to all managers.
sent to the instance instances of
of MESFactory. registered
Component-
Managers.
9 SHUTTING void makeOff (); OFF void The MESFactory polls the
DOWN sent to the instance componentShutd ComponentManagers and
IMMEDIATE of MESFactory. ownComplete ( ); Resources for completion of
LY sent to the shutdown before the
instance of MESFactory state
MESFactory by transitions to OFF.
the Component
Managers.
MESFactory is
off
event published
by the instance of
MESFactory.
10 SHUTTING void makeOff ( ) ; OFF void The MESFactory polls the
DOWN sent to the instance componentShutd ComponentManagers and
NORMALLY of MESFactory. ownComplete ( ); Resources for completion of
sent to the shutdown before the
instance of MESFactory state
MESFactory by transitions to OFF.
the Component
Managers.
MESFactory is
off
event published
by the instance of
MESFactory.

Technology Transfer # 93061697J-ENG SEMATECH


106 CIM Framework Interfaces

4.5.1.2 Interface: Area


Inherited Interface: OwnedEntity
Description: Area is the interface corresponding to a physical or logical grouping of
factory resources (the complement of machines and/or personnel assigned
to it). Area may represent a singular entity or it may represent a collection
of other Areas. For example, an Area may represent an entire facility for
maintenance purposes, or an Area may represent a processing area such as
a bay, which is comprised of zones.
The association between an Area and its composite Areas may be
hierarchical or there may simply be a collection of peer Areas without any
explicit or implicit relationship.
Area may or may not be an optional construct, depending on such issues as
security.
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, nil
is 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 add
the Area indicated by the argument to the receiver’s set of subareas. The service will also update
the superarea for the argument. The service returns the argument. */
Area addSubArea (in Area anArea)
raises (FrameworkErrorSignal, AreaDuplicateSignal);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 107

/* 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 will
remove the Area indicated by the argument from the receiver’s set of subareas. The service will
also 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 this
higher-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 the
receiver. */
ProductSequence allProductUnits ( ) raises (FrameworkErrorSignal);

/* Get the FactoryCalendar for this area. The set service does not have a public interface as the
Area will have its FactoryCalendar instantiated at startup via configuration utilities. A sub-Area
can override its super-Area’s calendar. If there is only one calendar for the entire factory, then the
implementer may define an Area equivalent to MESFactory. */
FactoryCalendar getFactoryCalendar ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


108 CIM Framework Interfaces

4.5.1.3 Interface: FactoryCalendar


Inherited Interface: OwnedEntity
Description: The FactoryCalendar represents the dates and times of pertinent factory
activity. It holds representations of startup and shutdown schedules and a
collection of CalendarDates that represent each day in the life of the
factory. The number of CalendarDates held in the FactoryCalendar is
implementation dependent, but could be assumed to be minimally a
running 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);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 109

/* Return a CalendarDay represented by the given timestamp. Raise the exception if the given
CalendarDay has not been defined for this area. */
CalendarDay workDay_for (in TimeStamp aTimeStamp)
raises (FrameworkErrorSignal, RequestedDayNotDefinedForAreaSignal);

Contracted Services: None.


Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


110 CIM Framework Interfaces

4.5.1.4 Interface: PolicyVariable


Inherited Interface: NamedEntity
Description: The concept of policy variable contains the information that provides the
flexibility in factory configuration to achieve alternative approaches to
operations customization (e.g., selecting appropriate business rules). This
flexibility allows applications to be tuned for a particular operation’s need
or for a business process. Customization occurs at run-time without
requiring modification of application code.
Policy variables are the customizable aspects of applications. For example,
a policy variable that reflects information on when to schedule material
with respect to reticle set availability. Policy variables are represented as
default values, ranges, explanations, or anything else relevant to operations
customization (application configuration). Policy variables are not
hard-coded. They are cached or accessed dynamically at run-time. The
value(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 override
application default values or system configuration for a single
executable)
PolicyVariables are associated with factory Areas. It is assumed that
customization will occur at the Area level, not at a factory-wide level.
Policy and its related information will be deployed within a CIM
Framework-compliant Factory Component through implementation of the
OMG’s specification for Common Management Facilities [SysMan]. A
brief discussion of that specification follows.
The OMG (X/Open) Policy Management Facility specification addresses
the management of policy-driven objects. The specification includes the
mechanisms and facilities that enable the establishment and enforcement
of policy on these objects. It does not, however, define policy nor the
development of policy. Policy is defined by the CIM Framework concept
of 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 the
following concepts.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 111

Policy is an organization-specific rule that an administrator places on a


system. 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 to
be 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 set
of managed resources that share common management policies.
PolicyRegions can be hierarchical and should be defined in a manner
natural to the administrator (e.g., computers belonging to the Engineering
Department). PolicyRegions must be easily customizable and capable of
replacing or customizing existing policy or establishing new policy. Only
one PolicyObject may be associated with any given PolicyRegion.
PolicyRegions are managed by an InstanceManager.
Policy-driven Objects are governed by policy within a defined
PolicyRegion. They must belong to at least one PolicyRegion. The
PolicyRegion(s) to which a policy-driven object belongs establishes the
policies enforced on the object. Policy-driven objects may be
added/deleted/moved relative to PolicyRegions. They are managed by an
InstanceManager. There is no interface defined for policy-driven objects.
Operations on them are defined within other interfaces.
An InstanceManager encapsulates implementation-specific details of a
managed object type (e.g., creation of managed objects). Objects that
support the InstanceManager interface provide all of the capabilities that
the basic instance manager provides plus operations and behavior that
allow its managed instances to be subject to policy management. The basic
instance manager interface describes all instance managers.
A PolicyRegions InstanceManager manages PolicyRegions, while the
InstanceManager manages one or more initialization and validation policy
objects.
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);

Technology Transfer # 93061697J-ENG SEMATECH


112 CIM Framework Interfaces

/* 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 by
startup configuration; otherwise the defaultValue is used. */
any currentValue ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 113

4.5.1.5 Interface: MachineRegister


Inherited Interface: Resource
Description: The MachineRegister maintains a list of known machines for the factory
and supplies related information on demand. There is only one
MachineRegister per factory. NOTE: this interface may eventually
replaced 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 the
Factory. */
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.

Technology Transfer # 93061697J-ENG SEMATECH


114 CIM Framework Interfaces

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 the
factory 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 of
the scheduler and dispatcher). In today’s more manual factory, it would be the component that
would 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 product
from a set of raw material (e.g. wafers). Each individual LotFamily is associated with its own
LotJob. The LotFamily’s original Lot may be split, re-joined, batched with other Lots, etc. as
appropriate to optimize Factory performance. The LotJob is responsible for production activities
on all parts of the LotFamily whether they are a single Lot or several. It will delegate individual
ProcessOperations or mini-flows (sequences of ProcessOperations) for a Lot to lower level
JobSupervisors (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 for
ProcessMachineJobs) or synchronize factory activities so that Lots of a similar type progress
through the factory together. Thus, it is not required that these delegated Jobs relate to just one
Lot (or LotJob).
When the original Lot for a LotFamily is split, each resulting Lot will be moved forward through
its ProcessFlow separately until or unless a merge is performed. The single LotJob is still
responsible for all such split Lots.
The FactorySupervisor interacts with other components as pictured in Figure 33. Refer to this
figure as each interface within this component is defined.
The diagram omits many other possible interactions with other components. Many different
approaches may be taken in the design of the Factory Operations component. Implementation
decisions determine which of the other components are utilized to perform the Factory
Operations 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 115

ProductRequest
JobRequestor Person

tracks 1+
ComponentManager progress via defines
assigned
to
ProductSpecification
JobSupervisor
ProductRequestExecutor Job
ProcessOperation
requests product be
made from
1+

adheres
to
FactorySupervisor
LotJobExecutor LotJob
has
current
Factory
requests tracks
Operations requests a
movement progress acts
Component process operation
of material with upon

get prioritized
list of tasks
to be done now
ProcessMachine
LotFamily
Dispatcher
TransportJobSupervisor groups

get scheduled 1+ 1+
activities for

ProcessFlowContext tracks Lot


Scheduler (impl. progress
dependent) of

Figure 33 Factory Operations Component Information Model

Another potential use of the Factory Operations Component is responsibility for interpreting
schedules and initiating CIM Framework operations to carry out the scheduled decisions. This
casts the Factory Operations Component in the role of a client of the Scheduling Component
within Schedule Management. It should be noted that the execution of a single scheduled activity
may result in the initiation of a number of CIM Framework jobs. For example, the decision to
process material at a processing resource may result in transport jobs to move material and other
required resources to the processing resource as well as a process job to carry out the processing
of the material once delivered. A fully automated Factory Operations Component must be aware
of how to carry out a scheduled activity by issuing the right CIM Framework commands at the
right times. This role is a candidate for future study.

Technology Transfer # 93061697J-ENG SEMATECH


116 CIM Framework Interfaces

4.5.2.1 Interface: FactorySupervisor


Inherited Interfaces: ComponentManager, JobSupervisor
Description: The FactorySupervisor is the ComponentManager for the Factory
Operations component. It also implements the JobSupervisor interface
and serves as the subject of the Product Release Component’s release
activity. That is, it is requested to “make product”. It is the
FactorySupervisor that works with the Dispatcher to select the next
activity to perform.
The generic JobSupervisor level requires certain parameters be included in
every JobSpecification. The following list extends that required set of
parameters.
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 is
Produced.
“ProductSpecification” ProductSpecification The ProductSpecification tell how to create the
desired 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 117

4.5.2.2 Interface: LotJob


Inherited Interface: Job
Description: The LotJob interface specializes the Job interface for the attributes unique
to the manufacturing of a LotFamily. The LotJob corresponds to exactly
one LotFamily and represents the transformation within the factory of one
LotFamily into a desired finished product (according to the
ProductSpecification).
The ProductSpecification for a LotJob may change during the execution of
the LotJob. This is expected to happen in some environments. It will
apply to the entire LotFamily.
There is a requirement that a portion of a LotFamily might need to be
changed to a new ProductSpecification. To accomplish this, the
ProductRequest must first be split since each can have only one
ProductSpecification. Next, a new LotJob must be created because the
LotJob can build to only one ProductSpecification. Finally, the Lot must
be split and one of the resulting Lots assigned to the new LotJob.
Adjustments must be made to the LotFamily as well. This process can be
accomplished within this specification, but with some difficulty. If this
process is to be used commonly in factories, future modifications of this
specification 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 LotJob


changes. 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. The
ProcessFlowContext 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) ;

Technology Transfer # 93061697J-ENG SEMATECH


118 CIM Framework Interfaces

/* 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 be
produced). The initial value comes from the ProductRequest. Any change should also come
from there (i.e., the Enterprise level). When a change occurs, each Lot in the LotFamily for this
LotJob 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 duration
returned 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 119

4.5.2.3 Interface: LotJobExecutor


Inherited Interface: JobRequestor
Description: The Factory Operations component employs a delegator type of Job
Supervisor. It performs the following:
1. It takes a request to make a finished product from a LotFamily of
bare wafers.
2. It breaks the processing into a sequence of ProcessOperations
according to the ProcessFlow.
3. It assigns each step (or group of steps) in the sequence to a lower
level JobSupervisor (e.g., ProcessMachine level).
It is the LotJobExecutor that is responsible (as a JobRequestor) for the
delegated activities. Note that in implementation, this interface may be
merged with either the FactorySupervisor or LotJob as best fits the needs
of the implementer. Thus, there may be one or many of these in an
implementation.
There may be one or many LotJobExecutors (many if each Job is an
Executor) 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.

Technology Transfer # 93061697J-ENG SEMATECH


120 CIM Framework Interfaces

4.5.3 Enterprise Abstract Interface


The Enterprise Interface provides an interface from the Enterprise level system to the Factory
system. The Enterprise Interface’s function is to issue product requests to the Factory. It uses
the 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 Enterprise
Interface defined here. This is the most basic function of the Enterprise in the view of the
Factory. 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 the
CIM Framework components. This will contribute toward this additional Enterprise-Factory
interaction needed in the future.

JobRequestor NamedEntity

Enterprise
Abstract Interface

defines
EnterpriseExecutor LotJob
ProductRequest 1+

make job request defines specifies desired


based on a product product with
product request for

specifies type
and quantity
of product to make

ProductRequestJob ProductSpecification
ProductRequestManager

Figure 34 Enterprise Abstract Interface Information Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 121

4.5.3.1 Interface: EnterpriseExecutor


Inherited Interfaces: JobRequestor
Description: The EnterpriseExecutor exists to be the Enterprise level JobRequestor of
ProductRequestJobs. The association between EnterpriseExecutor and
ProductRequestManager 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.

Technology Transfer # 93061697J-ENG SEMATECH


122 CIM Framework Interfaces

4.5.3.2 Interface: ProductRequest


Inherited Interface: NamedEntity
Description: An interface to contain pointers to all the information needed to release the
material 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 the


ProductSpecification, it must happen at the Enterprise level. Thus, no such interface is provided
for the Factory. If a change in ProductSpecification should occur, it should be passed down to
the 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 of
the 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 the
Enterprise level indicates that this ProductRequest has been redirected to a different order. It is
not 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, the
related Lots in the factory should react appropriately according to business rules (e.g., Lots might
automatically be put on hold). */
void makeOnHold ( )
raises (FrameworkErrorSignal, InvalidStateTransitionSignal);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 123

/* 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
3

Completed
1 2
4

On Hold

Figure 35 ProductRequest Dynamic Model

Technology Transfer # 93061697J-ENG SEMATECH


124 CIM Framework Interfaces

Object State Tables:

Table 14 ProductRequest State Definitions and Query Table


State Definition Query for State via
NOT In this superstate, a boolean isCompleted ( ) sent to instance of Person
COMPLETED ProductRequest has not been returns FALSE or boolean isNotCompleted ()
fulfilled. returns TRUE.
NOT ON HOLD In this substate, a boolean isOnHold ( ) sent to instance of Person
ProductRequest is not on returns FALSE or boolean isNotOnHold () returns
hold. TRUE.
ON HOLD In this substate, a boolean isOnHold ( ) sent to instance of Person
ProductRequest has been returns TRUE or boolean isNotOnHold () returns
placed on hold. FALSE.
COMPLETED In this superstate, a boolean isCompleted ( ) sent to instance of Person
ProductRequest has been returns TRUE or boolean isNotCompleted () returns
fulfilled. FALSE.

Table 15 ProductRequest State Transition Table


# Current State Trigger New State Action Comment
non-existent ProductRequest NOT
getProductRequest () ; COMPLETED
sent to instance of
ProductRequestJob
1 NOT ON void makeOnHold () ; sent ON HOLD ProductRequestStateC
HOLD to instance of hanged event posted
ProductRequest by instance of
ProductRequest
2 ON HOLD void makeNotOnHold () ; NOT ON ProductRequestStateC
sent to instance of HOLD hanged event posted
ProductRequest by instance of
ProductRequest
3 NOT void makeCompleted () ; COMPLETED ProductRequestStateC
COMPLETED sent to instance of hanged event posted
ProductRequest by instance of
ProductRequest
4 COMPLETED void makeNotCompleted NOT ProductRequestStateC
() ; sent to instance of COMPLETED hanged event posted
ProductRequest by instance of
ProductRequest
COMPLETED non-existent Implementation
specific.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 125

4.5.4 Product Request Management Component


Product Request Management performs as an intermediary between the Enterprise level and the
Factory level. It accepts product requests (as jobs) from the Enterprise. These product requests
are then broken down into lots, which are released into the factory as appropriate to optimize
plant 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 without
starving it or causing over crowding.
2. The mapping of product requests into lots. The many-to-many mapping of these two
interfaces gives great flexibility.
tracks
progress
via
ComponentManager JobRequestor

JobSupervisor EnterpriseExecutor Job

requests
product

ProductRequestManager ProductRequestExecutor ProductRequestJob

Product Request Management requests product releases


Component be made from lot from

creates defines
lots for product
for

ProductManager ProductRequest

1+
satisfied
FactorySupervisor LotFamily by

Figure 36 Product Request Management Information Model

Product Request Management employs a delegator style of job supervision. It accepts product
request jobs from the Enterprise interface and releases lots (by requesting lot jobs) to the Factory
Operations component based on those product requests.
The parameter of a product request job specification is the product request. All information
should be available from that interface to perform the work.

Technology Transfer # 93061697J-ENG SEMATECH


126 CIM Framework Interfaces

4.5.4.1 Interface: ProductRequestManager


Inherited Interfaces: ComponentManager, JobSupervisor
Description: ProductRequestManager is the JobSupervisor derivative responsible for
accepting 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 127

4.5.4.2 Interface: ProductRequestJob


Inherited Interfaces: Job
Description: This derivative of Job represents the fulfillment of ProductRequests by the
factory 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.

Technology Transfer # 93061697J-ENG SEMATECH


128 CIM Framework Interfaces

4.5.4.3 Interface: ProductRequestExecutor


Inherited Interfaces: JobRequestor
Description: The ProductRequestExecutor acts as the JobRequestor for the jobs
requested 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 Request
Management. The are the Lots for which this component is responsible. */
LotSequence getUnreleasedLots ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 129

4.5.5 Product Release Component


The Product Release Component receives product requests that have been planned and accepted
for production. Product requests deemed ready for production are used to create lots for the
factory and the resulting lots are then released into production. This component determines if any
grouping or splitting of the product requests must occur before creating lots. When to release
new material into the factory is determined by a release sequencing algorithm that will differ
from factory to factory; therefore, the Product Release Component must be tailored to provide
the necessary algorithm.
Figure 37 is the information model for the Product Release Component. The Product Release
Manager interface represents the main interface needed for this component.

ProductManager
ComponentManager
creates
lots

Product Release
Component
1+
ProductReleaseManager describes ProductRequest
material to
release
releases

1+
initiates lot
scheduling Lot
SchedulingManager
(implementation
dependent)

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 > product
request > Lot object instance creation.

Technology Transfer # 93061697J-ENG SEMATECH


130 CIM Framework Interfaces

Figure 38 shows a typical sequence of CIM Framework messages that would occur in causing a
lot to be manufactured. Note that a Scheduling Manager has not been defined for the CIM
Framework. A message taken from an earlier specification release is included to complete this
scenario.

ProductRelease External ProductManager Scheduling


Manager Requester Manager
1: createAndReleaseLotsForProductRequests( )

2: createLotUsing( )

3: return aLot

4: return sequence<Lot>

5: scheduleLots(lots)

Figure 38 Product Release Component Interaction Diagram

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 131

4.5.5.1 Interface: ProductReleaseManager


Inherited Interface: ComponentManager
Description: The ProductReleaseManager is responsible for determining when material
can be made available for processing in the factory. Note that a
ProductReleaseManager may also have the responsibility for release of
material other than product in the factory. It may also manage durable and
consumable 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 there
are new product requests available for the manager to consider. The manager may choose to defer
the creation and release of Lots for those product requests until some future date based on its own
internal implementation. */
void newProductRequestsAvailableForRelease
(in ProductRequestSequence aProductRequestSequence)
raises (FrameworkErrorSignal, ProductRequestInvalidSignal);

/* This service is provided for an external entity to force the ProductReleaseManager to create
and release Lots for the given product requests immediately. */
LotSequence createAndReleaseLotsForProductRequests
(in ProductRequestSequence aProductRequestSequence)
raises (FrameworkErrorSignal, ProductRequestInvalidSignal,
UnableToAddProductRequestSignal);

Technology Transfer # 93061697J-ENG SEMATECH


132 CIM Framework Interfaces

Contracted Services:
Interface Component Service
ProductRequest Enterprise Abstarct is<state>;
Interface
[None defined. Added for clarity.] Scheduling (not schedule lots (no service defined)
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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 133

4.6 Material Management Group


The Material Management Group contains the Material Management Abstract Interface Group
and 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 Product
in the Factory.
• Durable Management Component. This component is responsible for managing Durables
in the Factory.
• Consumable Management Component. This component is responsible for managing
Consumables in the Factory.
• Inventory Region Management Component. This component provides monitoring of
material progress through, and the current population of conceptual locations in the
factory.

Technology Transfer # 93061697J-ENG SEMATECH


134 CIM Framework Interfaces

4.6.1 Material Management Abstract Interface Group


This group is the abstractions for representing the various types of Material to be viewed at the
Factory level. Behavior concerning material location, material aggregates, and material progress
are services provided by the specializations of interfaces in this abstract group. Specializations of
Material are Products, Durables, and Consumables.
Found within this abstract group is the abstraction called MaterialGroup, which represents an
aggregation of material for the purposes of Factory operations. MaterialGroup specializations
serve the transport system, machine processing, and material tracking. A MaterialGroup is not
associated with factory or machine locations. Its location is determined by the location of its
aggregate 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 of
MaterialGroup will include ProcessGroup, TransportGroup, and Lots. These will be defined and
discussed in those specific components that specialize these interfaces.
Figure 39 is the Material Management Abstract Interface Group Information Model.

is located on is grouped in
MaterialLocation
Material MaterialGroup

contains

Figure 39 Material Management Abstract Interface Group

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 135

4.6.1.1 Interface: Material


Inherited Interface: NamedEntity
Description: Material is an abstract interface for any entity in the factory that goes into
the product or is used to manufacture the product. This includes the
product itself, consumables, and durables used in the manufacturing
process.
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.

Technology Transfer # 93061697J-ENG SEMATECH


136 CIM Framework Interfaces

4.6.1.2 Interface: MaterialGroup


Inherited Interface: NamedEntity
Description: MaterialGroup is the abstract interface for any aggregation of Material. A
MaterialGroup is not capable of determining location; however, location
can 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 is
thrown 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 or
throws 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);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 137

/* 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.

Technology Transfer # 93061697J-ENG SEMATECH


138 CIM Framework Interfaces

4.6.2 Product Management Component


The Product Management Component provides the representation for various types of Product to
be viewed at the Factory level. Behavior concerning product location, product aggregation, and
product progress are services provided by the interfaces in this component. Categories of Product
are Wafers, Die, and Packages. The aggregation of products is represented as Lot. A
ProductManager provides lifecycle management and coordination of behavior for objects
representing Product and Lot.
ProcessGroup represents a Material aggregate used for processing in a Machine. Units of Product
or 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

ProductRequest

has a LotJob
manages
manages and tracks ProductManager LotFamily

manages
groups

Product ProcessGroup Lot ProcessFlowContext


assigned to
manufacture
Held at 1+
has member
currently
processing
at
ProcessOperation
consists of
Package holds Die Wafer
is contained
in

held at slot

Currently Processing by Machine

PositionalContainer Cassette

Figure 40 Product Management Component Information Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 139

4.6.2.1 Interface: ProductManager


Inherited Interface: ComponentManager
Description: The ProductManager provides services similar to those in its inherited
interface ComponentManager but extends and enhances them to be
applicable to Lot and Product lifecycle management and tracking.
Exceptions:
/* Denotes a failed attempt to add a ProcessGroup because a group of the same specified name
already 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 the
number 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 that
already 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;};

Technology Transfer # 93061697J-ENG SEMATECH


140 CIM Framework Interfaces

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 created
for 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 quantity
of 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 ProductRequest
product 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 manufacturing
facility 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 the
new Lot containing the Products listed in the second parameter. The original Lot will contain all
remaining Products (if any). The new Lot remains in the original Lot’s LotFamily. This may be
called 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 the


requested ProcessGroup already exists. */
ProcessGroup createProcessGroup (in string identifier)
raises (FrameworkErrorSignal,ProcessGroupDuplicateSignal);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 141

/* 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 the
definition 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 number
of product units for the time period indicated.(i.e., the number of wafers). This product type
corresponds 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 the
second argument. Returns the second argument, which has been modified during the join. The
updated 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 two
timestamps 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);

Technology Transfer # 93061697J-ENG SEMATECH


142 CIM Framework Interfaces

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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 143

4.6.2.2 Interface: Product


Inherited Interface: Material
Description: The Product interface provides for the representation of any material that
undergoes processing in a Factory. Product, in the semiconductor industry,
includes any unit that is intended to become a functional semiconductor
device including functional engineering devices. Associated with each
Product is a specification for building it, a flow (or route) created from that
specification, a production history, and a possible position in a positional
container.
Exceptions:
/* This signal is raised when an operation assumes that a Product is in a positional container
when, 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 following
valid strings: “Wafer,” “Die,” “Package,” “Multi-chip Module,” or “Cube.” Others can be added
through 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);

Technology Transfer # 93061697J-ENG SEMATECH


144 CIM Framework Interfaces

/* 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 if
the 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 all
process 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);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 145

boolean isProcessingCompleted ( ) raises (FrameworkErrorSignal);


boolean isScrapped ( ) raises (FrameworkErrorSignal);
boolean isShipped ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model:
CREATED

NOT
0 1 ALLOCATED
ALLOCATED

IN 2
PRODUCTION

TRAVELING

NOT ON 7 8
3
HOLD
6 IDLE
4 5
9 10
ON HOLD
PROCESSING
11

FINISHED

12 SCRAPPED

13 C 14
PROCESSING
COMPLETED

15

16 SHIPPED

Figure 41 Product Dynamic Model

Technology Transfer # 93061697J-ENG SEMATECH


146 CIM Framework Interfaces

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 been boolean isAllocated ( ); sent to
allocated(assigned) to a Lot. The corresponding the instance of Product.
Lot state will be Created.
InProduction and NotOnHold The Product has been put into manufacturing and boolean isNotOnHold ( ); sent
is able to go through normal production. The to the instance of Product.
Product may exist concurrently in this state and in
the Traveling, Idle, or Processing states. The
corresponding Lot states must be Released and Not
On Hold, or any of the allowable concurrent states,
InProduction and OnHold The Product has been put into manufacturing but is boolean isOnHold ( ); sent to
unable to go thru normal production due to some the instance of Product.
kind of problem or restriction. Example of
problems might be wrong wafer count, bad
inspection results, or awareness of misprocessing
by manufacturing personnel. A restriction might
be put in place to allow engineering inspection or
experimentation. The Product is removed from
any Dispatching considerations, i.e., it will not be
assigned to a ProcessMachineJob or be included in
a DispatchDecision. The Product may exist
concurrently in this state and in the Traveling, Idle,
or Processing states. The corresponding Lot state
may be Released and may be OnHold or any of the
allowable concurrent states.
InProduction and Traveling The Product has been put into manufacturing and boolean isTraveling ( ); sent to
is traveling from one physical location to another. the instance of Product.
The Product may exist concurrently in this state
and in either the OnHold or NotOnHold states.
The corresponding Lot state may be Released and
WaitingToLogin, or Released and LoggedOut, or
any of the allowable concurrent states.
InProduction and Idle The Product has been put into manufacturing and boolean isIdle ( ); sent to the
is currently not moving or being processed. The instance of Product
Product may exist concurrently in this state and in
either the Onhold or NotOnHold. The
corresponding Lot state may be Released and
WaitingToLogin, Released and LoggedOut, or any
of the allowable concurrent states.
InProduction and Processing The Product has been put into manufacturing and boolean isProcessing ( ); sent
is currently being Processed. The Product may to the instance of Product.
exist concurrently in this state and in either the
Onhold or NotOnHold. The corresponding Lot
state must be Released and Logged In, and any of
the allowable concurrent states.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 147

State Definitions Query for State via


Finished and Scrapped The Product has been removed from processing boolean isScrapped ( ); sent to
and is no longer considered of Production level. the instance of Product.
There is no concurrent state. Product may be
placed in the Finished and Scrapped state without
its Lot being placed in this state. Individual
instances of Product in a Lot may be scrapped,
without the whole Lot being scrapped.
Finished and The Product has been through it’s entire Process boolean
ProcessingCompleted flow and is considered to be shippable to either a isProcessingCompleted(); sent
customer or to another factory for further to the instance of Product.
processing. The corresponding Lot state is
Finished and Completed.
Shipped The Product has been shipped to either a customer boolean isShipped ( ); sent to
or to another factory for further processing. the instance of Product.

Technology Transfer # 93061697J-ENG SEMATECH


148 CIM Framework Interfaces

Table 17 Product State Transition Table


# Current State Triggers New State Action Comment
0 non-existent Wafer NotAllocated Objects of Specific extensions for
createWaferNamed(in Product type are new Product
string identifier);, Die created types can be
createDieNamed(in string added
identifier);, or Package
createPackageNamed(in
string identifier);, sent to
instance of
ProductManager.
1 NotAllocated Lot createLotUsing ( in Allocated The instance of The instance of
ProductRequest Product is Lot that the
aProductRequest), Lot associated with an Product is
createLotUsing_fromProdu instance of Lot. associated with is
cts(in ProductRequest not yet placed
aProductRequest, in into Production
ProductSequence but is ready for
aProductSequence); or Lot Release (ready
createLotUsing_withIdentif for going into
iers(in ProductRequest production).
aProductRequest, in
IdentifierSequence
anIdentifierSequence); sent
to ProductManager
2 Created Job requestJob(in JobType InProduction The instance of Concurrently
type, in Properties Lot that contain transition three
aJobSpecification, in this instance of and six take
JobRequestor product and the place. The
aJobRequestor) sent to instance of corresponding
FactorySupervisor. Product are put Lot State is
into Released and
manufacturing. WaitingToLogin.
Normal production
is allowed.
3 Created Job requestJob(in JobType InProduction and The instance of Concurrently
type, in Properties NotOnHold Lot that contain transition two and
aJobSpecification, in this instance of six take place.
JobRequestor product and the The
aJobRequestor) sent to instance of corresponding
FactorySupervisor. Product are put Lot State is
into Released and
manufacturing. WaitingToLogin.
Normal production
is allowed.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 149

# Current State Triggers New State Action Comment


4 InProduction and void makeOnHold ( ) ; sent InProduction and For the first trigger Business rules
NotOnHold to instance of Product or OnHold the instance of must decide if the
void makeOnHold ( ) sent Product is put on Lot is placed on
to the instance of Lot hold and further hold with the first
production is trigger. Product
prohibited. For that is on Hold
the second trigger will not be
the instance of the considered for
Lot that contains any Dispatch
the instance of decisions and will
Product is put on not appear as part
hold and thus the of a
instance of ProcessGroup or
Product is also as part of a
placed on hold. DispatchDecision
.
5. InProduction and void makeNotOnHold ( ) ; InProduction and For the first trigger Business rules
OnHold sent to instance of Product NotOnHold the instance of must decide if the
or void makeNotOnHold ( Product is Lot is removed
) sent to the instance of Lot removed from from hold with
hold and further the first trigger.
production is
allowed. For the
second trigger the
instance of the Lot
that contains the
instance of
Product is
removed from
hold and thus the
instance of
Product is also
removed from
hold.
6 Created Job requestJob(in JobType InProduction and The instance of Concurrently
type, in Properties Idle Lot that contain transition two and
aJobSpecification, in this instance of three take place.
JobRequestor product and the The
aJobRequestor) sent to instance of corresponding
FactorySupervisor. Product are put Lot State is
into Released and
manufacturing. WaitingToLogin.
Normal production
is allowed, but the
Product is
currently not being
worked on.

Technology Transfer # 93061697J-ENG SEMATECH


150 CIM Framework Interfaces

# Current State Triggers New State Action Comment


7 InProduction and void makeTraveling sent to InProduction and The instance of The instance of
Idle the instance of Product. Traveling Product is moving Lot that contains
from one location this product may
to another. be in either the
LoggedOut state
or the
WaitingToLogin
state. Product
that is traveling
may be contained
in a Transport
group and may
also be part of a
TransportJob(if
the material
movement
component is
supported)..
8 InProduction and void makeIdle sent to the InProduction and The instance of The instance of
Traveling instance of Product. Idle Product is in Lot that contains
manufacturing but the instance of
is not being Product may be
worked on. All in the
movement is WaitingToLogin
stopped. state or the
LoggedOut state.
9 InProduction and void makeProcessing sent InProduction and The instance of This trigger may
Idle to the instance of Product. Processing Product is being follow the start of
actively worked on ProcessMachineJ
by a machine or an ob and all
operator. instances of
Product in an
instance of Lot
may be placed in
this state at once.
10 InProduction and void makeIdle sent to the InProduction and The instance of The instance of
Processing instance of Product. Idle Product is in Lot that contains
manufacturing but the instance of
is not being Product may be
moved(not in the
traveling). All WaitingToLogin
processing is state or the
stopped. LoggedOut state

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 151

# Current State Triggers New State Action Comment


11 InProduction and void makeFinished ( ); sent Finished The instance of The instance of
Idle to instance of Product. Product is Product will
removed from transit to the
manufacturing. scrapped or
ProcessingCompl
ete state
depending on the
conditions
defined.
12 Finished and void makeInProduction InProduction The instance of Concurrently
Scrapped sent to the instance of Lot that contain transition three
Product. this instance of and six take
product and the place. The
instance of corresponding
Product are put Lot State is
into manufacturing Released and
Production is WaitingToLogin.
allowed.
13 Finished and implementation dependent nonexistent Instance of History of the
Scrapped Product removed instance of
from existence. product may still
exist.
14 Finished implementation dependent conditional Instance of The instance of
Product enters Product will
either the transit to the
Scrapped State or scrapped or
the ProcessingCompl
ProcessingComple ete state
tedState. depending on the
conditions
defined.
15 Finished and void makeShipped ( ) sent Shipped Instance of The
ProcessComplete to the instance of Product. Product moved corresponding
into the Shipped Lot state may be
state. Shipped or
Emptied.
16 Shipped implicit nonexistent Instance of History of the
Product removed instance of
from existence. product may still
exist.

Technology Transfer # 93061697J-ENG SEMATECH


152 CIM Framework Interfaces

4.6.2.3 Interface: Wafer


Inherited Interface: Product
Description: The Wafer interface represents the principal unit of production in a
semiconductor wafer fabrication facility. Instances of this interface
provide information concerning the location and progress of Wafers in the
Factory.
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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 153

4.6.2.4 Interface: Die


Inherited Interface: Product
Description: The Die interface represents a small piece of a semiconductor wafer
bounded by scribe lines in horizontal and vertical directions that contains
the 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.

Technology Transfer # 93061697J-ENG SEMATECH


154 CIM Framework Interfaces

4.6.2.5 Interface: Package


Inherited Interface: Product
Description: The Package interface represents the first level packaging of the Die in
semiconductor assembly and packaging.
Exceptions:
/* This signal is raised when the specified Package’s Die pad coordinate is already occupied by
another 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 Die
interface 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 the
sequence returned. Instead, each Die’s coordinate position must be queried for its location within
the Package. */
DieSequence allDie ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: Same as inherited interface Product.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 155

4.6.2.6 Interface: Lot


Inherited Interface: MaterialGroup
Description: The Lot interface represents a Product aggregate that is common to
semiconductor manufacturing and is traced as the unit of work that moves
though the Factory. It may be temporarily split or grouped with other Lots
but is usually recombined or split again to assume its original identity. It is
generally a set of Products released and tracked as a single entity in current
semiconductor manufacturing facilities.
Exceptions:
/* This exception is raised when the Lot is queried about the state of a split but the Lot has not
been split. */
exception LotHasNotBeenSplitSignal { };

/* This exception is raised when the Lot is queried about its completion time but is not yet
completed. */
exception LotNotYetCompletedSignal { };

/* This signal is raised when there are not enough PositionalContainers available in the Factory
to 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 due
to scrap, loss, splits, or joins. */
LotQuantityChangedEvent

/* This event is posted when a Lot is placed on reserve by some entity or


when a reservation is removed. When a Lot is reserved, it should no
longer be considered for dispatching decisions. */
LotReservationChangedEvent

Technology Transfer # 93061697J-ENG SEMATECH


156 CIM Framework Interfaces

/* This event is posted when a Lot is moved to a different processFlow


from its current processFlow. This can occur because a given Lot has
failed some sort of inspection and will become a downgraded product type
or because a Lot is moved onto a different rework flow. Typically, when a
Lot is split it is so that part of the Product of the Lot can move onto a
different flow temporarily and eventually be joined back to the original Lot
for 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);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 157

/* 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 the
sequence 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 argument
Lot. */
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 not
correspond to MaterialTrackingLocations as not all Product within a Lot is necessarily being
processed concurrently within a Machine. */
MachineSequence currentMachines ( ) raises (FrameworkErrorSignal);

/* Returns a sequence of Lots that are candidates for a join with the receiver. This interface
behavior is meant to be customized to the practice of a specific manufacturing facility. There
may 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 the
Lots 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 long
the Completed and Shipped Lot Product members took in the Active and Hold states. If all the
Lot’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 implementation
dependent. */
float currentYield ( ) raises (FrameworkErrorSignal);

/* Returns how long the Lot has been in the Active superstate. Note that the duration returned by
age 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);

Technology Transfer # 93061697J-ENG SEMATECH


158 CIM Framework Interfaces

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 splits
for 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 exception
is raised. */
TimeStamp actualCompletionTime ( )
raises (FrameworkErrorSignal,LotNotYetCompletedSignal);

/* Returns whether the receiver is the Lot that was originally created and released rather than
split from another Lot. Note that the Products originally started may no longer be members of the
Lot 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 159

Dynamic Model:

1 CREATED

2
RELEASED

WAITING
6
TO LOGIN
NOT ON
3
HOLD
8 7

4 5
LOGGED 9 LOGGED
IN 10 OUT
ON HOLD

12 11
FINISHED

13 SCRAPPED

EMPTIED C 14

COMPLETED

15

16 SHIPPED

Figure 42 Lot Dynamic Model

Technology Transfer # 93061697J-ENG SEMATECH


160 CIM Framework Interfaces

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 yet boolean isCreated ();
released and therefore processing cannot take place. The sent to instance of Lot.
corresponding state for the Product contained by the Lot is
Created and Allocated.
Released and Instance of Lot has been released(put into production). The Lot boolean
WaitingToLogin is now associated with a LotJob. Processing can take place once isWaitingToLogin();
associated with a ProcessMachineJob. The instance of Lot will sent to instance of Lot
also exist in one of two concurrent states, Released and
NotOnHold or Released and OnHold. The corresponding state
for Product contained by the Lot is InProduction and Idle or
InProduction and Traveling and any of the allowable concurrent
Product states.
Released and Instance of Lot has been released(put into production). The Lot boolean isLoggedIn();
LoggedIn is now associated with a LotJob. The Lot has been assigned to a sent to instance of Lot.
ProcessMachineJob and a ProcessGroup. It is now associated
with an Instance of ProcessMachine. The instance of Lot will
also exist in one of two concurrent states, Released and
NotOnHold or Released and OnHold. The corresponding state
for Product contained by the Lot is InProduction and Processing
and any of the allowable concurrent states.
Released and Instance of Lot has been released(put into production). The Lot boolean isLoggedOut ( )
LoggedOut is now associated with a LotJob. The association to an instance ; sent to the instance of
of Machine has been terminated. The instance of Lot will also Lot
exist in one of two concurrent states, Released and NotOnHold
or Released and OnHold. The corresponding state for Product
contained by the Lot is InProduction and Idle or InProduction
and Traveling and any of the allowable concurrent states.
Released and Instance of Lot has been released(put into production). The Lot boolean isNotOnHold
NotOnHold is now associated with a LotJob. Normal production is allowed. ( ); sent to instance of
The instance of Lot will also exist in one of three concurrent Lot.
states, Released and WaitingToLogin, Released and LoggedIn,
or Released and LoggedOut. The corresponding state for
Product contained by the Lot may be InProduction and
NotOnHold or InProduction and OnHold(if business rules allow
Product contained within a Lot to be OnHold when the Lot is
not) and any of allowable concurrent states.
Released and Instance of Lot has been released(put into production). The Lot boolean isOnHold();
OnHold is now associated with a LotJob. However normal production is sent to instance of Lot.
prohibited. The Lot will not be considered for
DispatchDecisions. It will not appear as part of a ProcessGroup
or in a DispatchDecision. The instance of Lot will also exist in
one of three concurrent states, Released and WaitingToLogin,
Released and LoggedIn, or Released and LoggedOut. The
corresponding state for Product contained by the Lot will be
InProduction and OnHold.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 161

State Definition Query for State via


Finished and Instance of Lot has completed all processing and will no longer boolean isCompleted ( );
Completed be associated with ProcessMachineJobs. The corresponding sent to instance of Lot.
state for Product contained by the Lot will be Finished and
ProcessingCompleted.
Finished and Empty Instance of Lot has had all of its contained Product removed boolean isEmpty ( ); sent
either through splits, scrap, or from Product being shipped. The to instance of Lot.
corresponding state for Product formerly contained by the Lot
may be in any of the defined states for Product.
Finished and Instance of Lot has been removed from manufacturing due to boolean isScrapped();
Scrapped actual or perceived problems with the contained Product. The sent to instance of Lot.
corresponding state for Product contained by the Lot will be
Finished and Scrapped.
Shipped Instance of Lot has been shipped to customer or another Factory boolean isShipped();
for further processing. The corresponding state for Product sent to instance of Lot.
contained by the Lot will be Shipped.

Technology Transfer # 93061697J-ENG SEMATECH


162 CIM Framework Interfaces

Table 19 Lot State Transition Table


# Current State Trigger New State Action Comment
1 nonexistent Lot createLotUsing ( in Created An instance of Lot is At this time the
ProductRequest created and the instances of Product
aProductRequest), Lot ProductManager that are being
createLotUsing_fromPr returns the Lot that is associated with the
oducts(in created. Product is instance of Lot transit
ProductRequest associated with the from Created and
aProductRequest, in Lot. The lot is not yet NotAllocated to
ProductSequence Released (placed into Created and
aProductSequence); or manufacturing). Allocated.
Lot
createLotUsing_withIde
ntifiers(in
ProductRequest
aProductRequest, in
IdentifierSequence
anIdentifierSequence);
sent to ProductManager
2 Created Job requestJob(in Released The instance of Lot Concurrently
JobType type, in and the instances of transitions three and
Properties Product contained six take place. The
aJobSpecification, in within the Lot are put corresponding
JobRequestor into manufacturing. Product State is
aJobRequestor) sent to Normal production is InProduction.
FactorySupervisor. allowed.
3 Released Job requestJob(in Released and The instance of Lot Concurrently
JobType type, in NotOnHold and the instances of transitions two and
Properties Product contained six take place. The
aJobSpecification, in within the Lot are put instance of Lot will
JobRequestor into manufacturing. exist concurrently in
aJobRequestor) sent to Normal production is one of the following
FactorySupervisor allowed. states Released and
LoggedIn, Released
and LoggedOut, or
Released and
WaitingToLogin.
The corresponding
Product State is
InProduction and
NotOnHold.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 163

# Current State Trigger New State Action Comment


4 Released and void makeOnHold ( ); Released and The instance of Lot The instance of Lot
NotOnHold sent to instance of Lot OnHold and all the instances of will exist
Product contained in concurrently in one
the Lot are prevented of the following
from further states Released and
processing The Lot LoggedIn, Released
will not be considered and LoggedOut, or
for any Dispatch Released and
decisions, i.e., it will WaitingToLogin.
not appear in a The corresponding
ProcessMachineJob Product state is
and will not be InProduction and
associated with a OnHold.
DispatchDecision.
5 Released and void makeNotOnHold Released and Lot can now be The instance of Lot
OnHold (); sent to instance of NotOnHold considered for will exist
Lot DispatchDecisions and concurrently in one
further processing is of the following
allowed. states Released and
LoggedIn, Released
and LoggedOut, or
Released and
WaitingToLogin.
The corresponding
Product state is
InProduction and
NotOnHold.
6 Created Job requestJob(in Released and The instance of Lot Concurrently
JobType type, in WaitingToLog and the instances of transitions two and
Properties in Product contained three take place. The
aJobSpecification, in within the Lot are put corresponding
JobRequestor into manufacturing. Product State is
aJobRequestor) sent to Normal production is InProduction and
FactorySupervisor. allowed. Idle or InProduction
and Traveling.
7 Released and void makeLoggedOut Released and The instance of Lot The instance of Lot
LoggedOut ( ); sent to instance of WaitingToLog and the instances of will exist in one of
Lot. in Product contained the two concurrent
within the Lot are states, Released and
waiting to be OnHold or Released
assoicated with the and NotOnHold.
ProcessMachine that The corresponding
will perform the next Product State is
ProcessOperation in InProduction and
the ProcessFlow. Idle or InProduction
and Traveling.

Technology Transfer # 93061697J-ENG SEMATECH


164 CIM Framework Interfaces

# Current State Trigger New State Action Comment


8. Released and void makeLoggedIn(); Released and The instance of Lot The instance of Lot
WaitingToLogin sent to instance of Lot LoggedIn. and the instance of will exist in one of
Product contained the two concurrent
within the Lot are states, Released and
associated with a OnHold or Released
ProcessMachine. They and NotOnHold.
are considered at or in The corresponding
the ProcessMachine. Product State is
InProduction and
Processing or
InProduction and
Idle(depending on
business rules).
9 Released and void makedLoggedOut Released and The instance of Lot The instance of Lot
LoggedIn (); sent to instance of LoggedOut and the instance of will exist in one of
Lot Product contained the two concurrent
within the Lot have states, Released and
their association with a OnHold or Released
ProcessMachine and NotOnHold.
terminated. The corresponding
Product State is
InProduction and
Idle or InProduction
and Traveling.
10 Released and void makeLoggedIn(); Released and The instance of Lot The instance of Lot
LoggedOut sent to instance of Lot. LoggedIn and the instance of will exist in one of
Product contained the two concurrent
within the Lot are states, Released and
associated with a OnHold or Released
ProcessMachine. They and NotOnHold.
are considered at or in The corresponding
the ProcessMachine. Product State is
InProduction and
Processing or
InProduction and
Idle(depending on
business rules).
11 Released and void makeFinished ( ); Finished The instance of Lot is The instance of Lot
LoggedOut sent to instance of Lot. removed from will transit to the
manufacturing Scrapped,
Completed, or
Emptied state
depending on the
conditions defined.
Transition 14 will
occur concurrently.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 165

# Current State Trigger New State Action Comment


12 Finished and void makeReleased ( ); Released The instance of Lot Concurrently
Scrapped sent to instance of Lot and the instances of transitions three and
Product contained six take place. The
within the Lot are put corresponding
into manufacturing. Product State is
Production is allowed. InProduction.
13 Finished and implementation nonexistent The instance of Lot is
Scrapped dependent removed from the
MESFactory.
14 Released and void makeCompleted ( Finished The action that takes Transition 11 will
LoggedOut ); void makeScrapped(); place is conditional occur concurrently.
or void makeEmptied(); based on the trigger. Any instances of
sent to instance of Lot For the void contained Product
makeCompleted have corresponding
trigger, the instance of states. If an instance
Lot and all the of Lot becomes
instances of Product empty, the Product
that it contains are that was contained in
moved from the Lot may be in any
manufacturing. All of the defined
changes to the Product states.
cycletime stop. The
Lot and its Products
are available for
shipping to a customer
or another factory for
further processing. For
the second trigger the
instance of Lot and all
of the instances of
Product that it contains
are removed from
manufacturing and are
considered ineligible
to satisfy any
ProductRequests. For
the last trigger all of
the instances of
Product that are
contained by the
instance of Lot are
removed from the lot.
The Lot therefore no
longer has Product.
15 Finished and void makeShipped (); Shipped The instance of Lot is The corresponding
Completed sent to the instance of shipped to a customer Product state is
Lot or to another factory Shipped
for further processing.

Technology Transfer # 93061697J-ENG SEMATECH


166 CIM Framework Interfaces

# Current State Trigger New State Action Comment


16 Shipped implementation nonexistent The instance of Lot is
dependent removed from the
MESFactory.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 167

4.6.2.7 Interface: LotFamily


Inherited Interface: NamedEntity
Description: This interface is a container for a collection of Lots that are related to each
other by virtue of the fact that each Lot resulted from the splitting and
joining of a parent or original Lot. As representative for the production
lifecycle for a group of Lots, LotFamily will be the root in the archive for
the Lots it has contained over time (even if the lot becomes empty due to
joins or scrap). In the majority of Factories, LotFamily will have the
unique Lot identifier that is then differentiated for the split Lots. One
LotFamily 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 in
the 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);

Technology Transfer # 93061697J-ENG SEMATECH


168 CIM Framework Interfaces

/* Returns the Product units scrapped for the LotFamily as a whole. Returns a null list if no
Product 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 independent
existence through a join or are completed. */
LotSequence archive ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 169

4.6.2.8 Interface: ProcessGroup


Inherited Interface: MaterialGroup
Description: ProcessGroup represents a Material aggregate used for processing in a
ProcessResource. Units of Product or parts are known to be in a process
together when they are members of the same ProcessGroup. The
ProcessCapability of the ProcessResource determines the size of the
ProcessGroup. The life of the ProcessGroup is determined by the time
spent at a ProcessResource. Information found within the
ProductSpecification associated with the ProcessGroup determines which
ProcessResource is used. This interface should be considered for
customization to the practices of a particular factory.
The services and attributes supporting membership in a ProcessGroup are
inherited from the inherited interface.
Exceptions:
/* An attempt was made to remove a Lot from the ProcessGroup that doesn’t exist in the
ProcessGroup. */
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 in
the 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 of
the 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.

Technology Transfer # 93061697J-ENG SEMATECH


170 CIM Framework Interfaces

4.6.3 Durable Management Component


The Durable Management Component provides for representing various types of Durables to be
used in the factory. This includes such things as cassettes to transfer wafers (or product), fixture
to place the product in the equipment, and reticles to make circuit patterns on a wafer. A
DurableManager provides lifecycle management and coordination of behavior for objects
representing Durables.
TransportGroup represents an aggregate of Material used for transportation in the Factory. Units
of Product (or parts) are considered to be traveling together when they are members of the same
TransportGroup. If the parts of a TransportGroup are actually moved separately, they appear, to
the remainder of the MES, to move as a unit due to encapsulation by the Material Movement
System. This interface is intended to be specialized for different movement systems.
The Durable Management Component Informational Model can be found in Figure 43. The
Durable Management Component contains the following interfaces:
• DurableManager
• Durable
• ProcessDurable
• MaterialContainer
• PositionalContainer
• Cassette
• TransportGroup
.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 171

Material MESFactory ComponentManager MaterialGroup

SupportResource
has

DurableManager

creates and manages


creates and manages
TransportGroup

Durable
1+
holds in
MaterialContainer Material

holds at position

ProcessDurable PositionalContainer
Product

Cassette holds at slot


is used in is used for Wafer

is contained in

ProcessCapability ProductSpecification Lot

Figure 43 Durable Management Component Information Model

Technology Transfer # 93061697J-ENG SEMATECH


172 CIM Framework Interfaces

4.6.3.1 Interface: DurableManager


Inherited Interface: ComponentManager
Description: The DurableManager provides services similar to those in the
ComponentManager but extends and enhances them to be applicable to
manage 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 the
requested 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 particular
identifier 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);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 173

/* Create an instance of a ProcessDurable, returning that instance. Raise the exception if the
particular 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 specific
ProcessCapability. */
ProcessDurableSequence processDurablesUsed
(in ProductSpecification aProductSpecification,
in ProcessCapability aProcessCapability)
raises (FrameworkErrorSignal,ProcessDurableNotFoundSignal);

Contracted Services: None.


Dynamic Model: Same as for the inherited interface ComponentManager.

Technology Transfer # 93061697J-ENG SEMATECH


174 CIM Framework Interfaces

4.6.3.2 Interface: Durable


Inherited Interface: Material
Description: The Durable interface represents any Material in the Factory used to
facilitate manufacturing but not normally consumed in the process. It is
capable 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 as
reticles, load boards, workholders) used by equipment or personnel in the
manufacturing process. Grouping of Durables (such as all reticles that are
usable for a given process) can be achieved by creating MaterialGroups for
the 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 other
entity.*/
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 may
be 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 a
Durable 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);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 175

/* 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 storage
unit.). */
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:

Technology Transfer # 93061697J-ENG SEMATECH


176 CIM Framework Interfaces

Durable
1 3
NOT
AVAILABLE IN USE
AVAILABLE
2 4
6 5 7

SCRAPPED

Figure 44 Durable Dynamic Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 177

4.6.3.3 Interface: ProcessDurable


Inherited Interface: Durable
Description: The ProcessDurable interface represents a specialized Durable used
specifically in the processing of a ProcessMachineJob on a
ProcessResource. It may include things like reticles and burn-in boards. It
is tied into ProcessSpecifications as they indicate which ProcessDurable
(or group of ProcessDurables) is required for a given operation within the
process.
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.

Technology Transfer # 93061697J-ENG SEMATECH


178 CIM Framework Interfaces

4.6.3.4 Interface: MaterialContainer


Inherited Interface: Durable
Description: A MaterialContainer interface represents any receptacle for holding
Material for transport, processing or storage. Examples of
MaterialContainers are shipping boxes, tubes, standard mechanical
interface (SMIF) pods, etc. Some MaterialContainers can be specialized as
PositionalContainers that have reference positions to hold the material in
the 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 to
add Material to an already full MaterialContainer and not when an addition of Material causes
the MaterialContainer to become full. */
void addMaterial (in Material aMaterial)
raises (FrameworkErrorSignal,MaterialContainerFullSignal);

/* Removes a specific Material from the MaterialContainer. Raises the exception if the Material
is 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 the
Material unloaded. Raises the exception if the method is called upon an empty
MaterialContainer. Specializations of this interface may override this method to unload and
return the Material in specific order. */
MaterialSequence unloadMaterialAll ( )
raises (FrameworkErrorSignal,MaterialContainerEmptySignal);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 179

/* Returns an unordered sequence of the Material contained. Specializations of this interface may
override 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.

Technology Transfer # 93061697J-ENG SEMATECH


180 CIM Framework Interfaces

4.6.3.5 Interface: PositionalContainer


Inherited Interface: MaterialContainer
Description: The PositionalContainer is a specialization of MaterialContainer that can
hold Material at specific locations. Specializations of this interface would
be made for specific industries. For example, the semiconductor industry
includes 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 hold
at any position. */
long getNominalSize ( ) raises (FrameworkErrorSignal);

/* Adds Material to a specific position number. Raises the exceptions if the position is invalid for
this 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 the
exceptions for either invalid position or unoccupied position in the PositionalContainer. If the
PositionalContainer is empty, the exception raised is still the unoccupied position exception and
not 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 are
empty. There is no assumed order to the sequence of positions returned. A null sequence returned
indicates 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. */

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 181

Material contentsOfPosition (in long position)


raises (FrameworkErrorSignal,PositionInvalidSignal, PositionEmptySignal);

/* Removes all Material. Returns the sequence of Material unloaded in the order of position
number. 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.

Technology Transfer # 93061697J-ENG SEMATECH


182 CIM Framework Interfaces

4.6.3.6 Interface: Cassette


Inherited Interface: PositionalContainer
Description: The Cassette interface represents containers used to hold and transport
Wafers that are specific to semiconductor manufacturing. Typically,
Cassettes contain multiple identifiable slots or pockets. Each slot can
contain a single Wafer. The Cassette has features to accommodate
automated 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 slot
if 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 target
Cassette. */
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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 183

4.6.3.7 Interface: TransportGroup


Inherited Interface: MaterialGroup
Description: The TransportGroup interface represents a Material aggregation used for
transportation in the Factory. Units of Product or parts are considered to be
traveling together when they are members of the same TransportGroup. If
the parts of a TransportGroup are actually moved separately, they appear
to move as a unit due to encapsulation by the Material Movement System.
This interface is intended to be specialized for different movement
systems.
The services and attributes supporting membership are inherited from the
inherited interface MaterialGroup.
The services and attributes supporting membership are inherited from
superinterface MaterialGroup.
Exceptions:
/* An attempt was made to remove a MaterialContainer from the transport group, but that
MaterialContainer 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 that


MaterialContainer is invalid for this TransportGroup for some reason such as it is not a positional
container 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 this


TransportGroup. Raises the exception if the MaterialContainer is invalid for this type of
TransportGroup. */
void addMaterialContainer (in MaterialContainer aMaterialContainer)
raises (FrameworkErrorSignal,InvalidMaterialContainerSignal);

/* Removes the MaterialContainer indicated from the TransportGroup. Raises the exception if
the MaterialContainer is not assigned to this Transport Group. */
void removeMaterialContainer (in MaterialContainer aMaterialContainer)
raises (FrameworkErrorSignal,MaterialContainerNotAssignedSignal,
MaterialContainerRemovalFailedSignal);

Technology Transfer # 93061697J-ENG SEMATECH


184 CIM Framework Interfaces

/* 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 associated
TransportJob.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 185

4.6.4 Consumable Management Component


The Consumable Management Component provides representations of various types of
Consumables to be used in the Factory for processing Product. This can include such Materials
as Chemicals, Gases, Wire, or Glue. A ConsumableManager provides lifecycle management and
coordination of behavior for objects representing Consumables.
It is expected that this component would interface closely with an enterprise system capable of
detecting low quantities and reordering supplies for the manufacturing environment.
The Consumable Management Component, shown in Figure 45, is composed of the following
interfaces:
• ConsumableManager
• Consumable

Material Component MES


Manager Factory

has a

Consumable Manager

Consumable

Figure 45 Consumable Management Component Information Model

Technology Transfer # 93061697J-ENG SEMATECH


186 CIM Framework Interfaces

4.6.4.1 Interface: ConsumableManager


Inherited Interface: ComponentManager
Description: The ConsumableManager provides services similar to those in the
ComponentManager but extends and enhances them to be applicable to the
Consumable management tracking and lifecycle. Note that Consumables
do not have a dynamic model with lifecycle states such as active, not
available, 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 the
requested 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 187

4.6.4.2 Interface: Consumable


Inherited Interface: Material
Description: The Consumable interface provides for the representation of any Material
in the Factory that is consumed or expended in producing the product.
This includes any gases, liquids or solids going into the production process
and any byproducts of the process.
Exceptions:
/* This exception is raised if the Consumable is asked to decrement its total quantity by more
than 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 this
Consumable was formerly in the NotAvailable state and this incremented quantity is now making
the Consumable available for production use, the Consumable state must also be changed to
Available. */
void incrementQuantityBy (in long numberOfUnits) raises (FrameworkErrorSignal);

/* Decrements this Consumable by the number of units indicated by the argument. The exception
is raised if there is not enough quantity remaining to decrement the amount requested. The
amount is not decremented from the remaining amount. If this decrement lowers the quantity to a
level that makes this Consumable unavailable for production, the Consumable’s state must be
changed 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.

Technology Transfer # 93061697J-ENG SEMATECH


188 CIM Framework Interfaces

4.6.5 Inventory Region Management Component


The intent of this component is to monitor material progress through, and the current population
of, conceptual locations in the factory. The framework term for the conceptual location is the
inventory region. An inventory region can be entered and exited by products and groups of
products. The inventory region can monitor a segment of a processing flow, a set of shelves, a
group of machines, an area on the factory floor, etc. A conceptual location is defined by the type
of locations being tracked and is best explained by examples.
Example 1: Inventory region monitoring a segment of a process flow
Due to the large number of steps in the process flow of a semiconductor wafer, many
managers 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 as
being in that group. Managers then monitor the amount of inventory at each group of steps
to check production progress.
Example 2: Inventory region monitoring a set of processing equipment
A supervisor is in charge of a set of processing equipment. This supervisor wants to know
how much product is queued for his area, how much is currently being processed and how
much processing has been done today. Here the equipment is grouped together and all
wafers queued or at those machines are viewed as being in that group. Each supervisor can
now monitor the total amount of inventory at their set of machines and the amount of
material that was processed.
An inventory region consists of two main items, something which represents a location the
product enters and exits (a step, a group of steps, a machine or a group of machines) and the
products. 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 region
can 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 inventory
regions in a factory. Each individual system consists of unique groupings of items which are
related to the product. These are the inventory region systems. Inventory region systems have
some 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 double
counting and non-reportable locations.
Example 3: Multiple inventory region systems
The system Factory Floor Areas and the system Processing Flow Regions could both
contain Lot100. The lot could be at the Tungsten Deposition Step in the Metal-1
inventory region for the Processing Flow Regions system and at the Sputter20 machine in
the Metal inventory region for the Factory Floor Areas system.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 189

The Inventory Region Management Component provides for monitoring material progress and
location at the factory level. An InventoryRegionManager provides for the definition of
InventoryRegionSystems, which contain InventoryRegions. Each InventoryRegion can then
monitor the movement (or lack of movement) of its part of the particular system that it is
contained in. InventoryRegions record a history of their entries and exits to provide monitoring
and statistics using the InventoryRegionHistory, InventoryRegionEvent, and
InventoryRegionEventData. An InventoryRegion may be updated directly or a RegionSensor can
provide an indirect link from the monitored location to the InventoryRegion. The LotRegion is a
specialization of InventoryRegion which monitors lots, understands that there is material in the
lots, 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 being
monitored.

Technology Transfer # 93061697J-ENG SEMATECH


190 CIM Framework Interfaces

Inventory
Region
Management
Inventory
Region
Manager

creates manages

Inventory
Region
System
is associated
with
RegionSensor

notifies
has
InventoryRegion History Material
is
associated
with

has
LotRegion Lot

Figure 46 Inventory Region Manager Component Information Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 191

4.6.5.1 Interface: InventoryRegionManager


Inherited Interface: ComponentManager
Description: The InventoryRegionManager provides services similar to those in its
inherited interface but extends and enhances them to be responsible for
creating and maintaining systems of inventory regions. It is also
responsible 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 is
automatically 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 the
sequence will be empty. */
InventoryRegionSystemSequence allInventoryRegionSystems ( )
raises (FrameworkErrorSignal);
/* Answer the names of the systems that have been defined for this manager. If there are no
systems 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 in
defined 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);

Technology Transfer # 93061697J-ENG SEMATECH


192 CIM Framework Interfaces

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 193

4.6.5.2 Interface: InventoryRegionSystem


Inherited Interface: NamedEntity
Description: An InventoryRegionSystem is a collection of InventoryRegions that
together provide complete coverage for the material of interest over a
selected 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 to
obtain complete coverage means material being monitored will appear
exactly once within the system; i.e., in only one and at least one of the
Inventory Regions in the system. Each InventoryRegionSystem also
maintains a user-defined order that may be used for reporting.
An example of this a system usage would be a system of LotRegions
measuring lot progress on a process flow. Alternatively, a system of
InventoryRegions may be attached to machines and storage units in the
factory for physical tracking of material. Another system could be made up
of InventoryRegions that serves to monitor Kanban inventory levels. Each
InventoryRegionSystem provides a different view of material in the
factory 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 is
automatically added to the system. If the name is a duplicate raise an exception. */
InventoryRegion createInventoryRegionNamed (in string identifier)
raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

Technology Transfer # 93061697J-ENG SEMATECH


194 CIM Framework Interfaces

/* Create a new, named InventoryRegion and return it to the sender. The new region is
automatically added to the system and positioned after the requested region in the default
sequence. 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 the
system. */
InventoryRegion changeNameForInventoryRegion_to
(inout InventoryRegion anInventoryRegion, in string identifier)
raises (FrameworkErrorSignal,DuplicateIdentifierSignal);

/* Remove a current InventoryRegion from the InventoryRegionSystem. If the region is being


used (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 InventoryRegion
precedes 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 sequence
will be empty. */
InventoryRegionSequence allInventoryRegions ( )
raises (FrameworkErrorSignal);

/* Answer the names of the regions that have been defined for this system. If there are no regions
the 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 195

4.6.5.3 Interface: InventoryRegion


Inherited Interface: OwnedEntity
Description: An InventoryRegion is a conceptual location in the factory that monitors
entry 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 a
machine or storage unit, or to some other construct. Some way to detect
entry and exit must be available.
InventoryRegions provide statistics based on standard queuing theory
models.
The concepts abnormal entry and abnormal exit provide for separating
some entries and exits for statistical purposes. An example of this is the
transfer of material from one step on the flow to another. This results in an
abnormal exit from the current InventoryRegion and an abnormal entry to
the 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);

Technology Transfer # 93061697J-ENG SEMATECH


196 CIM Framework Interfaces

/* 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 specific
time. */
MaterialSequence populationAt (in TimeStamp aTimeStamp)
raises (FrameworkErrorSignal);

/* Answer the average population over a specified time period. Since this measure is based on the
time period given, the units for this measure change based on this time period. Example: If the
time stamps represent the start and stop of a shift, the average population is for that shift. If the
time 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 is
implementation-dependent on the selection of normal exits, abnormal exits or both. Since this
measure is based on the time period given, the units for this measure change based on this time
period. Example: If time stamp represent the start and stop of a shift, the throughput is for that
shift. 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 still
in the InventoryRegion). */
MaterialSequence population (in TimeWindow timePeriod)
raises (FrameworkErrorSignal,TimePeriodInvalidSignal);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 197

/* Answer the collection of material that entered the region between startTime and endTime. If
no material entered, an empty collection is returned. If the time stamps represent the start and
stop of a shift, the entries are for that shift. If the time stamps represent the start and stop of the
day, 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 no
material exited, an empty collection is returned. If the time stamps represent the start and stop of
a shift, the exits are for that shift. If the time stamps represent the start and stop of the day, the
exits 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 be
calculated 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 the
InventoryRegion for 5 hours would have a cycle time of 5 hours, which averages to 5 hours since
there is only one material. If a second material has a cycle time of 3 hours, the average cycle time
is 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 the
total 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 is
defined: (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 in
tracking 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);

Technology Transfer # 93061697J-ENG SEMATECH


198 CIM Framework Interfaces

/* 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 enter
time is before the time period and the exit time is after the time period the duration is the entire
time period. If the exit is before the time period or the enter is after the time period, a duration of
zero is returned. This is the basis for statistical calculations. If the time period is invalid, raise
an 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);

/* Get the exit time for this InventoryRegion HistoryEvent.*/


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 the
InventoryRegion.*/
Duration age(in Material aMaterial) raises (FrameworkErrorSignal);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 199

/* Answer the cycle time of the Material in the InventoryRegion as a time duration. Non-cycle
time 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 of
the material to the InventoryRegion.*/
Duration cycleTime (in Material aMaterial) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


200 CIM Framework Interfaces

4.6.5.4 Interface: LotRegion


Inherited Interface: InventoryRegion
Description: A LotRegion is an InventoryRegion specialized to be attached to a
processing flow. It can handle the entry and exit of lots based on the
movement of the lot from step to step. It understands that lots are made up
of products so it can provide information about changes to the number of
products a lot has while it is in that LotRegion. It has statistics for scrap
loss, abnormal entry and exit, and other events particular to monitoring a
segment of a processing flow.
Normal entry into a LotRegion occurs when a lot enters the first step on
the segment being monitored by completing the last step on the prior
segment. It also occurs when a lot starts at the first step of a processing
flow. All other entries are categorized as abnormal.
Normal exit occurs when a lot exits by completing the last step on the
segment being monitored. All other exits are categorized as abnormal.
Since the LotRegion is monitoring lots and the product is traversing a
segment of the processing flow, lot movement is interpreted as product
movement by this specialized InventoryRegion.
LotRegions extend the InventoryRegion statistics to include the concept of
yield for a region which takes into account scrap loss between entry and
exit 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 for
the factory and the endTime is the time of the query. Yield = passed material / total material
where 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 the
population 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);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 201

/* 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 the
query. */
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 the
query. */
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 the
region during the time period, regardless of the enter time. If the time stamps represent the start
and stop of a shift, the yield is for that shift. If the time stamps represent the start and stop of the
day, 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 it
entered the region for this event. */
unsigned long getEnterQuantity (in HistoryEvent aHistoryEvent)
raises (FrameworkErrorSignal);

Technology Transfer # 93061697J-ENG SEMATECH


202 CIM Framework Interfaces

/* Answer the quantity (for example: number of wafer) that were contained in the lot when it
exited 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 time
period 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 event
during 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 on
the number of operations completed and the amount of product processed at each operation. If
the 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 specific
ProcessOperation. If the operation does not exist, the answer is zero. If the time period is
incorrect(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);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 203

/* 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.

Technology Transfer # 93061697J-ENG SEMATECH


204 CIM Framework Interfaces

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 several
InventoryRegionSystems. The location of interest (thing) has a sensor
which is notified on entry or exit of material. The sensor notifies
InventoryRegions, in different InventoryRegionSystems, interested in
these movements.
While the sensor provides an unobtrusive way of notifying
InventoryRegions, any object in the framework which uses them must be
able to find its own specific sensor and know when to send the enter and
exit messages.
For example: a CIM system could have a step in a flow
(ProcessOperation) holding onto RegionSensorXYZ. Every time a lot is
moved to that step, the step does RegionSensorXYZ enter (the lot) the
InventoryRegion registered with RegionSensorXYZ by doing
RegionSensorXYZ notifyOnEntry (theInventoryRegion). Now
RegionSensorXYZ will the notify this registered InventoryRegion on each
entry.
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 notify
interestedInEntry registrants. */
void abnormalEnter (in Material aMaterial) raises (FrameworkErrorSignal);

/* Notify the sensor that an abnormal exit happened for this sensor which will in turn notify
interestedInExit registrants. */
void abnormalExit (in Material aMaterial) raises (FrameworkErrorSignal);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 205

/* Notify the sensor that an entry happened for this sensor which will in turn notify
interestedInEntry registrants. */
void enter (in Material aMaterial) raises (FrameworkErrorSignal);

/* Note the sensor that an exit happened for this sensor which will in turn notify interestedInExit
registrants. */
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.

Technology Transfer # 93061697J-ENG SEMATECH


206 CIM Framework Interfaces

4.6.6 Bill of Material Specification Component


This component is used to define the specification of a Bill of Material (BOM) and uses the
Document Management component to provide the means for managing the many BOM
specifications that are present in the factory. Once a BOM specification has been created it is
then link to product specifications that uses the BOM.
The Bill of Material Specification Component Information Model can be seen in Figure 47. The
Bill of Material Specification Component includes the following interfaces:
• BOMSpecificationManager
• BOMSpecification
• BOMBody

MES Component
Factory Manager

has

BOM
Specification Manager

creates and manages

tells how to BOM provides


DocumentRevision
create Specification version
control

contains

Product BOMBody

Figure 47 Bill of Material Specification Component Information Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 207

4.6.6.1 Interface: BOMSpecificationManager


Inherited Interface: ComponentManager
Description: The BOMSpecificationManager is responsible for creating and managing
the Bill of Material specifications (maintains a collection) used by the
products 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 of
BOMSpecifications and sets the pointer to its Document. Priority indicates the main BOM and
alternative 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 sorted


by priority. */
BOMSpecificationSequence allBOMSpecifications_forProduct
(in ProductSpecification aProductSpecification)
raises (FrameworkErrorSignal);

/* Returns a set of all of the BOMSpecifications that are managed by the BOMSpecification
Manager. */
BOMSpecificationSequence allBOMSpecifications ( ) raises (FrameworkErrorSignal);

/* Finds a BOMSpecification. */
BOMSpecification findBOMSpecificationNamed (in string identifier)
raises (FrameworkErrorSignal, BOMSpecificationNotFoundSignal);

Contracted Services: None.


Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


208 CIM Framework Interfaces

4.6.6.2 Interface: BOMSpecification


Inherited Interface: NamedEntity
Description: The BOMSpecification interface is responsible for the specification of Bill
of Material. Instances of this interface contain a single-level of BOM
information for a product. This interface has a collection of child parts and
a required quantity that are required for a product. Usually the main BOM
and 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 that
is 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 this
BOMSpecification.*/
BOMBody createBOMBody (in ProductSpecification childProduct)
raises (FrameworkErrorSignal, DuplicateBOMBodySignal);

/* Remove and delete a BOMBody from the collection of BOMBod (ies) for this
BOMSpecification. */
void removeBOMBody (in BOMBody aBOMBody) raises (FrameworkErrorSignal);

/* Return all BOMBod (ies) of this BOMSpecification. */


BOMBodySequence allBOMBodies ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 209

4.6.6.3 Interface: BOMBody


Inherited Interface: NamedEntity
Description: The BOMBody interface is the body of the Bill of Material. Instances of
this interface represent one record of single-level of BOM information for
a 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.

Technology Transfer # 93061697J-ENG SEMATECH


210 CIM Framework Interfaces

4.6.7 Product Specification Management Component


This component provides the list of ProductSpecifications available for use in creating a Lot. As
with 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.

Product
Specification
Management
Component
Product
Process Specification
Flow < tracked
Manager
Context with Document
managed Revision
in >
v manages

Process
Flow
< navigated
Iterator with
Product
Specification < adheres to Lot
Job

Product requests build of >

Request

Figure 48 Product Specification Management Component Information Model

The information model shows the relationship between the component’s interfaces and other
interfaces external to the component. The principal entry point to the component is the
ProductSpecificationManager. It shows that a ProductRequest has a ProductSpecification for
definition of a Lot. The Lot can then use the ProductSpecification from the ProductRequest to
create its ProcessFlowContext.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 211

4.6.7.1 Interface: ProductSpecificationManager


Inherited Interface: ComponentManager
Description: The ProductSpecificationManager is responsible for creating and
managing the product specifications (maintains a collection) used by the
products 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 the
ProductSpecificationManager. */
ProductSpecificationSequence allProductSpecifications ( )
raises (FrameworkErrorSignal);

/* Finds a ProductSpecification. */
ProductSpecification findProductSpecificationNamed
(in string productSpecificationName)
raises (FrameworkErrorSignal,ProductSpecificationNotFoundSignal);

Contracted Services: None.


Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


212 CIM Framework Interfaces

4.6.7.2 Interface: ProductSpecification


Inherited Interface: NamedEntity
Description: The ProductSpecification interface is used to create process lots and
products. It is needed by the ProductRequest to produce the desired
product.
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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 213

4.7 Process Specification Management Group


The components that make up this group provide an architecture for the management and use of
CIM system process specifications. These components allow for use and manipulation within the
factory of online specifications of processes. These components support the generation of
machine-independent (effects-level) process specifications that are machine readable. The
components 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 of
Process Operation Specifications and the tracking the current Process Operation for a lot.
• Process Capability Management – provides the means for generically describing what
process operations ProcessResources are capable of performing.
This specification does not provide the components and interfaces needed to define process
specifications. It is meant to provide the limited interfaces necessary to support the use of the
pre-defined process specifications within a factory. These interfaces provide only the process
specification functionality required by the other components of the CIM Framework.
The process specification definition interfaces were part of the CIM Framework through the 1.4
revision as the Process Definition Management Component. They were removed from the
specification in the 1.5 revision with the expectation that they would be revised and reintroduced
for 2.0. However, in the subsequent deliberations of the Process Specification Focus Team, the
decision was reached to defer specification of the definitional aspects of process specifications
due to apparent competitive advantage concerns of a majority of the participants.

Process
Lot
Job
Specification
Management Product
Specification
tracks defines
progress with process for
Process
Specification

uses Lot
tracks
Process progress of
uses
Resource

can be
performed by Process
Capability

Figure 49 Process Specification Management Component Relationships

Technology Transfer # 93061697J-ENG SEMATECH


214 CIM Framework Interfaces

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 or
product’s location in a ProcessOperationSpecification sequence, and the step specific
information (e.g., recipe and durables).

Process
Specification
Management
Process Component
Specification
Manager

manages manages
Lot
Job

tracks
progress with
navigates flow with
Process Process
Flow Flow
Iterator Context tracks
progress of

has current has current

Lot
Product
Specification

Process
template for Process
Operation
Operation
Specification

uses

uses
uses uses

Process Process
Resource Capability

Figure 50 Process Specification Management Component Information Model

The relationship among components:


• ProcessOperationSpecification and ProcessOperation
A ProcessOperationSpecification is used by the ProcessFlowContext to create the
ProcessOperation. The ProcessOperationSpecification contains some static information that
is needed for scheduling and planning. It also has information that cannot be determined until
the ProcessFlowContext reaches the ProcessOperationSpecification and produces a
ProcessOperation. Currently, this information is not specified in the framework.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 215

• ProcessFlowContext and ProcessFlowIterator


A ProcessFlowIterator is used to navigate along the ProcessOperationSpecifications. It
maintains a current location in the ProcessOperationSpecification sequence and allows
navigation forwards or backwards from a given location until it reaches the beginning or end.
The ProcessFlowIterator offers visibility to alternative ProcessOperationSpecifications to
allow navigation through different paths. The ProcessFlowContext is similar to the
ProcessFlowIterator except that it adds the ability to produce a ProcessOperation from a
ProcessOperationSpecification.
The Process Specification Management information model shows relationships between the
interfaces 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 the
ProcessOperationSpecification sequence.
• The ProcessSpecificationManager creates the ProcessFlowContext for a specific lot using the
ProductSpecification.
• A ProcessOperation is derived from a ProcessOperationSpecification.
• ProcessOperationSpecification and ProcessOperation both reference a collection of
ProcessResources capable of performing the specified operation.
• A ProcessFlowContext can be used to create a ProcessFlowIterator where the current
ProcessOperationSpecification in the ProcessFlowContext is the current location in the newly
created ProcessFlowIterator.
• A ProductSpecification can also be used to create a ProcessFlowIterator where its starting
location is the first ProcessOperationSpecification for the ProductSpecification.

Technology Transfer # 93061697J-ENG SEMATECH


216 CIM Framework Interfaces

4.7.1.1 Interface: ProcessSpecificationManager


Inherited Interface: ComponentManager
Description: The ProcessSpecificationManager provides services similar to the
ComponentManager, but extends and enhances them to be applicable to
ProcessFlowIterator 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 operation
returns the ProcessFlowContext with the currentProcessOperation initialized to return the first
ProcessOperation 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 first
ProcessOperationSpecification in the flow. */
ProcessFlowIterator createProcessFlowIteratorFromProductSpecification
(in ProductSpecification aProductSpecification)
raises (FrameworkErrorSignal);

/* Create a ProcessFlowIterator based on the ProcessFlowContext provided as an argument. This


operation returns a ProcessFlowIterator with the currentProcessOperationSpecification initialized
to return the ProcessOperationSpecification corresponding to the currentProcessOperation of the
ProcessFlowContext.*/
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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 217

4.7.1.2 Interface: ProcessFlowIterator


Inherited Interface: NamedEntity
Description: This interface is used for the sole purpose of moving up and down on the
process flow. It maintains a current position and provides operations to
move forward and backward through the flow. This hides the structural
details of ProcessOperationSpecification navigation from other
components. When an iterator is created, it will either point to the first
ProcessOperationSpecification or to a specific
ProcessOperationSpecification based on the current pointer in the
ProcessFlowContext. Movement of the ProcessFlowIterator either
proceeds along the default path or is controlled explicitly through
ProcessOperationSpecification choices based on alternatives exposed by
the iterator. Backward movement follows the actual
ProcessOperationSpecifications traversed during the process flow’s history
when the ProcessFlowIterator is based on a ProcessFlowContext.
Backward movement will follow the most recently visited
ProcessOperationSpecification path when the ProcessFlowIterator is based
on a ProductSpecification.
Exceptions:
/* This exception is raised when there are no more ProcessOperationSpecifications in the
ProcessFlowContext 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 exception
NoMoreProcessOperationSpecificationsSignal. */
ProcessOperationSpecification getNextProcessOperationSpecificationOnDefaultPath ()
raises (FrameworkErrorSignal, NoMoreProcessOperationSpecificationsSignal);

/* Returns the ProcessOperationSpecification that is the previous in the backward traversal of the
flow. The operation will return the ProcessOperationSpecification previously visited or the prior
instance along the default path. If there are no more ProcessOperationSpecifications, raise the
exception NoMoreProcessOperationSpecificationsSignal. */
ProcessOperationSpecification getPreviousProcessOperationSpecification ()
raises (FrameworkErrorSignal, NoMoreProcessOperationSpecificationsSignal);

Technology Transfer # 93061697J-ENG SEMATECH


218 CIM Framework Interfaces

/* Returns a sequence of the ProcessOperationSpecifications that are next in the forward traversal
of the flow. If there are no alternatives the default ProcessOperationSpecification will be
returned in a sequence of one. The order of the returned ProcessOperationSpecifications is not
significant. If there are no more ProcessOperationSpecifications, raise the exception
NoMoreProcessOperationSpecificationsSignal. */
ProcessOperationSpecificationSequence
getAlternativeProcessOperationSpecifications ()
raises (FrameworkErrorSignal,
NoMoreProcessOperationSpecificationsSignal);

/* Updates the current ProcessOperationSpecification to the next default


ProcessOperationSpecification 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 previous


ProcessOperationSpecification visited in the flow. If there are no more
ProcessOperationSpecifications, raise the exception, but keep the pointer at the last known
ProcessOperationSpecification. */
void moveToPreviousProcessOperationSpecification ( )
raises (FrameworkErrorSignal, NoMoreProcessOperationSpecificationsSignal);

/* Updates the current ProcessOperationSpecification to the ProcessOperationSpecification


provided as an argument. If the target ProcessOperationSpecification is not reachable from the
currentProcessOperationSpecification, raise the exception
InvalidProcessOperationSpecificationMovementSignal. */
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 last


ProcessOperationSpecification 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 219

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 system
scheduling/planning.
This interface has static information that can be retrieved by other
components. It has some dynamic information definitions that will not be
resolved until a ProcessOperation is created by the ProcessFlowContext.
This resolution of dynamic information occurs within the Process
Specification Management component and is not exposed through the
interfaces.
A ProcessOperationSpecification defines an activity to be performed on a
ProcessGroup during one visit to a ProcessResource.
Exceptions:
/* This exception is raised when the ProcessResource requested is not assigned to this
ProcessOperationSpecification. */
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 specified
ProcessOperation. The order of the sequence may imply the priority of
ProcessResource selection. Returns NULL if no ProcessResources qualify. */
ProcessResourceSequence processResources ( ) raises (FrameworkErrorSignal);

/* Returns the set of durables required for this ProcessResource to perform this
ProcessOperationSpecification. 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 this
ProcessOperationSpecification. Returns NULL if no consumables are required. */
ConsumableSequence getConsumablesForProcessResource
(in ProcessResource aProcessResource)
raises (FrameworkErrorSignal, ProcessResourceNotAssignedSignal);

Technology Transfer # 93061697J-ENG SEMATECH


220 CIM Framework Interfaces

/* Returns the processing time required for this ProcessResource to perform this
ProcessOperationSpecification. */
Duration getProcessingTimeForProcessResource
(in ProcessResource aProcessResource)
raises (FrameworkErrorSignal, ProcessResourceNotAssignedSignal);
/*
Note for future consideration: These operations on ProcessOperation may also be needed for
ProcessOperationSpecification
- getRecipeforProcessResource
- getOperatorInstructions fPR
- getRequiredSetup fPR
- getSettings fPR
They 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 221

4.7.1.4 Interface: ProcessFlowContext


Inherited Interface: NamedEntity
Description: The purpose of this interface is to maintain where the product is in its
process flow and how the product gets to the next ProcessOperation
independent of how the flow is represented. It creates ProcessOperations
based on the current ProcessOperationSpecification. During the creation of
the ProcessOperation, the ProcessFlowContext resolves all dynamic
definitions in the ProcessOperationSpecification.
Exceptions:
/* This exception is raised when continueProcessing is requested for a Lot that is not in the
correct state to support a transition of the currentProcessOperation to the next ProcessOperation
in the flow. */
exception InvalidLotStateSignal { } ;

Published Events:
/* This event is posted when the Process Flow Context changes. This will
occur whenever the result of the currentProcessOperation operation would
change 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. The
ProcessFlowContext is associated with a specific Lot being processed. Conditionals and loops in
the process flow will be interpreted by the implementation of continueProcessing, but will not be
exposed 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 the


flow for the ProcessFlowContext. */
boolean isAtLastProcessOperation ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


222 CIM Framework Interfaces

4.7.1.5 Interface: ProcessOperation


Inherited Interface: NamedEntity
Description: The purpose of this interface is to give the specified runtime information
associated with the processing of a product. The dynamic information
defined in the ProcessOperationSpecification will be resolved by the
ProcessFlowContext. This information can then be used during processing
and stored as history. A ProcessOperation defines the activity to be
performed on each successive ProcessGroup in a designated
ProcessResource during a ProcessMachineJob.
Exceptions:
/* This exception is raised when the ProcessResource requested is assigned to this
ProcessOperation. */
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 possibly
perform the specified ProcessOperation.*/
ProcessCapability getProcessCapability ( ) raises (FrameworkErrorSignal);

/* Returns the sequence of ProcessResources that can possibly perform the specified
ProcessOperation. The order of the sequence may imply the priority of ProcessResource
selection. The returned sequence of ProcessResources is based on the appropriate
ProcessCapability. Returns NULL if no ProcessResources qualify. */
ProcessResourceSequence processResources ( ) raises (FrameworkErrorSignal);

/* Returns a Boolean on the comparison between ProcessOperations. This is not a test for
identity; 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 are
required. */
DurableSequence getDurablesForProcessResource
(in ProcessResource aProcessResource)
raises (FrameworkErrorSignal, ProcessResourceNotAssignedSignal);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 223

/* Returns the set of consumables for a specific ProcessResource. Returns NULL if no


consumables 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.

Technology Transfer # 93061697J-ENG SEMATECH


224 CIM Framework Interfaces

4.7.2 Process Capability Management Component


This component is used to identify generic capabilities of process resources and to maintain links
to those process resources capable of performing the operations the capabilities represent. It
provides for creation and maintenance of process capabilities. Process capabilities are used
primarily in support of process specification management.
Figure 51 is the Information Model for the Process Capability Management Component. The
interfaces represent the areas necessary for Process Capability support (i.e., Top-level
management of the Process Capability objects and their relationship to external components).

Process
Capability
Management
Component
Process
Capability
Manager

v manages

Process
Operation identifies Process < capable of
resources Capability performing Process
with >
Resource

Figure 51 Process Capability Component Information Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 225

4.7.2.1 Interface: ProcessCapabilityManager


Inherited Interface: ComponentManager
Description: The ProcessCapabilityManager interface is responsible for managing the
process 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 the
ProcessCapabilityManager. */
ProcessCapabilitySequence allProcessCapabilities ( ) raises (FrameworkErrorSignal);

/* Finds a ProcessCapability. */
ProcessCapability findProcessCapabilityNamed (in string processCapabilityName)
raises (FrameworkErrorSignal,ProcessCapabilityNotFoundSignal);

Contracted Services: None.


Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


226 CIM Framework Interfaces

4.7.2.2 Interface: ProcessCapability


Inherited Interface: NamedEntity
Description: The ProcessCapability interface provides the means to identify a set of
ProcessResources by a generic representation of the Process Operations
they are capable of performing. The ProcessCapability provides the means
by which processes can be specified independently of the equipment that
performs 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 this


ProcessCapability. */
void addProcessResource (in ProcessResource aProcessResource)
raises (FrameworkErrorSignal);

/* Remove a ProcessResource from the set of ProcessResources that can perform this
ProcessCapability. */
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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 227

4.8 Material Movement


The Material Movement Interfaces provide Interfaces from the Material Movement level
systems. This level of material movement is factory level movement, i.e., movement of product
and durables between machines or material locations. There may be multiple material movement
applications in the factory; however, the MaterialMovementManager is the only interface the
other 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 Job
Architecture. Therefore the interfaces are not in full alignment with the Job Architecture.

ComponentManager JobSupervisor Job

TransportJobSupervisor

registers and delegates to


creates and manages

MaterialMovementManager MaterialMovementController TransportJob

creates and
manages
Material Movement
Management Material Movement Abstract Interface Group

Figure 52 Material Movement Information Model

Technology Transfer # 93061697J-ENG SEMATECH


228 CIM Framework Interfaces

4.8.1.1 Interface: TransportJobSupervisor


Inherited Interface: JobSupervisor
Description: TransportJobSupervisor is an abstract interface that provides the
operations needed by clients to request, track and control material
movement within the domain of the specific TransportJobSupervisor. Any
entity that is responsible for moving material will inherit and implement
TransportJobSupervisor.
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 will
create a new TransportJob that will move a TransportGroup to the provided destination(the
source location is provided by the TransportGroup’s contained material). Actual material
movement 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 the
responsibility 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). The
material 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 can
contain 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, hence
the ability to throw exceptions for unsupported destination types.
The parameter for requester is the instance that will be notified when the TransportJob is
completed. The requester must implement the informJobCompleted method.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 229

If the TransportJobSupervisor already has a job for the given TransportGroup and a new create is
requested, it is an implementation detail as to how that is handled. Possibilities include a
cancellation of the current move and creation of a new move, waiting for the first move to
complete 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 the
TransportJobSupervisor can physically reach.*/
AreaSequence allReachableAreas ( ) raises (FrameworkErrorSignal);

/*Returns a sequence containing all of the Areas that the entities controlled by the
TransportJobSupervisor 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 this
TransportJobSupervisor can physically reach.*/
MachineSequence allReachableMachines ( ) raises (FrameworkErrorSignal);

/*Returns a sequence containing all of the Machines that the entities controlled by the
TransportJobSupervisor 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 this
TransportJobSupervisor can physically reach directly.*/
MaterialPortSequence allReachableMaterialPorts ( ) raises (FrameworkErrorSignal);

Technology Transfer # 93061697J-ENG SEMATECH


230 CIM Framework Interfaces

/*Returns a sequence containing all of the MaterialPorts that the entities controlled by the
TransportJobSupervisor 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 receiving
Material. */
void informMachineReadyforMaterialTransfer
(in Port aPort, in Machine aMachine, in TransportJob aTransportJob);

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 231

4.8.1.2 Interface: TransportJob


Inherited Interface: Job
Description: This type of Job performs a specific movement of material. The material
and the priority are in the TransportGroup. The ongoing status of the move
can be monitored by subscribing to the appropriate managed job events.
This is a abstract interface but concrete derivatives are unlikely to add new
interface.
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 used
at job creation can always be answered. Other queries should be answered if the component can
determine 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 job
executor may ignore this hint or it may try to do intelligent buffering or scheduling. Setting this
does 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);

Technology Transfer # 93061697J-ENG SEMATECH


232 CIM Framework Interfaces

/* 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 233

4.8.1.3 Interface: MaterialMovementController


Inherited Interface: TransportJobSupervisor
Description: A MaterialMovementController accepts transport requests, schedules them
and executes them in order to move material around the factory or a part of
the 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.

Technology Transfer # 93061697J-ENG SEMATECH


234 CIM Framework Interfaces

4.8.2 Material Movement Component


This component is concerned only with factory-wide material movement and not the movement
of 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 semiconductor
factory and have typically been implemented and integrated with a MES as a separate logical
software entity. An AMHS is made up of the Material Control Systems (MCS) (the software) and
the movement and storage machines (the hardware). In keeping with this tradition, the CIM
Framework views the AMHS as a blackbox where the interface into that system is important but
the inner workings and control of that system is the responsibility of the AMHS supplier and not
in 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 component
supporting material movement requires a single entry point for initiating material movement that
will be through the Material Movement Manager.
At the same time, the Material Movement Manager must be able to recognize and execute
transport jobs on many different AMHSs. Therefore, the Material Movement Manager will
register and manage one-to-many Material Movement Controllers that are the public interface to
the material control systems. The Material Movement Controller provides standard interfaces for
a variety of CIM Framework conformant MCSs. The low-level interaction of the material
movement controllers with the physical equipment (transport machines, storage machines, and
ports) is not within the scope of this component at this time. The MCS will handle the low level
interaction of material movement. Note that the component manager does not provide lifecycle
services for it’s managed material movement controllers. The interface for the component itself
is the MaterialMovementManager.
The Material Movement Component is designed to specify interfaces for the systems and
machines that schedule and execute material movement in a semiconductor factory. The actual
control of and interface to equipment is the responsibility of the Machine Management
Component. Inventory and tracking of material is handled by the Inventory Region Component
and Material Management.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 235

4.8.2.1 Interface: MaterialMovementManager


Inherited Interface: ComponentManager, TransportJobSupervisor
Description: A MaterialMovementManager accepts requests to move material via the
createTransportJob operations. It performs these TransportJobs by
breaking them into separate tasks to be performed by
MaterialMovementControllers. The MaterialMovementManager issues
requests to the specific MaterialMovement Controllers needed to complete
them.
Exceptions:
exception MaterialMovementControllerNotRegisteredSignal { };

Published Events: None.


Provided Services:
/* Add a MaterialMovementController to the collection of MaterialMovementControllers that the
MaterialMovementManager can use to carry out jobs. */
void registerMaterialMovementController
(in MaterialMovementController aMaterialMovementController)
raises (FrameworkErrorSignal);

/* Remove a MaterialMovementController from the list of resources available to the


MaterialMovementManager. 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.

Technology Transfer # 93061697J-ENG SEMATECH


236 CIM Framework Interfaces

4.9 Machine Control Group


This group provides the basic architecture to represent a Machine (i.e., equipment and its
correspondent support resources) in the Factory. It identifies the information and control
necessary for factory automation and interfacing. High level machine capabilities include: CIM
system interface and process execution. Figure 53 shows the relationships among the different
Machine components (within dotted line) and with other Factory components. For simplicity, this
figure has only the major relationships. The components and interactions between components
are presented in the following sections.

Advanced
Factory
Process
Operations
Control
requests and tracks provides
processing in settings and
tests results
for APC

informs PM
needed
Machine Recipe
Group manages recipes, Management
manages PM performs recipe
specifications for upload, download,
support and updates
resources

Resource provides
synchronization
Tracking for material
records
processing
movement history for

perform PMs for


support resources

Material History
Factory Labor
Movement Management

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 material
tracking interfaces

• Recipe Management: Provides recipe management and storage for process resources

• Resource Tracking: Tracks Machine’s support resources maintenance

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 237

4.9.1 Machine Management Group


A piece of equipment is an independent physical manufacturing tool that presents itself logically
as a single tool to the operator and/or host system. It may be manual or automated. An instance
of the interface Machine is the software representation for such a piece of equipment in the
Factory. Although it may communicate with the equipment’s control system, it is a part of the
CIM system and is available independent of the tool itself. The CIM Framework describes a
general Machine and one specialization: ProcessMachine The diagram below shows the group of
interfaces needed to define Machines. Some relationships to interfaces outside the group are also
displayed.

Machine Data Recipe


Area Resource
Register Collector Control

1+

Support
Resource

groups registers

Machine
Sensor Port
Resource
1+
has one or
more ports

Machine
Material
Tracking
has a
Location 1+

maintains
location of
Machine Process Process
Machine Resource
material
Group
1+

possible and
assigned Process
Material Capability

Figure 54 Machine Management Group Information Model

The Process Machine Management component implements the Job Supervision capability. It is
at this level (from the Factory System point of view) that work is actually performed. This
means simply that work requested of the ProcessMachine is not delegated to any lower level
entity known to the Factory System. As a result of this worker role, the interface responsible for
delegated work, the JobExecutor does not appear in this Job Supervision derivative. Derivatives
where it does appear include the Factory Operations and Product Request levels.

Technology Transfer # 93061697J-ENG SEMATECH


238 CIM Framework Interfaces

Machine JobRequestor

tracks progress

JobSupervisor LotJobExecutor Job

requests process job for


a process operation

performs
ProcessMachine ProcessMachineJob

performs
acts upon
1+

Process
ProcessGroup
Operation

Figure 55 Process Machine and Process Machine Job

The Process Machine Management component primarily exists to perform processing on groups
of product. For any ProcessMachineJob, it will perform a sequence of ProcessOperations
(usually one) on the specified product. Process Operations could include more operational steps
as 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).

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 239

4.9.1.1 Interface: SupportResource


Inherited Interface: Resource
Description: The SupportResource is an abstract interface that provides the ability for
different levels of detail for the state behavior of its child interfaces. It is a
software 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 for
SupportResources that have them. The PM interval is the calendar time,
process time, or units allowable from the time one PM is done until the
next 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. Return
true if successful. Note: Reserving a SupportResource may effect the reserver more than the
reserved. */
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 no
PMSpecification is associated. */
PMSpecificationSequence getPMSpecifications ()
raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: Same as Inherited Interface.

Technology Transfer # 93061697J-ENG SEMATECH


240 CIM Framework Interfaces

4.9.1.2 Interface: MachineResource


Inherited Interface: SupportResource
Description: This abstract interface corresponds to a physical subsystem on equipment
and representing the concept of a resource in a Machine performing some
type of work. Different subinterfacees of MachineResources are
specialized to perform different tasks. A specific Machine may be made up
of multiple MachineResources The methods for adding and removing a
MachineResource to a MachineResource or Machine were considered for
this interface. However, the consensus of the focus team was that these
are functions of a configuration application and that the machine would
provide this information at registration or if queried. The same goes for
the methods to set Vendor, Model Number, Serial Number, and
SoftwareVersion 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 the
Factory 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 Machine
identifier.*/

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 241

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 containing
Machine. */
Machine getContainingMachine ( ) raises (FrameworkErrorSignal);

/* Get the MachineResource this MachineResource is assigned to. Return null if there is no
containing 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 numeric
value (see SEMI E58 for the specific value assignment). The third and fourth character can be
alphabetic 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.

Technology Transfer # 93061697J-ENG SEMATECH


242 CIM Framework Interfaces

4.9.1.3 Interface: Machine


Inherited Interface: MachineResource, DataCollector
Description: The abstract interface representing the concept of a piece of equipment in
the factory. It is made up of zero, one, or many MachineResources and
SupportResources and at least one Port. Therefore, a Machine gives the
overall identity of the physical equipment existing in the factory. The key
to the Machine is that the Factory and CIM System Components talk to the
Machine or parts of the machine that it allows to be visible. The simplest
interface for the factory is at the machine level.
The Machine has an attribute location which corresponds to the physical
location of the equipment in the factory. The Machine also has a(one)
MaterialTrackingLocation per type of Material used, held or needed by the
Machine. The MaterialTrackingLocation differs from the SEMI concept
of MaterialLocation, which is the location of Material within a Machine
and of lesser interest to the Material Management Component or Material
Movement Component.
Setup definition on a Machine has not been agreed upon by the focus team
working at SEMATECH. Therefore, definition of setup is left as an
implementation detail.
Exceptions:
/* This signal is raised when an attempt is made to assign a Durable to a Machine to which it is
already assigned. */
exception DurableAlreadyAssignedSignal {Durable aDurable; } ;

/* This signal is raised when an attempt is made to deassign a Durable from a Machine to which
it 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)

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 243

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 coordinate
systems for tracking machine locations. This location does not relate to
MaterialTrackingLocation. */
string location( ) raises (FrameworkErrorSignal);

/*Set the MaterialTrackingLocation for this machine. This is the one location used for tracking
the particular material type that is in, at, or on this machine. Other material types can have a
separate 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 one
MaterialTrackingLocation per Material type used in the Machine.*/
MaterialTrackingLocationSequence getAllMaterialTrackingLocations ( )
raises (FrameworkErrorSignal);

/*Get the MaterialTrackingLocation of the type requested. Standard unit types can be found in
the SEMI E5 standard. */
MaterialTrackingLocation getMaterialTrackingLocation (in Unit aMaterialType)
raises (FrameworkErrorSignal);

/*Request a Machine ready itself to load material. This may involve communication between the
Port and the Machine Objects but these need not be public (or may involve communciation
between the Machine and the Equipment). The TransportJob may have a specific port as its
destination. The Machine may raise an exception if the specified Port is incorrect. Returns Null
if 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 refuses
to comply.*/
Port prepareToSendMaterial(in TransportGroup aTransportGroup)
raises (FrameworkErrorSignal, InvalidMaterialSignal);

/*Answer all Ports.*/


PortSequence allPorts ( ) raises (FrameworkErrorSignal);

Technology Transfer # 93061697J-ENG SEMATECH


244 CIM Framework Interfaces

/*Answers available ports. */


PortSequence allNotAllocatedPorts( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: Same as inherited Interface.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 245

4.9.1.4 Interface: ProcessMachine


Inherited Interface: Machine, JobSupervisor, RecipeControl
Description: ProcessMachine represents a device for processing product. There may be
more than one ProcessMachines as in the case of linked cells.
ProcessMachines are made of one or more ProcessResources as is in the
case of Cluster tools. ProcessMachine includes ProcessCapabilities of all
its associated ProcessResources.
Exceptions:
/* Intent to remove a ProcessCapability was not possible because it was not assigned to the
ProcessMachine. */
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 consumables


and fixtures and settings) of this ProcessMachine. These ProcessCapabilities must be in the
assigned list and are a list of the capabilities of each of its ProcessResources and the
ProcessCapabilities that are unique to the ProcessMachine. For example, a ProcessMachine may
have ProcessResources A and B. Separately they have ProcessCapabilities A1..A10, and
B1...B10, but the ProcessMachine has also C1..C10, that neither ProcessResource A or B has.*/
ProcessCapabilitySequence allCurrentCapabilities ( ) raises (FrameworkErrorSignal);

Technology Transfer # 93061697J-ENG SEMATECH


246 CIM Framework Interfaces

/* Answer a sequence of ProcessCapabilities representing setups allowed for this


ProcessMachine. This must be a subset of the total possible capabilities. Furthermore, it includes
the assigned ProcessCapabilities of all its ProcessResources and the ProcessCapabilities that are
unique to the ProcessMachine. */
ProcessCapabilitySequence allAssignedCapabilities( ) raises (FrameworkErrorSignal);

/* Answer a sequence of ProcessCapabilities representing setups possible for this


ProcessMachine capabilities. Furthermore, it includes the possible ProcessCapabilities of all its
ProcessResources and the ProcessCapabilities that are unique to the ProcessMachine. */
ProcessCapabilitySequence allPossibleCapabilities( ) raises (FrameworkErrorSignal);

/*Answer a sequence of ProcessCapabilities representing the current setup (configuration of


consumables, fixtures and settings of this ProcessMachine. This query gives a list of the
capabilities unique to the ProcessMachine and does not include the individual
ProcessCapabilities of the ProcessResources. These ProcessCapabilities must be in the assigned
list.*/
ProcessCapabilitySequence allCurrentProcessMachineCapabilities ( )
raises (FrameworkErrorSignal);

/*Answer a sequence of ProcessCapabilities representing the setups allowed for this


ProcessMachine. This query gives a list of the capabilities unique to the ProcessMachine and
does not include the individual ProcessCapabilities of the ProcessResources This must be a
subset of the possible capabilities.*/
ProcessCapabilitySequence allAssignedProcessMachineCapabilities ( )
raises (FrameworkErrorSignal);

/*Answer a sequence of ProcessCapabilities representing the possible setup of this


ProcessMachine. This query gives a list of the capabilities of the unique to the ProcessMachine
and 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 the


ProcessResources contained within the ProcessMachine.*/
ProcessCapabilitySequence allCurrentProcessResourceCapabilities ( )
raises (FrameworkErrorSignal);

/*Answer a sequence of ProcessCapabilities representing the setups allowed for each of the
ProcessResources contained within the Machine. */
ProcessCapabilitySequence allAssignedProcessResourceCapabilities ( )
raises (FrameworkErrorSignal);

/*Answer a sequence of ProcessCapabilities possible for each of the ProcessResources contained


within the ProcessMachine.*/
ProcessCapabilitySequence allPossibleProcessResourceCapabilities ( )
raises (FrameworkErrorSignal);

/*Set the current ProcessCapability of the ProcessMachine directly. */


void setCurrentCapability (in ProcessCapability currentCapability)
raises (FrameworkErrorSignal, NotAssignedCapabilitySignal);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 247

/* 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 possible


ProcessCapabilities. */
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);

/* Remove a ProcessCapability from the ProcessMachine’s collection of assigned capabilities. */


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 every


JobSpecification. 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” ProcessOperationSequ The ordered set of ProcessOperations to be
ence performed on the ProcessGroup by this Job.

/*
Contracted Services: None.
Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


248 CIM Framework Interfaces

4.9.1.5 Interface: ProcessMachineJob


Inherited Interface: Job
Description: The ProcessMachineJob is a specialization of the Job interface to include
information specific to performing a ProcessOperation. The extensions to
the Job interface reflect the additional parameters in the JobSpecification
at 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 249

4.9.1.6 Interface: ProcessResource


Inherited Interface: MachineResource
Description: The abstract interface representing a MachineResource subinterface that
processes the product. The ProcessResource performs its functions by
executing a given set of processing instructions (known as a
ProcessOperation) for the product with a given set of resources and tools.
Finally, the ProcessResource cooperates with Process Control to
dynamically modify processing parameters to reflect the conditions of the
ProcessResource 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 of
consumables and fixtures) of this ProcessResource. This ProcessCapability must be in the
assigned 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);

Technology Transfer # 93061697J-ENG SEMATECH


250 CIM Framework Interfaces

/* Answer a sequence of ProcessCapabilities representing setups allowed for this


ProcessResource. This must be a subset of the total possible capabilities. */
ProcessCapabilitySequence assignedCapabilities( )
raises (FrameworkErrorSignal);

/* Answer a sequence of ProcessCapabilities representing setups possible for this


ProcessResource. 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).

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 251

4.9.1.7 Interface: Port


Inherited Interface: SupportResource
Description: The Port represents the point at which a change of ownership occurs
during a material transfer. Each Port has at least one associated Machine
and the Port may be thought of as an access point to the Machine.
Reservation and change of states from Available to NotAvailable are done
through 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 can
refuse 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. The
CIM systems group feels that the MES system does not need all the detail
described in the Port Model defined in SEMI E30 but that this model
should not conflict with it.
This Dynamic Model is an inherited model(from Resource) and it has been
extended to provide the needed functionality.

Technology Transfer # 93061697J-ENG SEMATECH


252 CIM Framework Interfaces

AVAILABLE NOTAVAILABLE

READY

NOT
RESERVED
5 6 3

RESERVED
RESERVED
TO
TO SEND
RECEIVE
4

7 NOT READY 8

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 available boolean isAvailable(); from
for interaction. The port may the inherited interface
already be performing a load
or unload, or may be allocated
to the equipment
NOTAVAILABLE None Port is not available for boolean isNotAvailable();
dispatching or scheduling from the inherited interface.
because it has not being
initialized internally.
AVAILABLE READY Port is available for boolean isReady ();
dispatching or scheduling.
The port may be reserved by
the Factory to send or receive
material or be in the
Load/Unload active states
(See SEMI E30).

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 253

State Substate Definition Query for State via


AVAILABLE NOT READY Port is available but is not
acccepting reservations
because it is currently making
a transition from completing
the loading/unloading of
material or it may be
initializing. This is equivalent
to the Alocated to Equipment
state (See SEMI E30).
READY NOT RESERVED Port is available for boolean isNotReserved ();
dispatching or scheduling, and
the port is not reserved for
loading or unloading. This is
similar to the Allocated to
Equipment state (See SEMI
E30).
READY RESERVED TO Port reserved to receive new boolean
RECEIVE material or work. An event is isReservedToReceive ();
triggered to indicate to the
host that the Port is Allocated
to Load and to indicate the
start of the load once material
is received (See SEMI E30).
READY RESERVED TO Port reserved to send new boolean isReadyToSend ();
SEND processed material or work.
An event is triggered to
indicate host when the Port
has reached Allocated to
Unload and to indicate the
start of the unload (See SEMI
E30).

Technology Transfer # 93061697J-ENG SEMATECH


254 CIM Framework Interfaces

Table 21 Port State Transition Table


# Current State Trigger New State Action Comment

1 Unknown Registration of Port NOTAVAILAB None Port must be


LE made
AVAILABLE
before it can be
reserved.
2 NOTAVAILAB makeAvailable() or NOT READY This is a state to At the end of the
LE an event generated by synchronize the makeAvaila-
the equipment. physical port. The ble(), the Port
host cannot transitions to the
access the Port NOT
RESERVED
default state.
3 AVAILABLE makeUnavailable() NOTAVAILAB Port may be out
or an event generated LE of service and is
by the equipment. being removed to
avoid scheduling
or dispatching.
4 NOT READY Port makes transition NOT PortStateChanged This is an
from Allocated to RESERVED Event published. internal trigger
equipment to Not Waiting for Port when the Port
Allocated. (SEMI to complete reaches the Not
E30) initialization or Allocated state.
transition to the
Not Allocated
state (See SEMI
E30).
5 NOT void RESERVED TO PortStateChanged Indicates when
RESERVED prepareToReceiveMat RECEIVE Event and the Port
erial (in TransportJob PortAvailableEve transitions from
aTransportJob); sent nt published the Assigned to
to reserve the port to accordingly. Load to the Load
be ready for material Active state. (See
to be deliver. SEMI E30)
6 NOT void RESERVED TO PortStateChanged Indicates when
RESERVED prepareToSendMateri SEND Event and the Port
al (in TransportGroup PortAvailableEve transitions from
aTransportGroup); nt published the Assigned to
sent to reserve the accordingly. Unload to the
port to unload Unload Active
processed material . state. (See SEMI
E30)

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 255

# Current State Trigger New State Action Comment


7 READY This transition is NOT READY PortStateChanged
triggered internally Event published
after the Port
concluded loading or
unloading material
and is Allocated to
Equipment.
8 READY Transition triggered NOT READY None Permitted only if
by a change of the Port has not
reservation of the reached the Load
Port. Using the or Unload Active
Unreserve() service. states (See SEMI
E30).

Technology Transfer # 93061697J-ENG SEMATECH


256 CIM Framework Interfaces

4.9.1.8 Interface: MaterialTrackingLocation


Inherited Interface: OwnedEntity
Description: Abstract interface. A MaterialTrackingLocation is a place where Material
may be held. The "type" of the location is based on the type of Material
that 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 an
MES each machine has one MaterialTrackingLocation of each type. In the
SEMI OBEM model a machine may have more than one
MaterialLocation, but this is internal to a machine and not within the MES
concern(or focus anyway). Currently we have discussed the idea of an
object(or of MaterialTrackingLocation as having an attribute of type) that
may have a Material Tracking Location such as a table or rack, but have
not found a suitable name for this object or interface. The
MaterialTrackingLocation 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);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 257

/*Answer the Machine that holds this MaterialTrackingLocation, return nil if this is a
MaterialTrackingLocation 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 the
MaterialTrackingLocation is to hold wafers, the type could be wafer. If it was a particular size of
Wafer, the format could be 200mmWafer. This set of types should be standardized on a list of
Material formats for each given industry. For the semiconductor industry that set of standards
should 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 the
MaterialTrackingLocation has available capacity in which more material could go. */
boolean hasAvailableCapacity ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


258 CIM Framework Interfaces

4.9.1.9 Interface: Sensor


Inherited Interface: SupportResource, DataCollector
Description: Sensor is a interface that may or may not be associated with a
MachineResource. It can standalone to collect data. For example, the
barometer or humidity detector can be used to collect the information in a
bay.
Exceptions: None.
Published Events: None.
Provided Services:
/*returns the MachineResource that this Sensor is assigned to, return null if the sensor is not
asssigned or is a standalone sensor.*/
MachineResource getMachineResource ( ) raises (FrameworkErrorSignal);

Contracted services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 259

4.9.2 Recipe Management Component


Recipe Management provides a management approach for applying machine recipes across the
factory. Recipes for multiple machines of the same process capability using the same recipe
syntax are managed by specializing the recipes based on specific machine settings.
Typically there will only be one Recipe Management System from which recipes will be
managed and distributed to the processing equipment in the factory. It is also possible that there
may be more than one Recipe Management System that can be used to manage recipes based on
area groupings or types of equipment. The RecipeNamespaceManager of each available Recipe
Management System should be registered in a trader service.
The Recipe Management System is composed of a RecipeNamespaceManager, a
RecipeNamespace and a set of managed recipes. Figure 57 represents a view of the Recipe
Management System and its associated components. A RecipeNamespace stores and manages a
set of MachineRecipes. There may be multiple RecipeNamespaces registered within a
RecipeNamespaceManager, one for each shared set. A RecipeNamespace could manage recipes
used for multiple type of machines. Another RecipeNamespace could manage recipes only for
one or more machines of the same type. To be recognized by the system, all RecipeNamespaces
must register with a RecipeNamespaceManager. The RecipeNamespaceManager could manage
one or more RecipeNamespaces or be associated with just one RecipeNamespace. A trader
service must be available to recognize all the RecipeNamespace Managers found in the factory.

Component Named
Manager Entity

Recipe manages contains


Recipe Machine
Namespace
Namespace Recipe
Manager
1+

Recipe Management
Component (Factory Level)

Recipe
Control
Transfers
recipes
to/from

Process
Machine associated with

Figure 57 Factory Level Recipe Management

Technology Transfer # 93061697J-ENG SEMATECH


260 CIM Framework Interfaces

A ProcessMachine is a type of RecipeControl as a minimum requirement. Thus a


ProcessMachine is a Recipe Agent in SEMI E42 [SEMI96] terminology. RecipeControl stores
recipes for short term use but these stored recipes are not managed. A ProcessMachine may also
provide formal management of process recipes by implementing a RecipeNamespace and a
RecipeNamespaceManager. It must be recognized that ProcessMachines receive a
MachineRecipe and a set of Machine Specific Data (shown as an interface for illustration
purposes), which are merged and transfered to the equipment as Execution Recipes. At the
factory level, the Recipe Management System is only concerned with the management and
storage of generic recipes with default parameters. These parameters are overwritten with
machine specific data when the recipe is downloaded to the specific Process Machine. The
attributes set during creation, update, download, and verification of recipes include the recipe
body and the default settings - each defined using the OMG
CosPropertyService::Property typedef [CosProp]. Property is a Named Value
pair which includes the name and a value of any appropriate type. The collection of parameters
are defined as a sequence of Property’s using the OMG
CosPropertyService::Properties typedef (some parameter attributes and values are
based on SEMI E42. See the standard for more detail). The Properties includes a machine
recipe descriptor, its body and a set of specific data parameters associated with the selected
process machine. They are merged during the download of the recipe.
The Machine Specific Data may reside in the RecipeNamespace, Document Management or be
stored at the ProcessMachine. The choice is implementation dependent. There is only one set of
Machine Specific Data associated with a particular Process Machine. RecipeControl can be
implemented as part of the Machine Component or as a part of the Recipe Management System.
Recipe Management at the Machine Management Component includes the RecipeControl
interface. Note that the implementer may choose to implement a complex system with
additional interfaces for recipe management as part of the Machine Management Component or
implement a separate and independent interfaces for recipe management. The Recipe Agent
may contain a RecipeNamespace Manager, RecipeNamespace and a RecipeControl, or just a
RecipeControl in the simplest case.
It must be noted that it was initially chosen to include the ProcessResources to inherit from
RecipeControl to include the case where you have a cluster tool that is capable of managing its
own recipes at the process module level. However, this proposal includes the scope of the
Recipe Controller only at the ProcessMachine Level. A given cluster tool implementation could
also provide RecipeControl interfaces, but it is not required by the CIM Framework.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 261

4.9.2.1 Interface: MachineRecipe


Inherited Interface: NamedEntity
Description: A MachineRecipe is an object that contains the attributes, that include
information needed to manage the recipe, variable parameter definitions,
and the recipe body. The recipe contents include the pre-planned and
reusable settings and instructions to the machine that determines the
processing required for the material in the process resource. Recipes may
be 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 to
SEMI E42. */
Properties getRecipeContents( ) raises (FrameworkErrorSignal);

/* Get the recipe’s verified state. The setting of this parameter is implementation dependent but
must 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 but
must 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 but
must 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 dependent
but 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.

Technology Transfer # 93061697J-ENG SEMATECH


262 CIM Framework Interfaces

4.9.2.2 Interface: RecipeNamespaceManager


Inherited Interface: ComponentManager
Description: A RecipeNamespaceManager manages RecipeNamespaces that may be
shared across multiple ProcessMachines with the same recipe syntax. For
detailed description of recipe namespace manager, see SEMI E42-96 or
later.
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);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 263

/* Get ProcessMachines for RecipeNamespace. Returns NULL if no ProcessMachine has been


assigned. */
ProcessMachineSequence getProcessMachineForRecipeNamespace
(in RecipeNamespace aRecipeNamespace)
raises (FrameworkErrorSignal, RecipeNamespaceNotFoundSignal);

Contracted Services: None.


Dynamic Model : None.

Technology Transfer # 93061697J-ENG SEMATECH


264 CIM Framework Interfaces

4.9.2.3 Interface: RecipeNamespace


Inherited Interface: NamedEntity
Description: A RecipeNamespace is a repository for managing MachineRecipes that
may be shared across multiple ProcessMachines that use the same recipe
syntax and semantics. A RecipeNamespace may be provided by a
RecipeNamespaceManager as well as by the ProcessMachine. The later
scenario is not included in this document since it is implementation
dependent.
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 update
usage. */
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);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 265

/* 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 the
recipe in a managed document repository. For detail information on the recipe contents refer to
SEMI 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 on
business rules. This method is provided to update recipe contents in the RecipeNamespace. Its
behavior is not the same as the one used to update parameter settings in the selected recipe for
the 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 the
RecipeNamespace. 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);

Technology Transfer # 93061697J-ENG SEMATECH


266 CIM Framework Interfaces

/* 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 267

4.9.2.4 Interface: RecipeControl


Inherited Interface: NamedEntity
Description: Abstract interface implemented with the Machine Group. A RecipeControl
transfers, stores, and controls recipes for a ProcessMachine. It is the only
object that is guaranteed to understand the recipe and its contents (body
plus parameter attributes). It verifies the recipe syntax, select recipes, and
prepare them for execution. The update of parameters requires calls to
operations on the ProcessMachineJob for the ProcessMachine using the
RecipeControl 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);

Technology Transfer # 93061697J-ENG SEMATECH


268 CIM Framework Interfaces

/* 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 setting
definition 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 specific
Properties 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 or
operator 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 269

4.9.3 Resource Tracking Component


The Resource Tracking Component is used to aid in the support of defining, scheduling, and
tracking SupportResources and their maintenance. SupportResources are the software reflection
of physical equipment and fixtures such as reticles. Some relationships to interfaces outside the
group are also displayed. The Resource tracking manager monitors factory events to determine
status of SupportResources in regards to their PM requirements.

Component
JobSupervisor
Manager

Resource Tracking
Component

informs
PM
Activity
Resource due Factory
Tracking
Supervisor
Manager
compares
PM Job with PM
interval

defines stored in
PM Document
Specification Revision
performs

reserves resource for PM


Support
Resource

assigned to

requests PMJob
Person

Figure 58 Resource Tracking Information Model

Technology Transfer # 93061697J-ENG SEMATECH


270 CIM Framework Interfaces

4.9.3.1.1 Interface: ResourceTrackingManager


Inherited Interface: ComponentManager, JobSupervisor
Description: The Resource Tracking Manager manages a list of Support Resources and
associated PM Specifications. Its interfaces provide mechanisms for
tracking and informing when maintenance is needed for a support
resource.
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 has


changed for future PMActivity monitoring. */
PMSpecificationChangedEvent

Provided Services:
/* Answer the support resources for which a PM activity is due now. Returns NULL if no PM is
now due.*/
SupportResourceSequence allPMActivitiesDueNow( ) raises (FrameworkErrorSignal);

/*Find all PMActivities due for allSupportResources for which the ResourceTrackingManager is
responsible 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 the
ResourceTrackingManager is responsible for during a designated time period. Returns NULL if
no 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 which
the ResourceTrackingManager is responsible for. Returns NULL if no PM is due.*/
PMActivitySequence allAreaPMActivitesDueNow(in Area anArea)
raises (FrameworkErrorSignal);

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 271

/*Answer the number of wafers or runs able to be processed before a PMActivity is due for a
particular 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 be
raw time or the internal logic may calculate the time based on the expected amount of Process
time.*/
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 PM
is 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 the


ResourceTrackingManager tracks the PM interval. */
void addSupportResource (in SupportResource aSupportResource)
raises (FrameworkErrorSignal, SupportResourceAlreadyAssignedSignal,
SupportResourceDuplicateSignal);

/* Remove a SupportResource from the set of SupportResource for which the


ResourceTrackingManager tracks the PM interval. */
void removeSupportResource (in SupportResource aSupportResource)
raises (FrameworkErrorSignal, SupportResourceNotAssignedSignal,
SupportResourceRemovalFailedSignal);

/* Answer a sequence of all SupportResources for which the ResourceTrackingManager tracks


the PM interval. Returns NULL if no SupportResources. */
SupportResourceSequence allSupportResources ( ) raises (FrameworkErrorSignal);
SupportResource findSupportResourceNamed (in string aSupportResource)
raises (FrameworkErrorSignal, SupportResourceNotAssignedSignal,
SupportResourceNotFoundSignal) ;

Technology Transfer # 93061697J-ENG SEMATECH


272 CIM Framework Interfaces

/* 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 aware


of.*/
PMSpecificationSequence allPMSpecifications ( ) raises (FrameworkErrorSignal);

/*Find a PMSpecification by name. */


PMSpecification findPMSpecificationNamed (in string identifier)
raises (FrameworkErrorSignal, PMSpecificationNotFoundSignal) ;

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 273

4.9.3.1.2 Interface: PMSpecification


Inherited Interface: NamedEntity
Description: The PMSpecification is an interface that documents the Maintenance
schedule for SupportResources. The creation of PMSpecificaton is
internal to the component. The component uses document and version
management to control the document. The event
SuppportResourceAddedEvent indicates changes in the PM requirements
of 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 this


PMSpecification serves. */
SupportResourceAddedEvent

Provided Services:
/*Add or remove a SupportResource from the list of SupportResources with this
PMSpecification. */
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 SupportResources


are 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);

Technology Transfer # 93061697J-ENG SEMATECH


274 CIM Framework Interfaces

/* Get all PM definitions for this PM Specification Returns NULL if no PMDefinitions are
assigned. */
PMDefinitionSequence allPMDefinitions( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 275

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 no
SupportResources 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 the
ProcessOperationSpecification used in ProcessMachineJob. */
PMActivity getPMActivity ( ) raises (FrameworkErrorSignal);

/*Additional JobSpecification Parameters


Name Value Type Description
PMActivity PMActivity Details time required for PMS
and the description of the task,
the skills needed to perform and
the type of PM
Persons PersonSequence Persons assigned to perform the
job
SupportResource SupportResource Object requiring PM

*/
Contracted Services: None.
Dynamic Model: Same as Inherited Interface.

Technology Transfer # 93061697J-ENG SEMATECH


276 CIM Framework Interfaces

4.10 Advanced Process Control Group


The Advanced Process Control Group provides the capability to integrate supervisory control
functions with the factory CIM system using a small set of component interfaces provided by an
equally small set of classes. The components are defined principally along boundaries where
suppliers are anticipated to offer to provide products meeting the needs of process control in the
factory. However, several component boundaries are drawn to allow implementers freedom to
locate processes in multiple servers without cutting component boundaries. This is arbitrary, as
there is nothing in the CIM Framework Specification that prevents a component from consisting
of multiple processes running on different servers; however, commonly a provider will wish to
maintain component integrity in an implementation. It is anticipated that some suppliers may
offer multiple components, perhaps all of the components specified in this group. The component
boundaries provide the customer flexibility to use multiple suppliers’ products even when the
principal supplier provides a conformant component.
The scope of the group is at the supervisory level, meaning this is a CIM specification, not a
specification for tool-level, real-time control. The interfaces proposed support a control
granularity of no finer than wafer-to-wafer adjustments, and such APC applications as fault
detection and classification and run-to-run feedback and feedforward control spanning one or
more 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 can
communicate with a tool or set of tools providing process control unaware of the details of how
that control is carried out.

Machine
Group

requests process
control actions

stores short-term
control data Control
DataBase
Control
provides plugins Executor
stores
historical data

Plugin provides control


Management strategies
History
execute plug-
ins
provides Control
plugin Manager
context
Plugin
Executor

Figure 59 Advanced Process Control Group

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 277

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 the
ControlExecutionManager, which inherits the interface of a JobSupervisor. A specialization of
the Job interface, in the form of a ControlExecutor, is created to carry out the activities of the
requested control job.
This specification assumes that the OMG Trading Object Service [CosTrade] is utilized by the
CIM Framework. In general, this service facilitates the offering and the discovery of instances of
services of particular types. A trader is an object through which other objects can advertise their
capabilities and match their needs against advertised capabilities. Advertising a capability or
offering a service is called export. Matching against needs or discovering services is called
import. In the Process Control specification, Control Strategies include the definition of
capabilities 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 of
PlugInExecutor and a property of Matlab, for example, if the PluginExecutor is capable of
executing Matlab plugins. The Control Executor Manager, upon initial examination or
subsequent execution of the Control Strategy, will obtain a sequence of offers or object
references to capable Plugin Executors by importing a service type of PlugInExecutor and a
constraint of Matlab. The Control Executor Manager may choose from this sequence of capable
Plugin Executor offers.
It is also assumed that the Control Management and Plugin Management components will
involve document management and versioned objects. For example, the Control Manager
manages Control Strategy objects. There may be multiple versions of a particular Control
Strategy object. The issue of how to provide version control, signoff, and effectivity are issues
that will be addressed at some point by the Specification Management Focus Team. This design
may 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 Management
Focus Team version control specifications will likely impact the design of this group. Until this
time, Process Control specifications do not explicitly provide document management and version
control interfaces.

Technology Transfer # 93061697J-ENG SEMATECH


278 CIM Framework Interfaces

4.10.1 Plugin Management Component


The Plugin Management Component provides management and retrieval for control plugins. It
consists of two interfaces that cooperate to implement control algorithms in the CIM system. The
flexibility is present to employ algorithms developed using third-party tools know by control
engineers or to utilize algorithms from a restricted set known only internally to the system.

Component
Manager

Plugin Plugin
manages
Manager Factory

creates, deletes

Plugin

PLUGIN MANAGEMENT

Figure 60 Plugin Management Component Information Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 279

4.10.1.1 Interface: PluginFactory


Inherited Interface: NamedEntity
Description: The PluginFactory provides interfaces required to create a plugin, lookup a
specific plugin, or to provide a sequence of plugin descriptions (may be
used 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.

Technology Transfer # 93061697J-ENG SEMATECH


280 CIM Framework Interfaces

4.10.1.2 Interface: PluginManager


Inherited Interface: ComponentManager
Description: The PluginManager is responsible for supporting the registration and
control (enabling/disabling) of this component. It provides an interface to
provide a factory.
Exceptions: None.
Provided Services:
/* Allows the engineer doing the configuration or importing of a Plugin to get a reference to the
required factory. At runtime the PluginExecutor uses this method to get the factory for doing
lookup. */
PluginFactory getPluginFactory ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 281

4.10.1.3 Interface: Plugin


Inherited Interface: NamedEntity
Description: The Plugin encapsulates the code to do a specific control calculation
according to a specific algorithm. The Plugin is intended to be used to
incorporate algorithms developed on third-party platforms into the CIM
environment for use in process control applications for a semiconductor
fab. The universe of Plugins available to the CIM system can be either
closed 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. defined
for 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 capabilities
required of plugin executors to execute this plugin. The control executor will obtain a capable
plugin executor by querying the trader. */
PluginDescription getDescription ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


282 CIM Framework Interfaces

4.10.2 Plugin Execution Component


The information model, Figure 61, shows the relationship between the PluginExecutor and the
Plugin Management Component.

Component
Manager

Plugin
Plugin is executed by
Executor

PLUGIN EXECUTION

Figure 61 Plugin Execution Component Information Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 283

4.10.2.1 Interface: PluginExecutor


Inherited Interface: ComponentManager
Description: The PluginExecutor provides execution environments for application
plugins. This is isolated as a component to allow suppliers of Plugin
products to build custom versions to handle their products for Framework
applications. In a typical implementation scenario, the control executor
would be the user of the services of the plugin executor described below.
The plugin object would contain a specification of the capabilities a plugin
executor must provide to execute the plugin. Using this specification, the
control executor would find a plugin executor with the required
capabilities 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 execution
environment. */
void unsetupPlugin (in PluginHandle aPluginHandle)
raises (FrameworkErrorSignal,
BadPluginHandleSignal, UnableToUnSetupSignal);

Contracted Services: None.


Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


284 CIM Framework Interfaces

4.10.3 Control Management Component


This component contains and manages the objects that describe and direct process control. A
description of the operations for control are encapsulated in the ControlStrategy object. The
RunningStrategy contains a copy of (or pointer to) a ControlStrategy. The RunningStrategy uses
its copy to provide process control operation tracking to the ControlExecutor. The Control
Management Component interface provides methods for creation, lookup, status, and control to
other components.

Component Control
Control
Manager Strategy creates
Strategy
Factory

is provided by is held by

Running
Control
selects Control
Manager
Strategy
*
provides

creates, deletes

Running
Control
Strategy
Factory

CONTROL MANAGEMENT

Figure 62 Control Management Component Object Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 285

4.10.3.1 Interface: ControlManager


Inherited Interface: ComponentManager
Description: This provides the interface for managing the Control Management
component, as well as looking up the Factories for ControlStrategies and
RunningControlStrategies. This interface also provides methods for
accessing or selecting a RunningControlStrategy at run-time based upon
the 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 ExecutionContext


passed. */
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.

Technology Transfer # 93061697J-ENG SEMATECH


286 CIM Framework Interfaces

4.10.3.2 Interface: ControlStrategyFactory


Inherited Interface: NamedEntity
Description: The ControlStrategyFactory interface provides the means for a process
engineer to configure the ControlStrategy with its implementation objects
and 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 287

4.10.3.3 Interface: RunningControlStrategyFactory


Inherited Interface: NamedEntity
Description: The RunningControlStrategyFactory interface provides the means to find
and access the running control strategies that are managed by the Control
Manager 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 that


partially 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 that


exactly match the ExecutionContext that started the RunningControlStrategy. */
RunningControlStrategy getRunningControlStrategy
(in ExecutionContext theExecutionContext)
raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


288 CIM Framework Interfaces

4.10.3.4 Interface: ControlStrategy


Inherited Interface: NamedEntity
Description: The ControlStrategy contains the complete description of what activities
need to be performed in order to do APC for a given context. The Contents
of a ControlStrategy contains that description. Some content types could
be Data Collection Plans, targets, scripted action sequences, etc.
Additionally, the ControlStrategy contains a ContextSpec, which is some
information whitch can be used by the Control Manager to select Control
Strategies 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 the
ContentType. */
Contents getContentsByType (in ContentType theType)
raises (FrameworkErrorSignal, NoContentForTypeSignal);

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 289

4.10.3.5 Interface: RunningControlStrategy


Inherited Interface: NamedEntity
Description: The RunningControlStrategy interface provides a means to access
information about a currently executing Control Strategy. A currently
executing control strategy is one that is guiding and directing a Control
Executor 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 started
under. */
ExecutionContext getRunningContext ( ) raises (FrameworkErrorSignal);

/* This method returns the a reference to the ControlStrategy that this RunningControlStrategy is
using. */
ControlStrategy getControlStrategy ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


290 CIM Framework Interfaces

4.10.4 Control Execution Component


Because the Control Executor is central to scenario implementation for process control, in
addition to the relationships within this component, the information model below illustrates
relationships with interfaces in other components to aid in understanding these interfaces.

Component Job
Job
Manager Supervisor

Trader
get initial Data
references
Control Collection
Execution Plan
obtains Manager Manager
process or
Data sensor data
Collector from Running
obtains plans Control
manages from Strategy
1+
obtains control refers to
strategies from
Control
Executor

obtains plugins
from

directs
saves data
plugin
to
execution
Control Plugin
Manager Manager
Plugin
History
Executor

saves data to
and retrieves
from

Control
Database

Figure 63 Control Execution Component

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 291

4.10.4.1 Interface: ControlExecutionManager


Inherited Interface: ComponentManager, JobSupervisor
Description: The ControlExecutionManager performs the functions of a
ComponentManager for the Control Execution Component. It also is a
JobSupervisor, receiving ControlJobRequests and creating
ControlExecutors 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 a
ControlJobSpecification. */
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.

Technology Transfer # 93061697J-ENG SEMATECH


292 CIM Framework Interfaces

4.10.4.2 Interface: ControlExecutor


Inherited Interface: Job
Description: The ControlExecutor is a specialization of Job for APC. The
ControlExecutor executes control actions such as settings calculations,
fault detection, or data collection. It is a Job, executing whatever actions
are specified by the RunningControlStrategy, which is selected using data
contained 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 293

4.10.5 Data Collection Plan Management Component


The DataCollectionPlan Management Component provides management and retrieval for
DataCollectionPlans. It consists of two interfaces that cooperate to provide access to
DataCollectionPlans in the CIM system. Hence, it is not intended for use only by the APC
Group, but rather by all parts of the MES that utilize or need access to Data Collection Plans. As
such it can be implemented independently of the rest of the APC Group. Data Collection Plans
are the specifications by which a tool or sensor is directed to collect data. They contain such
things as which variables are to be measured and at which frequencies (SamplingPlan), under
which 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 be
looked-up using this name. In addition, Data Collection Plans can be associated with a
ContextSpec, like Control Strategies, and then selected based upon the execution context at run-
time.

COMPONENT
MANAGER

selects
DataCollectionPlans
based on context
DataCollectionPlan
Manager

External Entity

manages

DataCollectionPlan
Factory
selects
DataCollectionPlans
based on name
DATACOLLECTIONPLAN
MANAGER

Figure 64 DataCollectionPlanManager Component

Technology Transfer # 93061697J-ENG SEMATECH


294 CIM Framework Interfaces

/* DataCollectionPlans are composed primarily of name/value sequences, which were chosen for
their 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 be
openly distrubuted and reused as much as possible. DurationPlan – Specifies when data
collection should begin and end. Some example name-value pairs that could be used to specify
start 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 collectin
plan.
… …
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.

*/

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 295

4.10.5.1 Interface: DataCollectionPlanFactory


Inherited Interface: NamedEntity
Description: The DataCollectionPlanFactory provides interfaces required to create a
DataCollectionPlan, lookup a specific DataCollectionPlan (based on
name), or to provide a sequence of DataCollectionPlan descriptions (may
be 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.

Technology Transfer # 93061697J-ENG SEMATECH


296 CIM Framework Interfaces

4.10.5.2 Interface: DataCollectionPlanManager


Inherited Interface: ComponentManager
Description: The DataCollectionPlanManager is responsible for supporting the
registration and control (enabling/disabling) of this component. It
provides an interface to access a DataCollectionPlan factory as well as
selecting 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 a
reference to the required factory. At runtime the DataCollectionPlanExecutor uses this method
to get the factory for doing lookup. */
DataCollectionPlanFactory getDataCollectionPlanFactory ( )
raises (FrameworkErrorSignal);
DataCollectionPlan selectDataCollectionPlan ( in ExecutionContext aContext )
raises (FrameworkErrorSignal, NoDataCollectionPlanForContextSignal );

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 297

4.10.6 Control Database Component


The Control Database Component provides a specialized, high speed, light weight persistence
facility for control data to be shared across multiple process operations in the fab to enable
feedforward, feedback, and fault detection applications requiring data from multiple areas in the
fab.
The advent of the History Management proposal in the CIM Framework came to late to impact
this component significantly, but a brief review of the proposal indicates that it holds promise to
enable replacement of large portions of this component with interfaces based upon inheritance
and use of the interfaces in that proposal. This modification to the specification should be
pursued as part of the SEMI standardization process.

COMPONENT
MANAGER

CONTROL
DATABASE
MANAGER

manages

CONTROL
DATA

CONTROL DATABASE

Figure 65 Control Database Component Information Model

Technology Transfer # 93061697J-ENG SEMATECH


298 CIM Framework Interfaces

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 a
control 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 be
unique. */
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 that


match 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 299

4.10.6.2 Interface: ControlData


Inherited Interface: None.
Description: The ControlData interface encapsulates the various data required in
control 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 NameValue


exists 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.

Technology Transfer # 93061697J-ENG SEMATECH


300 CIM Framework Interfaces

4.10.6.3 Interface: DataCollector


Inherited Interface: NamedEntity
Description: The DataCollector interface is an abstract interface that provides methods
for controlling activities on entities that collect data. Interfaces that could
implement DataCollector are ProcessMachine and Sensor.
This interface is required as an abstract interface in the Machine
Management Component. It is not part of the Process Control Section of
the 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 to
be collected and returned. */
DataCollectionID setupDataCollection
(in DataCollectionPlanSequence aDataCollectionPlanSequence )
raises (FrameworkErrorSignal, UnableToSetupDataCollectionSignal );

/* Discontinues data collection for the DataCollectionPlan(s) referenced by the DCID; all data
collected 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 the
DataCollectionPlans. */
void enableDataCollection(in DataCollectionID aDataCollectionID)
raises (FrameworkErrorSignal, InvalidDataCollectionID );

/* Disables data collection to begin based on the start conditions specified in the
DataCollectionPlans. */
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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 301

4.11 Schedule Management Group


The Schedule Management Group performs decision making and scheduling functions based on
current factory status, production route definitions, and internally-defined business rules. These
functions are used to assist operating components and applications, that need to perform some
production activity by selecting a preferred alternative or ranked set of alternatives among the
possible 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, may
be developed in a future specification.

interprets and executes Factory Product creates lots to be


schedules Operations Release scheduled

Scheduling

Scheduling Management
Dispatching
Functional Group
provides lists of options
of immediate activity

assigns requests
provides process active lots
specifications operators
Process
Specification
Person Material
Management Management

Figure 66 Schedule Management Group Component Relationships

Technology Transfer # 93061697J-ENG SEMATECH


302 CIM Framework Interfaces

4.11.1 Dispatching Component


The Dispatching Component provides the basic architecture for dispatch decision making for
such 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. The
Dispatching Component includes the following interfaces:
• DispatchingManager
• Dispatcher
• DispatchList
• DispatchDecision
The Dispatching Component Information Model is shown in Figure 67.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 303

ComponentManager Resource

Dispatching
Component
DispatchingManager

manages

Dispatcher

provides
content
information

DispatchList

contains

DispatchDecision
holds information about
activities

Figure 67 Dispatching Component Information Model

Technology Transfer # 93061697J-ENG SEMATECH


304 CIM Framework Interfaces

4.11.1.1 Interface: DispatchingManager


Inherited Interface: ComponentManager
Description: The DispatchingManager manages the lifecycle, collection and query
services 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 the
Dispatcher 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 305

4.11.1.2 Interface: Dispatcher


Inherited Interface: Resource
Description: The Dispatcher makes dispatching decisions (i.e., what’s next) for specific
objects.
Exceptions:
/* An attempt was made to request a dispatch decision for an object that is not in the scope of
this 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 can
make a dispatch decision. */
void addDispatchableObject (in Resource dispatchableObject)
raises (FrameworkErrorSignal);

/* Remove a dispatchable object from the set of dispatchable objects for which this Dispatcher
can 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.

Technology Transfer # 93061697J-ENG SEMATECH


306 CIM Framework Interfaces

4.11.1.3 Interface: DispatchList


Inherited Interface: NamedEntity
Description: The DispatchList serves as a container and lifecycle manager for the
collection of DispatchDecision objects that describe the contents of the
DispatchList 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 other
DispatchDecisions 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.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 307

4.11.1.4 Interface: DispatchDecision


Inherited Interface: OwnedEntity
Description: The DispatchDecision interface is an indicator for the activity that the
dispatcher 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 the
DispatchList. */
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.

Technology Transfer # 93061697J-ENG SEMATECH


308 CIM Framework Interfaces

4.12 Factory Labor Group


The Factory Labor Group supports the qualification and management of human resources for
manufacturing operations associated with factory equipment. Specifically, this group provides
the 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, shift
assignment, machines qualified to operate, course and medical examination records).
• Manages the skill qualification histories (courses and medical examinations successfully
completed) of factory personnel.
The Factory Labor Group is divided into two components:
• Person Management, which tracks, logs and maintains availability and task assignment
for factory operations personnel within the manufacturing facility. Also manages
personnel information, training, and medical qualifications.
• Skill Management, which manages training and medical requirements for operating
factory operations.
Figure 68 depicts the relationships between these two components and their interaction with
other factory components.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 309

Material Processing Scheduling


Movement Management (to be defined)
Management

requests
requests manual processing to identify/assign qualified/
material movement be performed available person to
perform a job

Factory Labor

Person
Skill
Management
Management
compare personnel
medical / training history
with skill requirements

assigns person to
define skills
shift(s) / area(s) /
requests personnel to needed for
machine(s)
perform PMs for capability
support resources

Process
Factory Machine
Capability
Management Group
Manager

Figure 68 Factory Labor Group Component Relationships

Technology Transfer # 93061697J-ENG SEMATECH


310 CIM Framework Interfaces

4.12.1 Person Management Component


This component defines factory personnel (Person interface) to the CIM system. Persons are
viewed as resources in the manufacturing environment, are assigned to a factory area, and own a
detailed training and medical examination history. At any given time, a Person may be assigned
to 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.

NamedEntity MESFactory ComponentManager Resource

has a

Person
Management
Component PersonManager

creates and
manages
qualifications
to perform
factory
operations are
defined
by Area
QualificationData Person assigned
to

has assigned
to
Machine
assigned
to

Skill Job

Figure 69 Person Management Component Information Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 311

4.12.1.1 Interface: PersonManager


Inherited Interface: ComponentManager
Description: This is the interface between the Person Management Component and the
rest of the CIM environment. The PersonManager creates instances of
Persons within the factory and manages those Persons (shift, job
assignment and status information). There are no limitations to the number
of PersonManagers within a factory.
Exceptions:
/* This signal is raised with attempted creation of Person through the use of a Person identifier
that already exists. */
exception PersonDuplicateSignal {string identificationNumber;};

/* This signal is raised when a retrieval operation fails because the Person specified by the
argument could not be located. */
exception PersonNotFoundSignal {string identificationNumber;};

/* This signal is raised when a removal operation fails because the Person specified by the
argument 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 by
PersonManager. */
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 Person
is 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);

Technology Transfer # 93061697J-ENG SEMATECH


312 CIM Framework Interfaces

/* Manage Person / Machine relationship. */


/* Return a set of Persons qualified to operate a process or material handling machine. The
Person is qualified to operate the machine if the machine is noted in the Person’s skill list or if a
comparison of the person’s course and medical exam histories satisfy the requirements defined
within the Skill Management Component for the noted machine. This method does not check the
availability 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 specified
machine. 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 is
qualified for the job if the job is noted in the person’s skill list or if a comparison of the person's
course and medical exam histories satisfy the requirements defined within the Skill Management
Component for the noted job. This method does not check the availability of the person to
actually 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 material
movement 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).

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 313

4.12.1.2 Interface: Person


Inherited Interface: Resource
Description: This interface represents factory personnel. As currently defined, Person
refers specifically to operating personnel within the manufacturing facility.
Instances of this interface hold the following information pertaining to
these individuals: employee information (full name, identification number,
department, shift assignment); training and medical certification; and
machines qualified to operate.
Exceptions:
/* This signal is raised when an addition operation fails because the Qualification specified by
the argument already exists. */
exception QualificationDuplicateSignal {
QualificationData qualificationInformation;};

/* This signal is raised when a removal operation fails because the Qualification specified by the
argument could not be located. */
exception QualificationNotAssignedSignal {string identificationNumber;};

/* This signal is raised when a retrieval operation fails because the Qualification specified by the
argument could not be located. */
exception QualificationNotFoundSignal {string identificationNumber;};

/* This signal is raised when an addition operation fails because the Responsibility specified by
the argument already exists. */
exception ResponsibilityDuplicateSignal {any responsibility ;
string responsibilityCategory;};

/* This signal is raised when an operation fails because the Responsibility category specified by
the argument could not be located. */
exception ResponsibilityCategoryNotFoundSignal {
string responsibilityCategory;};
exception ResponsibilityCategoryRemovalFailedSignal { };

/* This signal is raised when a removal operation fails because the Responsibility specified by
the 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 the
argument already exists. */
exception SkillDuplicateSignal {Skill aSkill;};

/* This signal is raised when a removal operation fails because the skill specified by the argument
could not be located. */
exception SkillRemovalFailedSignal {Skill aSkill;};
exception SkillNotAssignedSignal {Skill aSkill;};
exception SkillNotFoundSignal {Skill aSkill;};

Technology Transfer # 93061697J-ENG SEMATECH


314 CIM Framework Interfaces

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 also
includes the changing the number of jobs and/or machines to which a
Person may be assigned. */
PersonCapacityChangedEvent

/* This event is posted when a Person’s availability has changed. This


includes logging on/off a shift, leaving/returning to a work station, or
capacity exceeded. */
PersonStateChangedEvent

/* This event is posted when a Person has been reassigned to a different


shift. */
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 assigned
simultaneously. */
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 assigned
simultaneously. */
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 of
responsibility 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

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 315

factory) which is associated with a responsibility category, while the second argument is the
category. If the specified category does not exist, it is created. The service returns the added
factory object.

For example, add a machine to the Person’s maintenance responsibilities category. Another
example: 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 specified
category, 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's
responsibility category. For example, return all of the specifications in the category specification
management. A dictionary of key/value pairs is returned that represents these responsibility
associations. The key is the responsibility category name while the value is the set of factory
objects associated with that category. */
ResponsibilitySequence responsibilities ( ) raises (FrameworkErrorSignal);

/* Add the skill (qualification to operate a specific machine) to the Person’s list of skills. Skills
may be assigned or obtained through the completion of specified course (s) and medical
examination (s). This service does not detail specific course and medical examination
requirements. */
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 or
medical 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 search


using its unique identifier. */
QualificationData findQualificationByIdentifier (in string identifier)
raises (FrameworkErrorSignal, QualificationNotFoundSignal);

Technology Transfer # 93061697J-ENG SEMATECH


316 CIM Framework Interfaces

/* 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 the
Person has logged on to the current shift. Assignment to machine (s) and/or job (s) may or may
not have occurred. */
void makeAtWorkStation ( )
raises (FrameworkErrorSignal, InvalidStateTransitionSignal );

/* Denote that this Person is not immediately available at a work station and cannot perform
work. 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 specific
machine (has a specific skill.) The Person is qualified to operate the machine if the machine is
noted in the Person’s skill list, or if a comparison of the Person’s course and medical exam
histories satisfy the requirements defined within the Skill Management Component for the noted
machine. 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. */

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 317

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 more


machines. */
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.

Technology Transfer # 93061697J-ENG SEMATECH


318 CIM Framework Interfaces

Dynamic Model:

Person
NOT AVAILABLE

1 12
AVAILABLE

UNASSIGNED
TO MACHINES
UNASSIGNED
TO JOBS

4 7
8
ASSIGNED 11
AT WORK TO ASSIGNED
STATION MACHINES TO JOBS

2 3
AVAILABLE AVAILABLE
FOR MORE FOR MORE
ASSIGNMENTS ASSIGNMENTS
NOT
AT WORK 9
5 6 10
STATION

ASSIGNMENT ASSIGNMENT
AT CAPACITY AT CAPACITY
EXCEEDED EXCEEDED

Figure 70 Person Dynamic Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 319

Object State Tables:

Table 22 Person State Definitions and Query Table


State Definition Query for State via
NOT In this state, a Person is not boolean isOnShift ( ) sent to instance of Person
AVAILABLE clocked on to shift and cannot returns FALSE.
perform work. Person NOT included in set returned by
PersonManager services
PersonSequence allOnShiftPersons (in Shift aShift)
or allAvailableForWorkPersons.
AVAILABLE In this superstate, a Person is boolean isOnShift( ) sent to instance of Person
clocked on to a shift and is returns TRUE.
ready to perform work. Person included in set returned by PersonManager
services
PersonSequence allOnShiftPersons (in Shift aShift)
or allAvailableForWorkPersons.
AT WORK A Person is available to boolean isAtWorkStation ( ) sent to instance of
STATION perform some manufacturing Person returns TRUE.
task; that is, the Person is
physically present at his or her
work site.
NOT AT WORK A Person is not available to boolean isAtWorkStation ( ) sent to instance of
STATION perform any manufacturing Person returns FALSE.
task; that is, the Person is
physically absent from his or
her work site.
UNASSIGNED In this state, a Person has not boolean isAssignedToMachines ( ) or boolean
TO MACHINES been assigned to any isAssignedToMachine (in Machine aMachine) sent
machines. A Person may or to instance of Person returns FALSE. Person NOT
may not be assigned to a included in set returned by Person service
job(s). assignedMachines() or PersonManager services
PersonSequence allPersonsAssignedToMachine (in
Machine aMachine) or
PersonSequence allAssignedToMachinesPersons ( ).
ASSIGNED TO In this parent state, a Person boolean isAssignedToMachines ( ) or boolean
MACHINES has been assigned to one or isAssignedToMachine (in Machine aMachine) sent
more machines. to instance of Person returns TRUE. Person
included in set returned by Person service
assignedMachines() or PersonManager services
PersonSequence allPersonsAssignedToMachine (in
Machine aMachine) or PersonSequence
allAssignedToMachinesPersons ( ).
AVAILABLE In this substate, a Person is boolean isAvailableForMoreMachineAssignments
FOR MORE available for assignments to ( ) sent to instance of Person returns TRUE.
ASSIGNMENTS more machines.

Technology Transfer # 93061697J-ENG SEMATECH


320 CIM Framework Interfaces

State Definition Query for State via


ASSIGNMENT In this substate, a Person can boolean isAvailableForMoreMachineAssignments()
AT CAPACITY no longer be assigned to sent to instance of Person returns FALSE.
EXCEEDED another machine; that is, they
are AT CAPACITY with
regard to machine assignment.
UNASSIGNED In this state a Person has not boolean isAssignedToJobs ( ) or boolean
TO JOBS been assigned to any jobs. A isAssignedToJob (in Job aJob) sent to instance of
Person may or may not be Person returns FALSE. Person NOT included in set
assigned to job(s). returned by Person service assignedJobs() or
PersonManager services PersonSequence
allPersonsAssignedToJob (in Job aJob) or
PersonSequence allAssignedToJobsPersons ( ).
ASSIGNED TO In this parent state, a Person boolean isAssignedToJobs ( ) or boolean
JOBS has been assigned to one or isAssignedToJob (in Job aJob) sent to instance of
more job(s). Person returns TRUE. Person included in set
returned by Person service assignedJobs() or
PersonManager services PersonSequence
allPersonsAssignedToJob (in Job aJob) or
PersonSequence allAssignedToJobsPersons ( ).
AVAILABLE In this substate, a Person is boolean isAvailableForMoreJobAssignments ( ) sent
FOR MORE available for assignments to to instance of Person returns TRUE. Person
ASSIGNMENTS more jobs. included in set returned by PersonManager service
PersonSequence allPersonsAvailableForJob (in Job
aJob) .
ASSIGNMENT In this substate, a Person can boolean isAvailableForMoreJobAssignments ( ) sent
AT CAPACITY no longer be assigned to to instance of Person returns FALSE. Person not
EXCEEDED another job; that is, they are included in set returned by PersonManager service
AT CAPACITY with regard PersonSequence allPersonsAvailableForJob (in Job
to job assignment. aJob).

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 321

Table 23 Person State Transition Table


# Current State Trigger New State Action Comment
non-existent createPersonWithIdentifier NOT
(in string AVAILABLE
identificationNumber);
sent to an instance of
PersonManager
1 NOT makeOnShift( ); sent to AVAILABLE PersonShiftChanged Person logged on to
AVAILABLE instance of Person. event posted by shift. Person is
instance of Person. assumed to be
initially available for
PersonStateChanged work (at work station)
event posted by and not assigned to
instance of Person. machines or jobs.
2 AT WORK makeNotAtWorkStation NOT AT WORK PersonStateChanged Typically used for
STATION ( ); sent to instance of STATION event posted by situation where
Person. instance of Person. Person is not
physically present at
work site (e.g., on a
break). Person is still
assigned to machine
(s) and/or job (s).
Person may be busy
with a job.
3 NOT AT WORK makeAtWorkStation ( ); AT WORK PersonStateChanged Person is physically
STATION sent to instance of Person. STATION event posted by present at work site.
instance of Person.
4 UNASSIGNED assignToMachine (...); ASSIGNED TO PersonCapacityChan Person assigned to a
TO MACHINES sent to instance of Person. MACHINES ged event posted by machine. For
instance of Person. example, a
Scheduling
Component might
assign an operator to
a machine.
5 AVAILABLE Sending ASSIGNMENT PersonStateChanged
FOR MORE assignToMachine (...); to AT CAPACITY event posted by
ASSIGNMENTS instance of Person EXCEEDED instance of Person.
increments number of
machine assignments to
AT CAPACITY level.
6 ASSIGNMENT Sending AVAILABLE PersonStateChanged
AT CAPACITY deassignFromMa-chine FOR MORE event posted by
EXCEEDED (...); to instance of Person ASSIGNMENTS instance of Person.
decrements number of
machine assignments
below AT CAPACITY
level.

Technology Transfer # 93061697J-ENG SEMATECH


322 CIM Framework Interfaces

# Current State Trigger New State Action Comment


7 ASSIGNED TO Sending UNASSIGNED PersonCapacityChan Person not assigned
MACHINES deassignFromMa-chine TO MACHINES ged event posted by to any machines.
(...); decrements number instance of Person.
of machine assignments
to nil.
8 UNASSIGNED assignToJob (...); sent to ASSIGNED TO PersonCapacityChan Person assigned to
TO JOBS instance of Person. JOBS ged event posted by job. Allocates a
instance of Person. Person to a
manufacturing task. A
Person may be
allocated to more than
one task at a time.
9 AVAILABLE Sending assignToJob (...); ASSIGNMENT PersonStateChanged
FOR MORE to instance of Person AT CAPACITY event posted by
ASSIGNMENTS increments number of job EXCEEDED instance of Person.
assignments to AT
CAPACITY level.
10 ASSIGNMENT Sending deassignFromJob AVAILABLE PersonStateChanged
AT CAPACITY (...); to instance of Person FOR MORE event posted by
EXCEEDED decrements number of job ASSIGNMENTS instance of Person.
assignments below AT
CAPACITY level.
11 ASSIGNED TO Sending deassignFromJob UNASSIGNED PersonCapacityChan Person not assigned
JOBS (...) decrements number TO JOBS ged event posted by to any jobs.
of job assignments to nil. instance of Person.
12 AVAILABLE makeOnShift (); sent to NOT PersonShiftChanged Person logged off of
instance of Person. AVAILABLE event posted by shift.
instance of Person.

PersonStateChanged
event posted by
instance of Person.

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 323

4.12.1.3 Interface: QualificationData


Inherited Interface: NamedEntity
Description: This interface represents the record of training and medical examinations
taken by factory personnel. Successful completion of training and medical
examinations qualifies personnel for operation of a specific piece of factory
equipment (a skill).
It is anticipated that a Factory Labor application will specialize and
instantiate this interface to maintain the training and medical examination
histories of factory personnel. For example, CourseQualificationData and
MedicalQualificationData 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 corresponding
sub-interface of the Skill Management Component interface
SkillRequirement to determine certification (qualification for a skill).
The attribute QualificationHistory indicates that either a specific course or a
medical examination was taken information regarding the date and time the
Person tested for the qualification (when testing for a course or a medical
examination 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-hand
notation 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 a
specific course or a medical examination was taken; information regarding the date and time the
Person 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.

Technology Transfer # 93061697J-ENG SEMATECH


324 CIM Framework Interfaces

4.12.2 Skill Management Component


This component supports the management of the skill or skill set required to qualify personnel
for operation of factory equipment. Specifically, the skills required in order that personnel can
assist a process resource or job in the performance of a process capability. Support is provided
through association of skill requirements (training and medical examinations that must be
completed) with a specific skill or skill set. The factory user will interface with this component to
define the training interface and medical examination roadmaps to achieve certification for
factory operations.
The Skill Management Component Information Model is shown in Figure 71.

MESFactory ComponentManager

has

Skill
define(s) the Management
qualification SkillManager
for performing
Component
a
ProcessCapability manages

Skill
has
Person is achieved
by satisfying

performs SkillRequirement

Job

Figure 71 Skill Management Component Information Model

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 325

4.12.2.1 Interface: SkillManager


Inherited Interface: ComponentManager
Description: This is the interface between the Skill Management Component and the
rest of the CIM environment. This interface manages the skills or skill sets
that personnel must possess before they are permitted to operate factory
equipment. There are no limitations to the number of SkillManagers
within a factory.
It is anticipated that a Factory Labor application would maintain the
appropriate order (if required) of the qualifications related to a specific
skill.
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 the
argument 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 the
argument 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.

Technology Transfer # 93061697J-ENG SEMATECH


326 CIM Framework Interfaces

4.12.2.2 Interface: Skill


Inherited Interface: NamedEntity
Description: This interface describes the specific Skill or set of Skills required to be
held by personnel pursuant to operating factory equipment. Specifically, a
Skill is required in order that a Person can assist a process resource or job
in the performance of a process capability. Each Skill is associated with
one or more medical examination and/or training course requirements. A
Skill may be associated with one or more process capabilities.
A Skill may represent a singular entity, it may categorize other Skills, or it
might be categorized with other Skills. It is anticipated that a Factory
Labor application would maintain the appropriate order (if required) of a
set of Skills.
Exceptions:
/* This signal is raised when a definition operation fails because the SkillRequirement specified
by the argument already exists. */
exception SkillRequirementDuplicateSignal {string requirementName;};

/* This signal is raised when a removal operation fails because the SkillRequirement specified by
the argument could not be located. */
exception SkillRequirementRemovalFailedSignal {SkillRequirement aRequirement;};

/* This signal is raised when a retrieval operation fails because the SkillRequirement specified by
the 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 the
SkillRequirement is not found. */
SkillRequirement findSkillRequirementNamed (in string requirementName)
raises (FrameworkErrorSignal, SkillRequirementNotFoundSignal);

/* Return the set of ProcessCapabilities to which this Skill is associated. */

SEMATECH Technology Transfer # 93061697J-ENG


CIM Framework Interfaces 327

ProcessCapabilitySequence processCapabilities ( ) raises (FrameworkErrorSignal);

/* List the training course or medical examination requirements that must be completed in order
to be qualified for an instance of Skill. */
RequirementSequence requirements ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

Technology Transfer # 93061697J-ENG SEMATECH


328 CIM Framework Interfaces

4.12.2.3 Interface: SkillRequirement


Inherited Interface: NamedEntity
Description: This interface defines training and medical examinations required to
achieve a specific skill. The collection of these requirements associated
with a specific skill constitutes the roadmap for acquiring the skill.
It is anticipated that a Factory Labor application will specialize and
instantiate this interface to maintain the training and medical examination
requirements for skills. For example, CourseSkillRequirement and
MedicalSkillRequirement 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 training
course which must be successfully completed or a medical examination that must be taken and
passed. */
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 examination
result 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 be
computed. */
TimeWindow effectivity ( ) raises (FrameworkErrorSignal);

Contracted Services: None.


Dynamic Model: None.

SEMATECH Technology Transfer # 93061697J-ENG


Appendix A 329

APPENDIX A
Glossary

Abstract class: Class that has no instances. An abstract class is written with the expectation that
its subclasses will add to its structure and behavior.
Abstract interface: An interface that is not instantiable and that standarizes the interfaces for a
concrete implementation of the interface.
Abstraction: A significant concept, function, or service provided by a subsystem. The essential
characteristics of an object that distinguish it from all other kinds of objects and thus provide
crisply-defined conceptual boundaries relative to the perspective of the viewer. The process of
factoring common behavior exhibited by one or more types to a separate super-type with the
intention of reusing that behavior through inheritance. The quality criteria concerned with those
software characteristics that determine how well an object, class, mechanism, service, or
subsystem capture the underlying essential characteristics of its behavior appropriate to the
requirements
Application: Functionality provided by one or more programs consisting of a collection of
interoperating 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, and
principles and guidelines governing their design and evolution over time.
Attribute: An identifiable association between an object and a value. An attribute may have
accessor 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 specifying
change(s) to document(s) whose versions are controlled.A change notice is usually associated
with change approval and change activation processes as well.In a factory, change notices may be
of paper or electronic form. Electronic change notices are supported by a software application.
The CIM Framework supports such applications by providing standard change notice behavior
and functionality embodied in the Version Management Component.
CIM: Acronym for Computer Integrated Manufacturing. An approach that leverages the
information handling capability of computers to manage manufacturing information and support
or automate the execution of manufacturing operations.
Class: The shared common structure and common behavior of a set of objects. The definition of
an object type. In CORBA IDL of the CIM Framework, classes are specified using the interface
keyword, and superclass/subclass relationships are specified using the inherited interface
keyword.

Technology Transfer # 93061697J-ENG SEMATECH


330 Appendix A

Class hierarchy: The inheritance relationships within a system. In a single-inheritancelanguage


like Smalltalk, this is a tree structure. In a multiple-inheritance language like C++, this is a
directed 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 its
state.
Compliance: Adherence to the requirements of a specification or standard within another
specification or standard (also see conformance)..
Component: A package of functionality comprising any number of actual objects. In the CIM
Framework, a component has a well-specified functionality with standard interfaces and
behaviors 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 that
satisfies type x also satisfies type y. Adherence to a specified standard or specification in the
implementation of a product, process, or service. If an implementation conformance statement is
made, then those requirements that apply to unsupported options are considered not to be
relevant.
Conformance point: A reference point at which behavior may be observed for purposes of
conformance.
Conformance requirement: Identification in the specification of behavior and/or capabilities
required by an implementation for it to conform to that specification.
Conforming implementation: An implementation that satisfies all relevant specified
conformance requirements.
CORBA: Common Object Request Broker Architecture. An OMG standard architecture and
specification for an Object Request Broker, which is the fundamental object communication
mechanism in the OMG Object Management Architecture.
Distributed system: An integrated system consisting of several processing and memory
components 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) sent
asynchronously. An event channel is the intermediate object that forwards published events to
interested subscribers, providing a decoupling of event publishers and event subscribers.
Exception: An infrastructure mechanism used to notify a calling client of an operation that an
unusual condition occurred in carrying out the operation.
Extensibility: The ability to extend or specialize existing components and add new object
classes or components while preserving architecture integrity and component conformance to
standards.

SEMATECH Technology Transfer # 93061697J-ENG


Appendix A 331

Framework: A collection of classes or components that provide a set of services and


functionality 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. Functional
groupings 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’s
attributes, services, exceptions, etc., Defined by the Object Management Group.
Implementation: The internal view of a class, object or module, including any non-public
behavior. The specific code and functionality that implements an interface.
Implementation conformance statement: A statement made by the supplier of an
implementation or system claiming to conform to one or more specifications and stating which
capabilities have been implemented. It specifically includes the relevant optional capabilities and
limits.
Implementation inheritance: The construction of an implementation by incremental
modification of other implementations (see interface inheritance). The CIM Framework does not
specify implementation inheritance.
Infrastructure: The services, facilities, and communications mechanisms that support the
collaboration between and lifecycle of distributed objects.
Inheritance: A relationship among classes wherein one class (a subclass) shares the structure or
behavior defined in one or more other classes (superclass). A subclass typically specializes its
superclasses by augmenting or redefining existing structure and behavior.
Interface: The external view of a class, object, or module that emphasizes its abstraction while
hiding its structure and internal behavior. An interface definition ideally includes the semantics.
Interface inheritance: The construction of an interface by incremental modification of other
interfaces (see implementation inheritance). The CIM Framework specifies interface inheritance
but not implementation inheritance.
Interoperability: The ability for two applications or the parts of an application to cooperate. In
the CIM Framework, interoperability requires that application components share data, invoke
each others’ behavior (services), exchange events, and publish service exceptions.
Job: Some system level operation whose execution may be requested by an entity whose
responsibility it is to manage jobs (in the CIM Framework, this entity is the JobSupervisor class
contained in the Job Supervisor Component).The job concept is analogous to operations
performed on the “factory floor” in a physical factory. There, operators are requested to perform
operations (jobs) requested by their managing supervisors or some other managing source.A job
often spans a significant amount of time and multiple resources within the system. In the CIM
Framework, the job construct is intended for specialization to enable specific job supervisors and
jobs to provide system solutions.
Life cycle: The life of an object, including creation, deletion, copy, and move.
MES: Manufacturing Execution System.

Technology Transfer # 93061697J-ENG SEMATECH


332 Appendix A

Method: An operation upon an object defined as part of the declaration of a class. In general, the
terms message, method and operation can be used interchangeably. Technically, a method is
defined within a class and an operation is defined within the IDL. An operation is implemented
by 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 be
requested by a client. An instance of a class.
Object diagram: Part of the notation of object-oriented design that is used to show the existence
of objects and their relationships in the logical design of a system and that primarily illustrates
the semantics of key mechanisms in the logicaldesign.
Object oriented analysis: A method of analysis in which requirements are examined from the
perspective 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-oriented
decomposition and a notation for depicting both logical and physical as well as static and
dynamic models of the system under design. This notation includes class diagrams, object
diagrams, module diagrams, and process diagrams.
Object oriented programming: A method of implementation in which programs are organized
as cooperative collections of objects, each of which represents an instance of some class and
whose 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 much
more dynamic nature.
Object system: An object system is a collection of objects that isolates the requesters of services
from the providers of services by a well-defined encapsulating interface. In particular, clients are
isolated from the implementation of services as data representations and executable code.
OMA: Acronym for Object Management Architecture, an architecture for distributed object
computing developed by the OMG.
OMG: Acronym for Object Management Group, an international consortium dedicated to the
development of open specifications for distributed, heterogeneous, object-oriented systems.
Operation: An operation is an entity, identified by an operation identifier that denotes a service
that can be requested. An operation has a signature that describes the legitimate values of request
parameters and returned results, including any exceptions.
ORB: Acronym for Object Request Broker, which is the fundamental object communication
mechanism 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 manufacturing
processess. This information includes an estimate for the time a process resource will be engaged
in the process; process resource settings; and the process capabilities required for the process.

SEMATECH Technology Transfer # 93061697J-ENG


Appendix A 333

Process flow: The part of a product specification that defines the sequence of process steps for
the manufacturing of a specific product. The data structure for representing a process flow is the
directed 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 traverses
its context process flow.
Process flownode: A data structure element (a node) within a directed graph which is used by a
specification management system to represent a process flow. A process flow node corresponds
to a point along a process flow where processing is defined. An operation set specification is a
type of process flow node.
Process sequence node: A data structure element (a node) within a directed graph representing
material routing. A set of linked process sequence nodes describes the routing of a material
within 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 parameters
that determine how a job is to be performed.For example, recipes are used to describe
ProcessSteps and are typically contained within a ProductSpecification. They determine the
processing environment seen by a manufactured product (e.g., wafer). Processing recipes may be
subject 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 specific
operation.
Standard: A component specification subscribed to by the consensus of implementers of the
CIM Framework under control of the appropriate governing body and subject to document
revision.
Substitutability: The ability to replace a given component from one supplier with a functionally
equivalent component from another supplier without impacting the other components or its
clients in the system.
Thread of control: (control thread) A single, sequential flow of control within a computer
program. Some operating systems support the simultaneous execution of control threads in
parallel. A thread of control may represent the functionality of a sub-task within a larger task. For
example, a factory startup task might initiate several threads of control, each of which is
responsible for the startup of a particular piece of processing equipment.
Validation: A continuing process to ensure that requirements at various levels are correct, thus
satisfying project requirements.
Version managed revision: A change (revision) of a document which requires the application of
special 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

Technology Transfer # 93061697J-ENG SEMATECH


334 Appendix A

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 for
the 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, more
advanced approach. This typically occurs when migration is preferred to wholesale replacement
for cost/benefit reasons.

SEMATECH Technology Transfer # 93061697J-ENG


Appendix B 335

APPENDIX B
Acronyms

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

Technology Transfer # 93061697J-ENG SEMATECH


336 Appendix B

RPC Remote Procedure Call


SECS-II SEMI Equipment Communications Standard 2
SEMI Semiconductor Equipment and Materials International
UI User Interface
WIP Work In Process

SEMATECH Technology Transfer # 93061697J-ENG


Appendix C 337

APPENDIX C
References

[Alb] Albus, J.S. “Outline for a Theory of Intelligence,” IEEE (Institute of Electrical
and 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 and
Specification, 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 Services
Specification. 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. Document
Number 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. Document
Number 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 Number
97-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-oriented
software. 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.

Technology Transfer # 93061697J-ENG SEMATECH


338 Appendix C

[OMA] Object Management Group. Object Management Architecture Guide, Revision


3.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 and
Materials International, 1995.
[SEMI96] Semiconductor Equipment and Materials International. Equipment
Automation/Software, Volume 2. Mountain View, CA: Semiconductor Equipment
and Materials International, 1996.
[SEMI97] Semiconductor Equipment and Materials International. Equipment
Communications Standard 2. Document Number E5-1296 Mountain View, CA:
Semiconductor Equipment and Materials International, 1997.
[SysMan] Object Management Group. Systems Management: Common Management
Facilities, 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 Reference
Architecture, Asia-Pacific Engineering Journa, Part A (Electrical Engineering),
vol.3, no.1-2, pp.143-163, Singapore, 1993.

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 339

APPENDIX D
CIM 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 name2
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 about
objects that inherit from NamedEntity, they all have names. In some cases, such as Lot, the object has a defined unique identifier. In those
cases, the identifier attribute should be used rather than the name from NamedEntity inheritance.

Technology Transfer # 93061697J-ENG SEMATECH


340 Appendix D

#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. */

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 341

#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;

Technology Transfer # 93061697J-ENG SEMATECH


342 Appendix D

/* 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 as
changed due to scrap, loss, splits or joins. */
#define LotQuantityChangedSubject “/ProductManagement/Lot/QuantityChanged”

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 343

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 its
flow 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 in
the flow (usually due to an engineering decision about rework). */

Technology Transfer # 93061697J-ENG SEMATECH


344 Appendix D

#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 a
different ProcessFlow from its current ProcessFlow. This can occur because a given Lot has
failed some sort of inspection and will become a downgraded product type or because a Lot is
moved onto a different rework flow. Typically, when a Lot is split, it is so that part of the Product
of the Lot can move onto a different flow temporarily and eventually be joined back to the
original 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 some
entity or when a reservation is removed. When a Lot is reserved, it should no longer be
considered 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”,

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 345

// 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;

Technology Transfer # 93061697J-ENG SEMATECH


346 Appendix D

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 reserve
by 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;

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 347

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” where
value 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;

Technology Transfer # 93061697J-ENG SEMATECH


348 Appendix D

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;

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 349

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;

Technology Transfer # 93061697J-ENG SEMATECH


350 Appendix D

ChangeNotice aChangeNotice;
} ChangeNoticeStateChangedEvent;

/* Rejected Change Notice event definition. This event is published when the change notice is
undergoing 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 {

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 351

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/ProductSpecificationLifec
ycle”
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

Technology Transfer # 93061697J-ENG SEMATECH


352 Appendix D

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;

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 353

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 name
Property state; // “ReservationState”, ReservationState
Property reservingObjectName; // “ReservingObjectName”,
// the reserving object’s name

Technology Transfer # 93061697J-ENG SEMATECH


354 Appendix D

} 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 name
Property 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;

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 355

Machine Resource
/* Machine Resource E10 state changed event definition. */
#define MachineResourceE10StateChangedSubject
“/MachineManagement/MachineResource/E10StateChanged”
typedef struct MachineResourceE10StateChangedFilters_Structure {
Property name; // “Name”, aMachineResource’s name
Property formerState; // “FormerState”, E10State
Property 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 name
Property formerState; // “formerState”, MachineResourceState
Property 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;

Technology Transfer # 93061697J-ENG SEMATECH


356 Appendix D

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;

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 357

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;

Technology Transfer # 93061697J-ENG SEMATECH


358 Appendix D

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;

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 359

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;

Technology Transfer # 93061697J-ENG SEMATECH


360 Appendix D

/* 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/DataCollect
ionSpecificationLifecycle”
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. */

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 361

#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;

Technology Transfer # 93061697J-ENG SEMATECH


362 Appendix D

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;

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 363

/* 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;

Technology Transfer # 93061697J-ENG SEMATECH


364 Appendix D

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 through
analysis. The information in the event includes the fab tool the fault occurred on, the lot and
wafer 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;

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 365

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;

Technology Transfer # 93061697J-ENG SEMATECH


366 Appendix D

// 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 name
Property 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 name
Property formerState; // “formerState”, PMSpecificationState
Property newState; // “newState”, PMSpecificationState
} PMSpecificationStateChangedFilters;
typedef struct PMSpecificationStateChangedEvent_Structure {
string eventSubject;
TimeStamp eventTimeStamp;
PMSpecificationStateChangedFilters eventFilterData;
Properties eventNews;
PMSpecification aPMSpecification;
} PMSpecificationStateChangedEvent;

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 367

/* 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;

Technology Transfer # 93061697J-ENG SEMATECH


368 Appendix D

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/ProductSpecificationLifecy
cle
/BOMSpecificationManagement/BOMSpecificationManager/BOMSpecificationLifecycle
/MachineManagement/MachineManager/MachineLifecycle
/MachineManagement/Machine/PortAvailable
/MachineManagement/Machine/SetupChanged
/MachineManagement/Machine/ProcessRunSizeChanged
/MachineManagement/Machine/E10StateChanged
/MachineManagement/Machine/MachineResourceLifecycle
/MachineManagement/Machine/MachineReservationChanged

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 369

/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/DataCollecti
onSpecificationLifecycle
/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

Technology Transfer # 93061697J-ENG SEMATECH


370 Appendix D

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 to
decide 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 flow
of control within the CIM Framework. In other words, an event should not be used to generate an
expected action upon another object. Events are informational in intent only. If an event has an
expected consumer and an expected action to result from this event, it should not be an event but
should instead be a direct method invocation.
The easiest way to answer whether an informational event should be generated is to ask the
question: “Would a monitoring application be interested in this information?” Examples of
monitoring applications can include scheduling or planning applications, manufacturing status
display applications, or an ad-hoc engineer developed monitoring query for a specific process or
product.
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 represent
the state change. This implies that the interface for that object must have an enumerated type
defined for all of its states. The states that are defined in the enumerated type must be the
lowest level states, not any of the super-states.
ì Important attribute changes: any object that has a significant change to its attributes should
publish an event for that. The domain experts will know what attributes are important enough
to be published when changed.
ì Business rule changes: any object that encompasses a business rule that may impact how
other objects work must publish an event when that business rule changes. An example of
this is with the version management on and off condition managed by the Document Manager
interface.
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 the
standard events that are defined, the following filterable items should accompany them:
For all types: The name (or identifier) of the object publishing the event. The
actual object reference should be included as part of body of the
event (non-filterable data) and should be nil when it is a lifecycle
delete event.
Lifecycle: The enumerated value for the lifecycle event that occured

SEMATECH Technology Transfer # 93061697J-ENG


Appendix D 371

State changes: The enumerated value for the former state of the instance publishing
the event. The enumerated value for the new state of the instance
publishing 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 be
answered revolves around not causing event ordering issues. The designers should ask: “If the events
defined for this interface are all published through separate event channels (which means their order
will not be guaranteed), could the consumer of the events get confused?” If the answer is yes, the
resolution of the event is too fine and must be generalized to fewer events that don’t cause that
problem. 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. For
example, a TransportJob or a ProcessMachineJob should publish all events for Job since they are
specializations of that interface. However, the subclass interface does not need to redefine the
event

Technology Transfer # 93061697J-ENG SEMATECH


Appendix E 373

APPENDIX E
SCENARIO EXAMPLES

These scenario diagrams offer interpretations of the Process Control section of the CIM
Framework. 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 and
illustrate 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 the
specification to implement a control and fault detection scenario. These diagrams are not
interpreted as part of the specification, but, rather as illustrations that different implementations
are feasible using the same set of interfaces.

Technology Transfer # 93061697J-ENG SEMATECH


374 Appendix E

APCFI Consortium Scenarios

Control Execution OID

7.1: PluginContents GetContentsByType(PluginContentsType) Plug-In Executor


Plug-In Manager Machine Control
private to APC
public
private to APC
Plug-In Plug-In
Executor Machine
Manager
PlugIn

Plug-in
Factory

3. Factory
7: PluginHandle setupPlugin(Plugin)
lookupPluginFactory(
8: ControlValues executePlugin(
FactoryType)
5.PluginContents PluginHandle,
GetContentsByType( PerformanceData)
PluginContentsType) 9: unsetupPlugin(PluginHandle)
4: Plugin lookupPlugin(
PluginName)
Control Executor

Control
13: MachineEvent
Executor 10: downloadRecipeUpdates(
RunData)
11: setupMachine()
12: startMachine()
6. query

15: add_run_data(RunData)
2: ControlData 16: close()
Trader findData(
DataTagSequence)
14: run_record
create_run_record(
17: updateValues(
ExecutionContext)
NameValueSequence)

Control
DB
Manager
Control
Control Archive
Data Manager

private to APC Control


Archive
Run Record
Control Database public

Control Archive

1: ControlExecutorStatusEvent
{Status = "StrategyStarted"}
18: ControlExecutorStatusEvent Control Manager
{Status = "StrategyCompleted"}

Note: For execute_control invocations with an Control Manager


execution_type of "script", the script will dictate the
interactions and sequence of interactions. This
particular diagram is intended to depict using model
parameters from the control database to calculate new
recipe settings.

Additional Notes:
5. Gets the type of plugin (optional; only used if there
are different types of plugins, each executed by a
different Plugin Executor)
6. Gets the Plugin Executor for this type of Plugin from
the Trader

SEMATECH Technology Transfer # 93061697J-ENG


Appendix E 375

This scenario covers the initiation of control activity by some other component of the CIM
Framework. In response to the executeControl call on the Control Executor Manager, the Control
Strategy to be executed is selected by the Control Manager. The Control Executor Manager
makes two GetContentsByType calls on the returned RunningControlStrategy. The first call is
used to get the capabilities required by the Control Strategy to be executed (for example,
ContentType = RequiredCapabilities). The returned capabilities are used to query servers to
fullfill those capabilities through the Trader. Finally, the second GetContentsByType call is used
to get the scripted action sequence that will be executed by the Control Executor (for example,
ContentType = “Script”).

Technology Transfer # 93061697J-ENG SEMATECH


376 Appendix E

Control Execution OID

12.1: PluginContents GetContentsByType(PluginContentsType) Plug-In Executor

private to APC Machine Control

Plug-In public
Plug-In
Manager Executor
PlugIn Machine

Plug-in
12: PluginHandle setupPlugin(Plugin)
Factory
13: ControlValues
executePlugin(PluginHandle,
Plug-In Manager PerformanceData)
14: unsetupPlugin(PluginHandle)

8. Factory
10: PluginContents lookupFactory(FactoryType)
GetContentsByType(
9: Plugin lookupPlugin(
PluginContentsType)
PluginName)

Control Executor

Control 6: DataAvailableEvent
Strategy
2: setupDataCollection(
Executor
DataCollectionPlanSequence)
11. query 3: enableDataCollection()
4: setupMachine()
5: startMachine()
Control 16: add_run_data(run_data)
Data 17: updateValues( 18: close()
NameValueSequence)
15: run_record
7: ControlData create_run_record(execution_context)
findControlData(
DataTagSequence)

Control
Database
Manager Control
Archive
Control Manager
Data Control
private to APC Archive
Run Record
public
Control Database
Control Archive
Note: For execute_control invocations with an
execution_type of "script", the script will dictate the
interactions and sequence of interactions. This
particular OID is intended to represent update model
parameters based on metrology data.
1: ControlExecutorStatusEvent
{Status = "StrategyStarted"}
19: ControlExecutorStatusEvent
{Status = "StrategyCompleted"}

Control Manager

Control Manager

SEMATECH Technology Transfer # 93061697J-ENG


Appendix E 377

Control Execution OID

16.1: PluginContents GetContentsByType(


PluginContentsType)
Plug-In Executor
Machine Control
private to APC
private to APC public
Plug-In
Plug-In
Manager Machine (Tool)
Executor
PlugIn
Machine
Plug-in (AddOnSensor)
16: PluginHandle setupPlugin(Plugin)
Factory 17: ControlValues
executePlugin(PluginHandle,
Plug-In PerformanceData)
Manager 18: unsetupPlugin(PluginHandle)
9: DataAvailableEvent
12. Factory 4: setupDataCollection(
lookupFactory(FactoryType) DataCollectionPlanSequenc)
15. PluginContents 13: Plugin lookupPlugin( 5: enableDataCollection()
GetContentsByType( PluginName)
PluginContentsType)
Control Executor 10: DataAvailableEvent

Control
Strategy
Executor 3: setupDataCollection(
14. query DataCollectionPlanSequence)
6: enableDataCollection()
7: setupMachine()
8: startMachine()
Trader
21: update_display(
display_data)
11: add_run_data(run_data)
2: run_record create_run_record 19: add_run_data(run_data)
(execution_context) 22: close()

Operator GUI
20: ControlData
addContolData
Operator GUI (DataTagSequence,
NameValueSequence)

Control
Control Archive
Database Manager
Manager
Control
Archive
Control
Run Record
Data
public
private to APC
Control Archive
Control Database

1: ControlExecutorStatusEvent
{Status = "StrategyStarted"}
23: ControlExecutorStatusEvent
{Status = "StrategyCompleted"}

Note: For execute_control invocations with an Control Manager


execution_type of "script", the script will dictate the
interactions and sequence of interactions. This
particular diagram is intended to depict performing
Control Manager
fault detection based on tool trace and sensor data.
Results are displayed and stored.

Technology Transfer # 93061697J-ENG SEMATECH


378 Appendix E

Control Startup OID


Control Manager

Control
Strategy Control
Manager

Running
Control
Strategy

1.2 ControlStrategy
1.3: Contents getControlStrategy()
GetContentsByType(
ContentsType)
1.5: Contents 1.1: RunningControlStrategy selectStrategy(
GetContentsByType( ExecutionContext)
ContentsType)

Control Executor

Control
Control
Executor
Executor
Manager

1:ControllerReturns
execute_control (
ExecutionType,
ExecutionContext,
ControllerArguments);

1.4: query
Inside APC

Outside APC

Other
Trader CIM Framework
Component

Trader Service

SEMATECH Technology Transfer # 93061697J-ENG


Appendix E 379

Abort OID
12.1: PluginContents
GetContentsByType(PluginContentsType) Plug-In Executor

private to APC
Machine Control
Plug-In Plug-In
Manager Executor public
PlugIn
Machine
Plug-in 12: PluginHandle setupPlugin(Plugin)
Factory 13: ControlValues
executePlugin(PluginHandle,
PerformanceData)
Plug-In Manager 14: unsetupPlugin(PluginHandle)

8. PluginFactory
10: PluginContents lookupPluginFactory()
GetContentsByType(
PluginContentsType) 9: Plugin lookupPlugin(
PluginName)

Control Executor
Trader
11. query
Control 6: DataAvailableEvent
Strategy
Executor 2: setupDataCollection(
DataCollectionPlanSequence)
Control
17. RunningStrategy 3: enableDataCollection()
Executor
getRunningStrategy() 4: setupMachine()
Manager
20. makeAborting() 5: startMachine()
16: ControlExecutorSeq
getExecutors()

Abort Tool 1: ControlExecutorStatusEvent 15: run_record


{Status = "StrategyStarted"} create_run_record(
23: ControlExecutorStatusEvent ExecutionContext) 21: add_event_data(
{Status = "StrategyAborted"} event_data)
7: ControlData 22: close()
findControlData(
DataTagSequence)

Control
18. RunningControlStrategyID Control
Database
getID() Archive
Manager
19. ExecutionContext Manager
getRunningContext()
Control Control
Data Archive
private to APC Run Record
public
Control Database
Control Archive
Running
Control
Strategy

Control Manager
Note: The abort message can appear at any point in the
sequence of actions. An alternate sequence is
performed to abort the run. In this example, a note is
put in the run record and the run record closed.

Control Manager

Technology Transfer # 93061697J-ENG SEMATECH


380 Appendix E

Texas Instruments Scenarios


Calculate Settings Scenario
executeControl()
running
selectStrategy()
getControlStrategy()
getContentsAllContents()
lookupFactory()
setupPlugin()

executePlugin()
running
unsetupPlugin()

calculatedSettings()
selectRecipe()

machineSettings()

downloadRecipe()

Activity Control Control Control Running Control Plugin Plugin Plugin Plugin Recipe Machi
Manager Executor Executor Manager Control Strategy Manager Factory Executor Manager
Manager Strategy

This scenario describes a message sequence for performing a calculate settings transaction via a plugin application u
Framework specification. Some of the details relating to argument types, return values and database interface have be
clarity. Some objects and messages/events in the above scenario are application specific (i.e. not part of the APC Fram
These 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

SEMATECH Technology Transfer # 93061697J-ENG


Appendix E 381

Fault Detection Scenario


executeControl()
running
selectStrategy()
getControlStrategy()
getContentsAllContents()

setupDataCollection()
startDataCollection()
data
runDataAvailable()
lookupPlugin()
setupPlugin()
executePlugin()
running
unsetupPlugin()
analysisResults()
shutDownMachine()

shutdown

Activity Control Control Control Running Control Plugin Plugin Plugin PluginEquipment Machi
Manager Executor Executor Manager Control Strategy Manager Factory Executor Manager
Manager Strategy

This scenario describes a message sequence for performing fault detection via a plugin application using the APC Framewor
the details relating to argument types, return values and database interface have bee removed for clarity. Some objects and m
above scenario are application specific (i.e. not part of the APC Framework Spec). This particular scenario uses a plugin to a
run. The analysis identifies a fault and returns the analysis reults to the Control Executor. The COntrol Executor then initiates
the machine by way of an equipment manager. These types of components are expected in any implementaiton of the Frame
encompassed in other parts of the CIM Framework spec. The non-APC Framework objects, messages and events are indicate

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

Technology Transfer # 93061697J-ENG SEMATECH


382 Appendix E

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 is
received and processed by the FactorySupervisor.
2. In response to the request, the FactorySupervisor facilitates the creation of a LotJob to
represent 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 the
ProductRequestExecutor when the LotJob begins.
4. The Job Supervision component (e.g., in the form of the LotJob) informs the
ProductRequestExecutor 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. The
request is received and processed by the ProductRequestManager.
2. In response to the request, the ProductRequestManager facilitates the creation of a
ProductRequestJob to represent the task. A handle to the ProductRequestJob is returned to
the EnterpriseExecutor (assuming the ProductRequestJob request is accepted).
3. The Job Supervision component (e.g. in the form of the ProductRequestJob) informs the
EnterpriseExecutor when the ProductRequestJob begins.
4. The Job Supervision component (e.g. in the form of the ProductRequestJob) informs the
EnterpriseExecutor when the ProductRequestJob has completed (assuming successful
completion).

SEMATECH Technology Transfer # 93061697J-ENG


Index 383

allAssignedToMachinesPersons .....................................328
allAvailableForWorkPersons ..........................................328
A allBOMBodies ................................................................215
allBOMSpecifications.....................................................213
abnormalEnter ................................................ 201, 207, 210 allBOMSpecifications_forProduct ..................................213
abnormalExit .................................................. 201, 207, 211 allCalendarDays..............................................................111
abortAllJobs ..................................................................... 68 allCanceledJobs ................................................................69
abortRunningControlStrategy......................................... 299 allCassettes......................................................................177
activeCassettes................................................................ 177 allChangeNotices ..............................................................86
activeRevision .................................................................. 80 allCompletedJobs..............................................................69
actualCompletionTime ........................................... 163, 171 allComponentManagers ..................................................103
addArea .......................................................................... 103 allConsumables...............................................................191
addAssignedCapability........................................... 259, 262 allContainedMachineResource .......................................252
addChannelForEvent ........................................................ 92 allCurrentCapabilities .....................................................258
addControlData .............................................................. 312 allCurrentProcessMachineCapabilities ...........................258
addDays.......................................................................... 111 allCurrentProcessResourceCapabilities ..........................258
addDie_atCoordinate...................................................... 159 allDescendantLots...........................................................162
addDispatchableObject................................................... 320 allDie ..............................................................................159
addDispatchDecision...................................................... 322 allDispatchableObjects ...................................................321
addDurationUsed............................................................ 179 allDispatchers..................................................................319
addHistory ........................................................................ 96 allEnabledAreas ..............................................................240
addHistoryEvent............................................................... 97 allEnabledMachines........................................................240
addLot ............................................................................ 173 allEnabledMaterialPorts..................................................241
addMachine ............................................................ 109, 116 allEventChannelsFor.........................................................93
addMachineRecipe ......................................................... 279 allExecutingJobs ...............................................................69
addMaterial............................................................. 140, 182 allFinishedJobs .................................................................69
addMaterialAtPosition.................................................... 184 allHistories........................................................................96
addMaterialContainer ..................................................... 188 allInventoryRegionNames...............................................200
addMaterialGroup .......................................................... 140 allInventoryRegions................................................198, 200
addMaterials ................................................................... 140 allInventoryRegionSystemNames...................................197
addNameToDefaultSignOffSet......................................... 87 allInventoryRegionSystems ............................................197
addNonCycleTime.......................................................... 202 allJobs ...............................................................................69
addPerson ....................................................................... 110 allJobSupervisors ..............................................................73
addPlannedShutDown .................................................... 111 allLotFamilies .................................................................145
addPlannedStartUp ......................................................... 111 allLots .....................................................................145, 186
addPossibleCapability ............................................ 259, 262 allLotsActive...................................................................146
addProcessMachine ........................................................ 278 allLotsCompleted............................................................146
addProcessResource ....................................................... 236 allLotsCreated.................................................................146
addProcessRun ............................................................... 149 allLotsEmptied................................................................146
addProductType ............................................................. 145 allLotsFinished ...............................................................146
addQualification ............................................................. 332 allLotsInProduction ........................................................146
addResponsibility_toCategory........................................ 332 allLotsInRework .............................................................146
addRevision...................................................................... 79 allLotsNotOnHold ..........................................................146
addSensor ....................................................................... 252 allLotsOnHold ................................................................146
addSkill .......................................................................... 332 allLotsReleased...............................................................146
addSubArea .................................................................... 109 allLotsScrapped ..............................................................146
addSupportResource............................................... 285, 287 allLotsShipped ................................................................146
addWafer_atPosition ...................................................... 186 allMachines.............................................................103, 116
age .................................................................. 121, 162, 205 allMaterial...............................................................244, 246
allAbortedJobs.................................................................. 69 allMaterialContainers......................................................189
allAbortingJobs ................................................................ 69 allMaterialGroups ...........................................................141
allActiveJobs .................................................................... 69 allMaterialHeld ...............................................................269
allAreaPMActivitesDueNow.......................................... 285 allMaterialInStorage ...............................................244, 246
allAreaPMActivitesDuringDuration............................... 284 allMaterialInTransit ................................................244, 246
allAreas........................................................................... 103 allMaterialMovementControllers....................................246
allAssignedCapabilities .................................................. 258 allMaterials .....................................................................141
allAssignedDurables....................................................... 255 allNotAllocatedPorts.......................................................256
allAssignedProcessMachineCapabilities ........................ 258 allNotAvailableForWorkPersons ....................................328
allAssignedProcessResourceCapabilities ....................... 258 allNotPausedJobs ..............................................................69
allAssignedToJobsPersons ............................................. 328 allOnShiftPersons ...........................................................327
allPausedJobs ....................................................................69

Technology Transfer # 93061697J-ENG SEMATECH


384 Index

allPausingJobs .................................................................. 69 assignedJobs ...................................................................335


allPersons ....................................................................... 327 assignedMachines ...........................................................334
allPersonsAssignedToJob............................................... 328 assignedOperators ...........................................................255
allPersonsAssignedToMachine ...................................... 328 assignToJob ....................................................................334
allPersonsAvailableForJob ............................................. 328 assignToMachine ....................................................179, 334
allPersonsAvailableForMachine..................................... 328 availableCassettes ...........................................................177
allPersonsQualifiedForJob ............................................. 328 averageCycleTime...................................................145, 203
allPersonsWithSkill ........................................................ 328 averagePopulation...........................................................202
allPlannedShutDowns .................................................... 111
allPlannedStartUps ......................................................... 112
allPMActivitesDuringDuration ...................................... 284 B
allPMActivitiesDueNow ................................................ 284
allPMActivitiesForPeriod............................................... 285 BOMBody.......................................................................216
allPMDefinitions ............................................................ 288 BOMSpecification ..........................................................215
allPMSpecifications........................................................ 286 BOMSpecificationLifecycleEvent ..........................213, 370
allPorts ........................................................................... 256 BOMSpecificationManager ............................................213
allPossibleCapabilities.................................................... 258
allPossibleProcessMachineCapabilities.......................... 258
allPossibleProcessResourceCapabilities......................... 259
allProcessCapabilities..................................................... 235 C
allProcessDurables ......................................................... 177
allProcessMachines ........................................................ 116 CalendarDay .....................................................................43
allProcessResources ....................................................... 257 CalendarDaySequence ......................................................43
allProducts.............................................................. 147, 162 canCompleteBy...............................................................242
allProductsActive ........................................................... 146 canPerform........................................................................68
allProductsAllocated ...................................................... 146 Cassette ...........................................................................186
allProductsCreated ......................................................... 146 certificationDate..............................................................341
allProductsFinished ........................................................ 146 changeNameForInventoryRegion_to ..............................200
allProductsIdle................................................................ 146 ChangeNotice....................................................................87
allProductsInInventory ................................................... 146 ChangeNoticeLifecycleEvent....................................86, 367
allProductsInProduction ................................................. 146 ChangeNoticeRejectedEvent.....................................87, 368
allProductsInRework ...................................................... 146 ChangeNoticeSignoffsChangedEvent.......................87, 368
allProductsNotOnHold ................................................... 146 ChangeNoticeStateChangedEvent ............................87, 368
allProductsOnHold ......................................................... 146 checkVersion ..........................................................280, 281
allProductSpecifications ................................................. 218 ComponentManager........61, 77, 86, 92, 119, 130, 135, 143,
allProductsProcessing..................................................... 146 176, 191, 197, 213, 218, 223, 235, 246, 276, 284, 294,
allProductsProcessingCompleted ................................... 146 297, 299, 305, 310, 312, 319, 327, 343
allProductsScrapped ....................................................... 146 ComponentManagerChangedEvent ................................359
allProductsShipped ......................................................... 146 ComponentManagerRegistrationChangedEvent .......61, 359
allProductsTraveling ...................................................... 146 ComponentManagerStateChangedEvent ..........................61
allProductTypes.............................................................. 147 configureContainer .........................................................182
allProductUnits............................................................... 110 Consumable ....................................................................192
allQueuedJobs .................................................................. 69 Consumable Management Component ...........................190
allReachableAreas .......................................................... 240 ConsumableLifecycleEvent ....................................191, 365
allReachableMachines.................................................... 240 ConsumableManager ......................................................191
allReachableMaterialPorts.............................................. 240 ConsumableQuantityChangedEvent .......................192, 366
allRevisions ................................................................ 77, 80 ConsumableStateChangedEvent .............................192, 365
allSensors ....................................................................... 252 consumablesUsedBy .......................................................191
allStoppedJobs.................................................................. 69 containedMaterial ...........................................................183
allStoppingJobs ................................................................ 69 contentsOfPosition..........................................................185
allSupportResourcePMActivitiesDueNow ..................... 285 continueProcessing .........................................................230
allSupportResources ............................................... 286, 287 Control Database Component .........................................311
anySequence..................................................................... 41 Control Execution Component .......................................304
APCMachineEvent ......................................................... 257 Control Management Component ...................................298
archive ............................................................................ 172 ControlData.....................................................................313
Area ................................................................................ 109 ControlDatabaseManager................................................312
AreaConfigurationChangedEvent........................... 109, 358 ControlExecutionManager ..............................................305
areas................................................................................ 259 ControlExecutor..............................................................306
AreaShutdownChangedEvent................................. 111, 358 ControlExecutorStatusEvent ...........................................382
assignDurable ................................................................. 255 ControlManager ..............................................................299
assignedCapabilities ....................................................... 263 ControlStrategy...............................................................302

SEMATECH Technology Transfer # 93061697J-ENG


Index 385

ControlStrategyFactory .................................................. 300


Coordinate2D ................................................................... 40
D
couldStartTime ............................................................... 243
count................................................................................. 98 Data Collection Plan Management Component ..............307
createAndReleaseLotsforProductRequests ..................... 135 DataAvailableEvent ........................................................257
createBOMBody............................................................. 215 DataCollectionPlanFactory .............................................309
createBOMSpecificationNamed_inDocument................ 213 DataCollectionPlanManager ...........................................310
createCassetteNamed...................................................... 176 DataCollectionSpecificationLifecycleEvent ...................378
createChangeNoticeNamed_inDocument......................... 86 DataCollector ..................................................254, 271, 314
createConsumable........................................................... 191 Day....................................................................................42
createControlStrategy ..................................................... 300 DaysWorked .....................................................................42
createDataCollectionPlan ............................................... 309 deassignFromJob ............................................................334
createDieNamed ............................................................. 144 deassignFromMachine ....................................................334
createDispatcher ............................................................. 319 decrementQuantityBy .....................................................192
createDocumentNamed..................................................... 77 defaultSignOffSet .............................................................88
createInventoryRegionNamed ........................................ 199 deleteData .......................................................................312
createInventoryRegionNamed_withDescription_afterInvent deleteDispatchList...........................................................320
oryRegion.................................................................. 200 deleteRecipe............................................................279, 282
createInventoryRegionSystemNamed............................. 197 deliveryDateTime............................................................171
createLotUsing ............................................................... 144 describeControlStrategies ...............................................300
createLotUsing_fromProducts........................................ 144 describeDataCollectionPlans ..........................................309
createLotUsing_withIdentifiers ...................................... 144 describePlugins ...............................................................293
createPackageNamed...................................................... 144 describeRunningControlStrategies..................................301
createPersonWithIdentifier............................................. 327 deselectRecipe ................................................................282
createPlugin.................................................................... 293 Die ..................................................................................158
createProcessCapabilityNamed ...................................... 235 disableArea .....................................................................240
createProcessDurableNamed .......................................... 177 disableDataCollection .....................................................314
createProcessFlowContext...................................... 219, 223 disableMachine ...............................................................240
createProcessFlowIterator .............................................. 219 disableMaterialPort .........................................................241
createProcessFlowIteratorFromProcessFlowContext ..... 223 DispatchableObjectNotInScopeSignal ............................320
createProcessFlowIteratorFromProductSpecification..... 223 DispatchDecision ............................................................323
createProcessGroup ........................................................ 144 Dispatcher .......................................................................320
createRecipe ................................................................... 279 DispatcherLifecycleEvent...............................................380
createRecipeNamespace ................................................. 276 Dispatching Component..................................................317
createRegionSensor ........................................................ 197 DispatchingManager .......................................................319
createRevisionNamed_with.............................................. 79 DispatchLifecycleEvent ..................................................319
createSkillNamed ........................................................... 343 DispatchList ....................................................................322
createSkillRequirementNamed ....................................... 344 dispatchUsingLots ..........................................................320
createSplitLot ................................................................. 144 Document Management Component.................................76
createTransportGroupNamed ......................................... 176 DocumentLifecycleEvent..........................................77, 366
createTransportJob_toArea............................................. 240 DocumentManager............................................................77
createTransportJob_toMachine ...................................... 240 DocumentRevision............................................................81
createTransportJob_toMaterialPorts............................... 240 DocumentRevisionLifecycleEvent............................79, 366
createWaferNamed ......................................................... 144 DocumentRevisionStateChangedEvent ....................81, 367
currentAssignedMachine ................................................ 179 DocumentSpecification.....................................................79
currentLots ..................................................................... 171 downloadRecipe..............................................................282
currentLotsWithProductSpecification ............................ 145 downloadRecipeToMachine ...........................................279
currentMachines ............................................................. 162 dtdAverageAge ...............................................................203
currentOperators............................................................. 255 dtdAverageCycleTime ....................................................203
currentPopulation ........................................................... 202 dtdAverageNonCycleTime..............................................203
currentPosition ............................................................... 149 dtdAverageYield.............................................................206
currentProcessOperation ................................................ 230 dtdLotsExistingQuantity .................................................206
currentProcessOperationSpecification............................ 226 dtdPassedQuantity ..........................................................207
currentValue ................................................................... 115 dtdScrappedQuantity ......................................................207
currentYield.................................................................... 162 DuplicateIdentifierSignal ..................................................50
cycleTime ............................................................... 162, 205 Durable ...........................................................178, 181, 182
Durable Management Component ..................................174
DurableLocationChangedEvent ..............................178, 364
DurableManager .............................................................176
DurableReservationChangedEvent .........................178, 365
DurableStateChangedEvent ....................................178, 364

Technology Transfer # 93061697J-ENG SEMATECH


386 Index

Duration............................................................................ 42 findSupportResourceNamed ...................................286, 287


durationRemaining ......................................................... 179 findSystemNamed...........................................................198
durationUsed .................................................................. 179 findTimeUntilPM............................................................285
firstMaterial ....................................................................185
FrameworkErrorSignal......................................................50
E from_to .............................................................................97

E10State ........................................................................... 41
effectivity........................................................................ 346 G
emptyPositions ............................................................... 184
enableArea...................................................................... 240 getActivationDate .............................................................81
enableDataCollection ..................................................... 314 getAllContents ................................................................295
enableMachine ............................................................... 240 getAllMaterialTrackingLocations ...................................255
enableMaterialPort ......................................................... 241 getAllRecipeNamespaces................................................276
enter........................................................................ 202, 211 getAlternativeProcessOperationSpecifications ...............226
Enterprise Abstract Interface .......................................... 123 getAreaIdentifier .............................................................109
EnterpriseExecutor ......................................................... 124 getAvailableCapacity......................................................270
entries ............................................................................. 203 getBin..............................................................................158
Event Broker .................................................................... 91 getCapacity .....................................................................182
EventBroker ..................................................................... 92 getChildPartsUnit ...........................................................216
executePlugin ................................................................. 297 getChildProductSpecification .........................................216
executeRecipe................................................................. 282 getCollectedData.............................................................314
exit.......................................................................... 202, 211 getCommissionedTimeStamp .........................................179
exits ................................................................................ 203 getConsummablesForProcessResource...........................233
getConsummablesForProcessResources .........................228
getContainingMachine ....................................................252
F getContainingMachineResource .....................................252
getContentByType ..........................................................295
Factory Component ........................................................ 101 getContents .............................................................182, 302
Factory Operations Component...................................... 117 getContentsByType.........................................................302
Factory Operations Scenario .............................................. 9 getContextSpec ...............................................................302
FactoryCalendar ............................................................. 111 getControllerArguments..................................................306
FactorySupervisor .......................................................... 119 getControlResults............................................................306
findActiveJobNamed........................................................ 68 getControlStrategy ..........................................................303
findAnAvailableCassette ................................................ 177 getControlStrategyDescription........................................302
findBOMSpecificationNamed ........................................ 213 getControlStrategyFactory ..............................................299
findByIdentifier .............................................................. 327 getCurrentCapability.......................................................262
findCassetteNamed......................................................... 177 getCurrentProcessOperation ...........................................149
findChangeNoticeNamed ................................................. 86 getCurrentProcessOperations..........................................120
findCompletedJobNamed ................................................. 68 getDataCollectionPlanFactory ........................................310
findConsumableNamed .................................................. 191 getDeadline .......................................................................70
findControlData.............................................................. 312 getDefaultInventoryRegionSequence..............................199
findDispatcherFor........................................................... 319 getDefaultRecipeNamespace...........................................281
findDocumentNamed........................................................ 78 getDefaultValue ..............................................................114
findHistory ....................................................................... 96 getDepartment.................................................................331
findHistoryEvent .............................................................. 97 getDescription.........................................201, 251, 295, 346
findInventoryRegionNamed ........................................... 200 getDesignator ..................................................................346
findJobNamed .................................................................. 68 getDestinationArea .........................................................242
findLotNamed ................................................................ 145 getDestinationMachine ...................................................242
findMachineNamed ........................................................ 116 getDestinationPorts .........................................................242
findMachineResourceNamed ......................................... 252 getDispatchDecisions......................................................322
findNumberOfUnitsUntilPM.......................................... 285 getDispatchers.................................................................119
findPMSpecificationNamed ........................................... 286 getDocumentContents.......................................................81
findProcessCapabilityNamed ......................................... 235 getDocumentRevision.............................................215, 288
findProductNamed.......................................................... 146 getDurablesForProcessResource.....................................232
findProductSpecificationNamed..................................... 218 getDurablesForProcessResources ...................................228
findQualificationByIdentifier ......................................... 333 getDurationLimit.............................................................178
findQueuedJobNamed ...................................................... 68 getE10StateCode.............................................................252
findRevisionNamed.......................................................... 80 getEnterQuantity.............................................................208
findSensorNamed ........................................................... 252 getEnterTime...................................................................204

SEMATECH Technology Transfer # 93061697J-ENG


Index 387

getExecutionContext ...................................................... 306 getProcessCapability.......................................................232


getExecutionType........................................................... 306 getProcessCapabilityIdentifier ........................................236
getExecutors ................................................................... 305 getProcessFlowContext...................................................161
getExitQuantity .............................................................. 208 getProcessFlowContexts .................................................120
getExitTime.................................................................... 204 getProcessGroup .............................................................261
getExplanation........................................................ 114, 323 getProcessGroupSizeMaximum......................................257
getFacilityValue ............................................................. 115 getProcessGroupSizeMinimum.......................................257
getFactoryCalendar......................................................... 110 getProcessGroupSizeUnits..............................................257
getFactorySupervisor...................................................... 132 getProcessingTimeForProcessResource..........................229
getFullname.................................................................... 331 getProcessMachineForRecipeNamespace.......................277
getHistoryCollection......................................................... 56 getProcessMachineJob ....................................................173
getHistoryCollections ....................................................... 97 getProcessMachines................................................122, 279
getHistoryEvents ...................................................... 56, 201 getProcessOperations......................................................261
getHistoryEventsForLot ................................................. 209 getProcessOperationSpecification...................................233
getHistoryEventsForMaterial ......................................... 204 getProcessResource.........................................................173
getID............................................................................... 303 getProductionHistory ......................................................149
getIdentificationNumber................................................. 331 getProductManager .........................................................132
getIdentifier ... 139, 140, 171, 199, 201, 210, 215, 219, 225, getProductQuantity .........................................................125
228, 230, 232, 269 getProductRequest ..................................................131, 171
getInventoryControlIdentifier......................................... 252 getProductRequestIdentifier ...........................................125
getJobRequestor ............................................................... 70 getProductRequests.........................................................121
getJobsFor ........................................................................ 73 getProductSpecification ..........................121, 125, 226, 230
getLot ............................................................................. 148 getProductType...............................................................148
getLotFamilies................................................................ 125 getQualificationDesignator .............................................341
getLotFamily .......................................................... 120, 161 getRecipeApproval .........................................................275
getLotJob................................................................ 161, 171 getRecipeCertification ....................................................275
getMachine ..................................................................... 270 getRecipeContents ..........................................................275
getMachineRecipe .......................................................... 279 getRecipeEstimatedRunTime..........................................275
getMachineResource ...................................................... 271 getRecipeIdentifier..........................................................275
getMaterialTrackingLocation ......................... 148, 178, 255 getRecipeNameForProcessResource...............................233
getMaximumAssignedJobs............................................. 331 getRecipeNamespace ......................................................281
getMaximumAssignedMachines..................................... 331 getRecipeNamespaceByName ........................................276
getMaximumCapacity..................................................... 270 getRecipeNamespaceForProcessMachine.......................276
getModelNumber............................................................ 251 getRequiredQuantity .......................................................216
getName............................................................................ 56 getRequiredResult...........................................................346
getNamedValue .............................................................. 313 getRunData .....................................................................259
getNextProcessOperationSpecificationOnDefaultPath... 225 getRunningContext .........................................................303
getNominalSize ...................................................... 157, 184 getRunningControlStrategy ....................................301, 306
getNonCycleTime........................................................... 205 getRunningControlStrategyFactory ................................299
getNumberOfPositions ................................................... 184 getSerialNumber .....................................................148, 251
getNumberOfUnits ......................................................... 192 getSettingsForProcessResource ......................................233
getOperatorInstructions .................................................. 233 getSetupForProcessResource ..........................................233
getOrderItemIdentifier.................................................... 125 getShift............................................................................331
getOriginalEnterQuantity ............................................... 208 getSkillCategories ...........................................................344
getOriginalWafer............................................................ 158 getSoftwareVersionNumber............................................252
getOriginationArea ......................................................... 242 getSpecification ..........................................................81, 87
getOriginationMachine................................................... 242 getSuperArea ..................................................................109
getOriginationPorts ........................................................ 242 getSupportResource ........................................................289
getOwner .......................................................................... 57 getTags............................................................................313
getPackage...................................................................... 158 getTimesUsedLimit.........................................................178
getParentProductSpecification ....................................... 215 getTransportGroup..........................................................242
getPartNumber................................................................ 148 getTransportJob ..............................................................188
getPersons ...................................................................... 289 getTransportJobSupervisors............................................122
getPlanReleaseTime ....................................................... 125 getUnit ............................................................................192
getPluginFactory ............................................................ 294 getUnits...........................................................................270
getPMActivity ................................................................ 289 getUnreleasedLots...........................................................132
getPMSpecifications....................................................... 250 getUsedForProduct .........................................................181
getPositionalContainer ................................................... 148 getUsedInProcess............................................................181
getPositions .................................................................... 184 getValues ........................................................................313
getPreviousProcessOperationSpecification .................... 225 getVendor .......................................................................251
getPriority................................................................. 71, 215 getWaferMapCoordinate.................................................158

Technology Transfer # 93061697J-ENG SEMATECH


388 Index

Global Exception Definitions ........................................... 50 isCompleted ......................................................71, 126, 163


Global Type Definitions ................................................... 40 isCreated .................................................................149, 162
isEmptied ........................................................................163
isEmpty .............................................................98, 183, 202
H isEqualTo........................................................229, 232, 236
isFinished..........................................................71, 150, 163
hasAvailableCapacity ..................................................... 270 isFlowFinished................................................................163
hasSkill........................................................................... 333 isGoingToStandby ..........................................................104
hasSkills ......................................................................... 334 isIdle ...............................................................................150
History.............................................................................. 97 isInactive...........................................................................82
History Management Facility ........................................... 94 isInProduction.................................................................149
HistoryCollection ............................................................. 96 isInputOutputPort ...........................................................264
HistoryEvent..................................................................... 43 isInputPort ......................................................................264
historyEventCount............................................................ 97 isInSameFlowAs.............................................................229
HistoryEventSequence ..................................................... 43 isInUse ............................................................................179
holds ................................................................................. 81 isInWork .....................................................................82, 88
isLifetimeExpired............................................................179
isLoggedIn ......................................................................163
isLoggedOut....................................................................163
I isMemberOf ............................................................139, 163
isNamed ............................................................................56
includes .......................................................................... 202 isNormalEnter.................................................................204
incrementProcessTimeBy............................................... 286 isNormalEnterForMaterial ..............................................202
incrementQuantityBy.............................................. 192, 286 isNormalExit...................................................................204
incrementTimesUsed...................................................... 179 isNotAllocated ................................................................149
informComponentManagerIsOperating.......................... 103 isNotAvailable ..................................................59, 179, 192
informComponentManagerIsStopped............................. 103 isNotCompleted ..............................................................126
informJobCompleted ........................................................ 73 isNotOnHold...................................................126, 150, 163
informJobStarted .............................................................. 73 isNotRegistered.................................................................62
informJobTerminated ....................................................... 73 isOff ................................................................................104
informMachineReadyforMaterialTransfer...................... 241 isOnHold.........................................................126, 150, 163
informPMActivityComplete........................................... 286 isOnShift .........................................................................333
informPMActivityStarted ............................................... 286 isOperating......................................................................104
interestedInEntry ............................................................ 211 isOriginalLot...................................................................163
interestedInExit .............................................................. 211 isOutputPort ....................................................................264
IntervalT ........................................................................... 41 isPaused ............................................................................71
InvalidStateTransitionSignal ............................................ 50 isPausing ...........................................................................71
Inventory Region Management Component................... 194 isPreparingToActivate ......................................................88
InventoryRegion..................................................... 201, 206 isProcessing ....................................................................150
InventoryRegionManager............................................... 197 isProcessingCompleted ...................................................150
InventoryRegionNotFoundSignal................................... 200 isQualifiedForJob............................................................334
InventoryRegionSystem ................................................. 199 isQualifiedForJobs ..........................................................334
isAborted .......................................................................... 71 isQueued ...........................................................................71
isAborting......................................................................... 71 isReady ...........................................................................264
isActivated........................................................................ 88 isRecipeProtected............................................................275
isActive....................................................................... 71, 81 isRecipeVerified .............................................................275
isAllocated...................................................................... 149 isRegistered.......................................................................62
isAssignedToJob ............................................................ 334 isReleased .......................................................................162
isAssignedToJobs........................................................... 334 isReserved.......................................................163, 179, 250
isAssignedToMachine .................................................... 334 isReservedToReceive......................................................264
isAssignedToMachines................................................... 334 isReservedToSend...........................................................264
isAtLastProcessOperation .............................................. 230 isScrapped.......................................................150, 163, 179
isAtLastProcessOperationSpecification.......................... 226 isShipped ................................................................150, 163
isAtWorkStation............................................................. 333 isShuttingDown ........................................................62, 104
isAvailable........................................................ 59, 179, 192 isShuttingDownImmediately...........................................104
isAvailableForJob........................................................... 334 isStandby.........................................................................104
isAvailableForMachine .................................................. 334 isStartingUp ..............................................................62, 104
isAvailableForMoreJobAssignments.............................. 335 isStopped ....................................................................62, 71
isAvailableForMoreMachineAssignments...................... 334 isStopping .........................................................................71
isAvailableForWork ....................................................... 333 isTraveling ......................................................................149
isCancelled ....................................................................... 71 isVersionManagementEnabled .........................................78

SEMATECH Technology Transfer # 93061697J-ENG


Index 389

isWaitingToLogin........................................................... 163
M
Machine ..................................................................254, 257
J Machine Management Group..........................................248
MachineE10StateChangedEvent.....................................371
Job .................................... 70, 120, 131, 242, 261, 289, 306 MachineLifecycleEvent ..................................................370
Job Supervisor Abstract Interface Group.......................... 65 MachineListChangedEvent.............................................116
JobDeadlineCannotBeMetEvent ...................................... 70 MachineProcessCapabilitiesChangedEvent ....................372
JobDeadlineChangedEvent............................................... 70 MachineRecipe ...............................................................275
JobLifecycleEvent .......................................................... 357 MachineRecipeAssignmentChangedEvent .....................378
JobRequestor ............................................ 73, 122, 124, 132 MachineRecipeLifecycleEvent .......................................377
JobStateChangedEvent ............................................. 70, 357 MachineRecipeParameterChangedEvent ........................377
JobSupervisor ................... 67, 119, 130, 239, 257, 284, 305 MachineRegister .............................................................116
joinAll_into .................................................................... 145 MachineReservationChangedEvent ........................254, 372
joinCandidates ................................................................ 162 MachineResource....................................................251, 254
MachineResourceE10StateChangedEvent ..............251, 373
MachineResourceLifecycleEvent....................................371
L MachineResourceStateChangedEvent ............................373
machines .........................................................................110
lastEnterEventForLot ..................................................... 209 MachineSetupChangedEvent ..................................254, 371
lastExitEventForLot ....................................................... 209 makeAborted.....................................................................71
lastExitEventForMaterial ............................................... 204 makeActivated ..................................................................87
lastLotEnter .................................................................... 209 makeActive .......................................................................81
lastLotExit ...................................................................... 209 makeAllocated ................................................................149
lastMaterialEntered ........................................................ 204 makeAtWorkStation........................................................333
lastMaterialExited .......................................................... 204 makeAvailable ........................................................179, 192
LifecycleState................................................................... 41 makeCanceled...................................................................71
loadLotIntoMaterialContainer ........................................ 162 makeCompleted ......................................................126, 161
location........................................................................... 255 makeCreated ...................................................................161
LongSequence .................................................................. 41 makeEmptied ..................................................................161
lookupControlStrategy ................................................... 300 makeFinished ..........................................................149, 161
lookupDataCollectionPlan.............................................. 309 makeGoingToStandby.....................................................104
lookupPlugin .................................................................. 293 makeIdle..........................................................................149
lookupRunningControlStrategyByExecutionContext..... 301 makeInactive.....................................................................81
lookupRunningControlStrategyByID ............................. 301 makeInProduction ...........................................................149
lookupRunningControlStrategyByName........................ 301 makeInUse ......................................................................179
Lot .................................................................................. 160 makeInWork .....................................................................87
LotDueDateChangedEvent............................................. 361 makeLoggedIn ................................................................161
LotDueDateChangedFilters ............................................ 361 makeLoggedOut..............................................................161
lotEnter........................................................................... 207 makeNotAllocated ..........................................................149
lotExit............................................................................. 207 makeNotAtWorkStation..................................................333
LotFamily ....................................................................... 171 makeNotAvailable ..................................................179, 192
LotFlowPositionAdjustedEvent ..................................... 362 makeNotCompleted ........................................................126
LotJob............................................................................. 120 makeNotOnHold.............................................126, 149, 161
LotJobExecutor .............................................................. 122 makeNotPaused ................................................................71
LotJobPriorityChangedEvent ................................. 120, 383 makeNotRegistered...........................................................61
LotJobProductSpecificationChangedEvent .................... 120 makeOff ..........................................................................104
LotJobProductSpecificationyChangedEvent .................. 383 makeOffShift...................................................................333
LotLifecycleEvent .................................................. 144, 360 makeOnHold...................................................126, 149, 161
lotMovedFromOperation ................................................ 208 makeOnShift ...................................................................333
LotPriorityChangedEvent............................................... 361 makeOperating................................................................104
LotProcessFlowChangedEvent............................... 161, 362 makePaused ......................................................................71
LotQuantityChangedEvent ..................................... 160, 361 makePreparingToActivate.................................................87
LotQuantityChangedFilters ............................................ 361 makeProcessing...............................................................149
LotRegion....................................................................... 206 makeProcessingCompleted .............................................149
LotReservationChangedEvent ................................ 160, 363 makeRegistered.................................................................61
lots .................................................................................. 173 makeReleased .................................................................161
LotStateChangedEvent ........................................... 160, 360 makeScrapped.................................................149, 161, 179
makeShipped...........................................................149, 161
makeShuttingDown...................................................61, 104

Technology Transfer # 93061697J-ENG SEMATECH


390 Index

makeShuttingDownImmediately .................................... 104


makeStandby .................................................................. 104
O
makeStartingUp........................................................ 61, 104
makeStopped .............................................................. 61, 71 operationsUsed ...............................................................208
makeTraveling................................................................ 149 OrderLifecycleEvent.......................................................378
makeWaitingToLogin..................................................... 161 originalLot ......................................................................171
Material .................................................. 139, 148, 178, 192 OwnedEntity .................57, 58, 70, 109, 111, 201, 210, 269
Material Management Abstract Interface Group ............ 138
Material Movement Abstract Interface Group................ 237
Material Movement Component..................................... 245 P
Material Release Component.......................................... 133
MaterialContainer................................................... 182, 184 Package ...........................................................................159
MaterialContainerLifecycleEvent........................... 176, 363 pauseAllJobs .....................................................................68
materialContainers.......................................................... 163 Person .............................................................................330
MaterialGroup ........................................ 140, 160, 173, 188 Person Management Component ....................................326
materialGroups ............................................................... 139 PersonCapacityChangedEvent ................................331, 380
MaterialMovementController ......................................... 244 PersonLifecycleEvent .............................................327, 380
MaterialMovementManager ........................................... 246 PersonManager ...............................................................327
MaterialReleaseManager ................................................ 135 PersonNotAssigned.........................................................327
MaterialTrackingLocation .............................................. 269 PersonNotFoundSignal ...................................................327
MaterialTrackingLocationLifecycleEvent...................... 374 PersonRemovalFailedSignal ...........................................327
MaterialTrackingLocationMaterialChangedEvent ......... 375 PersonResponsibility ........................................................43
MaterialTrackingLocationStateChangedEvent............... 376 persons ............................................................................110
MESFactory ................................................................... 103 PersonShiftChangedEvent ......................................331, 381
MESFactoryStateChangedEvent ............................ 103, 358 PersonStateChangedEvent ......................................331, 381
mostRecentlySplitFrom.................................................. 163 Plan Management Functional Group ..............................315
moveInventoryRegion_afterInventoryRegion ................ 200 PlanChangedEvent..........................................................379
moveToNextProcessOperationSpecificationOnDefaultPath PlannedShutDowns ...........................................................42
226 PlannedStartUps ...............................................................42
moveToPreviousProcessOperationSpecification ............ 226 Plugin..............................................................................295
moveToProcessOperationSpecification.......................... 226 Plugin Execution Component .........................................296
mtdAverageAge.............................................................. 203 Plugin Management Component.....................................292
mtdAverageCycleTime................................................... 203 PluginExecutor ...............................................................297
mtdAverageNonCycleTime............................................ 204 PluginFactory..................................................................293
mtdAverageYield............................................................ 207 PluginManager................................................................294
mtdLotsExistingQuantity................................................ 207 PMActivityStateChangedEvent ..............................284, 385
mtdPassedQuantity ......................................................... 207 PMDefinition ....................................................................44
mtdScrappedQuantity ..................................................... 207 PMJob.............................................................................289
PMJobStateChangedEvent..............................................289
PMScheduleLifecycleEvent............................................377
N PMScheduleStateChangedEvent.....................................377
PMSpecification .............................................................287
NamedEntity........ 56, 57, 79, 81, 87, 96, 97, 113, 125, 139, PMSpecificationChangedEvent ......................................284
140, 171, 199, 215, 216, 219, 225, 228, 230, 232, 236, PMSpecificationCreatedEvent ........................................287
278, 281, 287, 295 PMSpecificationLifecycleEvent......................................384
nameQualifiedTo.............................................................. 58 PMSpecificationStateChangedEvent ..............................385
newProductRequestsAvailableForRelease ..................... 135 Policy Management ................................................112, 113
None ................................................................................. 73 PolicyVariable ................................................................113
normalQuantityExited .................................................... 208 population .......................................................................203
notifyAPCReadyToRun.................................................. 259 populationAt ...................................................................202
notifyAPCSetupReadyForMachine ................................ 259 Port .................................................................................264
notifyOnEntry................................................................. 210 PortAvailableEvent .................................264, 267, 268, 370
notifyOnExit................................................................... 210 PortChangedEvent ..........................................................372
PortStateChangedEvent ..................................264, 267, 268
PositionalContainer.................................................184, 186
possibleCapabilities ........................................................263
prepareToReceiveMaterial......................................255, 267
prepareToSendMaterial...........................................256, 267
PriorityOfEvent.................................................................41
Process Capability Management Component..................234
Process Specification Management Component .............221

SEMATECH Technology Transfer # 93061697J-ENG


Index 391

Process Specification Management Functional Group ... 236


processCapabilities ................................................. 333, 345
R
ProcessCapability ........................................................... 236
ProcessCapabilityLifeCycleEvent .......................... 235, 376 Recipe Management Component ....................................272
ProcessCapabilityMachineChangedEvent .............. 236, 376 RecipeControl .................................................................281
ProcessCapabilityManager ............................................. 235 RecipeNamespace ...........................................................278
ProcessDefinitionLifecycleEvent ................................... 368 RecipeNamespaceLifecycleEvent...................................384
ProcessDurable............................................................... 181 RecipeNamespaceManager.............................................276
ProcessDurableLifecycleEvent............................... 176, 364 RecipeParameterChangedEvent..............................278, 384
processDurablesUsed ..................................................... 177 RegionSensor ..................................................................210
processDurablesUsedForProduct ................................... 177 RegionSystemNotFoundSignal .......................................197
processDurablesUsedInProcess ...................................... 177 registerMaterialMovementController..............................246
ProcessFlowContext ....................................................... 230 rejectSignOff.....................................................................87
ProcessFlowContextChangedEvent................................ 230 removeAllMaterials ........................................................140
ProcessFlowContextLifecycleEvent............................... 369 removeArea.....................................................................103
ProcessFlowIterator........................................................ 225 removeAssignedCapability .....................................259, 263
ProcessFlowLifecycleEvent............................................ 369 removeBOMBody...........................................................215
ProcessGroup ................................................................. 173 removeBOMSpecification...............................................213
ProcessGroupLifecycleEvent.................................. 144, 359 removeCalendarDay........................................................111
processGroups ................................................................ 163 removeCassette ...............................................................176
ProcessMachine.............................................................. 257 removeChangeNoticeNamed ............................................86
ProcessMachineJob ........................................................ 261 removeChannelForEvent ..................................................92
ProcessOperation............................................................ 232 removeConsumable.........................................................191
ProcessOperationSpecification ....................................... 228 removeDataCollectionPlan .............................................309
ProcessResource............................................................. 262 removeDie_atCoordinate ................................................159
ProcessResourceHistoryAddedEvent ............................. 375 removeDispatchableObject .............................................320
ProcessResourceProcessCapabilityChangedEvent . 262, 374 removeDispatchDecision ................................................322
processResources.................................... 192, 228, 232, 236 removeDispatcher ...........................................................319
ProcessRunSizeChangedEvent ............................... 257, 373 removeDocumentNamed...................................................77
ProcessSpecificationManager......................................... 223 removeDurable................................................................255
Product ................................................... 148, 157, 158, 159 removeFinishedJob ...........................................................68
Product Management Component .................................. 142 removeHistory...................................................................96
Product Request Management Component .................... 129 removeHistoryEvent .........................................................97
Product Request Scenario................................................. 10 removeInventoryRegion..................................................200
Product Specification Management Component ............ 217 removeInventoryRegionSystem......................................197
ProductManager ............................................................. 143 removeLot.......................................................................173
ProductProcessingChangedEvent ................................... 374 removeMachine.......................................................110, 116
ProductRequest .............................................................. 125 removeMaterial.......................................................140, 182
ProductRequestExecutor ................................................ 132 removeMaterialContainer ...............................................188
ProductRequestJob ......................................................... 131 removeMaterialFromPosition .........................................184
ProductRequestLifecycleEvent....................................... 379 removeMaterialGroup.....................................................141
ProductRequestManager ................................................ 130 removeNameFromDefaultSignOffSet...............................88
productRequestManagers ............................................... 124 removePerson..........................................................110, 327
ProductRequestStateChangedEvent ....................... 125, 379 removePlannedShutDown...............................................111
products .......................................................................... 173 removePlannedStartUp ...................................................112
ProductSpecification ...................................................... 219 removePlugin ..................................................................293
ProductSpecificationLifecycleEvent .............................. 369 removePossibleCapability.......................................259, 262
ProductSpecificationManager ........................................ 218 removeProcessCapabilityNamed.....................................235
productUnitsScrapped .................................................... 172 removeProcessDurable....................................................177
removeProcessFlowContext............................................223
removeProcessFlowIterator.............................................223
removeProcessGroup ......................................................145
Q removeProcessMachine ..................................................278
removeProcessResource..................................................236
QualificationData ........................................................... 341 removeProductType........................................................145
qualifications .................................................................. 333 removeQualification........................................................333
quantityOfProductMoves ............................................... 208 removeRecipeNamespace ...............................................276
quantityOfProductMoves_forOperationNamed.............. 208 removeRegionSensor ......................................................197
quantityScrapped ............................................................ 208 removeResponsibility_fromCategory..............................332
quantityStarted ............................................................... 172 removeRevisionNamed.....................................................79
queryControlData ........................................................... 312 removeSensor..................................................................252

Technology Transfer # 93061697J-ENG SEMATECH


392 Index

removeSkill .................................................................... 332 setInventoryControlIdentifier..........................................252


removeSkillNamed ......................................................... 343 setLotFamilies.................................................................125
removeSkillRequirement ................................................ 344 setMaterial ......................................................................269
removeSubArea .............................................................. 110 setMaterialTrackingLocation ..........................148, 178, 255
removeSupportResource......................................... 286, 287 setMaximumAssignedJobs..............................................331
removeTransportGroup .................................................. 176 setMaximumAssignedMachines .....................................331
removeWaferFromPosition............................................. 186 setName ............................................................................56
replaceValues ................................................................. 313 setOrderItemIdentifier.....................................................125
RequestControl............................................................... 305 setOwner ...........................................................................57
requestJob......................................................................... 68 setPartNumber ................................................................148
requirements ................................................................... 345 setPlanReleaseTime ........................................................125
ReservationState............................................................... 41 setPositionalContainer ....................................................148
reserve .................................................................... 161, 179 setPriority..........................................................................71
reservedBy.............................................................. 163, 179 setProcessCapabilityIdentifier.........................................236
reservedFor..................................................................... 250 setProductQuantity..........................................................125
reserveFor....................................................................... 250 setProductSpecification ..................................................121
resetDayToDateStatistics................................................ 202 setProductType ...............................................................148
resetMonthToDateStatistics............................................ 202 setQualificationDesignator..............................................341
resetYearToDateStatistics............................................... 202 setQualificationHistory ...................................................341
Resource ....................... 58, 61, 67, 103, 116, 250, 262, 330 setRecipeEstimatedRunTime ..........................................275
Resource Component ....................................................... 55 setRecipeNamespace.......................................................281
Resource Tracking Component ...................................... 283 setRequiredQuantity .......................................................216
resourceLevel ................................................................... 58 setRequiredResult ...........................................................346
ResourceSchedule ............................................................ 42 setSerialNumber..............................................................148
ResourceScheduleSequence ............................................. 42 setShift ............................................................................331
ResourceTrackingManager............................................. 284 setSkillCategories ...........................................................344
responsibilities................................................................ 332 setTargetCompletionTime...............................................242
ResponsibilitySequence.................................................... 43 setTimesUsedLimit .........................................................178
resumeAllJobs .................................................................. 68 Setting...............................................................................41
RunningControlStrategy................................................. 303 SettingSequence................................................................41
RunningControlStrategyFactory..................................... 301 setTransportJob...............................................................188
setUnit.............................................................................270
setupDataCollection........................................................314
S setupPlugin .....................................................................297
setUsedForProduct..........................................................181
selectDataCollectionPlan................................................ 310 setUsedInProcess ............................................................181
selectDispatchDecision................................................... 322 SetValueOutOfRangeSignal .............................................50
selectRecipe.................................................................... 282 Shift ..................................................................................42
selectStrategy.................................................................. 299 ShiftSequence ...................................................................42
shutdownImmediate..........................................................58
Sensor ............................................................................ 271
shutdownNormal...............................................................58
setActivationDate ............................................................. 81
size ..................................................................................141
setAreaIdentifier............................................................. 110
Skill.................................................................................344
setBin.............................................................................. 158
Skill Management Component........................................342
setChildPartsUnit ........................................................... 216
SkillManager...................................................................343
setCurrentCapability............................................... 259, 262
SkillNotFoundSignal ......................................................343
setDeadline ....................................................................... 70
SkillRequirement ............................................................346
setDefaultRecipeNamespace .......................................... 281
skills........................................................................332, 343
setDefaultValue .............................................................. 114
startUp ..............................................................................58
setDepartment................................................................. 331
stopAllJobs .......................................................................68
setDescription................................................. 201, 251, 346
stringSequence ..................................................................41
setDesignator .................................................................. 346
subAreas .........................................................................110
setDocumentContents....................................................... 81
subresources......................................................................59
setDurationLimit ............................................................ 178
SupportResource.....................................250, 251, 264, 271
setE10StateCode............................................................. 252
SupportResourceAddedEvent .........................................287
setExplanation ........................................................ 114, 323
SupportResourceStateChangedEvent......................250, 383
setFacilityValue.............................................................. 115
setFullname .................................................................... 331
setIdentificationNumber ................................................. 331
setIdentifier............ 139, 140, 171, 199, 210, 215, 219, 225,
228,230, 232, 269

SEMATECH Technology Transfer # 93061697J-ENG


Index 393

T W
throughput .............................................................. 145, 202 Wafer ..............................................................................157
Time Services ................................................................... 90 WaferLifecycleEvent ..............................................144, 360
timeContribution ............................................................ 204 whatNextForMachine .....................................................320
TimePeriodInvalidSignal.................................................. 50 whatNextForPerson ........................................................320
timeRemaining ................................................................. 71 whereNextForLot............................................................320
timeSinceLastPM ........................................................... 285 wipCount ........................................................................145
TimeStamp ....................................................................... 41 workDay_for...................................................................112
TimeStampSequence ........................................................ 41
timeStartedInFactory ...................................................... 171
timesUsed ....................................................................... 179 Y
TimeT............................................................................... 41
TimeWindow.................................................................... 42 yield ................................................................................207
transferProducts_toLot ................................................... 162 ytdAverageAge ...............................................................204
transferWafers_toCassette .............................................. 186 ytdAverageCycleTime.....................................................204
TransportGroup .............................................................. 188 ytdAverageNonCycleTime..............................................204
TransportGroupLifecycleEvent .............................. 176, 363 ytdAverageYield.............................................................207
transportGroups .............................................................. 183 ytdLotsExistingQuantity .................................................207
TransportJob................................................................... 242 ytdPassedQuantity...........................................................207
TransportJobSupervisor.................................. 239, 244, 246 ytdScrappedQuantity.......................................................207
TransportJobSupervisorConfigurationChangedEvent ... 239,
381
transportTime ................................................................. 243

U
Unit................................................................................... 40
Units ................................................................................. 40
unitsProcessedSinceLastPM........................................... 285
unloadAll........................................................................ 185
unloadLotFromMaterialContainers ................................ 162
unloadMaterialAll .......................................................... 182
unregisterMaterialMovementController ......................... 246
unReserve ............................................................... 250, 268
unsetupDataCollection ................................................... 314
unsetupPlugin ................................................................. 297
updateRecipe .................................................................. 279
updateValues .................................................................. 313
uploadRecipe .................................................................. 282
uploadRecipeFromMachine ........................................... 279

V
verifyRecipe ................................................................... 282
Version Management Component .................................... 85
VersioningRequiredEvent ................................................ 77
versionManagementOff.................................................... 77
versionManagementOn..................................................... 77
VersionManagementRequiredEvent............................... 366
VersionManager ............................................................... 86

Technology Transfer # 93061697J-ENG SEMATECH


SEMATECH Technology Transfer
2706 Montopolis Drive
Austin, TX 78741

http://www.sematech.org

Das könnte Ihnen auch gefallen