SECS/GEM background
SECS/GEM is the family of SEMI standards that defines how factory equipment talks to a host computer. This section covers the concepts you need before you use the PDComm SDK. Each page tells you which standard and topic a concept comes from, so you can look up the details in the standard.
Where SECS/GEM is used
Section titled “Where SECS/GEM is used”A semiconductor fab runs hundreds of process tools: lithography scanners, etchers, deposition chambers, metrology tools. The fab’s manufacturing execution system (MES) or a cell controller has to read each tool’s status, download process programs, and receive events and alarms. SECS/GEM is the common language for that conversation. When a tool vendor ships a SECS/GEM interface, the fab connects the tool the same way it connects every other tool instead of learning a vendor protocol.
+---------------------------+ +---------------------------+| MES / fab host | | Cell controller |+-------------+-------------+ +-------------+-------------+ | HSMS (TCP/IP) | HSMS or SECS-I +-------+--------+ +-------+--------+ | Equipment A | | Equipment B | | (GEM) | | (GEM) | +----------------+ +----------------+The same standards also run in factories that resemble semiconductor fabs, such as flat-panel display, LED, solar cell and electronics assembly lines.
The standards
Section titled “The standards”“SECS/GEM” is shorthand for several SEMI standards:
| Standard | Name | What it covers | Read more |
|---|---|---|---|
| SEMI E5 | SECS-II | Message and data item structure; the meaning of streams and functions | SECS-II messages |
| SEMI E37, E37.1 | HSMS, HSMS-SS | Carrying SECS-II messages over TCP/IP and managing the connection | HSMS |
| SEMI E4 | SECS-I | Sending messages as blocks over an RS-232 serial line | SECS-I |
| SEMI E30 | GEM | Standard equipment behavior: communication and control state models, data collection, alarms, remote commands | GEM state models, GEM capabilities |
| SEMI E39, E40, E87, E90, E94 and others | GEM300 | Additional standards for 300 mm fabs: carriers, process jobs, substrate tracking | GEM300 |
You can buy the standards from SEMI. These pages cite standard names and topics; they don’t reproduce standard text.
How the layers fit together
Section titled “How the layers fit together”SECS/GEM is easiest to understand as a stack. The lower layers move bytes; the upper layers give those bytes meaning.
+--------------------------------------------------+| Your application (host or equipment) |+--------------------------------------------------+| GEM (SEMI E30) || state models, data collection, alarms, || remote commands, process programs, spooling |+--------------------------------------------------+| SECS-II (SEMI E5) || stream/function messages and data items |+------------------------+-------------------------+| HSMS (SEMI E37) | SECS-I (SEMI E4) || TCP/IP | RS-232 serial line |+------------------------+-------------------------+- Transport: HSMS or SECS-I delivers each message to the peer. Almost all new equipment uses HSMS.
- Messages: SECS-II defines message names such as
S1F3and data formats such as lists, integers and strings. - Behavior: GEM defines which messages to send when, and how the receiver must react.
Host and equipment, active and passive
Section titled “Host and equipment, active and passive”Every connection has two independent settings:
- Role: the host manages equipment; the equipment is managed. GEM behavior depends on the role. For example, the equipment sends event reports and the host receives them.
- Connection mode: the active side opens the TCP connection; the passive side listens on a port and waits.
Role and connection mode don’t depend on each other. A host is usually active and the equipment passive, but the reverse is just as valid.
| Program A | Program B | Result |
|---|---|---|
| Host, active | Equipment, passive | The most common setup. |
| Host, passive | Equipment, active | The equipment opens the connection. Also valid. |
| Host, active | Equipment, active | Nobody listens, so no connection forms. |
| Host, passive | Equipment, passive | Nobody connects, so no connection forms. |
What PDComm provides
Section titled “What PDComm provides”The PDComm SECS/GEM SDK implements HSMS, SECS-I, SECS-II and GEM for both the host and the equipment side.
| Component | What it is |
|---|---|
| C ABI | pdcomm.h (SECS-II items), pdcomm_tcp.h (HSMS), pdcomm_secs1.h (SECS-I), pdcomm_gem*.h (GEM) and pdcomm_gem300.h (GEM300 capability catalog). |
| C++ wrappers | The matching .hpp headers. They need C++14 or later and manage handle lifetimes with RAII. |
| .NET binding | PDComm.dll for .NET 10. The PDComm namespace contains GemHost, GemEquipment and asynchronous worker classes. |
| GUI simulator | pdcomm-simulator, a Qt program that plays the equipment or the host so you can test without real equipment. |
| Headless simulator | pdcomm-simulator-headless runs predefined scenarios without a display and prints JSON results. |
| MCP server | pdcomm-simulator-mcp exposes the simulator as Model Context Protocol (MCP) tools, so AI tools and automation scripts can drive it. |
The C ABI never creates threads or callbacks of its own. Your application calls poll to make progress and takes results from an event queue. The .NET worker classes run that loop for you on a dedicated thread. For every function and type, see the API reference.
Suggested reading order
Section titled “Suggested reading order”If you’re new to SECS/GEM, read the pages in this order:
- SECS-II messages: how to read messages and items.
- HSMS: TCP connections, Select and timers.
- GEM state models: communication and control states.
- GEM capabilities: data collection, events, alarms and remote commands.
- SECS-I if you work with serial lines, and GEM300 if you need the 300 mm standards.
Then make your first HSMS connection in the quickstart.