Multi-Mode Interferometers (MMI’s)

1x2 MMI

class picwriter.components.MMI1x2(wgt, length, width, wg_sep=None, taper_width=None, taper_length=None, output_length=None, output_wg_sep=None, output_width=None, port=(0, 0), direction=u'EAST')

1x2 multi-mode interfereomter (MMI) Cell class.

Args:
  • wgt (WaveguideTemplate): WaveguideTemplate object
  • length (float): Length of the MMI region (along direction of propagation)
  • width (float): Width of the MMI region (perpendicular to direction of propagation)
Keyword Args:
  • wg_sep (float): Separation between waveguides on the 2-port side (defaults to width/3.0). Defaults to None (width/3.0).
  • taper_width (float): Ending width of the taper region (default = wg_width from wg_template). Defaults to None (waveguide width).
  • taper_length (float): Length of the input taper leading up to the MMI (single-port side). Defaults to None (no input taper, port right against the MMI region).
  • output_length (float): Length (along x-direction) of the output bends, made with Euler S-Bends. Defaults to None (no output bend, ports right up againt the MMI region).
  • output_wg_sep (float): Distance (along y-direction) between the two output bends, made with Euler S-Bends. Defaults to None (no output bend, ports right up againt the MMI region).
  • output_width (float): Starting width of the output waveguide. Defaults to None (no change from regular wg_width).
  • port (tuple): Cartesian coordinate of the input port. Defaults to (0,0).
  • direction (string): Direction that the component will point towards, can be of type ‘NORTH’, ‘WEST’, ‘SOUTH’, ‘EAST’, OR an angle (float, in radians)
Members:
  • portlist (dict): Dictionary with the relevant port information
Portlist format:
  • portlist[‘input’] = {‘port’: (x1,y1), ‘direction’: ‘dir1’}
  • portlist[‘output_top’] = {‘port’: (x2, y2), ‘direction’: ‘dir2’}
  • portlist[‘output_bot’] = {‘port’: (x3, y3), ‘direction’: ‘dir3’}

Where in the above (x1,y1) is the input port, (x2, y2) is the top output port, (x3, y3) is the bottom output port, and ‘dir1’, ‘dir2’, ‘dir3’ are of type ‘NORTH’, ‘WEST’, ‘SOUTH’, ‘EAST’, or an angle in radians. ‘Direction’ points towards the waveguide that will connect to it.

../_images/mmi1x2_v2.png

2x2 MMI

class picwriter.components.MMI2x2(wgt, length, width, angle=0.5235987755982988, taper_width=None, wg_sep=None, port=(0, 0), direction=u'EAST')

2x2 multi-mode interferometer (MMI) Cell class. Two input ports, two output ports.

Args:
  • wgt (WaveguideTemplate): WaveguideTemplate object
  • length (float): Length of the MMI region (along direction of propagation)
  • width (float): Width of the MMI region (perpendicular to direction of propagation)
Keyword Args:
  • angle (float): Angle in radians (between 0 and pi/2) at which the waveguide bends towards the coupling region. Default=pi/6. Note: it is possible to generate a MMI with straight tapered outputs (not curved) by setting angle=0 and then connecting a straight Taper object to the desired MMI ports.
  • taper_width (float): Maximum width of the taper region (default = wg_width from wg_template)
  • wg_sep (float): Separation between waveguides on the 2-port side (defaults to width/3.0)
  • port (tuple): Cartesian coordinate of the top input port
  • direction (string): Direction that the component will point towards, can be of type ‘NORTH’, ‘WEST’, ‘SOUTH’, ‘EAST’, OR an angle (float, in radians)
Members:
  • portlist (dict): Dictionary with the relevant port information
Portlist format:
  • portlist[‘input_top’] = {‘port’: (x1,y1), ‘direction’: ‘dir1’}
  • portlist[‘input_bot’] = {‘port’: (x2, y2), ‘direction’: ‘dir2’}
  • portlist[‘output_top’] = {‘port’: (x3, y3), ‘direction’: ‘dir3’}
  • portlist[‘output_bot’] = {‘port’: (x4, y4), ‘direction’: ‘dir4’}

Where in the above (x1,y1) is the input port, (x2, y2) is the top output port, (x3, y3) is the bottom output port, and ‘dir1’, ‘dir2’, ‘dir3’ are of type ‘NORTH’, ‘WEST’, ‘SOUTH’, ‘EAST’, or an angle in radians. ‘Direction’ points towards the waveguide that will connect to it.

../_images/mmi2x2.png