What to build once your tools speak REST, GraphQL and WebSocket

Seven things a fab can build on an equipment API that it cannot reasonably build on raw SECS/GEM, and which of the three interfaces each one wants.

Anandakumar Thangaraju··11 min read

Putting a REST, GraphQL and WebSocket interface in front of SECS/GEM is not the interesting part. The interesting part is what your own team can build afterwards without learning a 1980s protocol first.

This post is about that second part. Seven things worth building, what each one needs from the equipment, and which of the three interfaces fits. None of them require touching the tool.

1. A fab board that is actually live

Every fab has a status board. Most are a page that reloads, showing state that was true when the page loaded.

With a push interface, the board stops asking. Connection state, control state and alarms arrive when they change, because the tool raised them. Nobody refreshes anything, and the display is not a snapshot with a timestamp attached, it is the current state.

Wants: WebSocket for the changes, one REST or GraphQL call for the initial picture.

2. Alarm escalation that reaches a person

A tool raises S5F1 and the alarm goes into a log. Someone sees it at the next walkthrough. If it happened at 02:00 on a Sunday during a critical lot, that is a long time.

Once alarms are a push feed, the escalation rules are ordinary software: severity above a threshold, on a tool in this area, during a run flagged critical, goes to a phone. That logic is fifty lines in whatever language your team already writes. It is unbuildable directly against SECS/GEM without first building the SECS/GEM part.

Wants: WebSocket. Alarms are events, not something to discover by asking repeatedly.

3. OEE that comes from the tool, not from a spreadsheet

E116 gives you equipment performance tracking as a standard: availability, performance, quality, and OEE derived from them. Most fabs compute OEE from a spreadsheet fed by hand-entered downtime.

The difference is not accuracy in the abstract, it is arguability. A number the tool produced is a number the tool produced. A number someone typed is a number someone can dispute in a meeting.

Wants: REST for the periodic pull, WebSocket if you want the state transitions that feed it.

4. Lot genealogy without asking the operator

Collection events carry the reports the tool was configured to send: lot id, wafer id, recipe, process time. Every processing start and stop is one, timestamped, from the tool.

Collect those across tools and you have genealogy: which lot, on which tool, under which recipe, for how long. It is the input to yield analysis, and it is also the answer to "what did we actually run on that wafer" three months later when a customer asks.

One caveat that matters. S6F11 carries the CEID, the report id and the values, and no names. The names come from the tool's own namelists, which the host has to ask for once and remember. If your integration skips that step, your genealogy is a column of unlabelled numbers.

Wants: WebSocket to capture events as they happen, GraphQL to query the history afterwards.

5. Recipe and program audit

Which process programs are on which tool, and when did that last change. Regulated and customer-audited fabs need this answer on demand, and it is usually reconstructed by hand.

It is a query against something that already tracks program uploads.

Wants: REST or GraphQL. This is a question about state, not a stream.

6. Drift watching on trace data

S2F23 arms a trace and the tool streams S6F1 samples at the interval you asked for. That is a time series of a process variable, straight from the tool, and time series are what every anomaly detection technique in the world expects as input.

You do not need a model to start. A chart of the same variable across four tools running the same recipe will show you the one that is drifting, and that is a conversation with the process engineer that would not otherwise have happened.

Wants: REST to arm and read, WebSocket if you want samples live.

7. The integration you build before the tool arrives

This one is not an application, it is a schedule change, and it is the one people react to most.

Ordinarily the integration work starts when the tool is on the floor, because until then there is nothing to connect to, and the tool arriving is also when the clock starts on getting it into production. So the integration is on the critical path by construction.

Against a simulated tool it does not have to be. Your team can write the dashboard, the escalation rules and the genealogy capture, and have them working, before the crate is opened. What is left at bring-up is verifying against the real tool rather than starting against it.

The limit, plainly: the simulator is ours, and it models a generic GEM/GEM300 tool. It is not your vendor's simulator and does not model their optional fields. It removes the development work. It does not remove the verification.

What none of this needs

Nothing above requires modifying the tool, its firmware, or its SECS/GEM configuration beyond what the interface already supports. Nothing requires replacing the MES. The tool keeps speaking what it shipped with.

That constraint is not a limitation to work around, it is the point. Equipment on a production floor is qualified, and anything that requires changing it will not be approved, and should not be.

The honest boundary

Everything described here has been built and exercised against our own equipment simulator. None of it has run against physical semiconductor equipment. We publish no throughput, latency or uptime figures, because we have not measured any and would rather say so than quote a number we cannot stand behind.

What the second post in this pair covers is why three interfaces rather than one, and what it costs you to reach for the wrong one.

Want this answered for your own tool set?

A connectivity readiness assessment is a fixed-scope, fixed-fee engagement. You own the deliverable and can take it anywhere, including to another vendor.

Request an Assessment