neural-ilt-v0.1 — seed weights
What this is: trainable U-Net weights consumed by
openlithohub.models.neural_ilt.NeuralILTModelas 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_layoutgenerator), 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.pt—state_dictforopenlithohub.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.