neural-ilt-v0.1 — seed weights

What this is: trainable U-Net weights consumed by openlithohub.models.neural_ilt.NeuralILTModel as a non-trivial starting point for AI-OPC experiments.

What this is not: a research-grade OPC model. The network was trained on synthetic dummy layouts (the generate_dummy_layout generator), with a Hopkins/SOCS forward consistency loss. It learns the "identity-with-rounding" behaviour, not real OPC corrections.

A v1.0 release trained on LithoBench is planned once a public training corpus is wired in.

Use

from openlithohub.models.neural_ilt import NeuralILTModel
import torch

model = NeuralILTModel(pretrained=True)  # downloads model.pt from this repo
model.setup()

design = torch.zeros(64, 64)
design[20:44, 20:44] = 1.0
result = model.predict(design)
print(result.mask.shape)  # (64, 64) binary mask

Or via the OpenLithoHub baseline runner:

python scripts/generate_baselines.py \
  --models dummy-identity rule-based-opc levelset-ilt openilt neural-ilt \
  --pretrained

Training

Reproduce these weights bit-for-bit (modulo PyTorch minor-version drift) with:

git clone https://github.com/OpenLithoHub/OpenLithoHub.git
cd OpenLithoHub
pip install -e ".[dev]"
python scripts/train_neural_ilt_seed.py
# → checkpoints/neural_ilt_v0_1.pt
# → checkpoints/neural_ilt_v0_1.metadata.json

The training config is pinned in scripts/train_neural_ilt_seed.py:

Knob Value
dataset _NonEmptyDummyPairs(n=64, size=64) — synthetic, min_width_nm=8 so 64-grid layouts have content
forward (training) Gaussian (sigma_px=4.5) — fast on MPS/CUDA/CPU
forward (eval) Hopkins/SOCS — used by leaderboard, not by training
loss BCE(logits, target_mask) + 1.0 · MSE(aerial, design)
optimiser Adam, lr=2e-3
scheduler CosineAnnealingLR, T_max=epochs
epochs 200
batch size 8
seed torch.manual_seed(0)
device auto: CUDA → MPS → CPU

The accompanying metadata.json (uploaded with the checkpoint) carries the per-epoch loss history and the resolved config.

Files in this repo

  • model.ptstate_dict for openlithohub.models._unet.UNet(in_channels=1, out_channels=1)
  • metadata.json — training config + per-epoch loss

NeuralILTModel(pretrained=True) downloads model.pt only.

Limitations and caveats

  • Synthetic-only. The training corpus is generated by generate_dummy_layout. Out-of-distribution behaviour on real ASAP7 / FreePDK45 layouts is not characterised here. Treat any metric below as a sanity-check, not an OPC quality benchmark.
  • Forward-model coupling. The consistency loss uses the same Hopkins/SOCS forward model that the OpenLithoHub leaderboard uses for evaluation. Models that depend on a different forward (e.g. rigorous EUV 3D) should not use these weights as a starting point.
  • No physical-soundness audit. The Hopkins/SOCS implementation itself is open as Issue #14 for review by computational lithography experts. If that review surfaces a correction, v1.0 will retrain on the corrected forward.

License

Apache 2.0, matching the OpenLithoHub repo.

Citation

If you use these weights, please cite the OpenLithoHub project; see CITATION.cff.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support