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.

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 content_transformation).