From dade361e175c4e0402815e8df67712fcccecd9fc Mon Sep 17 00:00:00 2001 From: Yannick Augenstein Date: Thu, 13 Nov 2025 11:09:17 +0100 Subject: [PATCH] docs: seminar notebooks --- docs/conf.py | 1 + docs/lectures/fabrication_invdes.rst | 39 +++++++++++++++++++ .../lectures/fabrication_invdes_notebooks.rst | 12 ++++++ docs/lectures/index.rst | 2 + docs/notebooks | 2 +- 5 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 docs/lectures/fabrication_invdes.rst create mode 100644 docs/lectures/fabrication_invdes_notebooks.rst diff --git a/docs/conf.py b/docs/conf.py index 9ef702b7dc..767e274147 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -168,6 +168,7 @@ "tidy3d/*", "faq/docs/**", "notebooks/*.ipynb", + "notebooks/**/*.ipynb", "notebooks/docs/*", "**.rst", "**.png", diff --git a/docs/lectures/fabrication_invdes.rst b/docs/lectures/fabrication_invdes.rst new file mode 100644 index 0000000000..75c622aa4f --- /dev/null +++ b/docs/lectures/fabrication_invdes.rst @@ -0,0 +1,39 @@ +Fabrication-aware inverse design +================================ + +.. meta:: + :description: Fabrication-aware inverse design seminar notebooks and walkthrough + :keywords: tidy3d, inverse design, fabrication-aware, adjoint, grating coupler + +The October 9, 2025 seminar walks through a complete dual-layer grating coupler workflow: start from a uniform baseline, pull a strong seed design with Bayesian optimization, switch to adjoint gradients for per-tooth control, study fabrication sensitivities, and close the loop with measurement-driven calibration. Everything runs inside Tidy3D, so you can rerun the exact same jobs or adapt the utilities to your own device stack. + +Seminar recording: `YouTube link `_ + +Notebook lineup +---------------- +* :doc:`Setup Guide: Building the Simulation <../notebooks/2025-10-09-invdes-seminar/00_setup_guide>` - builds the nominal SiN stack, launches the reference simulation, and visualizes the initial geometry so the later notebooks can reuse the cached job ID. +* :doc:`Bayesian Optimization: Finding a Strong Baseline <../notebooks/2025-10-09-invdes-seminar/01_bayes>` - uses a five-parameter Bayesian search to quickly find a good uniform grating. This provides a practical baseline before investing in gradients. +* :doc:`Adjoint Optimization: High-Dimensional Refinement <../notebooks/2025-10-09-invdes-seminar/02_adjoint>` - expands to per-tooth parameters and applies Adam with adjoint sensitivities to apodize the grating and boost efficiency. +* :doc:`Fabrication Sensitivity Analysis: Is Our Design Robust? <../notebooks/2025-10-09-invdes-seminar/03_sensitivity>` - sweeps :math:`\pm 20` nm etch bias, runs Monte Carlo samples, and logs adjoint-derived sensitivity units (:math:`\Delta` objective / :math:`\Delta` parameter) so readers understand what the gradients mean physically. +* :doc:`Robust Adjoint Optimization for Manufacturability <../notebooks/2025-10-09-invdes-seminar/04_adjoint_robust>` - penalizes variance across nominal/over/under corners, illustrating a fabrication-aware adjoint loop that matches what we demoed live. +* :doc:`Monte Carlo View: Nominal vs Robust Grating <../notebooks/2025-10-09-invdes-seminar/05_robust_comparison>` - reruns the Monte Carlo campaign for both nominal and robust devices to quantify yield improvements. +* :doc:`Measurement Calibration: Bridging Simulation and Fabrication <../notebooks/2025-10-09-invdes-seminar/06_measurement_calibration>` - demonstrates gradient-based calibration of tooth widths against (synthetic) spectra, using adjoint sensitivities to recover the as-fabricated geometry from optical measurements. + +Getting the code +---------------- +The notebooks are available in the `Tidy3D notebooks repository `_. You will need the ``.ipynb`` files as well as the helper scripts `setup.py `_ and `optim.py `_ to run the examples. + +How to run the series +--------------------- +1. Install ``tidy3d`` and ``bayesian-optimization`` (``pip install tidy3d bayesian-optimization``) and configure your API key. +2. Execute the notebooks in order; each step writes results into ``results/`` and later notebooks assume those JSON files exist. + +Supporting assets +----------------- +* `setup.py `_ - shared simulation builders, fabrication constraints, and helper functions. +* `optim.py `_ - a lightweight, autograd-friendly Adam implementation with parameter clipping. +* ``results/`` - JSON checkpoints (Bayes best point, adjoint refinements, robust design) consumed by subsequent notebooks. + + + + diff --git a/docs/lectures/fabrication_invdes_notebooks.rst b/docs/lectures/fabrication_invdes_notebooks.rst new file mode 100644 index 0000000000..344950b4f5 --- /dev/null +++ b/docs/lectures/fabrication_invdes_notebooks.rst @@ -0,0 +1,12 @@ +:orphan: + +.. toctree:: + + ../notebooks/2025-10-09-invdes-seminar/00_setup_guide + ../notebooks/2025-10-09-invdes-seminar/01_bayes + ../notebooks/2025-10-09-invdes-seminar/02_adjoint + ../notebooks/2025-10-09-invdes-seminar/03_sensitivity + ../notebooks/2025-10-09-invdes-seminar/04_adjoint_robust + ../notebooks/2025-10-09-invdes-seminar/05_robust_comparison + ../notebooks/2025-10-09-invdes-seminar/06_measurement_calibration + diff --git a/docs/lectures/index.rst b/docs/lectures/index.rst index ee95ad1175..2ff1b0317c 100644 --- a/docs/lectures/index.rst +++ b/docs/lectures/index.rst @@ -10,8 +10,10 @@ Welcome to our lecture series! fdtd101 fdtd_workshop inversedesign + fabrication_invdes .. include:: /lectures/fdtd101.rst .. include:: /lectures/fdtd_workshop.rst .. include:: /lectures/inversedesign.rst +.. include:: /lectures/fabrication_invdes.rst diff --git a/docs/notebooks b/docs/notebooks index cae884b2a1..2ab862590d 160000 --- a/docs/notebooks +++ b/docs/notebooks @@ -1 +1 @@ -Subproject commit cae884b2a1f70390ce49f5f30a43893fd6264701 +Subproject commit 2ab862590d1c967d367ddb11daf6115572987cc8