Penumbra UNet: FPGA-Accelerated Mask Optimization

A compressed U-Net neural network for on-chip FPGA acceleration of Inverse Lithography Technology (ILT) mask optimization, targeting the Xilinx VU47P (AWS F2).

Overview

Penumbra UNet compresses a full-size teacher network by 64Γ— (7.8M β†’ 122K parameters) to fit entirely in on-chip BRAM, enabling a fully on-chip dataflow that eliminates external DRAM access.

Architecture

Network Structure

U-Net encoder-decoder with extreme parameter compression:

Encoder:

  • Conv 1β†’8 channels, 64Γ—64 + MaxPool β†’ 32Γ—32
  • Conv 8β†’16 channels, 32Γ—32 + MaxPool β†’ 16Γ—16
  • Conv 16β†’32 channels, 16Γ—16 + MaxPool β†’ 8Γ—8

Bottleneck:

  • Conv 32β†’64 channels, 8Γ—8

Decoder:

  • Upsample + skip concatenation + Conv 96β†’32 channels, 16Γ—16
  • Upsample + skip concatenation + Conv 48β†’16 channels, 32Γ—32
  • Upsample + skip concatenation + Conv 24β†’8 channels, 64Γ—64

Output:

  • Conv 1Γ—1 + Sigmoid β†’ 64Γ—64

Compression summary:

Metric Full model Penumbra UNet
Parameters 7.8M 122K
Input tile 512Γ—512 64Γ—64
Max channels 512 64

Tiling & Reassembly

Input 512Γ—512 masks are decomposed into 16Γ—16 grid of 64Γ—64 tiles (256 total):

  • Overlap: 16-pixel reflection padding for boundary handling
  • Usable core: 32Γ—32 center pixels per tile
  • Batch processing: 256 tiles β†’ 4 sequential batches of 64

Reassembly uses only differentiable operations (slice, reshape, permute) to enable end-to-end gradient flow:

(256, 1, 64, 64)  [all tiles]
    ↓ center-crop
(256, 1, 32, 32)  [usable cores]
    ↓ reshape + permute
(1, 1, 512, 512)  [full mask]

Training

Phase 1: Knowledge Distillation

  • Epochs: 16
  • Input: 64Γ—64 crops
  • Loss: Ξ±-blended (Ξ± decays 0.7β†’0)
    L = Ξ±Β·MSE(student, teacher) + (1-Ξ±)Β·MSE(student, ground_truth)
    
  • Optimizer: Adam (lr=1e-3), cosine-annealing schedule
  • Teacher: Frozen full-size NeuralILT model

Phase 2: Physics-Informed Fine-Tuning

  • Epochs: 4
  • Pipeline: Full tiled forward pass through differentiable lithography simulator
  • Loss: Print fidelity + process variation
    L = MSE(P_nom, target) + MSE(P_max, P_min)
    
  • Optimizer: Adam (lr=1e-4), StepLR (Ξ³=0.1 at epoch 2)
  • Gradients: Flow through tiled reassembly to all network weights

Code Organization

hls4ml_penumbra/
β”œβ”€β”€ firmware/           # Generated HLS C++ project
β”‚   β”œβ”€β”€ myproject.cpp   # Top-level module
β”‚   β”œβ”€β”€ myproject.h     # Interface & config
β”‚   β”œβ”€β”€ weights/        # Quantized weights
β”‚   β”œβ”€β”€ ap_types/       # Xilinx AP types (ap_fixed, ap_int)
β”‚   └── utils/          # HLS utilities
β”œβ”€β”€ myproject_prj/      # Vivado HLS project
β”‚   └── solution1/
β”‚       └── impl/       # Implementation artifacts
β”œβ”€β”€ logs/               # Build logs
└── [HLS build outputs]

Author: Roberto TreviΓ±o Cervantes

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