Containers and Adapters¶
Containers are PCells which contain another PCell and add something to it.
A set of containers are available which act on the ports/terms of the contained PCell.
AutoTransitionPorts: automatically adding transitions to ports.
FanoutPorts: fan out ports to a given direction.
IoFibcoup: packages a component with a fibercoupler for inclusion in
ContainerWithWaveguides: adds waveguides for each port.
ExtendPorts: adds waveguides with a fixed length to each port.
Route Ports: Routes the ports to a given output direction.
TerminatePorts: Terminates ports with a termination cell
Each of these accepts a parameter “port_labels” which specify on which ports the container will act. The other ports will be unaffected. Each name in the port label list can be defined in one of the following ways:
The actual port name. For example, a 2x2 coupler can have the following terms: ‘in1’, ‘in2’, ‘out1’, ‘out2’. In this case,
port_labels = ['in1', 'in2']would only affect the input ports of the coupler.
Specified by a direction. For example, “E0” (east 0), “E1” (east 1). Counting starts bottom-up. For example,
port_labels = ['E0', 'E1']will select the two lowest east ports (after applying transformations onto the contents, given by