Verify

Device-Model Verification

A test program can compile cleanly, pass every structural validator, and still be wrong — reading the wrong register, comparing against a value the silicon can never produce, measuring supply current in a state the flow never established. ATE·IQ replays the generated program and its patterns against a model of the device itself and catches those errors before the program reaches a tester — the same model your design and verification teams already rely on, plugged into the test side of the house.

01

Why compile-clean is not correct

Structural checks answer "is this a valid IG-XL program?" They cannot answer "does this program do what the spec asked, to this device?" — the question where real test-floor debug time goes.

The capability was proven the honest way: on a demonstration program for a small SPI temperature sensor — sheets, VBA and cross-sheet checks all clean — the model replay found four independent defect classes, each of which would have surfaced as a confusing failure at the tester.

What the checkers sawWhat the device model found
Valid SPI patterns, correct sheet references No pattern formed the device's 16-bit command word — the part would parse every write as a different operation on a different register than intended.
A well-formed shutdown-current test with correct limits The flow never actually commanded shutdown, so the measurement was taken in continuous-conversion mode — far outside the limit band, on a perfectly good part.
A burst-read test that generated and validated The pattern issued thirteen single reads and never auto-incremented — functionally a different test from the one the requirement asked for.
Read compares populated from the register map (latent, demonstrated rather than observed) Compares pinned to power-on reset values: a converting device returns live data, so a correct part would fail the test the first time the flow actually converted.

None of those are visible to a compiler, a schema validator or a lint pass. They are meaning errors — and two were fixed structurally in the generator, so the same class cannot recur.

02

The device model

ATE·IQ does not invent the device. The model is an input, behind a small, explicit contract: anything that can answer as the part would can be the judge — and that model usually already exists, built by design and verification long before the test program.

Every verdict is reproducible, and none is issued unless the model first proves itself — what it cannot honestly judge is declined out loud, with no partial credit and no quiet degradation.

The device reads the wire

Verification runs on the real artefacts: the emitted .atp pattern is read bit by bit and parsed the way silicon would, with no help from its own annotations. Findings carry expected-versus-actual with units and a location, and each test starts from a production-realistic condition, not a fresh-from-reset part.

Where the model comes from

SourceWhat it judges
Derived from your register map
automatic, no modelling work
Register semantics, judged automatically — everything dynamic declines honestly (§08).
A behavioural model built to the contract
how the capability was proven
Full device behaviour — the reference model for the demonstration part was written clean-room from public documentation, every behaviour citing its source.
Your own device model
connected, not rewritten (§03)
Your own RTL or SystemC, connected as-is — outranking every derived model, proven on real third-party RTL (§03).
Where that stands today All three are shipping: the derived stand-in is self-serve in the app (§04), and the behavioural reference model ships built-in for the demonstration part. Connecting your own model is a connection, not a rewrite (§03) — proven end to end on real third-party RTL under a simulator — but we will not pretend that connection has met your model before it has.

The fabricated instance

Digital behaviour will not answer an analog question, so ATE·IQ can layer a documented-envelope electrical stand-in over the model — every value carries its provenance into any finding. It unlocks the analog families a register model must decline — continuity, leakage and the like.

03

Bring your own model — a connection, not a project

The strongest judge is the model your design and verification teams already maintain, connected as-is — your own RTL or SystemC, nothing rewritten, nothing leaving your infrastructure. Proven end to end on real third-party RTL: an SPI flash behavioural model and an open-source I²C slave core, unmodified under an HDL simulator, judging generated programs — one catching a deliberately wrong register value in the project's own map, both values named.

A model that cannot prove itself is refused, with the reason on screen; an unreachable one becomes a visible warning, never a silent substitution.

You always know who judged

A derived stand-in and your actual device model are different authorities, and the platform never lets them blur: every surface states who judged, and the generated program remembers its judge — a stale judge is caught loudly before dispatch.

Project-page strip stating that the customer's own RTL model judges generation, with per-source status chips
Fig. 1 — Who judges generation, stated on the project page: here the customer's own model is connected and outranks every derived source; with no model connected the same strip reads "ATE-IQ-DERIVED STAND-IN (NOT A REAL DEVICE MODEL)" and names exactly which uploads it derives from.
04

Start from a standard file

The derived stand-in starts from files you already have. A CMSIS-SVD upload lands the register map ready to drive generation and the generic model — with its one caveat stated plainly: whether SVD's addressing matches your part's serial-bus addressing is a judgement the import cannot make for you. DC facts come from a guided datasheet-transcription editor with live validation — the DC facts become judgeable, each reading carrying its citation.

Transcription is not verification A transcribed pack is validated for shape and self-consistency — which cannot prove a number was copied from the datasheet correctly. The editor says so: pack-green is not datasheet-correct, and the numbers deserve a human check against the source.
05

Cross-checking the judge itself

The judge itself is cross-checked against an independent simulator, waveform for waveform: where the connected setup can supply the simulator's own capture, each pattern test ships a cross-check waveform file — the tester's pattern and the simulator's capture, time-aligned in one standard VCD, openable in any waveform viewer — so an engineer can compare raw waveforms with their own eyes, independent of the replay's verdicts.

GTKWave showing the tester pattern scope and the RTL simulator's own capture aligned on one time axis
Fig. 2 — The dual-scope cross-check in GTKWave: the model's clock and chip-select tracking the tester's, while the RTL's internal command register decodes the opcodes the pattern shifts in. The simulator's capture is verbatim — internals included — never redrawn from the replay.
Scope, stated plainly Not every connected model (§03) can return simulator captures today — the capability rides where the simulator runs. Where it cannot, the replay verdicts and in-app waveforms (§07) still stand.
06

What it will not judge

Every test ends in one of three explicit outcomes — verified, a located finding, or an honest decline, per test family, with the reason — and a declined check is never counted as a pass. The decline list is calibrated, not defensive: windowed supply-current measurements were declined exactly as long as they were unjudgeable, and became verifiable the moment they were not (§07).

Some families stay declined on principle: timing measurements — the replay is deliberately time-free; repeatability, drift and supply-rejection grades — real silicon statistics that no model stands in for; and checksum-protected frames, which it will refuse rather than guess.

The device model also cannot be satisfied instead of the existing checks: a result is clean only when every judge agrees, and a failed model self-test is never clean, because nothing was verified.

07

Seeing it: design-verification waveforms

Every pattern-carrying test produces a full DV-style waveform, drawn from the same replay that judged it — the waveform you inspect cannot drift from the verdict: the stimulus the tester will drive, the device's modelled response, the part's internal state, and a frame table of what the pattern intended beside what the device parsed.

Design-verification waveform for a temperature-accuracy test
Fig. 3 — One test, fully instrumented: bus pins with drive-versus-compare colouring, device response, alert and status flags, protocol state, register values stepping at their latch cycles, and a supply-current probe — with the frame table below reconciling pattern intent against the device's own parse.

Measurements the pattern takes itself

Some measurements only mean something at a precise instant inside a running pattern — a supply current during a conversion, not before or after it. On UltraFLEX the pattern can pin that instant itself; ATE·IQ generates what that takes and verifies it, judging each sample against the test's limits in the state the part was actually in — with that state named in any failure.

Waveform showing a pattern-pinned mid-burst supply-current measurement
Fig. 4 — A pattern-pinned measurement: the instrument lane shows the measurement state applying mid-pattern, and the supply-current trace steps from quiescent to active as the pattern triggers a conversion — so the sample lands inside the conversion by construction, not by timing luck.
Scope, stated plainly This path currently covers active-conversion supply-current tests on a serial bus within the instrument's range; anything outside falls back to a conventional post-pattern meter read. The emitted pattern is verified against the device model, but the pattern compiler has not yet signed off on this construct in a bench run — it ships on by default, with a fallback switch, and that outstanding confirmation is named rather than assumed.
08

Any device with a register map

A hand-built behavioural model is the deepest form of this, but not the entry price: any project with a register map — addresses, widths, reset values, fields — gets a generic register model stood up automatically, deep enough to judge register semantics and honest about everything a map does not describe. The metadata is yours and editable in the app — and when a program's semantics depend on something the map does not yet state, generation names the row to fix instead of guessing.

What the generic model is not It reasons about register semantics, and only those — measurements, conversion dynamics, alert behaviour and timing decline with a reason; those need a device behavioural model like the one in §02. Its bus protocol is treated as assumed, so a disagreement with the pattern is reported as "not verified", never as a fault in your program.
09

Proven end to end

The 34-test demonstration program is generated, replayed and judged on every run, and the current run verifies clean: 27 tests verified, 6 declined with reasons, one carrying a warning, zero semantic errors — with all 22 pattern-carrying tests replaying at zero mismatched compare cycles. The first two defects in §01 were fixed in the generator, not patched in the output, so that class cannot recur.

What "zero errors" does and does not mean It means nothing the oracle currently rules on is wrong — not that every question has been asked. The burst-shape defect in §01 went unjudged until a rule was added that fails it; the generator now emits the burst correctly, so the defect is both judged and gone. Rules are added as the classes they catch are proven, and the honest inventory of what was not checked ships with every run.
Honest boundary Model-verified is not tool-verified, and neither is silicon-verified. IG-XL remains the authority on tool semantics; correlation on real parts remains the authority on the device. These verdicts are only as good as the model — and where the model derives from your own register map, only as good as that map. The platform says so on the surface, not in a footnote.