Skip to content

Control Job State Model (SEMI E94)

1. Overview

The Control Job (CJ) State Model defines the lifecycle of a control job as specified in SEMI E94 (Control Job Management). A control job is a higher-level job that manages one or more process jobs and provides scheduling control.

2. Control Job vs Process Job

Aspect Control Job (E94) Process Job (E40)
Level Higher (scheduling) Lower (execution)
Scope Multiple PJs Single recipe execution
Purpose Scheduling, grouping Actual processing
Contains 1..n Process Jobs Substrates

3. Control Job State Diagram

stateDiagram-v2 [*] --> QUEUED: Create Job QUEUED --> SELECTED: Select command QUEUED --> [*]: Delete SELECTED --> EXECUTING: Start / Auto-start SELECTED --> QUEUED: Deselect SELECTED --> [*]: Delete EXECUTING --> PAUSED: Pause command EXECUTING --> COMPLETED: All PJs complete EXECUTING --> WAITING_FOR_START: Hold PAUSED --> EXECUTING: Resume command PAUSED --> WAITING_FOR_START: Hold WAITING_FOR_START --> EXECUTING: Start command WAITING_FOR_START --> PAUSED: Pause COMPLETED --> [*]: Job removed

4. State Definitions

State Description
QUEUED Job created but not selected for execution
SELECTED Job selected, ready to start
WAITING_FOR_START Job held, waiting for explicit start
EXECUTING Job is running (process jobs executing)
PAUSED Job execution paused
COMPLETED All process jobs completed

5. Transition Table

# From State Trigger To State Action
1 - CJCreate QUEUED Create job instance
2 QUEUED CJSelect SELECTED Select for execution
3 QUEUED CJDelete (removed) Delete job
4 SELECTED CJStart EXECUTING Start process jobs
5 SELECTED Auto-start EXECUTING Start automatically
6 SELECTED CJDeselect QUEUED Deselect job
7 SELECTED CJDelete (removed) Delete job
8 EXECUTING CJPause PAUSED Pause processing
9 EXECUTING All PJs done COMPLETED Job complete
10 EXECUTING CJHold WAITING_FOR_START Hold execution
11 PAUSED CJResume EXECUTING Resume processing
12 PAUSED CJHold WAITING_FOR_START Hold execution
13 WAITING_FOR_START CJStart EXECUTING Resume execution
14 WAITING_FOR_START CJPause PAUSED Pause job

6. Control Job Attributes

Attribute Type Description
CJObjID A Unique control job identifier
CJState U1 Current state value
ProcessingCtrlSpec L Processing control specification
PRJobList L List of contained process job IDs
StartMethod U1 Manual/Auto start
DataCollectionPlan A Associated data collection plan
MtrlOutSpec L Material output specification

6.1 Control Job State Values

Value State
1 QUEUED
2 SELECTED
3 WAITING_FOR_START
4 EXECUTING
5 PAUSED
6 COMPLETED

7. CJ-PJ Relationship

flowchart TD subgraph ControlJob["Control Job: CJ001"] CJS[State: EXECUTING] end subgraph ProcessJobs["Process Jobs"] PJ1[PJ001<br/>PROCESSING] PJ2[PJ002<br/>QUEUED] PJ3[PJ003<br/>QUEUED] end ControlJob --> PJ1 ControlJob --> PJ2 ControlJob --> PJ3
Message Direction Description
S14F9 H→E CJCreate - Create control job
S14F10 E→H CJCreate Acknowledge
S14F1 H→E CJGetAttr - Get job attributes
S14F2 E→H CJGetAttr Data
S14F3 H→E CJCmd - Control job command
S14F4 E→H CJCmd Acknowledge

8.1 S14F9 - CJCreate

Structure:

S14F9 W
<L[n]
  <OBJSPEC>            // Object specifier
  <L[m]                // Attributes
    <L[2]
      <ATTRID>
      <ATTRDATA>
    >
    ...
  >
>

8.2 S14F3 - CJCmd (Control Job Command)

Structure:

S14F3 W
<L[n]
  <CJCMD>              // Command
  <L[m]                // Job list
    <CJOBJID>
    ...
  >
  <L[k]                // Parameters
    ...
  >
>

CJCMD Values:

Value Command Description
1 SELECT Select job for execution
2 DESELECT Deselect job
3 START Start job execution
4 PAUSE Pause job
5 RESUME Resume job
6 ABORT Abort job
7 STOP Stop job at safe point
8 DELETE Delete job
9 HOLD Hold job

9. Control Job Execution Sequence

sequenceDiagram participant Host participant Equipment Host->>Equipment: S14F9 W (CJCreate) Note right of Host: CJObjID="CJ001"<br/>ProcessJobs=[PJ001, PJ002] Equipment-->>Host: S14F10 (Success) Note over Equipment: CJ State: QUEUED Host->>Equipment: S14F3 W (SELECT) Equipment-->>Host: S14F4 (Success) Note over Equipment: CJ State: SELECTED Host->>Equipment: S14F3 W (START) Equipment-->>Host: S14F4 (Success) Note over Equipment: CJ State: EXECUTING Note over Equipment: Start PJ001 Equipment->>Host: S6F11 (PRJobStarted) Host-->>Equipment: S6F12 Note over Equipment: PJ001 complete, Start PJ002 Equipment->>Host: S6F11 (PRJobComplete) Host-->>Equipment: S6F12 Note over Equipment: PJ002 complete Equipment->>Host: S6F11 (PRJobComplete) Host-->>Equipment: S6F12 Note over Equipment: CJ State: COMPLETED Equipment->>Host: S6F11 (CJComplete) Host-->>Equipment: S6F12

10. Job Scheduling

10.1 Priority

Control jobs can be assigned priority for scheduling:

Priority Description
1 Highest priority
2-9 Normal priorities
10 Lowest priority

10.2 Queue Management

Command Effect
SELECT Move from QUEUED to SELECTED
DESELECT Move from SELECTED to QUEUED
Move Up Increase priority in queue
Move Down Decrease priority in queue
CEID Name Description
[8001] CJCreated Control job created
[8002] CJStateChange Control job state changed
[8003] CJSelected Control job selected
[8004] CJStarted Control job started
[8005] CJCompleted Control job completed
[8006] CJPaused Control job paused
[8007] CJResumed Control job resumed
[8008] CJAborted Control job aborted
SVID Name Type Description
[8001] ActiveCJCount U2 Number of active control jobs
[8002] SelectedCJID A Currently selected control job
[8003] ExecutingCJID A Currently executing control job

13. Error Handling

Error Condition Response
Invalid job ID OBJACK error
Wrong state for command S14F4 with error
PJ creation failed CJ creation fails
Queue full S14F10 with error