ConnectSBend

class ipkiss3.all.ConnectSBend

Generates an SBend connection between the given port pairs.

Note: The ports passed to ConnectSBend must face each other. If the ports are not correctly oriented towards each other, this specification will fail.

Parameters:
connectionslist of tuple or str

A list of port tuples representing the start and end ports to be connected. Example: ConnectSBend([(“inst1:out”, “inst2:in”)]) or ConnectSBend(“inst1:out”, “inst2:in”)

end_portstr, optional

The end port if connections is a string.

connection_namestr, optional

A name for the connection.

min_bend_radiusfloat, optional

The minimum bend radius for the SBend. The SBend will always try to maximize the bend based on the available space. We raise a ValueError (or generate a flyline in non-strict mode) if this minimum bend radius cannot be satisfied. The min_bend_radius is enforced, allowing for a small numerical tolerance to account for floating-point or numerical inaccuracies. Note: if you require a strictly fixed bend radius, use ConnectBend instead.

sbend_typei3.SBendType, default i3.SBendType.Euler

The bend type to use for this SBend. Is one of the values of the i3.SBendType Enum. Can be: Cosine, Sine, Euler, Hermite, Radial

trace_template: TraceTemplate, optional

The trace template to be used for the SBend. If not provided, uses the trace_template of the first port. If the port does not have a trace template, it uses the TechValue: PCELLS.WG.DEFAULT

min_straightfloat, optional

The default minimum length of the straight sections at the start and end of the SBend. Acts as a fallback for start_straight and end_straight. Defaults to TECH.WG.SHORT_STRAIGHT.

start_straightfloat, optional

The specific length of the straight section at the start port. Falls back to min_straight.

end_straightfloat, optional

The specific length of the straight section at the end port. Falls back to min_straight.

Examples

import ipkiss3.all as i3
import si_fab.all as pdk

circuit = i3.Circuit(
    specs=[
        i3.Inst(["wg1", "wg2"], pdk.Waveguide()),
        i3.Place("wg1", (0.0, 0.0)),
        i3.Place("wg2", (100.0, 40.0)),
        # Use a global min_straight for both ports
        i3.ConnectSBend("wg1:out", "wg2:in", min_straight=10.0),
    ]
)
circuit.Layout().visualize()
../../../../_images/ipkiss3-all-ConnectSBend-1.png
import ipkiss3.all as i3
import si_fab.all as pdk

circuit = i3.Circuit(
    specs=[
        i3.Inst(["wg1", "wg2"], pdk.Waveguide()),
        i3.Place("wg1", (0.0, 0.0)),
        i3.Place("wg2", (100.0, 40.0)),
        # Use specific overrides for start and end straights
        i3.ConnectSBend(
            "wg1:out", "wg2:in",
            start_straight=5.0,
            end_straight=20.0,
            sbend_type=i3.SBendType.Sine
        ),
    ]
)
circuit.Layout().visualize()
../../../../_images/ipkiss3-all-ConnectSBend-2.png