Flexcompute Simulation Blog

What You Have to Lose by Not Doing Inverse Design

Written by Tom Chen, PhD | August 28, 2026 at 8:32 PM

For simplicity, we sometimes take a naive approach in photonic design, but how much power are we leaving on the table by not further optimizing a simple design? That used to be an expensive question to answer. It isn't anymore.

 

Inverse design does not have to mean weird-looking devices

Inverse design has a bad reputation in the industry. People often picture a blob of disconnected pixels that simulates beautifully and never works in practice. That reputation comes from one particular flavor, topology optimization with a free permittivity field, and it is not what inverse design has to be.

For an adiabatic taper, the natural approach is shape optimization. The device remains a single connected polygon; the optimizer moves its boundary, which is a smooth interpolating spline through a handful of control points. What comes out is a smooth taper you can hand to a foundry, just much lower in loss.

 

Adiabatic taper optimization as an example

We illustrate this with a specific problem: a 400 nm silicon nitride film (n = 2.0 at 1310 nm) on a 2 µm-thick buried oxide over a silicon substrate, with a 2 µm-thick oxide cladding on top. The taper runs from a 200 nm tip to a 1 µm routing waveguide. A tip that narrows the leaves the mode highly delocalized. We optimize the transmission of the fundamental TE mode at 1310 nm.

The silicon substrate matters here, so we keep it in the model. At the 200 nm end, the mode index is 1.4474, only 0.0034 above the oxide index. The field tunnels through the 2 µm BOX and leaks into the silicon.

The design variables are the taper half-width at eight control points, spaced along the length and clustered toward the tip where the mode changes fastest. Those eight numbers go through interpolate_spline from Tidy3D's autograd plugin, a cubic spline with zero end slopes, so the taper joins the straight waveguides tangentially. Widths are bounded below by 200 nm, and a curvature penalty with a minimum radius of 200 nm acts as a backstop. Gradients come from the adjoint method: one forward FDTD and one adjoint FDTD per iteration, no matter how many parameters there are.

The starting design is the linear taper. The final design cuts the loss by a factor of 2.7.

 

Figure 1: Re(Ey) on the nitride mid-plane as the 50 µm taper evolves from linear to optimized over 35 adjoint iterations. The trace below the field map is the FDTD objective the optimizer minimizes; the EME-verified endpoints are 0.503 dB and 0.180 dB.

 

We ran the same optimization routine at taper lengths of 10, 20, 50, and 100 µm.

Figure 2: Insertion loss versus taper length for the linear taper (dark blue) and the shape-optimized designs at four lengths (red). Inset: the two 50 µm shapes drawn to scale.

 

Taper length

Linear

Shape-optimized

Improvement

Linear taper needed to match

10 µm

1.51 dB

0.57 dB

−0.94 dB

~44 µm

20 µm

1.03 dB

0.36 dB

−0.67 dB

~73 µm

50 µm

0.50 dB

0.18 dB

−0.32 dB

~166 µm

100 µm

0.26 dB

0.11 dB

−0.15 dB

longer than any linear taper

Every length improves by a factor of 2.3 to 2.7 in lost power. At every length we tried, the optimized taper matches the loss of a linear taper three to four and a half times longer.

 

Try it yourself

We drove this whole study conversationally through an AI agent in Claude Code, with the Tidy3D Python API underneath. Nobody derived an adjoint gradient by hand or tuned a mesh by hand. The agent built the simulations, checked convergence, and cross-validated FDTD against EME at every design point, just like a senior design engineer would.

People assume inverse design is hard, but that's simply no longer true with all the machinery we have developed in Tidy3D. You do not need to be an inverse design expert to start using it.

The Python script to reproduce the results in this article can be downloaded below: