awg_designer.all.get_layout_params_1xM_demux_um(aperture_in, aperture_arms, aperture_out, waveguide_template, output_spacing, M, center_wavelength, channel_spacing, FSR=None, grating_period=None, N_arms=None, alpha_factor=1.6, use_same_radius_for_input=True, verbose=False)

Calculate the layout parameters for building a 1xM AWG (1 input, M outputs), with channels equidistant in wavelength.


aperture_in, aperture_arms, aperture_out: PCells

Aperture component for input, output and arms.

waveguide_template: PCell template

Waveguide template for the delay lines.

output_spacing: float

Minimum spacing (center to center) of output apertures. Increasing this value means less cross-talk but also more power lost between two channels.

M: integer

Number of output channels.

center_wavelength: float

Center frequency of the filter [um].

channel_spacing: float

Channel spacing [um].

FSR: float (default=None)

Free spectral range [um]. if None, use M * channel_spacing.

grating_period: float or None (default=None)

Period of the grating apertures. If None, it uses a value as small as possible (the width of the aperture + 0.2 um).

N_arms: integer or None (default=None)

Number of waveguide arms. If None, calculate automatically. Automatic calculation is done based on the spreading angle of the output aperture and R_grating.

alpha_factor: float (default=1.6)

Scaling of the divergence angle (NA) of input and output. The actual spreading angle used equals divergence angle * alpha_factor.

use_same_radius_for_input (default=True)

When True, use the same radius for the input star coupler as for the output (i.e., R_input=R_grating)

verbose: boolean (default=False)

When True, print the intermediate design parameters (useful for debugging)


A dictionary of layout parameters, including delay_length, N_arms, R_grating, R_input, angles_arms_in, angles_arms_out, angles_out

  • delay_length:

    Delay line length to give the specified FSR. It is optimized to be centered at center_frequency, so the actual FSR may be slightly different. See also delay_length_from_FSR().

  • N_arms (only calculated if None was specified):

    Calculate the number of arms that fit into the spreading angle of the output aperture. Depends on: R_grating, grating_period, and divergence angle of aperture_out. If manually specified, this may increase the R_grating.

  • R_grating:

    Radius of the grating. This is determined in such a way that the first order diffraction of the grating falls outside of the range of the output apertures. See also get_R_grating(). Depends on: FSR / channel_spacing, grating_period, output_spacing, and slab material properties.

  • R_input:

    When use_same_radius_for_input is True, equals R_grating. Otherwise, based on the divergence angle of the input aperture.

  • angles_arms_in, angles_arms_out:

    Angles at which to position the grating apertures for the input/output star coupler, respectively.

  • angles_out:

    Angles at which to position the output apertures. See also get_angles_out().

See also

Function to build a pcell based on the layout parameters generated in this function.


The image below demonstrates which values are input (yellow) and output (grey). Some input values can be None, which means they will be auto-calculated:


Note that in an AWG, the channel with the lowest wavelength (\(\lambda_1\)) is oriented at the same side as the side with the longest delay line.