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
February 5, 2026
February 5, 2026