semi合集-English.pdf - 第1390页

SEMI E30-1103 © SEMI 1992, 2003 64 Figure 4.11 Spooling State Diagram Once communications are established, the host must initiate the spool unload sequence to restore full functionality (see b elow). Since the equipment …

100%1 / 7923
SEMI E30-1103 © SEMI 1992, 2003
63
4.11 Spooling — Spooling is a capability whereby the
equipment can queue messages intended for the host
during times of communication failure and
subsequently deliver these messages when
communication is restored. Spooling is limited to
primary messages of user-selected streams.
4.11.1 Purpose — The purpose of spooling is to
provide a method for retaining equipment message data
that might otherwise be lost due to communication
failure. The motive for producing this functionality is to
retain valuable data used to track material and to
improve product quality. The spooling capability fills a
gap in the SEMI E5 standard. In the past, without a
spooling capability, the equipment has typically
discarded messages that could not be delivered, or
turned messaging off altogether. It is intended that the
host initiate the spool unload process immediately
following the reestablishment of communications.
4.11.2 Definitions
MaxSpoolTransmit — An equipment constant
containing the maximum number of messages that the
equipment shall transmit from the spool in response to
an S6,F23 “Transmit Spooled Messages” request. If
MaxSpoolTransmit is set to zero, no limit is placed on
the messages sent from the spool. Multi-block
inquire/grant messages are not counted in this total.
OverWriteSpool — A boolean equipment constant used
to indicate to the equipment whether to overwrite data
in the spool area or to discard further messages
whenever the spool area limits are exceeded.
Send Queue — Refers to the queue into which
equipment generated SECS messages are placed in
preparation for transmission to the host.
Spool — The spool is an area of non-volatile storage in
which the equipment stores certain messages that
cannot be delivered to the host (when the equipment is
in the NOT COMMUNICATING substate of
COMMUNICATIONS ENABLED). The spool area
can be thought of as a sequential “ring” buffer. The
term spool is also used to denote the action of placing
messages into the spool area.
SpoolCountActual — A status variable used to keep a
count of the messages actually stored in the
equipment’s spool area. Multi-block inquire/grant
messages are not spooled and not included in this
count.
SpoolCountTotalA status variable used to keep a
count of the total number of primary messages directed
to the spool, regardless of whether placed or currently
retained in the spool. Multi-block inquire/grant
messages are not spooled and not included in this
count.
SpoolFullTime — A status variable containing the
timestamp when the spool last became full. If the spool
was not filled during the last spooling period, this will
contain a time value prior to the current
SpoolStartTime.
SpoolStartTime — A status variable containing the
timestamp from when spooling was last activated.
4.11.3 Description
4.11.3.1 Spooling State Model — There are two major
states of spooling: SPOOL INACTIVE and SPOOL
ACTIVE. SPOOL ACTIVE has two components:
SPOOL UNLOAD and SPOOL LOAD. These are each
broken into substates. A description of all spooling
states, substates, and applicable state transitions
follows. The POWER OFF and POWER ON parent
states are common to all equipment subsystems. They
are shown here to illustrate the retention of spooling
context during a power down situation.
NOTE 20: Disabling SECS communications does not affect
the current spooling state since no messages are generated
until communications are subsequently enabled. Spooling is
effectively frozen in this case.
POWER OFF
The equipment has lost power for any reason (e.g.,
power failure, power switch set to off).
POWER ON
The equipment is powered up.
SPOOL INACTIVE
This is the normal operating mode. No spooling occurs.
The spool area is empty. Primary SECS-II messages are
transmitted normally.
SPOOL ACTIVE
All primary SECS-II messages ready for sending and
for which spooling is enabled (see S2,F43) are directed
to the spool area. All other primary messages, except
Stream 1, are discarded. The equipment shall attempt to
send any secondary messages that are generated and
discard these messages should the attempt to send fail.
Spool state transitions from SPOOL INACTIVE to
SPOOL ACTIVE if the communications state changes
from COMMUNICATING to NOT COMMUNI-
CATING (Communication State Transition Table, #14)
or from WAIT CRA to WAIT DELAY
(Communication STATE Transition Table, #6).
SEMI E30-1103 © SEMI 1992, 2003
64
Figure 4.11
Spooling State Diagram
Once communications are established, the host must
initiate the spool unload sequence to restore full
functionality (see below). Since the equipment will
deliver secondary messages, the host may inquire for
information or send commands as needed.
The SPOOL ACTIVE state has two AND states:
SPOOL LOAD and SPOOL UNLOAD. This means
that they operate independently, though sharing data
and some state change stimuli. See Section 3.1 for
explanation of state model terms and notation.
SPOOL LOAD
The SPOOL LOAD component enters messages into
the spool area. It is divided into two substates: SPOOL
NOT FULL and SPOOL FULL. SPOOL NOT FULL is
the default entry substate of the parent state SPOOL
LOAD.
SPOOL NOT FULL
As primary SECS-II messages are directed to the spool
area, the equipment shall “write” the SECS-II message
to the end of the spool. Status variables
SpoolCountTotal and SpoolCountActual shall be
incremented each time a message is placed in the spool
area.
SPOOL FULL
In this state, all of the allocated spooling area is filled.
Choice of the following options shall be controlled by
the setting of a Boolean equipment constant called
“OverWriteSpool.” The first message to be dealt with is
that which could not be fit into the spool prior to
transition from SPOOL NOT FULL (see transition
table below).
OverWriteSpool is True: The equipment deletes as
many of the “oldest” records (e.g., SECS-II messages)
contained in the spool area necessary to make space for
the new message and then adds the message. Status
variable SpoolCountTotal shall be incremented
whenever a message is submitted to the spool area.
Status variable SpoolCountActual shall be manipulated
to keep an accurate count of the number of messages
contained in the spool area. For example, if it is
necessary to delete three messages in the spool area to
spool one message, SpoolCountActual would have
three subtracted and then one added to the total.
OverWriteSpool is False: Any subsequent primary
messages shall be discarded. When such a message is
discarded, SpoolCountTotal is incremented.
SPOOL UNLOAD
The SPOOL UNLOAD component of SPOOLACTIVE
deals with movement of messages out of the spool. It
has an active substate (SPOOL OUTPUT) and a
passive substate (NO SPOOL OUTPUT). NO SPOOL
OUTPUT is the default entry substate, since the
equipment is NOT COMMUNICATING at the time
spooling is initiated. When communications between
equipment and host are restored, there is an opportunity
for the host to recover spooled messages. No action is
taken until the host initiates the spool output process
via the S6,F23 (Request Spooled Data). The host has
the option to either receive the spooled messages (see
substate TRANSMIT SPOOL) or discard all messages
in the spool (see substate PURGE SPOOL).
NO SPOOL OUTPUT
In this state, no messages are removed from the spool.
SPOOL OUTPUT
The SPOOL OUTPUT state encompasses the removal
of messages from the spool. Its substates are TRANS-
MIT SPOOL and PURGE SPOOL.
TRANSMIT SPOOL
The host elects to receive all messages contained in the
spool area. The equipment is expected to keep track of
the oldest record (i.e., message) within the spool area.
When communications are re-established with the host
and transmission of the spool area is started, the oldest
record must be the first record transmitted, then the
next oldest record, etc. There is no prioritization of
messages to be sent from the spool.
As each spooled message is successfully transmitted to
the host, it is removed from the spool area upon
successful completion of the transaction. Spool-
CountActual is decremented as each message is
removed from the spool. The equipment shall transmit
SEMI E30-1103 © SEMI 1992, 2003
65
messages only from the spool area until all spooled
messages have been completely transmitted to the host.
Flow control of the spool transmit process is achieved
in two ways. First, only one open transaction on the
equipment is allowed during spool unload. Thus, if a
message requires a reply, the equipment shall wait for
that reply before transmitting the next spooled message.
Messages which require no reply may be transmitted
sequentially as rapidly as the message transfer
mechanism will allow.
The second flow control method is to allow the host to
limit the maximum number of messages sent from the
spool in response to the S6,F23 request. An equipment
constant named MaxSpoolTransmit may be set by the
host to achieve this behavior. If MaxSpoolTransmit is
set to five, for example, the equipment will send the
first five messages from the spool and then transition to
the NO SPOOL OUTPUT state, awaiting the next
S6,F23 request. There is no event report generated
when MaxSpoolTransmit is reached. The host is
responsible for determining this situation by a)
counting the messages received, b) timing out waiting
for the next message, c) inquiring to the equipment for
the curent value of the SpoolCountActual status
variable, or d) some combination of the above. If
MaxSpool-Transmit is set to zero, the spool shall be
transmitted completely in response to S6,F23.
Normal spooling continues during the spool transmit
process. If the SPOOL LOAD component should
transi-tion to SPOOL FULL, it shall not have any effect
on the SPOOL UNLOAD component. Once full, the
spool cannot make the transition back to SPOOL NOT
FULL except via the SPOOL INACTIVE state. Space
made available due to the spool unload process shall
not be used in this case.
When a multi-block message is to be transmitted from
the spool, any required inquire/grant transaction shall
be initiated. If the host’s response denies permission to
send the multi-block message, the equipment shall dis-
card that message and continue with the transmit pro-
cess. This sequence shall count as one message in the
MaxSpoolTransmit count.
There is one area where SPOOL LOAD and SPOOL
UNLOAD may interact: When the spool is full and
OverWriteSpool is True. During the spool transmit pro-
cess, spooled messages are being removed and new pri-
mary messages are being written to the spool. These
new messages are overwriting the oldest messages
available, unless the unload process has freed sufficient
spool space. There is a possibility that the unload and
overwrite processes may compete for control of the
same message area. For example, if the spool holds
messages ABCDE, with A oldest and E newest, A
might be sent to the host, B (and the space from A)
overwritten by the new message F, C sent to the host, D
and E (and the space from message C) overwritten by
G, etc. The loss of continuity may be “disorienting” to
the host program receiving the messages. It is expected
that the unload process will be fast relative to the
generation of new messages, so that this occurrence
will be rare.
Should a communication failure occur during the spool
transmit process, spooling shall continue as before the
transmit process began. However, the spool unload
sequence shall terminate (i.e., transition to NO SPOOL
OUTPUT will occur — see transition table below).
PURGE SPOOL
The equipment shall discard all messages in the spool
and, when the spool is empty, zero SpoolCountActual.