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)