ContainerWithWaveguides¶
-
class
picazzo3.container.container_waveguides.
ContainerWithWaveguides
(*args, **kwargs)¶ Abstract base class for containers which add waveguides to the contents, such as fanout or for routing ports in certain directions
Waveguides are provided as a list of child cells. They will be bundled if bundled=True.
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.
waveguides: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>
waveguides added to the contents
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: <type ‘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:
Dictionary for remapping of the port names of the contents to the external ports
name:
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
Examples
import technologies.silicon_photonics from picazzo3.filters.ring import RingRect180DropFilter from picazzo3.container.container_waveguides import ContainerWithWaveguides from ipkiss3 import all as i3 my_ring = RingRect180DropFilter(name="my_ring1") my_ring_layout = my_ring.Layout() port_labels = ['E1', 'W0'] wgs = [] for pl in port_labels: p = my_ring_layout.ports[pl] shape = i3.Shape(points=[p.position]) shape.add_polar(10.0, p.angle_deg) wg = i3.Waveguide() wg.Layout(shape=shape) wgs.append(wg) my_container = ContainerWithWaveguides(name="my_waveguide_container1", contents=my_ring, waveguides=wgs, port_labels=port_labels ) layout = my_container.Layout() layout.visualize(annotate=True)
Views
-
Layout
¶ Parameters: view_name: str and ( Alphanumeric string or Contains _$ )
The name of the view
routes:
routes along which the waveguides will be generated
contents_transformation: GenericNoDistortTransform
flatten_contents: ( bool, bool_, bool or int )
if True, it will insert the contents as elements in the layout, rather than as an Instance
-