Skip to content

COMPASS고급 센서 시뮬레이션을 위한 크로스 솔버 광학 모델링 플랫폼

하나의 YAML 설정으로 여러 EM 솔버를 사용하여 CMOS 이미지 센서 픽셀을 시뮬레이션합니다

COMPASS

COMPASS를 선택하는 이유

COMPASS는 전자기 이론과 실용적인 CMOS 이미지 센서 설계 사이의 간극을 해소합니다. 픽셀 스택을 한 번 정의하고, 모든 솔버로 실행하고, 결과를 비교하세요 -- 모두 Python에서 가능합니다.

Multi-Solver Engine

Run the same pixel structure through RCWA (torcwa, grcwa, meent, fmmax) and FDTD (flaport, Meep, fdtdz) solvers from a single YAML config. Compare results head-to-head.

GPU Accelerated

Leverage PyTorch and JAX GPU backends for massively parallel wavelength sweeps. Achieve 10-100x speedup over CPU-only solvers on large parameter spaces.

dJ/dx

Differentiable Simulation

Automatic differentiation through the solver enables gradient-based inverse design. Optimize microlens profiles, BARL stacks, and color filter thicknesses directly.

OK

Cross-Validation

Built-in solver comparison framework ensures physics accuracy. Compare energy balance (R+T+A=1), QE spectra, and field distributions across solver backends.

Rich Analysis

Compute QE per pixel per wavelength, crosstalk matrices, energy balance, and field distributions. Plot results with built-in matplotlib and 3D PyVista viewers.

Open Source

MIT licensed. Fully documented with theory guides, cookbooks, and API references. Built on established open-source EM solver ecosystems.

아키텍처

깔끔한 5단계 파이프라인이 YAML 설정에서 출판 가능한 결과까지 안내합니다. 각 단계를 클릭하면 자세히 알아볼 수 있습니다.

1ConfigYAMLPixel stackSourceSolver params2GeometryPixelStackMicrolensColor filterSilicon + DTI3SolverSolverBaseRCWAFDTDTMM4Analysisanalysis/QE calculatorEnergy balanceComparison5ResultsHDF5 / PlotQE spectraField mapsCrosstalk

솔버 백엔드

COMPASS는 세 가지 전자기 방법에 걸쳐 8개 솔버 백엔드에 대한 통합 인터페이스를 제공합니다. 솔버를 클릭하면 세부 정보를 확인할 수 있습니다.

RCWA4 backends
FDTD3 backends
TMM1 backends

빠른 예제

하나의 YAML 설정으로 시뮬레이션을 정의하고 세 줄의 Python으로 실행하세요:

yaml
# config.yaml
pixel:
  pitch: 1.0          # um
  unit_cell: [2, 2]   # 2x2 베이어 패턴

solver:
  name: torcwa
  type: rcwa
  fourier_order: 9

source:
  wavelength:
    mode: sweep
    sweep: { start: 0.4, stop: 0.7, step: 0.01 }
  polarization: unpolarized
python
from compass.runners.single_run import SingleRunner

result = SingleRunner.run("config.yaml")

for pixel, qe in result.qe_per_pixel.items():
    print(f"{pixel}: peak QE = {qe.max():.2%}")