ContainerWithRoundedWaveguideBundle¶
- class picazzo3.container.container_waveguides.ContainerWithRoundedWaveguideBundle(*args, **kwargs)¶
Container with waveguide bundle (
picazzo3.container.container_waveguides.ContainerWithWaveguideBundle
) which generates its waveguides from a given waveguide_template and routes and rounds the bends. You can specify a bend radius and rounding algorithm for the waveguides in the Layout view.- Parameters
- 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.
- auto_transition: ( bool, bool_, bool or int )
If True, automatically transition all ports of contents to the given trace template. If False, no transitions are applied, which might lead to a discontinuity in the waveguide. Also, if trace_template is None, no transitions are applied.
- 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.
- contents: PCell
the contents of the container: the child cell
- external_port_names: str
Dictionary for remapping of the port names of the contents to the external ports
- 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
- waveguides: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, locked
- bundle: ( PCell ), locked, *None allowed*
bundle of waveguides added to the contents, generated based on the supplied waveguides list
Examples
from technologies import silicon_photonics # noqa: F401 from picazzo3.filters.ring import RingRect180DropFilter from picazzo3.container.container_waveguides import ContainerWithRoundedWaveguideBundle from ipkiss3 import all as i3 my_ring = RingRect180DropFilter(name="my_ring_4") my_ring_layout = my_ring.Layout() port_labels = ["E0", "E1"] shapes = [] for pl in port_labels: p = my_ring_layout.ports[pl] shape = i3.Shape(points=[p.position]) shape.add_polar(15.0, p.angle_deg) shape.add_polar(15.0, p.angle_deg + 30.0) shapes.append(shape) my_container = ContainerWithRoundedWaveguideBundle( name="my_waveguide_container_4", contents=my_ring, port_labels=port_labels ) layout = my_container.Layout(routes=shapes, bend_radius=10.0, area_layer_on=True) layout.visualize(annotate=True)
Views
- Layout = <class 'picazzo3.container.container_waveguides.cell.ContainerWithRoundedWaveguideBundle.Layout'>¶