PhaseModulator

class picazzo3.modulators.phase.cell.PhaseModulator

Straight Phase Modulator PCell. Takes a trace template for the modulator, generates a phase modulator waveguide and adds transitions. Exposes the optical and electrical ports and terms of the (tapered) phase modulator waveguide.

Make sure to explicitly specify the ports to be tapered (the optical ports) in port_labels. Specify the length of the modulator in the Layout View.

Parameters:
contents: PCell

the contents of the container: the child cell

trace_template: ( PCell and _WaveguideTemplate ), *None allowed*

Template for all ports, defaults to TECH.PCELLS.WG.DEFAULT.When set to None, the waveguide templates of the ports will be used.

transition_database: AutoTransitionDatabase

AutoTransitionDatabase in which the correct transition between the two trace templates can be looked up.

transitions: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>

Transitions (of type WaveguideTransitionFromPort) attached the the ports given in port_labels. Should be in the same order as port_labels.

port_labels: ( List with type restriction, allowed types: <class ‘str’> ), *None allowed*

Labels of the ports to be processed. Set to None to process all ports.

external_port_names: str

Dictionary for remapping of the port names of the contents to the external ports

modulator_trace_template: PCell and _TraceTemplate and PhaseShifterWaveguideTemplate

trace template to use for the phase modulator waveguide

name: String that contains only ISO/IEC 8859-1 (extended ASCII py3) or pure ASCII (py2) characters

The unique name of the pcell

Other Parameters:
trace_templates: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, locked

list of templates to apply to all ports

Views

class Layout
Parameters:
flatten_contents: ( bool, bool_ or int )

if True, it will insert the contents as elements in the layout, rather than as an Instance

transition_length: ( float and Real, number and number >= 0 ), *None allowed*

Length of the transition. Set to None to take the standard transition length.

zero_length_if_identical: ( bool, bool_ or int )

uses a zero-length transition if the trace templates are identical

flatten_transitions: ( bool, bool_ or int )

if true, flattens the transitions one level

straight_extension: ( Coord2 and number >= 0 ), *None allowed*

Tuple: straight extensions of the transitions. Set to None to take the standard straight extensions

contents_transformation: GenericNoDistortTransform

transformation to apply to the contents

length: float and Real, number and number >= 0

length of the phase modulator waveguide

view_name: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3.

The name of the view

Other Parameters:
transition_lengths: locked

Examples

import si_fab.all as pdk  # noqa: F401
import ipkiss3.all as i3
from picazzo3.modulators.phase import LateralPNPhaseShifterTemplate, PhaseModulator
from picazzo3.traces.rib_wg import RibWaveguideTemplate
from picazzo3.electrical.contact import ContactHole

wire_t = RibWaveguideTemplate()
wire_t.Layout(core_width=0.9, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 0.9)
c = ContactHole(name="LPNPS3_CONT")

ps_t = LateralPNPhaseShifterTemplate(trace_template=wire_t, p_contact=c, n_contact=c)
ps_t.Layout(
    p_bridge_pitch=1.0,
    p_bridge_width=0.6,
    n_bridge_pitch=1.0,
    n_bridge_width=0.6,
    junction_offset=0.2,
    junction_overlap=0.1,
)

pmod = PhaseModulator(modulator_trace_template=ps_t, port_labels=["in", "out"])
pmod_lay = pmod.Layout(length=100.0)
pmod_lay.visualize(annotate=True)
../../../../../_images/picazzo3-modulators-phase-cell-PhaseModulator-1.png