Skip to content

Honest Scope ​

This page exists so the rest of the site can be read literally. Anything NANO has not demonstrated is listed here rather than implied elsewhere.

Limitations ​

The prior is synthetic, not physical ​

The biased prior is generated by distorting the WM-811K wafer map itself: radial bias, smoothing, and a global offset and gain. There is no TCAD, CAE or RCWA simulation anywhere in the pipeline. Real simulation error has structure this distortion does not reproduce — mesh artifacts, calibration drift between recipes, systematically wrong physics in specific regimes. Results here transfer as an argument about the method, not as a prediction of accuracy on real simulation output.

WM-811K labels are not metrology values ​

Wafer maps are binary pass/fail per die. Real metrology produces continuous, noisy readings — CD, thickness, overlay — with tool-dependent measurement error.

--target continuous runs the whole pipeline against a smooth, noisy stand-in field instead, and it changes two conclusions rather than confirming them. Both runs use the published configuration — 12 wafers × 5 seeds, 60 episodes — the binary one on WM-811K, the continuous one necessarily on stand-in wafers, because the dataset holds no continuous target to run against:

  • The selection rule does better, not worse. On the continuous field NANO separates from Random by 18.7% [15.4, 21.9] and from Grid by 8.8% [6.3, 11.3], on plain MAE. On WM-811K it separates from neither on plain MAE, and only once the metric is balanced.
  • The ablation does not agree with itself across targets. On the continuous field, dropping the novelty term costs 7.8% [6.2, 9.3] and uncertainty alone ties with the full rule. On WM-811K, dropping novelty changes nothing that separates, and uncertainty alone beats the full rule by 2.2% [0.6, 4.3]. Whether a term earns its place depends on which target it is asked about.

The continuous half is a stand-in, so what the pair establishes is narrower than either alone: the selection rule's advantage is target-dependent, and this project has not measured it on real metrology values.

Uncertainty is used, not claimed to be calibrated ​

NANO computes an uncertainty map and ranks locations by it. It does not claim that the map is calibrated — that a stated interval covers the truth at the stated rate.

The weaker property, that uncertainty orders the unmeasured dies by how wrong the estimate is there, is now measured: every run reports a Spearman rank correlation and a binned reliability curve over the dies the agent never looked at, and the benchmark page publishes both.

On WM-811K that property holds — pooled ρ = 0.63, 0.41 ± 0.25 per episode over 86,405 dies the agent never looked at, and the reliability curve rises monotonically across all ten bins. On the continuous stand-in it does not: pooled ρ ≈ 0.00, and it stays slightly negative even with the measurement noise turned off entirely. The uncertainty map is a model of measurement coverage, and coverage predicts error only when the thing being reconstructed has structure that measurements resolve. On a smooth field, the estimate's error concentrates where the surface curves rather than where measurements are sparse, and a distance-based uncertainty map has nothing to say about it.

That matters more than it might read, because the continuous target is the one closer to real metrology. NANO still wins the continuous benchmark comfortably — but not for the reason the design claims, which is that its uncertainty map knows where it is wrong. Coverage is still not evaluated, no interval is stated, and any use of these uncertainty values as probabilities would be unsupported.

The published run is twelve wafers, not a sample of the dataset ​

WM-811K holds 811,457 wafer maps. The published run scores twelve of them: one stratified draw, recorded in data/subsets/wm811k_eval.json — seed 0, at least 400 dies per wafer, eight pattern classes. That is enough to pair 60 episodes against identical baselines, and enough for the intervals on this site to mean what they say about these wafers. It is not a claim about the dataset's distribution, about unstratified wafers, or about the 638,507 maps that carry no pattern label at all. Widening the subset is one flag (--wafers) and one re-run.

The pipeline also runs without WM-811K, on wafer maps generated by nano.data.synthetic_wafers. That makes the code testable and lets anyone exercise the loop before downloading anything, and it proves nothing about the dataset. A run on the stand-in writes dataset.name = "synthetic-wafers" plus a note into the results file, prints a warning on every command, and is labelled in the results table on this site. Results from a stand-in run are not committed to this repository.

Two of the three terms do not pay for themselves here ​

python -m nano.benchmark --ablation runs the selection rule with terms dropped. On WM-811K the uncertainty term alone — the published rule with both other terms removed — scores 0.3403 against the full product's 0.3479 on balanced MAE, better by 2.2% [0.6, 4.3], and the paired interval clears zero. Dropping only novelty (uncertainty × disagreement) changes nothing that separates. Read together: on this dataset the disagreement and novelty terms are not buying accuracy, and uncertainty is doing the work.

That is a result against the design, measured on the dataset rather than on a proxy, and it is on the benchmark page rather than in a footnote. The published rule is still the three-term product, and the reason is now a narrow one: twelve wafers on a binary target are not grounds to redefine the method, especially when the continuous run two entries above reverses the finding. --terms uncertainty runs the reduced rule today, and publishing it as the rule needs a wider run than this one.

The estimator has hyper-parameters, and they were chosen, not derived ​

length_scale (a twelfth of the wafer span) and prior_weight (the prior counts as half a measurement's worth of evidence for "no correction here") are fixed values, chosen by hand. They are identical across every strategy arm — so they cannot advantage NANO over its baselines — and both are recorded in results/benchmark_summary.json under experiment.model. But no sensitivity analysis over them is published, and a different pair would move the absolute numbers.

Every measurement costs the same ​

The budget counts measurements, and one die costs one unit regardless of where it is. Real measurement cost depends on stage movement, recipe changes, tool availability and queue position. A selection rule that ignores cost can pick an expensive route that a cost-aware rule would beat on wall-clock time even while losing on measurement count.

Accessibility and scheduling are out of scope ​

Whether a die can be measured next — tool assignment, wafer handling, lot priority, scheduling windows — is not modelled at all. The prototype assumes any unmeasured die is immediately available.

One wafer at a time, no cross-wafer learning ​

Each episode is independent. Nothing learned on one wafer transfers to the next, and no lot-level or tool-level structure is exploited. This isolates the selection rule cleanly, and it also forgoes a source of information a production system would certainly use.

The evidence base is small ​

The published configuration covers a modest number of wafers and seeds, recorded in results/benchmark_summary.json and printed under every table on this site. It is enough to compare selection rules under identical conditions. It is not a fab-scale validation, and the benchmark page reports the spread rather than the mean alone for exactly that reason.

What the prototype does establish ​

  • A measurement-selection loop can be built so that reality is reachable only through one budget-accounting tool, which makes the comparison against baselines auditable.
  • Prediction, uncertainty and prior-disagreement can be produced as separate inspectable maps rather than collapsed into a single score.
  • Under a fixed budget, identical initial observations and identical wafers, acquisition-driven selection can be compared to Random and Grid fairly — and the result, favourable or not, is reproducible from a seed.

Where this goes next ​

Clearly separated from what is demonstrated above — these are directions, not results.

DirectionWhat it would add
SECOM datasetFeature missingness rather than spatial sparsity. The unknown becomes which measurement channel to acquire, not only where.
SEM / TEM field-of-view selectionSelecting an imaging location and magnification, where the cost per observation is large and the field of view is tiny.
Real simulator integrationReplacing the synthetic prior with TCAD, CAE or RCWA output, so the Sim2Real gap being closed is a real one.
Wafer / lot / tool hierarchy with provenanceSharing information across wafers while tracking where each value came from, so a correction can be attributed.
Heterogeneous measurement costAn acquisition function scoring value per unit of cost instead of value per measurement, which is the version a fab would actually deploy.
Uncertainty calibrationEvaluating coverage properly, so uncertainty could be used as a probability rather than a ranking.

How to read this site ​

  • A number is only real if it came from results/benchmark_summary.json. If the file is absent, the site says Run benchmark to generate results rather than showing an example value.
  • Diagrams labelled Conceptual illustration are drawn from formulas written to explain the mechanism. They are not data.
  • Ground truth is marked Hidden from agent wherever it appears, because the agent's not seeing it is the entire premise.
  • Pages describing something not yet run or not yet published say so at the top, in a warning block.

No confidential, internal or proprietary data, terminology or product name appears anywhere on this site or in this repository.

Built for the AI Development Lifecycle Hackathon. Content is research prototype material, not production guidance.