diff --git a/.gitignore b/.gitignore index 625eed8..4027508 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,9 @@ cspdk/si220/gds/*.oas cspdk/si500/gds/*.oas cspdk/sin300/gds/*.oas cspdk/si220/samples/mask.gds - +docs/cells_si220.rst +docs/cells_si500.rst +docs/cells_sin300.rst tests/gds_ref/*.oas diff --git a/cspdk/si220/cells/__init__.py b/cspdk/si220/cells/__init__.py new file mode 100644 index 0000000..3f52c6e --- /dev/null +++ b/cspdk/si220/cells/__init__.py @@ -0,0 +1,4 @@ +"""Cells.""" + +from .containers import * +from .primitives import * diff --git a/cspdk/si220/cells/containers.py b/cspdk/si220/cells/containers.py new file mode 100644 index 0000000..046fa7d --- /dev/null +++ b/cspdk/si220/cells/containers.py @@ -0,0 +1,351 @@ +"""This module contains cells that contain other cells.""" + +from functools import partial + +import gdsfactory as gf +from gdsfactory.typings import ( + Any, + CellSpec, + Component, + ComponentSpec, + CrossSectionSpec, + Strs, +) + +gc_sc = "grating_coupler_elliptical_sc" +gc_so = "grating_coupler_elliptical_so" + + +def add_fiber_array_sc( + component: ComponentSpec = "straight_sc", + grating_coupler=gc_sc, + gc_port_name: str = "o1", + component_name: str | None = None, + cross_section: CrossSectionSpec = "xs_sc", + gc_rotation: float = -90, + **kwargs, +) -> Component: + """Returns component with south routes and grating_couplers. + + You can also use pads or other terminations instead of grating couplers. + + Args: + component: component spec to connect to grating couplers. + grating_coupler: spec for route terminations. + gc_port_name: grating coupler input port name. + component_name: optional for the label. + cross_section: cross_section function. + gc_rotation: fiber coupler rotation in degrees. Defaults to -90. + kwargs: additional arguments. + + Keyword Args: + bend: bend spec. + straight: straight spec. + fanout_length: if None, automatic calculation of fanout length. + max_y0_optical: in um. + with_loopback: True, adds loopback structures. + with_loopback_inside: True, adds loopback structures inside the component. + straight_separation: from edge to edge. + list_port_labels: None, adds TM labels to port indices in this list. + connected_port_list_ids: names of ports only for type 0 optical routing. + nb_optical_ports_lines: number of grating coupler lines. + force_manhattan: False + excluded_ports: list of port names to exclude when adding gratings. + grating_indices: list of grating coupler indices. + routing_straight: function to route. + routing_method: route_single. + optical_routing_type: None: auto, 0: no extension, 1: standard, 2: check. + input_port_indexes: to connect. + fiber_spacing: in um. + radius: optional radius of the bend. Defaults to the cross_section. + radius_loopback: optional radius of the loopback bend. Defaults to the cross_section. + route_backwards: route from component to grating coupler or vice-versa. + + .. plot:: + :include-source: + + import gdsfactory as gf + + c = gf.components.crossing() + cc = gf.routing.add_fiber_array( + component=c, + optical_routing_type=2, + grating_coupler=gf.components.grating_coupler_elliptical_te, + with_loopback=False + ) + cc.plot() + + """ + return gf.routing.add_fiber_array( + component=component, + grating_coupler=grating_coupler, + gc_port_name=gc_port_name, + gc_rotation=gc_rotation, + component_name=component_name, + cross_section=cross_section, + **kwargs, + ) + + +add_fiber_array_so = partial( + add_fiber_array_sc, + component="straight_so", + grating_coupler=gc_so, + cross_section="xs_so", +) + + +def add_fiber_single_sc( + component: ComponentSpec = "straight_sc", + grating_coupler=gc_sc, + gc_port_name: str = "o1", + component_name: str | None = None, + cross_section: CrossSectionSpec = "xs_sc", + taper: ComponentSpec | None = None, + input_port_names: list[str] | tuple[str, ...] | None = None, + fiber_spacing: float = 70, + with_loopback: bool = True, + loopback_spacing: float = 100.0, + **kwargs, +) -> Component: + """Returns component with south routes and grating_couplers. + + You can also use pads or other terminations instead of grating couplers. + + Args: + component: component spec to connect to grating couplers. + grating_coupler: spec for route terminations. + gc_port_name: grating coupler input port name. + component_name: optional for the label. + cross_section: cross_section function. + taper: taper spec. + input_port_names: list of input port names to connect to grating couplers. + fiber_spacing: spacing between fibers. + with_loopback: adds loopback structures. + loopback_spacing: spacing between loopback and test structure. + kwargs: additional arguments. + + Keyword Args: + bend: bend spec. + straight: straight spec. + fanout_length: if None, automatic calculation of fanout length. + max_y0_optical: in um. + with_loopback: True, adds loopback structures. + straight_separation: from edge to edge. + list_port_labels: None, adds TM labels to port indices in this list. + connected_port_list_ids: names of ports only for type 0 optical routing. + nb_optical_ports_lines: number of grating coupler lines. + force_manhattan: False + excluded_ports: list of port names to exclude when adding gratings. + grating_indices: list of grating coupler indices. + routing_straight: function to route. + routing_method: route_single. + optical_routing_type: None: auto, 0: no extension, 1: standard, 2: check. + gc_rotation: fiber coupler rotation in degrees. Defaults to -90. + input_port_indexes: to connect. + + .. plot:: + :include-source: + + import gdsfactory as gf + + c = gf.components.crossing() + cc = gf.routing.add_fiber_array( + component=c, + optical_routing_type=2, + grating_coupler=gf.components.grating_coupler_elliptical_te, + with_loopback=False + ) + cc.plot() + + """ + return gf.routing.add_fiber_single( + component=component, + grating_coupler=grating_coupler, + gc_port_name=gc_port_name, + component_name=component_name, + cross_section=cross_section, + taper=taper, + input_port_names=input_port_names, + fiber_spacing=fiber_spacing, + with_loopback=with_loopback, + loopback_spacing=loopback_spacing, + **kwargs, + ) + + +add_fiber_single_so = partial( + add_fiber_single_sc, + component="straight_so", + grating_coupler=gc_so, + cross_section="xs_so", +) + + +def add_pads_top( + component: ComponentSpec = "straight_heater_metal_sc", + port_names: Strs | None = None, + component_name: str | None = None, + cross_section: CrossSectionSpec = "metal_routing", + pad_port_name: str = "e1", + pad: ComponentSpec = "pad", + bend: ComponentSpec = "wire_corner", + straight_separation: float = 15.0, + pad_spacing: float | str = "pad_spacing", + taper: ComponentSpec | None = None, + port_type: str = "electrical", + allow_width_mismatch: bool = True, + fanout_length: float | None = 80, + route_width: float | list[float] | None = 0, + **kwargs, +) -> Component: + """Returns new component with ports connected top pads. + + Args: + component: component spec to connect to. + port_names: list of port names to connect to pads. + component_name: optional for the label. + cross_section: cross_section function. + pad_port_name: pad port name. + pad: pad function. + bend: bend function. + straight_separation: from edge to edge. + pad_spacing: spacing between pads. + taper: taper function. + port_type: port type. + allow_width_mismatch: if True, allows width mismatch. + fanout_length: length of the fanout. + route_width: width of the route. + kwargs: additional arguments. + + .. plot:: + :include-source: + + import gdsfactory as gf + c = gf.c.nxn( + xsize=600, + ysize=200, + north=2, + south=3, + wg_width=10, + layer="M3", + port_type="electrical", + ) + cc = gf.routing.add_pads_top(component=c, port_names=("e1", "e4"), fanout_length=50) + cc.plot() + + """ + return gf.routing.add_pads_top( + component=component, + port_names=port_names, + component_name=component_name, + cross_section=cross_section, + pad_port_name=pad_port_name, + pad=pad, + bend=bend, + straight_separation=straight_separation, + pad_spacing=pad_spacing, + taper=taper, + port_type=port_type, + allow_width_mismatch=allow_width_mismatch, + fanout_length=fanout_length, + route_width=route_width, + **kwargs, + ) + + +def pack_doe( + doe: ComponentSpec, + settings: dict[str, tuple[Any, ...]], + do_permutations: bool = False, + function: CellSpec | None = None, + **kwargs, +) -> Component: + """Packs a component DOE (Design of Experiment) using pack. + + Args: + doe: function to return Components. + settings: component settings. + do_permutations: for each setting. + function: to apply (add padding, grating couplers). + kwargs: for pack. + + Keyword Args: + spacing: Minimum distance between adjacent shapes. + aspect_ratio: (width, height) ratio of the rectangular bin. + max_size: Limits the size into which the shapes will be packed. + sort_by_area: Pre-sorts the shapes by area. + density: Values closer to 1 pack tighter but require more computation. + precision: Desired precision for rounding vertex coordinates. + text: Optional function to add text labels. + text_prefix: for labels. For example. 'A' for 'A1', 'A2'... + text_offsets: relative to component size info anchor. Defaults to center. + text_anchors: relative to component (ce cw nc ne nw sc se sw center cc). + name_prefix: for each packed component (avoids the Unnamed cells warning). + Note that the suffix contains a uuid so the name will not be deterministic. + rotation: for each component in degrees. + h_mirror: horizontal mirror in y axis (x, 1) (1, 0). This is the most common. + v_mirror: vertical mirror using x axis (1, y) (0, y). + """ + return gf.components.pack_doe( + doe=doe, + settings=settings, + do_permutations=do_permutations, + function=function, + **kwargs, + ) + + +def pack_doe_grid( + doe: ComponentSpec, + settings: dict[str, tuple[Any, ...]], + do_permutations: bool = False, + function: CellSpec | None = None, + with_text: bool = False, + **kwargs, +) -> Component: + """Packs a component DOE (Design of Experiment) using grid. + + Args: + doe: function to return Components. + settings: component settings. + do_permutations: for each setting. + function: to apply to component (add padding, grating couplers). + with_text: includes text label. + kwargs: for grid. + + Keyword Args: + spacing: between adjacent elements on the grid, can be a tuple for + different distances in height and width. + separation: If True, guarantees elements are separated with fixed spacing + if False, elements are spaced evenly along a grid. + shape: x, y shape of the grid (see np.reshape). + If no shape and the list is 1D, if np.reshape were run with (1, -1). + align_x: {'x', 'xmin', 'xmax'} for x (column) alignment along. + align_y: {'y', 'ymin', 'ymax'} for y (row) alignment along. + edge_x: {'x', 'xmin', 'xmax'} for x (column) (ignored if separation = True). + edge_y: {'y', 'ymin', 'ymax'} for y (row) (ignored if separation = True). + rotation: for each component in degrees. + h_mirror: horizontal mirror y axis (x, 1) (1, 0). most common mirror. + v_mirror: vertical mirror using x axis (1, y) (0, y). + """ + return gf.components.pack_doe_grid( + doe=doe, + settings=settings, + do_permutations=do_permutations, + function=function, + with_text=with_text, + **kwargs, + ) + + +if __name__ == "__main__": + from cspdk.si220 import PDK + + PDK.activate() + + c = add_fiber_single_sc() + # c =gf.get_component(gc_sc) + # c = pack_doe() + c.pprint_ports() + c.show() diff --git a/cspdk/si220/cells.py b/cspdk/si220/cells/primitives.py similarity index 76% rename from cspdk/si220/cells.py rename to cspdk/si220/cells/primitives.py index 3fd216b..9d6ba81 100644 --- a/cspdk/si220/cells.py +++ b/cspdk/si220/cells/primitives.py @@ -3,7 +3,7 @@ from functools import partial import gdsfactory as gf -from gdsfactory.typings import Component, CrossSection, CrossSectionSpec +from gdsfactory.typings import Component, ComponentSpec, CrossSection, CrossSectionSpec from cspdk.si220.config import PATH from cspdk.si220.tech import LAYER, Tech @@ -69,7 +69,7 @@ def bend_s( @gf.cell -def bend_euler( +def bend_euler_sc( radius: float | None = None, angle: float = 90.0, p: float = 0.5, @@ -98,11 +98,10 @@ def bend_euler( ) -bend_sc = partial(bend_euler, cross_section="xs_sc") -bend_so = partial(bend_euler, cross_section="xs_so") -bend_rc = partial(bend_euler, cross_section="xs_rc") -bend_ro = partial(bend_euler, cross_section="xs_ro") -bend_metal = partial(bend_euler, cross_section="metal_routing") +bend_euler_so = partial(bend_euler_sc, cross_section="xs_so") +bend_euler_rc = partial(bend_euler_sc, cross_section="xs_rc") +bend_euler_ro = partial(bend_euler_sc, cross_section="xs_ro") +bend_metal = partial(bend_euler_sc, cross_section="metal_routing") ################ # Transitions @@ -116,6 +115,7 @@ def taper( width2: float | None = None, port: gf.Port | None = None, cross_section: CrossSectionSpec = "xs_sc", + **kwargs, ) -> Component: """A taper. @@ -127,6 +127,7 @@ def taper( width2: the output width of the taper (if not given, use port). port: the port (with certain width) to taper towards (if not given, use width2). cross_section: a cross section or its name or a function generating a cross section. + kwargs: additional arguments to pass to the taper function. """ c = gf.c.taper( length=length, @@ -134,6 +135,7 @@ def taper( width2=width2, port=port, cross_section=cross_section, + **kwargs, ) return c @@ -527,7 +529,7 @@ def grating_coupler_elliptical( @gf.cell def mzi( delta_length: float = 10.0, - bend="bend_sc", + bend="bend_euler_sc", straight="straight_sc", splitter="mmi1x2_sc", combiner="mmi2x2_sc", @@ -573,7 +575,7 @@ def mzi( mzi_sc = partial( mzi, straight="straight_sc", - bend="bend_sc", + bend="bend_euler_sc", splitter="mmi1x2_sc", combiner="mmi2x2_sc", cross_section="xs_sc", @@ -582,7 +584,7 @@ def mzi( mzi_so = partial( mzi, straight="straight_so", - bend="bend_so", + bend="bend_euler_so", splitter="mmi1x2_so", combiner="mmi2x2_so", cross_section="xs_so", @@ -591,7 +593,7 @@ def mzi( mzi_rc = partial( mzi, straight="straight_rc", - bend="bend_rc", + bend="bend_euler_rc", splitter="mmi1x2_rc", combiner="mmi2x2_rc", cross_section="xs_rc", @@ -600,13 +602,203 @@ def mzi( mzi_ro = partial( mzi, straight="straight_ro", - bend="bend_ro", + bend="bend_euler_ro", splitter="mmi1x2_ro", combiner="mmi2x2_ro", cross_section="xs_ro", ) +@gf.cell +def coupler_ring_sc( + gap: float = 0.2, + radius: float = 5.0, + length_x: float = 4.0, + bend: ComponentSpec = "bend_euler_sc", + straight: ComponentSpec = "straight_sc", + cross_section: CrossSectionSpec = "xs_sc", + cross_section_bend: CrossSectionSpec | None = None, + length_extension: float = 3, +) -> Component: + r"""Coupler for ring. + + Args: + gap: spacing between parallel coupled straight waveguides. + radius: of the bends. + length_x: length of the parallel coupled straight waveguides. + bend: 90 degrees bend spec. + straight: straight spec. + cross_section: cross_section spec. + cross_section_bend: optional bend cross_section spec. + length_extension: for the ports. + + .. code:: + + o2 o3 + | | + \ / + \ / + ---=========--- + o1 length_x o4 + + """ + return gf.components.coupler_ring( + gap, + radius, + length_x, + bend, + straight, + cross_section, + cross_section_bend, + length_extension, + ) + + +coupler_ring_so = partial( + coupler_ring_sc, + cross_section="xs_so", + bend="bend_euler_so", + straight="straight_so", +) + + +@gf.cell +def ring_single_sc( + gap: float = 0.2, + radius: float = 10.0, + length_x: float = 4.0, + length_y: float = 0.6, + bend: ComponentSpec = "bend_euler_sc", + straight: ComponentSpec = "straight_sc", + coupler_ring: ComponentSpec = "coupler_ring_sc", + cross_section: CrossSectionSpec = "xs_sc", +) -> gf.Component: + """Returns a single ring. + + ring coupler (cb: bottom) connects to two vertical straights (sl: left, sr: right), + two bends (bl, br) and horizontal straight (wg: top) + + Args: + gap: gap between for coupler. + radius: for the bend and coupler. + length_x: ring coupler length. + length_y: vertical straight length. + coupler_ring: ring coupler spec. + bend: 90 degrees bend spec. + straight: straight spec. + coupler_ring: ring coupler spec. + cross_section: cross_section spec. + + .. code:: + + xxxxxxxxxxxxx + xxxxx xxxx + xxx xxx + xxx xxx + xx xxx + x xxx + xx xx▲ + xx xx│length_y + xx xx▼ + xx xx + xx length_x x + xx ◄───────────────► x + xx xxx + xx xxx + xxx──────▲─────────xxx + │gap + o1──────▼─────────o2 + """ + return gf.components.ring_single( + gap, radius, length_x, length_y, bend, straight, coupler_ring, cross_section + ) + + +ring_single_so = partial( + ring_single_sc, + cross_section="xs_so", + bend="bend_euler_so", + straight="straight_so", + coupler_ring="coupler_ring_so", +) + + +@gf.cell +def via_stack_heater_mtop(size=(10, 10)) -> Component: + """Returns a via stack for the heater.""" + return gf.c.via_stack( + size=size, + layers=("HEATER", "PAD"), + vias=(None, None), + ) + + +@gf.cell +def straight_heater_metal_sc( + length: float = 320.0, + length_undercut_spacing: float = 6.0, + length_undercut: float = 30.0, + length_straight: float = 0.1, + length_straight_input: float = 15.0, + cross_section: CrossSectionSpec = "xs_sc", + cross_section_heater: CrossSectionSpec = "heater_metal", + cross_section_waveguide_heater: CrossSectionSpec = "xs_sc_heater", + cross_section_heater_undercut: CrossSectionSpec = "xs_sc_heater", + with_undercut: bool = True, + via_stack: ComponentSpec | None = "via_stack_heater_mtop", + port_orientation1: int | None = 180, + port_orientation2: int | None = 0, + heater_taper_length: float | None = 5.0, + ohms_per_square: float | None = None, +) -> Component: + """Returns a thermal phase shifter. + + dimensions from https://doi.org/10.1364/OE.27.010456 + + Args: + length: of the waveguide. + length_undercut_spacing: from undercut regions. + length_undercut: length of each undercut section. + length_straight: length of the straight waveguide. + length_straight_input: from input port to where trenches start. + cross_section: for waveguide ports. + cross_section_heater: for heated sections. heater metal only. + cross_section_waveguide_heater: for heated sections. + cross_section_heater_undercut: for heated sections with undercut. + with_undercut: isolation trenches for higher efficiency. + via_stack: via stack. + port_orientation1: left via stack port orientation. + port_orientation2: right via stack port orientation. + heater_taper_length: minimizes current concentrations from heater to via_stack. + ohms_per_square: to calculate resistance. + """ + return gf.components.straight_heater_metal_undercut( + length, + length_undercut_spacing, + length_undercut, + length_straight, + length_straight_input, + cross_section, + cross_section_heater, + cross_section_waveguide_heater, + cross_section_heater_undercut, + with_undercut, + via_stack, + port_orientation1, + port_orientation2, + heater_taper_length, + ohms_per_square, + ) + + +straight_heater_metal_so = partial( + straight_heater_metal_sc, + cross_section="xs_so", + cross_section_waveguide_heater="xs_so_heater", + cross_section_heater_undercut="xs_so_heater", +) + + ################ # Packaging ################ @@ -830,6 +1022,10 @@ def array( ) +pack_doe = gf.c.pack_doe +pack_doe_grid = gf.c.pack_doe_grid + + if __name__ == "__main__": - t = crossing_sc() - t.show() + c = straight_heater_metal_so() + c.show() diff --git a/cspdk/si220/models.py b/cspdk/si220/models.py index 19099dd..04812c8 100644 --- a/cspdk/si220/models.py +++ b/cspdk/si220/models.py @@ -127,10 +127,10 @@ def bend_euler( ) -bend_sc = partial(bend_euler, cross_section="xs_sc") -bend_so = partial(bend_euler, cross_section="xs_so") -bend_rc = partial(bend_euler, cross_section="xs_rc") -bend_ro = partial(bend_euler, cross_section="xs_ro") +bend_euler_sc = partial(bend_euler, cross_section="xs_sc") +bend_euler_so = partial(bend_euler, cross_section="xs_so") +bend_euler_rc = partial(bend_euler, cross_section="xs_rc") +bend_euler_ro = partial(bend_euler, cross_section="xs_ro") ################ @@ -262,6 +262,9 @@ def coupler_symmetric() -> sax.SDict: coupler_so = partial(sm.mmi2x2, wl0=1.31, fwhm=0.2) coupler_ro = coupler_so +coupler_ring_sc = partial(sm.coupler, wl0=1.55) +coupler_ring_so = partial(sm.coupler, wl0=1.31) + def coupler( wl: Float = 1.55, diff --git a/cspdk/si220/samples/circuit_simulations_ring_sc.py b/cspdk/si220/samples/circuit_simulations_ring_sc.py new file mode 100644 index 0000000..f821701 --- /dev/null +++ b/cspdk/si220/samples/circuit_simulations_ring_sc.py @@ -0,0 +1,25 @@ +"""Circuit simulation.""" + +import jax.numpy as jnp +import matplotlib.pyplot as plt +import sax + +from cspdk.si220 import PDK, cells + +if __name__ == "__main__": + c = cells.ring_single_sc(radius=10) + c.show() + netlist = c.get_netlist() + c.plot_netlist() + models = PDK.models + circuit, _ = sax.circuit(netlist, models=models) # type: ignore + wl = jnp.linspace(1.5, 1.6, 256) + + S = circuit(wl=wl) + plt.figure(figsize=(14, 4)) + plt.title("MZI") + plt.plot(1e3 * wl, jnp.abs(S["o1", "o2"]) ** 2) # type: ignore + plt.xlabel("λ [nm]") + plt.ylabel("T") + plt.grid(True) + plt.show() diff --git a/cspdk/si220/samples/circuit_simulations_sc_ring_with_routing.py b/cspdk/si220/samples/circuit_simulations_sc_ring_with_routing.py new file mode 100644 index 0000000..45c463d --- /dev/null +++ b/cspdk/si220/samples/circuit_simulations_sc_ring_with_routing.py @@ -0,0 +1,33 @@ +"""Circuit simulation with routes.""" + +import gdsfactory as gf +import jax.numpy as jnp +import matplotlib.pyplot as plt +import sax + +from cspdk.si220 import PDK, cells, tech + +if __name__ == "__main__": + c = gf.Component() + r1 = c << cells.ring_single_sc(radius=5) + r2 = c << cells.ring_single_sc(radius=15) + r2.dmove((200, 200)) + + route = tech.route_bundle(c, [r1.ports["o2"]], [r2.ports["o1"]]) + c.add_port(name="o1", port=r1.ports["o1"]) + c.add_port(name="o2", port=r2.ports["o2"]) + c.show() + netlist = c.get_netlist(recursive=True) + c.plot_netlist(recursive=True) + models = PDK.models + circuit, _ = sax.circuit(netlist, models=models) # type: ignore + wl = jnp.linspace(1.5, 1.6, 256) + + S = circuit(wl=wl) + plt.figure(figsize=(14, 4)) + plt.title("MZI") + plt.plot(1e3 * wl, jnp.abs(S["o1", "o2"]) ** 2) # type: ignore + plt.xlabel("λ [nm]") + plt.ylabel("T") + plt.grid(True) + plt.show() diff --git a/cspdk/si220/tech.py b/cspdk/si220/tech.py index 65923f9..68dd1f4 100644 --- a/cspdk/si220/tech.py +++ b/cspdk/si220/tech.py @@ -169,7 +169,7 @@ def xs_ro(width=Tech.width_ro, radius=Tech.radius_ro, **kwargs) -> gf.CrossSecti return xs -def xs_sc_heater_metal(width=Tech.width_sc, **kwargs) -> gf.CrossSection: +def xs_sc_heater(width=Tech.width_sc, **kwargs) -> gf.CrossSection: """Returns strip Cband waveguide cross-section with heater metal.""" kwargs["layer"] = kwargs.get("layer", LAYER.WG) kwargs["heater_width"] = kwargs.get("heater_width", 2.5) @@ -182,6 +182,19 @@ def xs_sc_heater_metal(width=Tech.width_sc, **kwargs) -> gf.CrossSection: return xs +def xs_so_heater(width=Tech.width_so, **kwargs) -> gf.CrossSection: + """Returns strip Oband waveguide cross-section with heater metal.""" + kwargs["layer"] = kwargs.get("layer", LAYER.WG) + kwargs["heater_width"] = kwargs.get("heater_width", 2.5) + kwargs["layer_heater"] = kwargs.get("layer_heater", LAYER.HEATER) + kwargs["radius"] = kwargs.get("radius", 0) + kwargs["radius_min"] = kwargs.get("radius_min", kwargs["radius"]) + xs = gf.cross_section.strip_heater_metal(width=width, **kwargs) + if xs.name in DEFAULT_CROSS_SECTION_NAMES: + xs._name = DEFAULT_CROSS_SECTION_NAMES[xs.name] + return xs + + def metal_routing( width=10.0, radius: float = 10, @@ -235,7 +248,7 @@ def route_single( route_width: float | None = None, cross_section: CrossSectionSpec = "xs_sc", straight: ComponentSpec = "straight_sc", - bend: ComponentSpec = "bend_sc", + bend: ComponentSpec = "bend_euler_sc", taper: ComponentSpec = "taper_sc", ) -> OpticalManhattanRoute: """Route two ports with a single route.""" @@ -275,7 +288,7 @@ def route_bundle( route_width: float | list[float] | None = None, cross_section: CrossSectionSpec = "xs_sc", straight: ComponentSpec = "straight_sc", - bend: ComponentSpec = "bend_sc", + bend: ComponentSpec = "bend_euler_sc", taper: ComponentSpec | None = "taper_sc", ) -> list[OpticalManhattanRoute]: """Route two bundles of ports.""" @@ -307,28 +320,28 @@ def route_bundle( route_single_sc=partial( route_single, straight="straight_sc", - bend="bend_sc", + bend="bend_euler_sc", taper="taper_sc", cross_section="xs_sc", ), route_single_so=partial( route_single, straight="straight_so", - bend="bend_so", + bend="bend_euler_so", taper="taper_so", cross_section="xs_so", ), route_single_rc=partial( route_single, straight="straight_rc", - bend="bend_rc", + bend="bend_euler_rc", taper="taper_rc", cross_section="xs_rc", ), route_single_ro=partial( route_single, straight="straight_ro", - bend="bend_ro", + bend="bend_euler_ro", taper="taper_ro", cross_section="xs_ro", ), @@ -336,28 +349,28 @@ def route_bundle( route_bundle_sc=partial( route_bundle, straight="straight_sc", - bend="bend_sc", + bend="bend_euler_sc", taper="taper_sc", cross_section="xs_sc", ), route_bundle_so=partial( route_bundle, straight="straight_so", - bend="bend_so", + bend="bend_euler_so", taper="taper_so", cross_section="xs_so", ), route_bundle_rc=partial( route_bundle, straight="straight_rc", - bend="bend_rc", + bend="bend_euler_rc", taper="taper_rc", cross_section="xs_rc", ), route_bundle_ro=partial( route_bundle, straight="straight_ro", - bend="bend_ro", + bend="bend_euler_ro", taper="taper_ro", cross_section="xs_ro", ), diff --git a/cspdk/si500/cells.py b/cspdk/si500/cells.py index 0e765fb..750336e 100644 --- a/cspdk/si500/cells.py +++ b/cspdk/si500/cells.py @@ -99,8 +99,8 @@ def bend_euler( ) -bend_rc = partial(bend_euler, cross_section="xs_rc") -bend_ro = partial(bend_euler, cross_section="xs_ro") +bend_euler_rc = partial(bend_euler, cross_section="xs_rc") +bend_euler_ro = partial(bend_euler, cross_section="xs_ro") ################ # Transitions @@ -428,7 +428,7 @@ def grating_coupler_elliptical( @gf.cell def mzi( delta_length: float = 10.0, - bend="bend_rc", + bend="bend_euler_rc", straight="straight_rc", splitter="mmi1x2_rc", combiner="mmi2x2_rc", @@ -474,7 +474,7 @@ def mzi( mzi_rc = partial( mzi, straight="straight_rc", - bend="bend_rc", + bend="bend_euler_rc", splitter="mmi1x2_rc", combiner="mmi2x2_rc", cross_section="xs_rc", @@ -483,7 +483,7 @@ def mzi( mzi_ro = partial( mzi, straight="straight_ro", - bend="bend_ro", + bend="bend_euler_ro", splitter="mmi1x2_ro", combiner="mmi2x2_ro", cross_section="xs_ro", diff --git a/cspdk/si500/models.py b/cspdk/si500/models.py index 42bbfd1..0382eda 100644 --- a/cspdk/si500/models.py +++ b/cspdk/si500/models.py @@ -33,7 +33,7 @@ wire_corner = csm.wire_corner bend_s = partial(csm.bend_s, cross_section="xs_rc") bend_euler = partial(csm.bend_euler, cross_section="xs_rc") -bend_rc = csm.bend_rc +bend_euler_rc = csm.bend_euler_rc ################ diff --git a/cspdk/si500/tech.py b/cspdk/si500/tech.py index 3fb0db5..46b6f4c 100644 --- a/cspdk/si500/tech.py +++ b/cspdk/si500/tech.py @@ -228,7 +228,7 @@ def route_single( route_width: float | None = None, cross_section: CrossSectionSpec = "xs_rc", straight: ComponentSpec = "straight_rc", - bend: ComponentSpec = "bend_rc", + bend: ComponentSpec = "bend_euler_rc", taper: ComponentSpec = "taper_rc", ) -> OpticalManhattanRoute: """Route two ports with a single route.""" @@ -268,7 +268,7 @@ def route_bundle( route_width: float | list[float] | None = None, cross_section: CrossSectionSpec = "xs_rc", straight: ComponentSpec = "straight_rc", - bend: ComponentSpec = "bend_rc", + bend: ComponentSpec = "bend_euler_rc", taper: ComponentSpec = "taper_rc", ) -> list[OpticalManhattanRoute]: """Route two bundles of ports.""" @@ -300,14 +300,14 @@ def route_bundle( route_single_rc=partial( route_single, straight="straight_rc", - bend="bend_rc", + bend="bend_euler_rc", taper="taper_rc", cross_section="xs_rc", ), route_single_ro=partial( route_single, straight="straight_ro", - bend="bend_ro", + bend="bend_euler_ro", taper="taper_ro", cross_section="xs_ro", ), @@ -315,14 +315,14 @@ def route_bundle( route_bundle_rc=partial( route_bundle, straight="straight_rc", - bend="bend_rc", + bend="bend_euler_rc", taper="taper_rc", cross_section="xs_rc", ), route_bundle_ro=partial( route_bundle, straight="straight_ro", - bend="bend_ro", + bend="bend_euler_ro", taper="taper_ro", cross_section="xs_ro", ), diff --git a/docs/cells_si220.rst b/docs/cells_si220.rst deleted file mode 100644 index 9ebb2aa..0000000 --- a/docs/cells_si220.rst +++ /dev/null @@ -1,918 +0,0 @@ - - -Cells Si SOI 220nm -============================= - - -array ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.array - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.array(component='pad', spacing=(150.0, 150.0), columns=6, rows=1, add_ports=True, centered=False) - c.plot() - - - -bend_euler ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.bend_euler - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.bend_euler(angle=90.0, p=0.5, with_arc_floorplan=True, cross_section='xs_sc', allow_min_radius_violation=False) - c.plot() - - - -bend_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.bend_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.bend_rc(angle=90.0, p=0.5, with_arc_floorplan=True, cross_section='xs_rc', allow_min_radius_violation=False) - c.plot() - - - -bend_ro ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.bend_ro - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.bend_ro(angle=90.0, p=0.5, with_arc_floorplan=True, cross_section='xs_ro', allow_min_radius_violation=False) - c.plot() - - - -bend_s ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.bend_s - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.bend_s(size=(11.0, 1.8), npoints=99, cross_section='xs_sc', allow_min_radius_violation=False) - c.plot() - - - -bend_sc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.bend_sc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.bend_sc(angle=90.0, p=0.5, with_arc_floorplan=True, cross_section='xs_sc', allow_min_radius_violation=False) - c.plot() - - - -bend_so ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.bend_so - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.bend_so(angle=90.0, p=0.5, with_arc_floorplan=True, cross_section='xs_so', allow_min_radius_violation=False) - c.plot() - - - -couple_symmetric ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.couple_symmetric - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.couple_symmetric(gap=0.234, dy=4.0, dx=10.0, cross_section='xs_sc') - c.plot() - - - -coupler ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.coupler - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.coupler(gap=0.234, length=20.0, dy=4.0, dx=10.0, cross_section='xs_sc') - c.plot() - - - -coupler_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.coupler_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.coupler_rc(gap=0.234, length=20.0, dy=4.0, dx=15, cross_section='xs_rc') - c.plot() - - - -coupler_ro ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.coupler_ro - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.coupler_ro(gap=0.234, length=20.0, dy=4.0, dx=15, cross_section='xs_ro') - c.plot() - - - -coupler_sc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.coupler_sc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.coupler_sc(gap=0.234, length=20.0, dy=4.0, dx=10.0, cross_section='xs_sc') - c.plot() - - - -coupler_so ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.coupler_so - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.coupler_so(gap=0.234, length=20.0, dy=4.0, dx=10.0, cross_section='xs_so') - c.plot() - - - -crossing_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.crossing_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.crossing_rc() - c.plot() - - - -crossing_sc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.crossing_sc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.crossing_sc() - c.plot() - - - -crossing_so ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.crossing_so - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.crossing_so() - c.plot() - - - -die_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.die_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.die_rc(size=(11470.0, 4900.0), ngratings=14, npads=31, grating_pitch=250.0, pad_pitch=300.0, grating_coupler='grating_coupler_rectangular_rc', cross_section='xs_rc', pad='pad') - c.plot() - - - -die_ro ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.die_ro - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.die_ro(size=(11470.0, 4900.0), ngratings=14, npads=31, grating_pitch=250.0, pad_pitch=300.0, grating_coupler='grating_coupler_rectangular_ro', cross_section='xs_ro', pad='pad') - c.plot() - - - -die_sc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.die_sc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.die_sc(size=(11470.0, 4900.0), ngratings=14, npads=31, grating_pitch=250.0, pad_pitch=300.0, grating_coupler='grating_coupler_rectangular_sc', cross_section='xs_sc', pad='pad') - c.plot() - - - -die_so ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.die_so - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.die_so(size=(11470.0, 4900.0), ngratings=14, npads=31, grating_pitch=250.0, pad_pitch=300.0, grating_coupler='grating_coupler_rectangular_so', cross_section='xs_so', pad='pad') - c.plot() - - - -grating_coupler_array ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_array - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_array(grating_coupler='grating_coupler_rectangular_sc', pitch=127, n=6, port_name='o1', rotation=-90, with_loopback=False, cross_section='xs_sc', straight_to_grating_spacing=10.0, centered=True) - c.plot() - - - -grating_coupler_elliptical_trenches ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_elliptical_trenches - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_elliptical_trenches(polarization='te', taper_length=16.6, taper_angle=30.0, trenches_extra_angle=9.0, wavelength=1.53, fiber_angle=15.0, grating_line_width=0.315, neff=2.638, ncladding=1.443, layer_trench=, p_start=26, n_periods=30, end_straight_length=0.2, cross_section='xs_sc') - c.plot() - - - -grating_coupler_elliptical_trenches_sc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_elliptical_trenches_sc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_elliptical_trenches_sc(polarization='te', taper_length=16.6, taper_angle=30.0, trenches_extra_angle=9.0, wavelength=1.55, fiber_angle=15.0, grating_line_width=0.315, neff=2.638, ncladding=1.443, layer_trench=, p_start=26, n_periods=30, end_straight_length=0.2, cross_section='xs_sc') - c.plot() - - - -grating_coupler_elliptical_trenches_so ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_elliptical_trenches_so - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_elliptical_trenches_so(polarization='te', taper_length=16.6, taper_angle=30.0, trenches_extra_angle=9.0, wavelength=1.31, fiber_angle=15.0, grating_line_width=0.25, neff=2.638, ncladding=1.443, layer_trench=, p_start=26, n_periods=30, end_straight_length=0.2, cross_section='xs_so') - c.plot() - - - -grating_coupler_rectangular ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_rectangular - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_rectangular(n_periods=30, period=0.63, fill_factor=0.5, width_grating=11.0, length_taper=350.0, polarization='te', wavelength=1.55, layer_slab=, layer_grating=, fiber_angle=10.0, slab_xmin=-1.0, slab_offset=0.0, cross_section='xs_sc') - c.plot() - - - -grating_coupler_rectangular_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_rectangular_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_rectangular_rc(n_periods=60, period=0.5, fill_factor=0.5, width_grating=11.0, length_taper=350.0, polarization='te', wavelength=1.55, layer_slab=, layer_grating=, fiber_angle=10.0, slab_xmin=-1.0, slab_offset=0.0, cross_section='xs_rc') - c.plot() - - - -grating_coupler_rectangular_ro ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_rectangular_ro - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_rectangular_ro(n_periods=80, period=0.5, fill_factor=0.5, width_grating=11.0, length_taper=350.0, polarization='te', wavelength=1.55, layer_slab=, layer_grating=, fiber_angle=10.0, slab_xmin=-1.0, slab_offset=0.0, cross_section='xs_ro') - c.plot() - - - -grating_coupler_rectangular_sc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_rectangular_sc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_rectangular_sc(n_periods=60, period=0.63, fill_factor=0.5, width_grating=11.0, length_taper=350.0, polarization='te', wavelength=1.55, layer_slab=, layer_grating=, fiber_angle=10.0, slab_xmin=-1.0, slab_offset=0.0, cross_section='xs_sc') - c.plot() - - - -grating_coupler_rectangular_so ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_rectangular_so - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_rectangular_so(n_periods=80, period=0.5, fill_factor=0.5, width_grating=11.0, length_taper=350.0, polarization='te', wavelength=1.31, layer_slab=, layer_grating=, fiber_angle=10.0, slab_xmin=-1.0, slab_offset=0.0, cross_section='xs_so') - c.plot() - - - -heater ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.heater - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.heater() - c.plot() - - - -mmi1x2 ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi1x2 - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi1x2(width_taper=1.5, length_taper=20.0, length_mmi=5.5, width_mmi=6.0, gap_mmi=0.25, cross_section='xs_sc') - c.plot() - - - -mmi1x2_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi1x2_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi1x2_rc(width_taper=1.5, length_taper=20.0, length_mmi=32.7, width_mmi=6.0, gap_mmi=1.64, cross_section='xs_rc') - c.plot() - - - -mmi1x2_ro ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi1x2_ro - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi1x2_ro(width_taper=1.5, length_taper=20.0, length_mmi=40.8, width_mmi=6.0, gap_mmi=1.55, cross_section='xs_ro') - c.plot() - - - -mmi1x2_sc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi1x2_sc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi1x2_sc(width_taper=1.5, length_taper=20.0, length_mmi=31.8, width_mmi=6.0, gap_mmi=1.64, cross_section='xs_sc') - c.plot() - - - -mmi1x2_so ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi1x2_so - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi1x2_so(width_taper=1.5, length_taper=20.0, length_mmi=40.1, width_mmi=6.0, gap_mmi=1.55, cross_section='xs_so') - c.plot() - - - -mmi2x2 ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi2x2 - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi2x2(width_taper=1.5, length_taper=20.0, length_mmi=5.5, width_mmi=6.0, gap_mmi=0.25, cross_section='xs_sc') - c.plot() - - - -mmi2x2_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi2x2_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi2x2_rc(width_taper=1.5, length_taper=20.0, length_mmi=44.8, width_mmi=6.0, gap_mmi=0.53, cross_section='xs_rc') - c.plot() - - - -mmi2x2_ro ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi2x2_ro - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi2x2_ro(width_taper=1.5, length_taper=20.0, length_mmi=55.0, width_mmi=6.0, gap_mmi=0.53, cross_section='xs_ro') - c.plot() - - - -mmi2x2_sc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi2x2_sc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi2x2_sc(width_taper=1.5, length_taper=20.0, length_mmi=42.5, width_mmi=6.0, gap_mmi=0.5, cross_section='xs_sc') - c.plot() - - - -mmi2x2_so ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi2x2_so - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi2x2_so(width_taper=1.5, length_taper=20.0, length_mmi=53.5, width_mmi=6.0, gap_mmi=0.53, cross_section='xs_so') - c.plot() - - - -mzi_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mzi_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mzi_rc(delta_length=10.0, length_y=2.0, length_x=0.1, with_splitter=True, port_e1_splitter='o2', port_e0_splitter='o3', port_e1_combiner='o2', port_e0_combiner='o3', nbends=2, cross_section='xs_rc', mirror_bot=False, add_optical_ports_arms=False, min_length=0.01, auto_rename_ports=True) - c.plot() - - - -mzi_ro ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mzi_ro - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mzi_ro(delta_length=10.0, length_y=2.0, length_x=0.1, with_splitter=True, port_e1_splitter='o2', port_e0_splitter='o3', port_e1_combiner='o2', port_e0_combiner='o3', nbends=2, cross_section='xs_ro', mirror_bot=False, add_optical_ports_arms=False, min_length=0.01, auto_rename_ports=True) - c.plot() - - - -mzi_sc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mzi_sc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mzi_sc(delta_length=10.0, length_y=2.0, length_x=0.1, with_splitter=True, port_e1_splitter='o2', port_e0_splitter='o3', port_e1_combiner='o3', port_e0_combiner='o4', nbends=2, cross_section='xs_sc', mirror_bot=False, add_optical_ports_arms=False, min_length=0.01, auto_rename_ports=True) - c.plot() - - - -mzi_so ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mzi_so - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mzi_so(delta_length=10.0, length_y=2.0, length_x=0.1, with_splitter=True, port_e1_splitter='o2', port_e0_splitter='o3', port_e1_combiner='o2', port_e0_combiner='o4', nbends=2, cross_section='xs_so', mirror_bot=False, add_optical_ports_arms=False, min_length=0.01, auto_rename_ports=True) - c.plot() - - - -pad ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.pad - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.pad(size=(100.0, 100.0), layer='PAD', port_inclusion=0, port_orientation=0) - c.plot() - - - -rectangle ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.rectangle - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.rectangle(size=(4.0, 2.0), layer=, centered=False, port_type='electrical', port_orientations=(180, 90, 0, -90)) - c.plot() - - - -straight ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.straight - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.straight(length=10.0, npoints=2, cross_section='xs_sc') - c.plot() - - - -straight_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.straight_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.straight_rc(length=10.0, npoints=2, cross_section='xs_rc') - c.plot() - - - -straight_ro ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.straight_ro - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.straight_ro(length=10.0, npoints=2, cross_section='xs_ro') - c.plot() - - - -straight_sc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.straight_sc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.straight_sc(length=10.0, npoints=2, cross_section='xs_sc') - c.plot() - - - -straight_so ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.straight_so - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.straight_so(length=10.0, npoints=2, cross_section='xs_so') - c.plot() - - - -taper ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.taper - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.taper(length=10.0, width1=0.5, with_two_ports=True, cross_section='xs_sc', port_names=('o1', 'o2'), port_types=('optical', 'optical'), with_bbox=True) - c.plot() - - - -taper_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.taper_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.taper_rc(length=10.0, width1=0.5, with_two_ports=True, cross_section='xs_rc', port_names=('o1', 'o2'), port_types=('optical', 'optical'), with_bbox=True) - c.plot() - - - -taper_ro ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.taper_ro - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.taper_ro(length=10.0, width1=0.5, with_two_ports=True, cross_section='xs_ro', port_names=('o1', 'o2'), port_types=('optical', 'optical'), with_bbox=True) - c.plot() - - - -taper_sc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.taper_sc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.taper_sc(length=10.0, width1=0.5, with_two_ports=True, cross_section='xs_sc', port_names=('o1', 'o2'), port_types=('optical', 'optical'), with_bbox=True) - c.plot() - - - -taper_so ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.taper_so - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.taper_so(length=10.0, width1=0.5, with_two_ports=True, cross_section='xs_so', port_names=('o1', 'o2'), port_types=('optical', 'optical'), with_bbox=True) - c.plot() - - - -taper_strip_to_ridge ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.taper_strip_to_ridge - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.taper_strip_to_ridge(length=10, width1=0.5, width2=0.5, w_slab1=0.2, w_slab2=10.45, layer_wg=, layer_slab=, cross_section='xs_sc', use_slab_port=False) - c.plot() - - - -trans_sc_rc10 ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.trans_sc_rc10 - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.trans_sc_rc10(length=10, width1=0.5, width2=0.5, w_slab1=0.2, w_slab2=10.45, layer_wg=, layer_slab=, cross_section='xs_sc', use_slab_port=False) - c.plot() - - - -trans_sc_rc20 ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.trans_sc_rc20 - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.trans_sc_rc20(length=20, width1=0.5, width2=0.5, w_slab1=0.2, w_slab2=10.45, layer_wg=, layer_slab=, cross_section='xs_sc', use_slab_port=False) - c.plot() - - - -trans_sc_rc50 ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.trans_sc_rc50 - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.trans_sc_rc50(length=50, width1=0.5, width2=0.5, w_slab1=0.2, w_slab2=10.45, layer_wg=, layer_slab=, cross_section='xs_sc', use_slab_port=False) - c.plot() - - - -wire_corner ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.wire_corner - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.wire_corner(cross_section='metal_routing') - c.plot() diff --git a/docs/cells_si500.rst b/docs/cells_si500.rst deleted file mode 100644 index ab940d2..0000000 --- a/docs/cells_si500.rst +++ /dev/null @@ -1,228 +0,0 @@ - - -Cells Si SOI 500nm -============================= - - -array ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.array - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.array(component='pad', spacing=(150.0, 150.0), columns=6, rows=1, add_ports=True, centered=False) - c.plot() - - - -bend_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.bend_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.bend_rc(radius=25, angle=90.0) - c.plot() - - - -bend_s ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.bend_s - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.bend_s(size=(11.0, 1.8), cross_section='xs_rc') - c.plot() - - - -coupler_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.coupler_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.coupler_rc(gap=0.236, length=20.0, dx=10.0, dy=4.0) - c.plot() - - - -die_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.die_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.die_rc() - c.plot() - - - -gc_rectangular_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.gc_rectangular_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.gc_rectangular_rc() - c.plot() - - - -grating_coupler_array ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.grating_coupler_array - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.grating_coupler_array(pitch=127.0, n=6, port_name='o1', rotation=0.0, with_loopback=False, cross_section='xs_sc') - c.plot() - - - -mmi1x2_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.mmi1x2_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.mmi1x2_rc() - c.plot() - - - -mmi2x2_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.mmi2x2_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.mmi2x2_rc() - c.plot() - - - -mzi_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.mzi_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.mzi_rc(delta_length=10.0, length_y=2.0, length_x=0.1) - c.plot() - - - -pad ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.pad - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.pad(size=(100.0, 100.0), layer=, port_inclusion=0.0) - c.plot() - - - -rectangle ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.rectangle - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.rectangle(size=(4.0, 2.0), layer=, centered=False, port_type='electrical', port_orientations=(180.0, 90.0, 0.0, -90.0)) - c.plot() - - - -straight_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.straight_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.straight_rc(length=10.0) - c.plot() - - - -taper_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.taper_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.taper_rc(length=10.0, width1=0.5) - c.plot() - - - -wire_corner ----------------------------------------------------- - -.. autofunction:: cspdk.si500.cells.wire_corner - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si500.cells.wire_corner(cross_section='metal_routing') - c.plot() diff --git a/docs/cells_sin300.rst b/docs/cells_sin300.rst deleted file mode 100644 index 55db2ba..0000000 --- a/docs/cells_sin300.rst +++ /dev/null @@ -1,558 +0,0 @@ - - -Cells SiN300 -============================= - - -array ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.array - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.array(component='pad', spacing=(150.0, 150.0), columns=6, rows=1, add_ports=True, centered=False) - c.plot() - - - -bend_euler ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.bend_euler - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.bend_euler(angle=90.0, p=0.5, with_arc_floorplan=True, cross_section='xs_nc', allow_min_radius_violation=False) - c.plot() - - - -bend_s ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.bend_s - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.bend_s(size=(11.0, 1.8), npoints=99, cross_section='xs_nc', allow_min_radius_violation=False) - c.plot() - - - -bend_sc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.bend_sc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.bend_sc(angle=90.0, p=0.5, with_arc_floorplan=True, cross_section='xs_nc', allow_min_radius_violation=False) - c.plot() - - - -bend_so ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.bend_so - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.bend_so(angle=90.0, p=0.5, with_arc_floorplan=True, cross_section='xs_no', allow_min_radius_violation=False) - c.plot() - - - -coupler ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.coupler - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.coupler(gap=0.234, length=20.0, dy=4.0, dx=15.0, cross_section='xs_nc') - c.plot() - - - -coupler_nc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.coupler_nc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.coupler_nc(gap=0.234, length=20.0, dy=4.0, dx=15.0, cross_section='xs_nc') - c.plot() - - - -coupler_no ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.coupler_no - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.coupler_no(gap=0.234, length=20.0, dy=4.0, dx=15.0, cross_section='xs_no') - c.plot() - - - -die_rc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.die_rc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.die_rc(size=(11470.0, 4900.0), ngratings=14, npads=31, grating_pitch=250.0, pad_pitch=300.0, grating_coupler='grating_coupler_rectangular_rc', cross_section='xs_rc', pad='pad') - c.plot() - - - -die_ro ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.die_ro - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.die_ro(size=(11470.0, 4900.0), ngratings=14, npads=31, grating_pitch=250.0, pad_pitch=300.0, grating_coupler='grating_coupler_rectangular_ro', cross_section='xs_ro', pad='pad') - c.plot() - - - -die_sc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.die_sc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.die_sc(size=(11470.0, 4900.0), ngratings=14, npads=31, grating_pitch=250.0, pad_pitch=300.0, grating_coupler='grating_coupler_rectangular_sc', cross_section='xs_sc', pad='pad') - c.plot() - - - -die_so ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.die_so - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.die_so(size=(11470.0, 4900.0), ngratings=14, npads=31, grating_pitch=250.0, pad_pitch=300.0, grating_coupler='grating_coupler_rectangular_so', cross_section='xs_so', pad='pad') - c.plot() - - - -grating_coupler_array ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_array - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_array(grating_coupler='grating_coupler_rectangular_nc', pitch=127, n=6, port_name='o1', rotation=-90, with_loopback=False, cross_section='xs_sc', straight_to_grating_spacing=10.0, centered=True) - c.plot() - - - -grating_coupler_elliptical_trenches ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_elliptical_trenches - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_elliptical_trenches(polarization='te', taper_length=16.6, taper_angle=30.0, trenches_extra_angle=9.0, wavelength=1.55, fiber_angle=20.0, grating_line_width=0.343, neff=1.6, ncladding=1.443, layer_trench=, p_start=26, n_periods=30, end_straight_length=0.2, cross_section='xs_nc') - c.plot() - - - -grating_coupler_elliptical_trenches_nc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_elliptical_trenches_nc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_elliptical_trenches_nc(polarization='te', taper_length=16.6, taper_angle=30.0, trenches_extra_angle=9.0, wavelength=1.55, fiber_angle=20.0, grating_line_width=0.343, neff=1.6, ncladding=1.443, layer_trench=, p_start=26, n_periods=30, end_straight_length=0.2, cross_section='xs_nc') - c.plot() - - - -grating_coupler_elliptical_trenches_no ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_elliptical_trenches_no - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_elliptical_trenches_no(polarization='te', taper_length=16.6, taper_angle=30.0, trenches_extra_angle=9.0, wavelength=1.55, fiber_angle=20.0, grating_line_width=0.343, neff=1.6, ncladding=1.443, layer_trench=, p_start=26, n_periods=30, end_straight_length=0.2, cross_section='xs_no') - c.plot() - - - -grating_coupler_rectangular ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_rectangular - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_rectangular(n_periods=30, period=0.75, fill_factor=0.5, width_grating=11.0, length_taper=200.0, polarization='te', wavelength=1.55, layer_slab=, layer_grating=, fiber_angle=20.0, slab_xmin=-1.0, slab_offset=0.0, cross_section='xs_nc') - c.plot() - - - -grating_coupler_rectangular_nc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_rectangular_nc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_rectangular_nc(n_periods=30, period=0.66, fill_factor=0.5, width_grating=11.0, length_taper=200.0, polarization='te', wavelength=1.55, layer_slab=, layer_grating=, fiber_angle=20.0, slab_xmin=-1.0, slab_offset=0.0, cross_section='xs_nc') - c.plot() - - - -grating_coupler_rectangular_no ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.grating_coupler_rectangular_no - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.grating_coupler_rectangular_no(n_periods=30, period=0.964, fill_factor=0.5, width_grating=11.0, length_taper=200.0, polarization='te', wavelength=1.55, layer_slab=, layer_grating=, fiber_angle=20.0, slab_xmin=-1.0, slab_offset=0.0, cross_section='xs_no') - c.plot() - - - -mmi1x2 ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi1x2 - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi1x2(width_taper=5.5, length_taper=50.0, length_mmi=5.5, width_mmi=12.0, gap_mmi=0.25, cross_section='xs_nc') - c.plot() - - - -mmi1x2_nc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi1x2_nc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi1x2_nc(width_taper=5.5, length_taper=50.0, length_mmi=64.7, width_mmi=12.0, gap_mmi=0.4, cross_section='xs_nc') - c.plot() - - - -mmi1x2_no ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi1x2_no - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi1x2_no(width_taper=5.5, length_taper=50.0, length_mmi=42.0, width_mmi=12.0, gap_mmi=0.4, cross_section='xs_no') - c.plot() - - - -mmi2x2 ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi2x2 - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi2x2(width_taper=5.5, length_taper=50.0, length_mmi=5.5, width_mmi=12.0, gap_mmi=0.25, cross_section='xs_nc') - c.plot() - - - -mmi2x2_nc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi2x2_nc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi2x2_nc(width_taper=5.5, length_taper=50.0, length_mmi=232.0, width_mmi=12.0, gap_mmi=0.4, cross_section='xs_nc') - c.plot() - - - -mmi2x2_no ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mmi2x2_no - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mmi2x2_no(width_taper=5.5, length_taper=50.0, length_mmi=126.0, width_mmi=12.0, gap_mmi=0.4, cross_section='xs_no') - c.plot() - - - -mzi ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mzi - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mzi(delta_length=10.0, length_y=2.0, length_x=0.1, splitter='mmi1x2', with_splitter=True, port_e1_splitter='o2', port_e0_splitter='o3', port_e1_combiner='o2', port_e0_combiner='o3', nbends=2, cross_section='xs_nc', mirror_bot=False, add_optical_ports_arms=False, min_length=0.01, auto_rename_ports=True) - c.plot() - - - -mzi_nc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mzi_nc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mzi_nc(delta_length=10.0, length_y=2.0, length_x=0.1, splitter='mmi1x2', with_splitter=True, port_e1_splitter='o2', port_e0_splitter='o3', port_e1_combiner='o2', port_e0_combiner='o3', nbends=2, cross_section='xs_nc', mirror_bot=False, add_optical_ports_arms=False, min_length=0.01, auto_rename_ports=True) - c.plot() - - - -mzi_no ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.mzi_no - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.mzi_no(delta_length=10.0, length_y=2.0, length_x=0.1, splitter='mmi1x2', with_splitter=True, port_e1_splitter='o2', port_e0_splitter='o3', port_e1_combiner='o2', port_e0_combiner='o3', nbends=2, cross_section='xs_no', mirror_bot=False, add_optical_ports_arms=False, min_length=0.01, auto_rename_ports=True) - c.plot() - - - -pad ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.pad - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.pad(size=(100.0, 100.0), layer='PAD', port_inclusion=0, port_orientation=0) - c.plot() - - - -rectangle ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.rectangle - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.rectangle(size=(4.0, 2.0), layer=, centered=False, port_type='electrical', port_orientations=(180, 90, 0, -90)) - c.plot() - - - -straight ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.straight - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.straight(length=10.0, npoints=2, cross_section='xs_nc') - c.plot() - - - -straight_nc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.straight_nc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.straight_nc(length=10.0, npoints=2, cross_section='xs_nc') - c.plot() - - - -straight_no ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.straight_no - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.straight_no(length=10.0, npoints=2, cross_section='xs_no') - c.plot() - - - -taper ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.taper - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.taper(length=10.0, width1=0.5, with_two_ports=True, cross_section='xs_nc', port_names=('o1', 'o2'), port_types=('optical', 'optical'), with_bbox=True) - c.plot() - - - -taper_nc ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.taper_nc - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.taper_nc(length=10.0, width1=0.5, with_two_ports=True, cross_section='xs_nc', port_names=('o1', 'o2'), port_types=('optical', 'optical'), with_bbox=True) - c.plot() - - - -taper_no ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.taper_no - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.taper_no(length=10.0, width1=0.5, with_two_ports=True, cross_section='xs_no', port_names=('o1', 'o2'), port_types=('optical', 'optical'), with_bbox=True) - c.plot() - - - -wire_corner ----------------------------------------------------- - -.. autofunction:: cspdk.si220.cells.wire_corner - -.. plot:: - :include-source: - - import cspdk - - c = cspdk.si220.cells.wire_corner(cross_section='metal_routing') - c.plot() diff --git a/pyproject.toml b/pyproject.toml index 48c3142..8eedffa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -82,6 +82,9 @@ select = [ [tool.ruff.pydocstyle] convention = "google" +[tool.ruff.lint.per-file-ignores] +"cspdk/si220/cells/__init__.py" = ["F403"] # allowing star imports to aggregate cells + [tool.setuptools.package-data] mypkg = ["*.csv", "*.yaml"] diff --git a/tests/gds_ref_si220/add_fiber_array_sc.gds b/tests/gds_ref_si220/add_fiber_array_sc.gds new file mode 100644 index 0000000..c824e39 Binary files /dev/null and b/tests/gds_ref_si220/add_fiber_array_sc.gds differ diff --git a/tests/gds_ref_si220/add_fiber_array_so.gds b/tests/gds_ref_si220/add_fiber_array_so.gds new file mode 100644 index 0000000..e8b262d Binary files /dev/null and b/tests/gds_ref_si220/add_fiber_array_so.gds differ diff --git a/tests/gds_ref_si220/add_fiber_single_sc.gds b/tests/gds_ref_si220/add_fiber_single_sc.gds new file mode 100644 index 0000000..a3a6aea Binary files /dev/null and b/tests/gds_ref_si220/add_fiber_single_sc.gds differ diff --git a/tests/gds_ref_si220/add_fiber_single_so.gds b/tests/gds_ref_si220/add_fiber_single_so.gds new file mode 100644 index 0000000..4998c35 Binary files /dev/null and b/tests/gds_ref_si220/add_fiber_single_so.gds differ diff --git a/tests/gds_ref_si220/bend_euler_rc.gds b/tests/gds_ref_si220/bend_euler_rc.gds new file mode 100644 index 0000000..c2f5a39 Binary files /dev/null and b/tests/gds_ref_si220/bend_euler_rc.gds differ diff --git a/tests/gds_ref_si220/bend_euler_ro.gds b/tests/gds_ref_si220/bend_euler_ro.gds new file mode 100644 index 0000000..263f3dd Binary files /dev/null and b/tests/gds_ref_si220/bend_euler_ro.gds differ diff --git a/tests/gds_ref_si220/bend_euler_sc.gds b/tests/gds_ref_si220/bend_euler_sc.gds new file mode 100644 index 0000000..004afeb Binary files /dev/null and b/tests/gds_ref_si220/bend_euler_sc.gds differ diff --git a/tests/gds_ref_si220/bend_euler_so.gds b/tests/gds_ref_si220/bend_euler_so.gds new file mode 100644 index 0000000..a4d8bff Binary files /dev/null and b/tests/gds_ref_si220/bend_euler_so.gds differ diff --git a/tests/gds_ref_si220/coupler_ring.gds b/tests/gds_ref_si220/coupler_ring.gds new file mode 100644 index 0000000..043cbc7 Binary files /dev/null and b/tests/gds_ref_si220/coupler_ring.gds differ diff --git a/tests/gds_ref_si220/coupler_ring_sc.gds b/tests/gds_ref_si220/coupler_ring_sc.gds new file mode 100644 index 0000000..bec774a Binary files /dev/null and b/tests/gds_ref_si220/coupler_ring_sc.gds differ diff --git a/tests/gds_ref_si220/coupler_ring_so.gds b/tests/gds_ref_si220/coupler_ring_so.gds new file mode 100644 index 0000000..6590eee Binary files /dev/null and b/tests/gds_ref_si220/coupler_ring_so.gds differ diff --git a/tests/gds_ref_si220/ring_single_sc.gds b/tests/gds_ref_si220/ring_single_sc.gds new file mode 100644 index 0000000..d7a733c Binary files /dev/null and b/tests/gds_ref_si220/ring_single_sc.gds differ diff --git a/tests/gds_ref_si220/ring_single_so.gds b/tests/gds_ref_si220/ring_single_so.gds new file mode 100644 index 0000000..735c5f7 Binary files /dev/null and b/tests/gds_ref_si220/ring_single_so.gds differ diff --git a/tests/gds_ref_si220/straight_heater_metal.gds b/tests/gds_ref_si220/straight_heater_metal.gds new file mode 100644 index 0000000..cdb4831 Binary files /dev/null and b/tests/gds_ref_si220/straight_heater_metal.gds differ diff --git a/tests/gds_ref_si220/straight_heater_metal_sc.gds b/tests/gds_ref_si220/straight_heater_metal_sc.gds new file mode 100644 index 0000000..5476209 Binary files /dev/null and b/tests/gds_ref_si220/straight_heater_metal_sc.gds differ diff --git a/tests/gds_ref_si220/straight_heater_metal_so.gds b/tests/gds_ref_si220/straight_heater_metal_so.gds new file mode 100644 index 0000000..4c1f7b3 Binary files /dev/null and b/tests/gds_ref_si220/straight_heater_metal_so.gds differ diff --git a/tests/gds_ref_si220/via_stack_heater_mtop.gds b/tests/gds_ref_si220/via_stack_heater_mtop.gds new file mode 100644 index 0000000..dc865f7 Binary files /dev/null and b/tests/gds_ref_si220/via_stack_heater_mtop.gds differ diff --git a/tests/gds_ref_si500/bend_euler_rc.gds b/tests/gds_ref_si500/bend_euler_rc.gds new file mode 100644 index 0000000..e3d0553 Binary files /dev/null and b/tests/gds_ref_si500/bend_euler_rc.gds differ diff --git a/tests/gds_ref_si500/bend_euler_ro.gds b/tests/gds_ref_si500/bend_euler_ro.gds new file mode 100644 index 0000000..1a3c616 Binary files /dev/null and b/tests/gds_ref_si500/bend_euler_ro.gds differ diff --git a/tests/test_netlists_si220.py b/tests/test_netlists_si220.py index 9516a25..cf7d19a 100644 --- a/tests/test_netlists_si220.py +++ b/tests/test_netlists_si220.py @@ -19,7 +19,17 @@ def activate_pdk() -> None: cells = PDK.cells -skip_test = {"wire_corner"} # FIXME: why does this fail test_netlists? +skip_test = { + "wire_corner", + "pack_doe", + "pack_doe_grid", + "add_pads_top", + "add_pads_bot", + "add_fiber_single_sc", + "add_fiber_single_so", + "add_fiber_array_sc", + "add_fiber_array_so", +} cell_names = cells.keys() - skip_test cell_names = [name for name in cell_names if not name.startswith("_")] @@ -48,7 +58,7 @@ def instances_without_info(net): } -@pytest.mark.parametrize("name", cells) +@pytest.mark.parametrize("name", cell_names) def test_cell_in_pdk(name): """Test that cell is in the PDK.""" c1 = gf.Component() diff --git a/tests/test_netlists_si220/test_netlists_add_fiber_array_sc_.yml b/tests/test_netlists_si220/test_netlists_add_fiber_array_sc_.yml new file mode 100644 index 0000000..12d6cba --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_add_fiber_array_sc_.yml @@ -0,0 +1,677 @@ +instances: + bend_euler_RNone_A90_P0_836efce1_13612_m2388: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 8.318 + route_info_xs_sc_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_sc + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_836efce1_183112_m66363: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 8.318 + route_info_xs_sc_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_sc + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_836efce1_18387_m14338: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 8.318 + route_info_xs_sc_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_sc + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_836efce1_187887_m16388: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 8.318 + route_info_xs_sc_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_sc + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_836efce1_193112_m16388: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 8.318 + route_info_xs_sc_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_sc + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_836efce1_66112_m19113: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 8.318 + route_info_xs_sc_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_sc + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_836efce1_m173113_m66363: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 8.318 + route_info_xs_sc_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_sc + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_836efce1_m177888_m16388: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 8.318 + route_info_xs_sc_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_sc + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_836efce1_m183113_m16388: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 8.318 + route_info_xs_sc_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_sc + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_836efce1_m3613_m2388: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 8.318 + route_info_xs_sc_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_sc + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_836efce1_m56113_m19113: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 8.318 + route_info_xs_sc_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_sc + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_836efce1_m8388_m14338: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 8.318 + route_info_xs_sc_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_sc + p: 0.5 + with_arc_floorplan: true + grating_coupler_ellipti_5cf72084_195500_m38875: + component: grating_coupler_elliptical + info: + period: 0.685 + polarization: te + wavelength: 1.55 + settings: + cross_section: xs_sc + grating_line_width: 0.315 + wavelength: 1.55 + grating_coupler_ellipti_5cf72084_68500_m42825: + component: grating_coupler_elliptical + info: + period: 0.685 + polarization: te + wavelength: 1.55 + settings: + cross_section: xs_sc + grating_line_width: 0.315 + wavelength: 1.55 + grating_coupler_ellipti_5cf72084_m185500_m38875: + component: grating_coupler_elliptical + info: + period: 0.685 + polarization: te + wavelength: 1.55 + settings: + cross_section: xs_sc + grating_line_width: 0.315 + wavelength: 1.55 + grating_coupler_ellipti_5cf72084_m58500_m42825: + component: grating_coupler_elliptical + info: + period: 0.685 + polarization: te + wavelength: 1.55 + settings: + cross_section: xs_sc + grating_line_width: 0.315 + wavelength: 1.55 + straight_L0p5_N2_CSxs_sc_W0p45_16000_m5250: + component: straight + info: + length: 0.5 + route_info_length: 0.5 + route_info_type: xs_sc + route_info_weight: 0.5 + route_info_xs_sc_length: 0.5 + width: 0.45 + settings: + cross_section: xs_sc + length: 0.5 + npoints: 2 + width: 0.45 + straight_L0p5_N2_CSxs_sc_W0p45_m6000_m5250: + component: straight + info: + length: 0.5 + route_info_length: 0.5 + route_info_type: xs_sc + route_info_weight: 0.5 + route_info_xs_sc_length: 0.5 + width: 0.45 + settings: + cross_section: xs_sc + length: 0.5 + npoints: 2 + width: 0.45 + straight_L10_WNone_CSxs_sc_5000_0: + component: straight + info: + length: 10 + route_info_length: 10 + route_info_type: xs_sc + route_info_weight: 10 + route_info_xs_sc_length: 10 + width: 0.45 + settings: + cross_section: xs_sc + length: 10 + straight_L1_N2_CSxs_sc_W0p45_10500_0: + component: straight + info: + length: 1 + route_info_length: 1 + route_info_type: xs_sc + route_info_weight: 1 + route_info_xs_sc_length: 1 + width: 0.45 + settings: + cross_section: xs_sc + length: 1 + npoints: 2 + width: 0.45 + straight_L1_N2_CSxs_sc_W0p45_m500_0: + component: straight + info: + length: 1 + route_info_length: 1 + route_info_type: xs_sc + route_info_weight: 1 + route_info_xs_sc_length: 1 + width: 0.45 + settings: + cross_section: xs_sc + length: 1 + npoints: 2 + width: 0.45 + straight_L1p225_N2_CSxs_sc_W0p45_68500_m22338: + component: straight + info: + length: 1.225 + route_info_length: 1.225 + route_info_type: xs_sc + route_info_weight: 1.225 + route_info_xs_sc_length: 1.225 + width: 0.45 + settings: + cross_section: xs_sc + length: 1.225 + npoints: 2 + width: 0.45 + straight_L1p225_N2_CSxs_sc_W0p45_m58500_m22338: + component: straight + info: + length: 1.225 + route_info_length: 1.225 + route_info_type: xs_sc + route_info_weight: 1.225 + route_info_xs_sc_length: 1.225 + width: 0.45 + settings: + cross_section: xs_sc + length: 1.225 + npoints: 2 + width: 0.45 + straight_L351_N2_CSxs_sc_W0p45_5000_m68750: + component: straight + info: + length: 351 + route_info_length: 351 + route_info_type: xs_sc + route_info_weight: 351 + route_info_xs_sc_length: 351 + width: 0.45 + settings: + cross_section: xs_sc + length: 351 + npoints: 2 + width: 0.45 + straight_L42p5_N2_CSxs_sc_W0p45_42250_m16725: + component: straight + info: + length: 42.5 + route_info_length: 42.5 + route_info_type: xs_sc + route_info_weight: 42.5 + route_info_xs_sc_length: 42.5 + width: 0.45 + settings: + cross_section: xs_sc + length: 42.5 + npoints: 2 + width: 0.45 + straight_L42p5_N2_CSxs_sc_W0p45_m32250_m16725: + component: straight + info: + length: 42.5 + route_info_length: 42.5 + route_info_type: xs_sc + route_info_weight: 42.5 + route_info_xs_sc_length: 42.5 + width: 0.45 + settings: + cross_section: xs_sc + length: 42.5 + npoints: 2 + width: 0.45 + straight_L44p75_N2_CSxs_sc_W0p45_185500_m41375: + component: straight + info: + length: 44.75 + route_info_length: 44.75 + route_info_type: xs_sc + route_info_weight: 44.75 + route_info_xs_sc_length: 44.75 + width: 0.45 + settings: + cross_section: xs_sc + length: 44.75 + npoints: 2 + width: 0.45 + straight_L44p75_N2_CSxs_sc_W0p45_m175500_m41375: + component: straight + info: + length: 44.75 + route_info_length: 44.75 + route_info_type: xs_sc + route_info_weight: 44.75 + route_info_xs_sc_length: 44.75 + width: 0.45 + settings: + cross_section: xs_sc + length: 44.75 + npoints: 2 + width: 0.45 + straight_L6p22500000000_15e7f3ef_16000_m8613: + component: straight + info: + length: 6.225 + route_info_length: 6.225 + route_info_type: xs_sc + route_info_weight: 6.225 + route_info_xs_sc_length: 6.225 + width: 0.45 + settings: + cross_section: xs_sc + length: 6.225 + npoints: 2 + width: 0.45 + straight_L6p22500000000_15e7f3ef_m6000_m8613: + component: straight + info: + length: 6.225 + route_info_length: 6.225 + route_info_type: xs_sc + route_info_weight: 6.225 + route_info_xs_sc_length: 6.225 + width: 0.45 + settings: + cross_section: xs_sc + length: 6.225 + npoints: 2 + width: 0.45 +name: Unnamed_154 +nets: +- p1: bend_euler_RNone_A90_P0_836efce1_13612_m2388,o1 + p2: straight_L1_N2_CSxs_sc_W0p45_10500_0,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_13612_m2388,o2 + p2: straight_L0p5_N2_CSxs_sc_W0p45_16000_m5250,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_183112_m66363,o1 + p2: straight_L44p75_N2_CSxs_sc_W0p45_185500_m41375,o2 +- p1: bend_euler_RNone_A90_P0_836efce1_183112_m66363,o2 + p2: straight_L351_N2_CSxs_sc_W0p45_5000_m68750,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_18387_m14338,o1 + p2: straight_L6p22500000000_15e7f3ef_16000_m8613,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_18387_m14338,o2 + p2: straight_L42p5_N2_CSxs_sc_W0p45_42250_m16725,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_187887_m16388,o1 + p2: bend_euler_RNone_A90_P0_836efce1_193112_m16388,o2 +- p1: bend_euler_RNone_A90_P0_836efce1_187887_m16388,o2 + p2: straight_L44p75_N2_CSxs_sc_W0p45_185500_m41375,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_193112_m16388,o1 + p2: grating_coupler_ellipti_5cf72084_195500_m38875,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_66112_m19113,o1 + p2: straight_L42p5_N2_CSxs_sc_W0p45_42250_m16725,o2 +- p1: bend_euler_RNone_A90_P0_836efce1_66112_m19113,o2 + p2: straight_L1p225_N2_CSxs_sc_W0p45_68500_m22338,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_m173113_m66363,o1 + p2: straight_L351_N2_CSxs_sc_W0p45_5000_m68750,o2 +- p1: bend_euler_RNone_A90_P0_836efce1_m173113_m66363,o2 + p2: straight_L44p75_N2_CSxs_sc_W0p45_m175500_m41375,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_m177888_m16388,o1 + p2: straight_L44p75_N2_CSxs_sc_W0p45_m175500_m41375,o2 +- p1: bend_euler_RNone_A90_P0_836efce1_m177888_m16388,o2 + p2: bend_euler_RNone_A90_P0_836efce1_m183113_m16388,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_m183113_m16388,o2 + p2: grating_coupler_ellipti_5cf72084_m185500_m38875,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_m3613_m2388,o1 + p2: straight_L1_N2_CSxs_sc_W0p45_m500_0,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_m3613_m2388,o2 + p2: straight_L0p5_N2_CSxs_sc_W0p45_m6000_m5250,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_m56113_m19113,o1 + p2: straight_L42p5_N2_CSxs_sc_W0p45_m32250_m16725,o2 +- p1: bend_euler_RNone_A90_P0_836efce1_m56113_m19113,o2 + p2: straight_L1p225_N2_CSxs_sc_W0p45_m58500_m22338,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_m8388_m14338,o1 + p2: straight_L6p22500000000_15e7f3ef_m6000_m8613,o1 +- p1: bend_euler_RNone_A90_P0_836efce1_m8388_m14338,o2 + p2: straight_L42p5_N2_CSxs_sc_W0p45_m32250_m16725,o1 +- p1: grating_coupler_ellipti_5cf72084_68500_m42825,o1 + p2: straight_L1p225_N2_CSxs_sc_W0p45_68500_m22338,o2 +- p1: grating_coupler_ellipti_5cf72084_m58500_m42825,o1 + p2: straight_L1p225_N2_CSxs_sc_W0p45_m58500_m22338,o2 +- p1: straight_L0p5_N2_CSxs_sc_W0p45_16000_m5250,o2 + p2: straight_L6p22500000000_15e7f3ef_16000_m8613,o2 +- p1: straight_L0p5_N2_CSxs_sc_W0p45_m6000_m5250,o2 + p2: straight_L6p22500000000_15e7f3ef_m6000_m8613,o2 +- p1: straight_L10_WNone_CSxs_sc_5000_0,o1 + p2: straight_L1_N2_CSxs_sc_W0p45_m500_0,o2 +- p1: straight_L10_WNone_CSxs_sc_5000_0,o2 + p2: straight_L1_N2_CSxs_sc_W0p45_10500_0,o2 +placements: + bend_euler_RNone_A90_P0_836efce1_13612_m2388: + mirror: true + rotation: 0 + x: 11 + y: 0 + bend_euler_RNone_A90_P0_836efce1_183112_m66363: + mirror: true + rotation: 270 + x: 185.5 + y: -63.75 + bend_euler_RNone_A90_P0_836efce1_18387_m14338: + mirror: false + rotation: 270 + x: 16 + y: -11.725 + bend_euler_RNone_A90_P0_836efce1_187887_m16388: + mirror: false + rotation: 180 + x: 190.5 + y: -14 + bend_euler_RNone_A90_P0_836efce1_193112_m16388: + mirror: false + rotation: 90 + x: 195.5 + y: -19 + bend_euler_RNone_A90_P0_836efce1_66112_m19113: + mirror: true + rotation: 0 + x: 63.5 + y: -16.725 + bend_euler_RNone_A90_P0_836efce1_m173113_m66363: + mirror: true + rotation: 180 + x: -170.5 + y: -68.75 + bend_euler_RNone_A90_P0_836efce1_m177888_m16388: + mirror: false + rotation: 90 + x: -175.5 + y: -19 + bend_euler_RNone_A90_P0_836efce1_m183113_m16388: + mirror: false + rotation: 180 + x: -180.5 + y: -14 + bend_euler_RNone_A90_P0_836efce1_m3613_m2388: + mirror: false + rotation: 180 + x: -1 + y: 0 + bend_euler_RNone_A90_P0_836efce1_m56113_m19113: + mirror: false + rotation: 180 + x: -53.5 + y: -16.725 + bend_euler_RNone_A90_P0_836efce1_m8388_m14338: + mirror: true + rotation: 270 + x: -6 + y: -11.725 + grating_coupler_ellipti_5cf72084_195500_m38875: + mirror: false + rotation: 270 + x: 195.5 + y: -17.717 + grating_coupler_ellipti_5cf72084_68500_m42825: + mirror: false + rotation: 270 + x: 68.5 + y: -21.667 + grating_coupler_ellipti_5cf72084_m185500_m38875: + mirror: false + rotation: 270 + x: -185.5 + y: -17.717 + grating_coupler_ellipti_5cf72084_m58500_m42825: + mirror: false + rotation: 270 + x: -58.5 + y: -21.667 + straight_L0p5_N2_CSxs_sc_W0p45_16000_m5250: + mirror: false + rotation: 270 + x: 16 + y: -5 + straight_L0p5_N2_CSxs_sc_W0p45_m6000_m5250: + mirror: false + rotation: 270 + x: -6 + y: -5 + straight_L10_WNone_CSxs_sc_5000_0: + mirror: false + rotation: 0 + x: 0 + y: 0 + straight_L1_N2_CSxs_sc_W0p45_10500_0: + mirror: false + rotation: 180 + x: 11 + y: 0 + straight_L1_N2_CSxs_sc_W0p45_m500_0: + mirror: false + rotation: 0 + x: -1 + y: 0 + straight_L1p225_N2_CSxs_sc_W0p45_68500_m22338: + mirror: false + rotation: 270 + x: 68.5 + y: -21.725 + straight_L1p225_N2_CSxs_sc_W0p45_m58500_m22338: + mirror: false + rotation: 270 + x: -58.5 + y: -21.725 + straight_L351_N2_CSxs_sc_W0p45_5000_m68750: + mirror: false + rotation: 180 + x: 180.5 + y: -68.75 + straight_L42p5_N2_CSxs_sc_W0p45_42250_m16725: + mirror: false + rotation: 0 + x: 21 + y: -16.725 + straight_L42p5_N2_CSxs_sc_W0p45_m32250_m16725: + mirror: false + rotation: 180 + x: -11 + y: -16.725 + straight_L44p75_N2_CSxs_sc_W0p45_185500_m41375: + mirror: false + rotation: 270 + x: 185.5 + y: -19 + straight_L44p75_N2_CSxs_sc_W0p45_m175500_m41375: + mirror: false + rotation: 90 + x: -175.5 + y: -63.75 + straight_L6p22500000000_15e7f3ef_16000_m8613: + mirror: false + rotation: 90 + x: 16 + y: -11.725 + straight_L6p22500000000_15e7f3ef_m6000_m8613: + mirror: false + rotation: 90 + x: -6 + y: -11.725 +ports: + loopback1: grating_coupler_ellipti_5cf72084_m185500_m38875,o2 + loopback2: grating_coupler_ellipti_5cf72084_195500_m38875,o2 + v1: grating_coupler_ellipti_5cf72084_m58500_m42825,o2 + v2: grating_coupler_ellipti_5cf72084_68500_m42825,o2 diff --git a/tests/test_netlists_si220/test_netlists_add_fiber_array_so_.yml b/tests/test_netlists_si220/test_netlists_add_fiber_array_so_.yml new file mode 100644 index 0000000..afb1ad5 --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_add_fiber_array_so_.yml @@ -0,0 +1,677 @@ +instances: + bend_euler_RNone_A90_P0_c66059ab_13600_m2400: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 8.318 + route_info_xs_so_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_so + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_c66059ab_183100_m60170: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 8.318 + route_info_xs_so_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_so + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_c66059ab_18400_m14300: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 8.318 + route_info_xs_so_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_so + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_c66059ab_187900_m13400: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 8.318 + route_info_xs_so_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_so + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_c66059ab_193100_m13400: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 8.318 + route_info_xs_so_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_so + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_c66059ab_66100_m19100: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 8.318 + route_info_xs_so_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_so + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_c66059ab_m173100_m60170: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 8.318 + route_info_xs_so_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_so + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_c66059ab_m177900_m13400: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 8.318 + route_info_xs_so_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_so + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_c66059ab_m183100_m13400: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 8.318 + route_info_xs_so_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_so + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_c66059ab_m3600_m2400: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 8.318 + route_info_xs_so_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_so + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_c66059ab_m56100_m19100: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 8.318 + route_info_xs_so_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_so + p: 0.5 + with_arc_floorplan: true + bend_euler_RNone_A90_P0_c66059ab_m8400_m14300: + component: bend_euler + info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 8.318 + route_info_xs_so_length: 8.318 + settings: + allow_min_radius_violation: false + angle: 90 + cross_section: xs_so + p: 0.5 + with_arc_floorplan: true + grating_coupler_ellipti_387acb4a_195500_m34285: + component: grating_coupler_elliptical + info: + period: 0.579 + polarization: te + wavelength: 1.31 + settings: + cross_section: xs_so + grating_line_width: 0.25 + wavelength: 1.31 + grating_coupler_ellipti_387acb4a_68500_m41185: + component: grating_coupler_elliptical + info: + period: 0.579 + polarization: te + wavelength: 1.31 + settings: + cross_section: xs_so + grating_line_width: 0.25 + wavelength: 1.31 + grating_coupler_ellipti_387acb4a_m185500_m34285: + component: grating_coupler_elliptical + info: + period: 0.579 + polarization: te + wavelength: 1.31 + settings: + cross_section: xs_so + grating_line_width: 0.25 + wavelength: 1.31 + grating_coupler_ellipti_387acb4a_m58500_m41185: + component: grating_coupler_elliptical + info: + period: 0.579 + polarization: te + wavelength: 1.31 + settings: + cross_section: xs_so + grating_line_width: 0.25 + wavelength: 1.31 + straight_L0p5_N2_CSxs_so_W0p4_16000_m5250: + component: straight + info: + length: 0.5 + route_info_length: 0.5 + route_info_type: xs_so + route_info_weight: 0.5 + route_info_xs_so_length: 0.5 + width: 0.4 + settings: + cross_section: xs_so + length: 0.5 + npoints: 2 + width: 0.4 + straight_L0p5_N2_CSxs_so_W0p4_m6000_m5250: + component: straight + info: + length: 0.5 + route_info_length: 0.5 + route_info_type: xs_so + route_info_weight: 0.5 + route_info_xs_so_length: 0.5 + width: 0.4 + settings: + cross_section: xs_so + length: 0.5 + npoints: 2 + width: 0.4 + straight_L10_WNone_CSxs_so_5000_0: + component: straight + info: + length: 10 + route_info_length: 10 + route_info_type: xs_so + route_info_weight: 10 + route_info_xs_so_length: 10 + width: 0.4 + settings: + cross_section: xs_so + length: 10 + straight_L1_N2_CSxs_so_W0p4_10500_0: + component: straight + info: + length: 1 + route_info_length: 1 + route_info_type: xs_so + route_info_weight: 1 + route_info_xs_so_length: 1 + width: 0.4 + settings: + cross_section: xs_so + length: 1 + npoints: 2 + width: 0.4 + straight_L1_N2_CSxs_so_W0p4_m500_0: + component: straight + info: + length: 1 + route_info_length: 1 + route_info_type: xs_so + route_info_weight: 1 + route_info_xs_so_length: 1 + width: 0.4 + settings: + cross_section: xs_so + length: 1 + npoints: 2 + width: 0.4 + straight_L1p2_N2_CSxs_so_W0p4_68500_m22300: + component: straight + info: + length: 1.2 + route_info_length: 1.2 + route_info_type: xs_so + route_info_weight: 1.2 + route_info_xs_so_length: 1.2 + width: 0.4 + settings: + cross_section: xs_so + length: 1.2 + npoints: 2 + width: 0.4 + straight_L1p2_N2_CSxs_so_W0p4_m58500_m22300: + component: straight + info: + length: 1.2 + route_info_length: 1.2 + route_info_type: xs_so + route_info_weight: 1.2 + route_info_xs_so_length: 1.2 + width: 0.4 + settings: + cross_section: xs_so + length: 1.2 + npoints: 2 + width: 0.4 + straight_L351_N2_CSxs_so_W0p4_5000_m62570: + component: straight + info: + length: 351 + route_info_length: 351 + route_info_type: xs_so + route_info_weight: 351 + route_info_xs_so_length: 351 + width: 0.4 + settings: + cross_section: xs_so + length: 351 + npoints: 2 + width: 0.4 + straight_L41p57_N2_CSxs_so_W0p4_185500_m36785: + component: straight + info: + length: 41.57 + route_info_length: 41.57 + route_info_type: xs_so + route_info_weight: 41.57 + route_info_xs_so_length: 41.57 + width: 0.4 + settings: + cross_section: xs_so + length: 41.57 + npoints: 2 + width: 0.4 + straight_L41p57_N2_CSxs_so_W0p4_m175500_m36785: + component: straight + info: + length: 41.57 + route_info_length: 41.57 + route_info_type: xs_so + route_info_weight: 41.57 + route_info_xs_so_length: 41.57 + width: 0.4 + settings: + cross_section: xs_so + length: 41.57 + npoints: 2 + width: 0.4 + straight_L42p5_N2_CSxs_so_W0p4_42250_m16700: + component: straight + info: + length: 42.5 + route_info_length: 42.5 + route_info_type: xs_so + route_info_weight: 42.5 + route_info_xs_so_length: 42.5 + width: 0.4 + settings: + cross_section: xs_so + length: 42.5 + npoints: 2 + width: 0.4 + straight_L42p5_N2_CSxs_so_W0p4_m32250_m16700: + component: straight + info: + length: 42.5 + route_info_length: 42.5 + route_info_type: xs_so + route_info_weight: 42.5 + route_info_xs_so_length: 42.5 + width: 0.4 + settings: + cross_section: xs_so + length: 42.5 + npoints: 2 + width: 0.4 + straight_L6p2_N2_CSxs_so_W0p4_16000_m8600: + component: straight + info: + length: 6.2 + route_info_length: 6.2 + route_info_type: xs_so + route_info_weight: 6.2 + route_info_xs_so_length: 6.2 + width: 0.4 + settings: + cross_section: xs_so + length: 6.2 + npoints: 2 + width: 0.4 + straight_L6p2_N2_CSxs_so_W0p4_m6000_m8600: + component: straight + info: + length: 6.2 + route_info_length: 6.2 + route_info_type: xs_so + route_info_weight: 6.2 + route_info_xs_so_length: 6.2 + width: 0.4 + settings: + cross_section: xs_so + length: 6.2 + npoints: 2 + width: 0.4 +name: Unnamed_125 +nets: +- p1: bend_euler_RNone_A90_P0_c66059ab_13600_m2400,o1 + p2: straight_L1_N2_CSxs_so_W0p4_10500_0,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_13600_m2400,o2 + p2: straight_L0p5_N2_CSxs_so_W0p4_16000_m5250,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_183100_m60170,o1 + p2: straight_L41p57_N2_CSxs_so_W0p4_185500_m36785,o2 +- p1: bend_euler_RNone_A90_P0_c66059ab_183100_m60170,o2 + p2: straight_L351_N2_CSxs_so_W0p4_5000_m62570,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_18400_m14300,o1 + p2: straight_L6p2_N2_CSxs_so_W0p4_16000_m8600,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_18400_m14300,o2 + p2: straight_L42p5_N2_CSxs_so_W0p4_42250_m16700,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_187900_m13400,o1 + p2: bend_euler_RNone_A90_P0_c66059ab_193100_m13400,o2 +- p1: bend_euler_RNone_A90_P0_c66059ab_187900_m13400,o2 + p2: straight_L41p57_N2_CSxs_so_W0p4_185500_m36785,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_193100_m13400,o1 + p2: grating_coupler_ellipti_387acb4a_195500_m34285,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_66100_m19100,o1 + p2: straight_L42p5_N2_CSxs_so_W0p4_42250_m16700,o2 +- p1: bend_euler_RNone_A90_P0_c66059ab_66100_m19100,o2 + p2: straight_L1p2_N2_CSxs_so_W0p4_68500_m22300,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_m173100_m60170,o1 + p2: straight_L351_N2_CSxs_so_W0p4_5000_m62570,o2 +- p1: bend_euler_RNone_A90_P0_c66059ab_m173100_m60170,o2 + p2: straight_L41p57_N2_CSxs_so_W0p4_m175500_m36785,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_m177900_m13400,o1 + p2: straight_L41p57_N2_CSxs_so_W0p4_m175500_m36785,o2 +- p1: bend_euler_RNone_A90_P0_c66059ab_m177900_m13400,o2 + p2: bend_euler_RNone_A90_P0_c66059ab_m183100_m13400,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_m183100_m13400,o2 + p2: grating_coupler_ellipti_387acb4a_m185500_m34285,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_m3600_m2400,o1 + p2: straight_L1_N2_CSxs_so_W0p4_m500_0,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_m3600_m2400,o2 + p2: straight_L0p5_N2_CSxs_so_W0p4_m6000_m5250,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_m56100_m19100,o1 + p2: straight_L42p5_N2_CSxs_so_W0p4_m32250_m16700,o2 +- p1: bend_euler_RNone_A90_P0_c66059ab_m56100_m19100,o2 + p2: straight_L1p2_N2_CSxs_so_W0p4_m58500_m22300,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_m8400_m14300,o1 + p2: straight_L6p2_N2_CSxs_so_W0p4_m6000_m8600,o1 +- p1: bend_euler_RNone_A90_P0_c66059ab_m8400_m14300,o2 + p2: straight_L42p5_N2_CSxs_so_W0p4_m32250_m16700,o1 +- p1: grating_coupler_ellipti_387acb4a_68500_m41185,o1 + p2: straight_L1p2_N2_CSxs_so_W0p4_68500_m22300,o2 +- p1: grating_coupler_ellipti_387acb4a_m58500_m41185,o1 + p2: straight_L1p2_N2_CSxs_so_W0p4_m58500_m22300,o2 +- p1: straight_L0p5_N2_CSxs_so_W0p4_16000_m5250,o2 + p2: straight_L6p2_N2_CSxs_so_W0p4_16000_m8600,o2 +- p1: straight_L0p5_N2_CSxs_so_W0p4_m6000_m5250,o2 + p2: straight_L6p2_N2_CSxs_so_W0p4_m6000_m8600,o2 +- p1: straight_L10_WNone_CSxs_so_5000_0,o1 + p2: straight_L1_N2_CSxs_so_W0p4_m500_0,o2 +- p1: straight_L10_WNone_CSxs_so_5000_0,o2 + p2: straight_L1_N2_CSxs_so_W0p4_10500_0,o2 +placements: + bend_euler_RNone_A90_P0_c66059ab_13600_m2400: + mirror: true + rotation: 0 + x: 11 + y: 0 + bend_euler_RNone_A90_P0_c66059ab_183100_m60170: + mirror: true + rotation: 270 + x: 185.5 + y: -57.57 + bend_euler_RNone_A90_P0_c66059ab_18400_m14300: + mirror: false + rotation: 270 + x: 16 + y: -11.7 + bend_euler_RNone_A90_P0_c66059ab_187900_m13400: + mirror: false + rotation: 180 + x: 190.5 + y: -11 + bend_euler_RNone_A90_P0_c66059ab_193100_m13400: + mirror: false + rotation: 90 + x: 195.5 + y: -16 + bend_euler_RNone_A90_P0_c66059ab_66100_m19100: + mirror: true + rotation: 0 + x: 63.5 + y: -16.7 + bend_euler_RNone_A90_P0_c66059ab_m173100_m60170: + mirror: true + rotation: 180 + x: -170.5 + y: -62.57 + bend_euler_RNone_A90_P0_c66059ab_m177900_m13400: + mirror: false + rotation: 90 + x: -175.5 + y: -16 + bend_euler_RNone_A90_P0_c66059ab_m183100_m13400: + mirror: false + rotation: 180 + x: -180.5 + y: -11 + bend_euler_RNone_A90_P0_c66059ab_m3600_m2400: + mirror: false + rotation: 180 + x: -1 + y: 0 + bend_euler_RNone_A90_P0_c66059ab_m56100_m19100: + mirror: false + rotation: 180 + x: -53.5 + y: -16.7 + bend_euler_RNone_A90_P0_c66059ab_m8400_m14300: + mirror: true + rotation: 270 + x: -6 + y: -11.7 + grating_coupler_ellipti_387acb4a_195500_m34285: + mirror: false + rotation: 270 + x: 195.5 + y: -17.4 + grating_coupler_ellipti_387acb4a_68500_m41185: + mirror: false + rotation: 270 + x: 68.5 + y: -24.3 + grating_coupler_ellipti_387acb4a_m185500_m34285: + mirror: false + rotation: 270 + x: -185.5 + y: -17.4 + grating_coupler_ellipti_387acb4a_m58500_m41185: + mirror: false + rotation: 270 + x: -58.5 + y: -24.3 + straight_L0p5_N2_CSxs_so_W0p4_16000_m5250: + mirror: false + rotation: 270 + x: 16 + y: -5 + straight_L0p5_N2_CSxs_so_W0p4_m6000_m5250: + mirror: false + rotation: 270 + x: -6 + y: -5 + straight_L10_WNone_CSxs_so_5000_0: + mirror: false + rotation: 0 + x: 0 + y: 0 + straight_L1_N2_CSxs_so_W0p4_10500_0: + mirror: false + rotation: 180 + x: 11 + y: 0 + straight_L1_N2_CSxs_so_W0p4_m500_0: + mirror: false + rotation: 0 + x: -1 + y: 0 + straight_L1p2_N2_CSxs_so_W0p4_68500_m22300: + mirror: false + rotation: 270 + x: 68.5 + y: -21.7 + straight_L1p2_N2_CSxs_so_W0p4_m58500_m22300: + mirror: false + rotation: 270 + x: -58.5 + y: -21.7 + straight_L351_N2_CSxs_so_W0p4_5000_m62570: + mirror: false + rotation: 180 + x: 180.5 + y: -62.57 + straight_L41p57_N2_CSxs_so_W0p4_185500_m36785: + mirror: false + rotation: 270 + x: 185.5 + y: -16 + straight_L41p57_N2_CSxs_so_W0p4_m175500_m36785: + mirror: false + rotation: 90 + x: -175.5 + y: -57.57 + straight_L42p5_N2_CSxs_so_W0p4_42250_m16700: + mirror: false + rotation: 0 + x: 21 + y: -16.7 + straight_L42p5_N2_CSxs_so_W0p4_m32250_m16700: + mirror: false + rotation: 180 + x: -11 + y: -16.7 + straight_L6p2_N2_CSxs_so_W0p4_16000_m8600: + mirror: false + rotation: 90 + x: 16 + y: -11.7 + straight_L6p2_N2_CSxs_so_W0p4_m6000_m8600: + mirror: false + rotation: 90 + x: -6 + y: -11.7 +ports: + loopback1: grating_coupler_ellipti_387acb4a_m185500_m34285,o2 + loopback2: grating_coupler_ellipti_387acb4a_195500_m34285,o2 + v1: grating_coupler_ellipti_387acb4a_m58500_m41185,o2 + v2: grating_coupler_ellipti_387acb4a_68500_m41185,o2 diff --git a/tests/test_netlists_si220/test_netlists_add_fiber_single_sc_.yml b/tests/test_netlists_si220/test_netlists_add_fiber_single_sc_.yml new file mode 100644 index 0000000..94b83be --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_add_fiber_single_sc_.yml @@ -0,0 +1,127 @@ +instances: + grating_coupler_ellipti_5cf72084_0_m53833: + component: grating_coupler_elliptical + info: + period: 0.685 + polarization: te + wavelength: 1.55 + settings: + cross_section: xs_sc + grating_line_width: 0.315 + wavelength: 1.55 + grating_coupler_ellipti_5cf72084_141258_43833: + component: grating_coupler_elliptical + info: + period: 0.685 + polarization: te + wavelength: 1.55 + settings: + cross_section: xs_sc + grating_line_width: 0.315 + wavelength: 1.55 + grating_coupler_ellipti_5cf72084_141258_m53833: + component: grating_coupler_elliptical + info: + period: 0.685 + polarization: te + wavelength: 1.55 + settings: + cross_section: xs_sc + grating_line_width: 0.315 + wavelength: 1.55 + straight_L10_WNone_CSxs_sc_fiber_single_0_26854: + component: null + info: {} + settings: {} + straight_L23p9580000000_ea61afeb_0_m21979: + component: straight + info: + length: 23.958 + route_info_length: 23.958 + route_info_type: xs_sc + route_info_weight: 23.958 + route_info_xs_sc_length: 23.958 + width: 0.45 + settings: + cross_section: xs_sc + length: 23.958 + npoints: 2 + width: 0.45 + straight_L57p916_N2_CSxs_sc_141258_m5000: + component: straight + info: + length: 57.916 + route_info_length: 57.916 + route_info_type: xs_sc + route_info_weight: 57.916 + route_info_xs_sc_length: 57.916 + width: 0.45 + settings: + cross_section: xs_sc + length: 57.916 + npoints: 2 +name: Unnamed_110 +nets: +- p1: grating_coupler_ellipti_5cf72084_0_m53833,o1 + p2: straight_L23p9580000000_ea61afeb_0_m21979,o1 +- p1: straight_L10_WNone_CSxs_sc_fiber_single_0_26854,o2 + p2: straight_L23p9580000000_ea61afeb_0_m21979,o2 +placements: + grating_coupler_ellipti_5cf72084_0_m53833: + mirror: false + rotation: 270 + x: 0 + y: -32.675 + grating_coupler_ellipti_5cf72084_141258_43833: + mirror: false + rotation: 90 + x: 141.258 + y: 22.675 + grating_coupler_ellipti_5cf72084_141258_m53833: + mirror: false + rotation: 270 + x: 141.258 + y: -32.675 + straight_L10_WNone_CSxs_sc_fiber_single_0_26854: + mirror: false + rotation: 180 + x: 0 + y: 0 + straight_L23p9580000000_ea61afeb_0_m21979: + mirror: false + rotation: 90 + x: 0 + y: -33.958 + straight_L57p916_N2_CSxs_sc_141258_m5000: + mirror: false + rotation: 90 + x: 141.258 + y: -33.958 +ports: {} +warnings: + optical: + multiple_connections: + - - straight_L57p916_N2_CSxs_sc_141258_m5000,o1 + - grating_coupler_ellipti_5cf72084_141258_m53833,o1 + - vl1 + - - straight_L57p916_N2_CSxs_sc_141258_m5000,o2 + - grating_coupler_ellipti_5cf72084_141258_43833,o1 + - vl2 + vertical_te: + multiple_connections: + - - straight_L10_WNone_CSxs_sc_fiber_single_0_26854,v1 + - v1 + - v1 + unconnected_ports: + - message: 3 unconnected vertical_te ports! + ports: + - grating_coupler_ellipti_5cf72084_0_m53833,o2 + - grating_coupler_ellipti_5cf72084_141258_m53833,o2 + - grating_coupler_ellipti_5cf72084_141258_43833,o2 + values: + - - 0 + - -58950 + - - 141258 + - -58950 + - - 141258 + - 48950 diff --git a/tests/test_netlists_si220/test_netlists_add_fiber_single_so_.yml b/tests/test_netlists_si220/test_netlists_add_fiber_single_so_.yml new file mode 100644 index 0000000..961bc5a --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_add_fiber_single_so_.yml @@ -0,0 +1,127 @@ +instances: + grating_coupler_ellipti_387acb4a_0_m49485: + component: grating_coupler_elliptical + info: + period: 0.579 + polarization: te + wavelength: 1.31 + settings: + cross_section: xs_so + grating_line_width: 0.25 + wavelength: 1.31 + grating_coupler_ellipti_387acb4a_135370_39485: + component: grating_coupler_elliptical + info: + period: 0.579 + polarization: te + wavelength: 1.31 + settings: + cross_section: xs_so + grating_line_width: 0.25 + wavelength: 1.31 + grating_coupler_ellipti_387acb4a_135370_m49485: + component: grating_coupler_elliptical + info: + period: 0.579 + polarization: te + wavelength: 1.31 + settings: + cross_section: xs_so + grating_line_width: 0.25 + wavelength: 1.31 + straight_L10_WNone_CSxs_so_fiber_single_0_23885: + component: null + info: {} + settings: {} + straight_L21p2_N2_CSxs_so_W0p4_0_m20600: + component: straight + info: + length: 21.2 + route_info_length: 21.2 + route_info_type: xs_so + route_info_weight: 21.2 + route_info_xs_so_length: 21.2 + width: 0.4 + settings: + cross_section: xs_so + length: 21.2 + npoints: 2 + width: 0.4 + straight_L52p3999999999_9f7e528a_135370_m5000: + component: straight + info: + length: 52.4 + route_info_length: 52.4 + route_info_type: xs_so + route_info_weight: 52.4 + route_info_xs_so_length: 52.4 + width: 0.4 + settings: + cross_section: xs_so + length: 52.4 + npoints: 2 +name: Unnamed_119 +nets: +- p1: grating_coupler_ellipti_387acb4a_0_m49485,o1 + p2: straight_L21p2_N2_CSxs_so_W0p4_0_m20600,o1 +- p1: straight_L10_WNone_CSxs_so_fiber_single_0_23885,o2 + p2: straight_L21p2_N2_CSxs_so_W0p4_0_m20600,o2 +placements: + grating_coupler_ellipti_387acb4a_0_m49485: + mirror: false + rotation: 270 + x: 0 + y: -32.6 + grating_coupler_ellipti_387acb4a_135370_39485: + mirror: false + rotation: 90 + x: 135.37 + y: 22.6 + grating_coupler_ellipti_387acb4a_135370_m49485: + mirror: false + rotation: 270 + x: 135.37 + y: -32.6 + straight_L10_WNone_CSxs_so_fiber_single_0_23885: + mirror: false + rotation: 180 + x: 0 + y: 0 + straight_L21p2_N2_CSxs_so_W0p4_0_m20600: + mirror: false + rotation: 90 + x: 0 + y: -31.2 + straight_L52p3999999999_9f7e528a_135370_m5000: + mirror: false + rotation: 90 + x: 135.37 + y: -31.2 +ports: {} +warnings: + optical: + multiple_connections: + - - straight_L52p3999999999_9f7e528a_135370_m5000,o1 + - grating_coupler_ellipti_387acb4a_135370_m49485,o1 + - vl1 + - - straight_L52p3999999999_9f7e528a_135370_m5000,o2 + - grating_coupler_ellipti_387acb4a_135370_39485,o1 + - vl2 + vertical_te: + multiple_connections: + - - straight_L10_WNone_CSxs_so_fiber_single_0_23885,v1 + - v1 + - v1 + unconnected_ports: + - message: 3 unconnected vertical_te ports! + ports: + - grating_coupler_ellipti_387acb4a_0_m49485,o2 + - grating_coupler_ellipti_387acb4a_135370_m49485,o2 + - grating_coupler_ellipti_387acb4a_135370_39485,o2 + values: + - - 0 + - -57285 + - - 135370 + - -57285 + - - 135370 + - 47285 diff --git a/tests/test_netlists_si220/test_netlists_bend_euler_rc_.yml b/tests/test_netlists_si220/test_netlists_bend_euler_rc_.yml new file mode 100644 index 0000000..29f6fb8 --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_bend_euler_rc_.yml @@ -0,0 +1,5 @@ +instances: {} +name: bend_euler_sc_RNone_A90_323c7861 +nets: [] +placements: {} +ports: {} diff --git a/tests/test_netlists_si220/test_netlists_bend_euler_ro_.yml b/tests/test_netlists_si220/test_netlists_bend_euler_ro_.yml new file mode 100644 index 0000000..32a0402 --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_bend_euler_ro_.yml @@ -0,0 +1,5 @@ +instances: {} +name: bend_euler_sc_RNone_A90_a1dd07b8 +nets: [] +placements: {} +ports: {} diff --git a/tests/test_netlists_si220/test_netlists_bend_euler_sc_.yml b/tests/test_netlists_si220/test_netlists_bend_euler_sc_.yml new file mode 100644 index 0000000..c42dd99 --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_bend_euler_sc_.yml @@ -0,0 +1,5 @@ +instances: {} +name: bend_euler_sc_RNone_A90_3aec9813 +nets: [] +placements: {} +ports: {} diff --git a/tests/test_netlists_si220/test_netlists_bend_euler_so_.yml b/tests/test_netlists_si220/test_netlists_bend_euler_so_.yml new file mode 100644 index 0000000..1d0d69b --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_bend_euler_so_.yml @@ -0,0 +1,5 @@ +instances: {} +name: bend_euler_sc_RNone_A90_b1011900 +nets: [] +placements: {} +ports: {} diff --git a/tests/test_netlists_si220/test_netlists_bend_metal_.yml b/tests/test_netlists_si220/test_netlists_bend_metal_.yml index 3534c43..f44e77d 100644 --- a/tests/test_netlists_si220/test_netlists_bend_metal_.yml +++ b/tests/test_netlists_si220/test_netlists_bend_metal_.yml @@ -1,5 +1,5 @@ instances: {} -name: bend_euler_RNone_A90_P0_3e16ea58 +name: bend_euler_sc_RNone_A90_61017d47 nets: [] placements: {} ports: {} diff --git a/tests/test_netlists_si220/test_netlists_coupler_ring_.yml b/tests/test_netlists_si220/test_netlists_coupler_ring_.yml new file mode 100644 index 0000000..2188ea8 --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_coupler_ring_.yml @@ -0,0 +1,5 @@ +instances: {} +name: coupler_ring_G0p2_R5_LX_98be2a52 +nets: [] +placements: {} +ports: {} diff --git a/tests/test_netlists_si220/test_netlists_coupler_ring_sc_.yml b/tests/test_netlists_si220/test_netlists_coupler_ring_sc_.yml new file mode 100644 index 0000000..a864c73 --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_coupler_ring_sc_.yml @@ -0,0 +1,5 @@ +instances: {} +name: coupler_ring_sc_G0p2_R5_908c8ce4 +nets: [] +placements: {} +ports: {} diff --git a/tests/test_netlists_si220/test_netlists_coupler_ring_so_.yml b/tests/test_netlists_si220/test_netlists_coupler_ring_so_.yml new file mode 100644 index 0000000..4135f88 --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_coupler_ring_so_.yml @@ -0,0 +1,5 @@ +instances: {} +name: coupler_ring_sc_G0p2_R5_a0a9c63e +nets: [] +placements: {} +ports: {} diff --git a/tests/test_netlists_si220/test_netlists_mzi_.yml b/tests/test_netlists_si220/test_netlists_mzi_.yml index 560e7db..f8c5c29 100644 --- a/tests/test_netlists_si220/test_netlists_mzi_.yml +++ b/tests/test_netlists_si220/test_netlists_mzi_.yml @@ -1,6 +1,6 @@ instances: - bend_euler_RNone_A90_P0_7c94df4d_54412_3957: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_54412_3957: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -16,8 +16,8 @@ instances: angle: 90 cross_section: xs_sc p: 0.5 - bend_euler_RNone_A90_P0_7c94df4d_54412_m3958: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_54412_m3958: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -33,8 +33,8 @@ instances: angle: 90 cross_section: xs_sc p: 0.5 - bend_euler_RNone_A90_P0_7c94df4d_59187_10182: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_59187_10182: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -50,8 +50,8 @@ instances: angle: 90 cross_section: xs_sc p: 0.5 - bend_euler_RNone_A90_P0_7c94df4d_59187_m15183: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_59187_m15183: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -67,8 +67,8 @@ instances: angle: 90 cross_section: xs_sc p: 0.5 - bend_euler_RNone_A90_P0_7c94df4d_64512_10182: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_64512_10182: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -84,8 +84,8 @@ instances: angle: 90 cross_section: xs_sc p: 0.5 - bend_euler_RNone_A90_P0_7c94df4d_64512_m15183: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_64512_m15183: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -101,8 +101,8 @@ instances: angle: 90 cross_section: xs_sc p: 0.5 - bend_euler_RNone_A90_P0_7c94df4d_69287_3387: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_69287_3387: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -118,8 +118,8 @@ instances: angle: 90 cross_section: xs_sc p: 0.5 - bend_euler_RNone_A90_P0_7c94df4d_69287_m3388: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_69287_m3388: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -227,77 +227,77 @@ instances: settings: cross_section: xs_sc length: 1 -name: mzi_DL10_Bbend_sc_Sstra_2b181802 +name: mzi_DL10_Bbend_euler_sc_1d19725f nets: -- p1: bend_euler_RNone_A90_P0_7c94df4d_54412_3957,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_54412_3957,o1 p2: cp1,o2 -- p1: bend_euler_RNone_A90_P0_7c94df4d_54412_3957,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_54412_3957,o2 p2: sytl,o1 -- p1: bend_euler_RNone_A90_P0_7c94df4d_54412_m3958,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_54412_m3958,o1 p2: cp1,o3 -- p1: bend_euler_RNone_A90_P0_7c94df4d_54412_m3958,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_54412_m3958,o2 p2: syl,o1 -- p1: bend_euler_RNone_A90_P0_7c94df4d_59187_10182,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_59187_10182,o1 p2: sxt,o1 -- p1: bend_euler_RNone_A90_P0_7c94df4d_59187_10182,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_59187_10182,o2 p2: sytl,o2 -- p1: bend_euler_RNone_A90_P0_7c94df4d_59187_m15183,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_59187_m15183,o1 p2: syl,o2 -- p1: bend_euler_RNone_A90_P0_7c94df4d_59187_m15183,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_59187_m15183,o2 p2: sxb,o1 -- p1: bend_euler_RNone_A90_P0_7c94df4d_64512_10182,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_64512_10182,o1 p2: straight_L1p57_WNone_CSxs_sc_66900_6785,o2 -- p1: bend_euler_RNone_A90_P0_7c94df4d_64512_10182,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_64512_10182,o2 p2: sxt,o2 -- p1: bend_euler_RNone_A90_P0_7c94df4d_64512_m15183,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_64512_m15183,o1 p2: sxb,o2 -- p1: bend_euler_RNone_A90_P0_7c94df4d_64512_m15183,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_64512_m15183,o2 p2: straight_L6p57_WNone_CSxs_sc_66900_m9285,o1 -- p1: bend_euler_RNone_A90_P0_7c94df4d_69287_3387,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_69287_3387,o1 p2: straight_L1p57_WNone_CSxs_sc_66900_6785,o1 -- p1: bend_euler_RNone_A90_P0_7c94df4d_69287_3387,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_69287_3387,o2 p2: cp2,o3 -- p1: bend_euler_RNone_A90_P0_7c94df4d_69287_m3388,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_69287_m3388,o1 p2: cp2,o4 -- p1: bend_euler_RNone_A90_P0_7c94df4d_69287_m3388,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_69287_m3388,o2 p2: straight_L6p57_WNone_CSxs_sc_66900_m9285,o2 placements: - bend_euler_RNone_A90_P0_7c94df4d_54412_3957: + bend_euler_sc_RNone_A90_3aec9813_54412_3957: mirror: false rotation: 0 x: 51.8 y: 1.57 - bend_euler_RNone_A90_P0_7c94df4d_54412_m3958: + bend_euler_sc_RNone_A90_3aec9813_54412_m3958: mirror: true rotation: 0 x: 51.8 y: -1.57 - bend_euler_RNone_A90_P0_7c94df4d_59187_10182: + bend_euler_sc_RNone_A90_3aec9813_59187_10182: mirror: false rotation: 180 x: 61.8 y: 12.57 - bend_euler_RNone_A90_P0_7c94df4d_59187_m15183: + bend_euler_sc_RNone_A90_3aec9813_59187_m15183: mirror: false rotation: 270 x: 56.8 y: -12.57 - bend_euler_RNone_A90_P0_7c94df4d_64512_10182: + bend_euler_sc_RNone_A90_3aec9813_64512_10182: mirror: false rotation: 90 x: 66.9 y: 7.57 - bend_euler_RNone_A90_P0_7c94df4d_64512_m15183: + bend_euler_sc_RNone_A90_3aec9813_64512_m15183: mirror: false rotation: 0 x: 61.9 y: -17.57 - bend_euler_RNone_A90_P0_7c94df4d_69287_3387: + bend_euler_sc_RNone_A90_3aec9813_69287_3387: mirror: false rotation: 270 x: 66.9 y: 6 - bend_euler_RNone_A90_P0_7c94df4d_69287_m3388: + bend_euler_sc_RNone_A90_3aec9813_69287_m3388: mirror: false rotation: 180 x: 71.9 diff --git a/tests/test_netlists_si220/test_netlists_mzi_rc_.yml b/tests/test_netlists_si220/test_netlists_mzi_rc_.yml index f8bc040..fef2855 100644 --- a/tests/test_netlists_si220/test_netlists_mzi_rc_.yml +++ b/tests/test_netlists_si220/test_netlists_mzi_rc_.yml @@ -1,6 +1,6 @@ instances: - bend_euler_RNone_A90_P0_ddb8ac70_115412_m47683: - component: bend_euler + bend_euler_sc_RNone_A90_323c7861_115412_m47683: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -16,8 +16,8 @@ instances: angle: 90 cross_section: xs_rc p: 0.5 - bend_euler_RNone_A90_P0_ddb8ac70_117912_40182: - component: bend_euler + bend_euler_sc_RNone_A90_323c7861_117912_40182: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -33,8 +33,8 @@ instances: angle: 90 cross_section: xs_rc p: 0.5 - bend_euler_RNone_A90_P0_ddb8ac70_137687_13402: - component: bend_euler + bend_euler_sc_RNone_A90_323c7861_137687_13402: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -50,8 +50,8 @@ instances: angle: 90 cross_section: xs_rc p: 0.5 - bend_euler_RNone_A90_P0_ddb8ac70_140187_m10903: - component: bend_euler + bend_euler_sc_RNone_A90_323c7861_140187_m10903: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -67,8 +67,8 @@ instances: angle: 90 cross_section: xs_rc p: 0.5 - bend_euler_RNone_A90_P0_ddb8ac70_65312_11457: - component: bend_euler + bend_euler_sc_RNone_A90_323c7861_65312_11457: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -84,8 +84,8 @@ instances: angle: 90 cross_section: xs_rc p: 0.5 - bend_euler_RNone_A90_P0_ddb8ac70_65312_m11458: - component: bend_euler + bend_euler_sc_RNone_A90_323c7861_65312_m11458: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -101,8 +101,8 @@ instances: angle: 90 cross_section: xs_rc p: 0.5 - bend_euler_RNone_A90_P0_ddb8ac70_87587_m45183: - component: bend_euler + bend_euler_sc_RNone_A90_323c7861_87587_m45183: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -118,8 +118,8 @@ instances: angle: 90 cross_section: xs_rc p: 0.5 - bend_euler_RNone_A90_P0_ddb8ac70_90087_42682: - component: bend_euler + bend_euler_sc_RNone_A90_323c7861_90087_42682: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -227,77 +227,77 @@ instances: settings: cross_section: xs_rc length: 1 -name: mzi_DL10_Bbend_rc_Sstra_02ff743c +name: mzi_DL10_Bbend_euler_rc_de758620 nets: -- p1: bend_euler_RNone_A90_P0_ddb8ac70_115412_m47683,o1 +- p1: bend_euler_sc_RNone_A90_323c7861_115412_m47683,o1 p2: sxb,o2 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_115412_m47683,o2 +- p1: bend_euler_sc_RNone_A90_323c7861_115412_m47683,o2 p2: straight_L6p555_WNone_CSxs_rc_127800_m29293,o1 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_117912_40182,o1 +- p1: bend_euler_sc_RNone_A90_323c7861_117912_40182,o1 p2: straight_L1p555_WNone_CSxs_rc_127800_26792,o2 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_117912_40182,o2 +- p1: bend_euler_sc_RNone_A90_323c7861_117912_40182,o2 p2: sxt,o2 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_137687_13402,o1 +- p1: bend_euler_sc_RNone_A90_323c7861_137687_13402,o1 p2: straight_L1p555_WNone_CSxs_rc_127800_26792,o1 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_137687_13402,o2 +- p1: bend_euler_sc_RNone_A90_323c7861_137687_13402,o2 p2: cp2,o3 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_140187_m10903,o1 +- p1: bend_euler_sc_RNone_A90_323c7861_140187_m10903,o1 p2: cp2,o4 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_140187_m10903,o2 +- p1: bend_euler_sc_RNone_A90_323c7861_140187_m10903,o2 p2: straight_L6p555_WNone_CSxs_rc_127800_m29293,o2 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_65312_11457,o1 +- p1: bend_euler_sc_RNone_A90_323c7861_65312_11457,o1 p2: cp1,o2 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_65312_11457,o2 +- p1: bend_euler_sc_RNone_A90_323c7861_65312_11457,o2 p2: sytl,o1 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_65312_m11458,o1 +- p1: bend_euler_sc_RNone_A90_323c7861_65312_m11458,o1 p2: cp1,o3 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_65312_m11458,o2 +- p1: bend_euler_sc_RNone_A90_323c7861_65312_m11458,o2 p2: syl,o1 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_87587_m45183,o1 +- p1: bend_euler_sc_RNone_A90_323c7861_87587_m45183,o1 p2: syl,o2 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_87587_m45183,o2 +- p1: bend_euler_sc_RNone_A90_323c7861_87587_m45183,o2 p2: sxb,o1 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_90087_42682,o1 +- p1: bend_euler_sc_RNone_A90_323c7861_90087_42682,o1 p2: sxt,o1 -- p1: bend_euler_RNone_A90_P0_ddb8ac70_90087_42682,o2 +- p1: bend_euler_sc_RNone_A90_323c7861_90087_42682,o2 p2: sytl,o2 placements: - bend_euler_RNone_A90_P0_ddb8ac70_115412_m47683: + bend_euler_sc_RNone_A90_323c7861_115412_m47683: mirror: false rotation: 0 x: 102.8 y: -57.57 - bend_euler_RNone_A90_P0_ddb8ac70_117912_40182: + bend_euler_sc_RNone_A90_323c7861_117912_40182: mirror: false rotation: 90 x: 127.8 y: 27.57 - bend_euler_RNone_A90_P0_ddb8ac70_137687_13402: + bend_euler_sc_RNone_A90_323c7861_137687_13402: mirror: false rotation: 270 x: 127.8 y: 26.015 - bend_euler_RNone_A90_P0_ddb8ac70_140187_m10903: + bend_euler_sc_RNone_A90_323c7861_140187_m10903: mirror: false rotation: 180 x: 152.8 y: -1.015 - bend_euler_RNone_A90_P0_ddb8ac70_65312_11457: + bend_euler_sc_RNone_A90_323c7861_65312_11457: mirror: false rotation: 0 x: 52.7 y: 1.57 - bend_euler_RNone_A90_P0_ddb8ac70_65312_m11458: + bend_euler_sc_RNone_A90_323c7861_65312_m11458: mirror: true rotation: 0 x: 52.7 y: -1.57 - bend_euler_RNone_A90_P0_ddb8ac70_87587_m45183: + bend_euler_sc_RNone_A90_323c7861_87587_m45183: mirror: false rotation: 270 x: 77.7 y: -32.57 - bend_euler_RNone_A90_P0_ddb8ac70_90087_42682: + bend_euler_sc_RNone_A90_323c7861_90087_42682: mirror: false rotation: 180 x: 102.7 diff --git a/tests/test_netlists_si220/test_netlists_mzi_ro_.yml b/tests/test_netlists_si220/test_netlists_mzi_ro_.yml index 99a98d1..04c77fc 100644 --- a/tests/test_netlists_si220/test_netlists_mzi_ro_.yml +++ b/tests/test_netlists_si220/test_netlists_mzi_ro_.yml @@ -1,6 +1,6 @@ instances: - bend_euler_RNone_A90_P0_3e63eab5_123500_m47625: - component: bend_euler + bend_euler_sc_RNone_A90_a1dd07b8_123500_m47625: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -16,8 +16,8 @@ instances: angle: 90 cross_section: xs_ro p: 0.5 - bend_euler_RNone_A90_P0_3e63eab5_126000_40125: - component: bend_euler + bend_euler_sc_RNone_A90_a1dd07b8_126000_40125: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -33,8 +33,8 @@ instances: angle: 90 cross_section: xs_ro p: 0.5 - bend_euler_RNone_A90_P0_3e63eab5_145800_13415: - component: bend_euler + bend_euler_sc_RNone_A90_a1dd07b8_145800_13415: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -50,8 +50,8 @@ instances: angle: 90 cross_section: xs_ro p: 0.5 - bend_euler_RNone_A90_P0_3e63eab5_148300_m10915: - component: bend_euler + bend_euler_sc_RNone_A90_a1dd07b8_148300_m10915: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -67,8 +67,8 @@ instances: angle: 90 cross_section: xs_ro p: 0.5 - bend_euler_RNone_A90_P0_3e63eab5_73400_11425: - component: bend_euler + bend_euler_sc_RNone_A90_a1dd07b8_73400_11425: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -84,8 +84,8 @@ instances: angle: 90 cross_section: xs_ro p: 0.5 - bend_euler_RNone_A90_P0_3e63eab5_73400_m11425: - component: bend_euler + bend_euler_sc_RNone_A90_a1dd07b8_73400_m11425: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -101,8 +101,8 @@ instances: angle: 90 cross_section: xs_ro p: 0.5 - bend_euler_RNone_A90_P0_3e63eab5_95700_m45125: - component: bend_euler + bend_euler_sc_RNone_A90_a1dd07b8_95700_m45125: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -118,8 +118,8 @@ instances: angle: 90 cross_section: xs_ro p: 0.5 - bend_euler_RNone_A90_P0_3e63eab5_98200_42625: - component: bend_euler + bend_euler_sc_RNone_A90_a1dd07b8_98200_42625: + component: bend_euler_sc info: dy: 25 length: 41.592 @@ -227,77 +227,77 @@ instances: settings: cross_section: xs_ro length: 1 -name: mzi_DL10_Bbend_ro_Sstra_bf2966fd +name: mzi_DL10_Bbend_euler_ro_29a93d64 nets: -- p1: bend_euler_RNone_A90_P0_3e63eab5_123500_m47625,o1 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_123500_m47625,o1 p2: sxb,o2 -- p1: bend_euler_RNone_A90_P0_3e63eab5_123500_m47625,o2 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_123500_m47625,o2 p2: straight_L6p51_WNone_CSxs_ro_135900_m29270,o1 -- p1: bend_euler_RNone_A90_P0_3e63eab5_126000_40125,o1 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_126000_40125,o1 p2: straight_L1p51_WNone_CSxs_ro_135900_26770,o2 -- p1: bend_euler_RNone_A90_P0_3e63eab5_126000_40125,o2 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_126000_40125,o2 p2: sxt,o2 -- p1: bend_euler_RNone_A90_P0_3e63eab5_145800_13415,o1 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_145800_13415,o1 p2: straight_L1p51_WNone_CSxs_ro_135900_26770,o1 -- p1: bend_euler_RNone_A90_P0_3e63eab5_145800_13415,o2 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_145800_13415,o2 p2: cp2,o3 -- p1: bend_euler_RNone_A90_P0_3e63eab5_148300_m10915,o1 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_148300_m10915,o1 p2: cp2,o4 -- p1: bend_euler_RNone_A90_P0_3e63eab5_148300_m10915,o2 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_148300_m10915,o2 p2: straight_L6p51_WNone_CSxs_ro_135900_m29270,o2 -- p1: bend_euler_RNone_A90_P0_3e63eab5_73400_11425,o1 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_73400_11425,o1 p2: cp1,o2 -- p1: bend_euler_RNone_A90_P0_3e63eab5_73400_11425,o2 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_73400_11425,o2 p2: sytl,o1 -- p1: bend_euler_RNone_A90_P0_3e63eab5_73400_m11425,o1 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_73400_m11425,o1 p2: cp1,o3 -- p1: bend_euler_RNone_A90_P0_3e63eab5_73400_m11425,o2 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_73400_m11425,o2 p2: syl,o1 -- p1: bend_euler_RNone_A90_P0_3e63eab5_95700_m45125,o1 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_95700_m45125,o1 p2: syl,o2 -- p1: bend_euler_RNone_A90_P0_3e63eab5_95700_m45125,o2 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_95700_m45125,o2 p2: sxb,o1 -- p1: bend_euler_RNone_A90_P0_3e63eab5_98200_42625,o1 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_98200_42625,o1 p2: sxt,o1 -- p1: bend_euler_RNone_A90_P0_3e63eab5_98200_42625,o2 +- p1: bend_euler_sc_RNone_A90_a1dd07b8_98200_42625,o2 p2: sytl,o2 placements: - bend_euler_RNone_A90_P0_3e63eab5_123500_m47625: + bend_euler_sc_RNone_A90_a1dd07b8_123500_m47625: mirror: false rotation: 0 x: 110.9 y: -57.525 - bend_euler_RNone_A90_P0_3e63eab5_126000_40125: + bend_euler_sc_RNone_A90_a1dd07b8_126000_40125: mirror: false rotation: 90 x: 135.9 y: 27.525 - bend_euler_RNone_A90_P0_3e63eab5_145800_13415: + bend_euler_sc_RNone_A90_a1dd07b8_145800_13415: mirror: false rotation: 270 x: 135.9 y: 26.015 - bend_euler_RNone_A90_P0_3e63eab5_148300_m10915: + bend_euler_sc_RNone_A90_a1dd07b8_148300_m10915: mirror: false rotation: 180 x: 160.9 y: -1.015 - bend_euler_RNone_A90_P0_3e63eab5_73400_11425: + bend_euler_sc_RNone_A90_a1dd07b8_73400_11425: mirror: false rotation: 0 x: 60.8 y: 1.525 - bend_euler_RNone_A90_P0_3e63eab5_73400_m11425: + bend_euler_sc_RNone_A90_a1dd07b8_73400_m11425: mirror: true rotation: 0 x: 60.8 y: -1.525 - bend_euler_RNone_A90_P0_3e63eab5_95700_m45125: + bend_euler_sc_RNone_A90_a1dd07b8_95700_m45125: mirror: false rotation: 270 x: 85.8 y: -32.525 - bend_euler_RNone_A90_P0_3e63eab5_98200_42625: + bend_euler_sc_RNone_A90_a1dd07b8_98200_42625: mirror: false rotation: 180 x: 110.8 diff --git a/tests/test_netlists_si220/test_netlists_mzi_sc_.yml b/tests/test_netlists_si220/test_netlists_mzi_sc_.yml index 560e7db..f8c5c29 100644 --- a/tests/test_netlists_si220/test_netlists_mzi_sc_.yml +++ b/tests/test_netlists_si220/test_netlists_mzi_sc_.yml @@ -1,6 +1,6 @@ instances: - bend_euler_RNone_A90_P0_7c94df4d_54412_3957: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_54412_3957: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -16,8 +16,8 @@ instances: angle: 90 cross_section: xs_sc p: 0.5 - bend_euler_RNone_A90_P0_7c94df4d_54412_m3958: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_54412_m3958: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -33,8 +33,8 @@ instances: angle: 90 cross_section: xs_sc p: 0.5 - bend_euler_RNone_A90_P0_7c94df4d_59187_10182: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_59187_10182: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -50,8 +50,8 @@ instances: angle: 90 cross_section: xs_sc p: 0.5 - bend_euler_RNone_A90_P0_7c94df4d_59187_m15183: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_59187_m15183: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -67,8 +67,8 @@ instances: angle: 90 cross_section: xs_sc p: 0.5 - bend_euler_RNone_A90_P0_7c94df4d_64512_10182: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_64512_10182: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -84,8 +84,8 @@ instances: angle: 90 cross_section: xs_sc p: 0.5 - bend_euler_RNone_A90_P0_7c94df4d_64512_m15183: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_64512_m15183: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -101,8 +101,8 @@ instances: angle: 90 cross_section: xs_sc p: 0.5 - bend_euler_RNone_A90_P0_7c94df4d_69287_3387: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_69287_3387: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -118,8 +118,8 @@ instances: angle: 90 cross_section: xs_sc p: 0.5 - bend_euler_RNone_A90_P0_7c94df4d_69287_m3388: - component: bend_euler + bend_euler_sc_RNone_A90_3aec9813_69287_m3388: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -227,77 +227,77 @@ instances: settings: cross_section: xs_sc length: 1 -name: mzi_DL10_Bbend_sc_Sstra_2b181802 +name: mzi_DL10_Bbend_euler_sc_1d19725f nets: -- p1: bend_euler_RNone_A90_P0_7c94df4d_54412_3957,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_54412_3957,o1 p2: cp1,o2 -- p1: bend_euler_RNone_A90_P0_7c94df4d_54412_3957,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_54412_3957,o2 p2: sytl,o1 -- p1: bend_euler_RNone_A90_P0_7c94df4d_54412_m3958,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_54412_m3958,o1 p2: cp1,o3 -- p1: bend_euler_RNone_A90_P0_7c94df4d_54412_m3958,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_54412_m3958,o2 p2: syl,o1 -- p1: bend_euler_RNone_A90_P0_7c94df4d_59187_10182,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_59187_10182,o1 p2: sxt,o1 -- p1: bend_euler_RNone_A90_P0_7c94df4d_59187_10182,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_59187_10182,o2 p2: sytl,o2 -- p1: bend_euler_RNone_A90_P0_7c94df4d_59187_m15183,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_59187_m15183,o1 p2: syl,o2 -- p1: bend_euler_RNone_A90_P0_7c94df4d_59187_m15183,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_59187_m15183,o2 p2: sxb,o1 -- p1: bend_euler_RNone_A90_P0_7c94df4d_64512_10182,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_64512_10182,o1 p2: straight_L1p57_WNone_CSxs_sc_66900_6785,o2 -- p1: bend_euler_RNone_A90_P0_7c94df4d_64512_10182,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_64512_10182,o2 p2: sxt,o2 -- p1: bend_euler_RNone_A90_P0_7c94df4d_64512_m15183,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_64512_m15183,o1 p2: sxb,o2 -- p1: bend_euler_RNone_A90_P0_7c94df4d_64512_m15183,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_64512_m15183,o2 p2: straight_L6p57_WNone_CSxs_sc_66900_m9285,o1 -- p1: bend_euler_RNone_A90_P0_7c94df4d_69287_3387,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_69287_3387,o1 p2: straight_L1p57_WNone_CSxs_sc_66900_6785,o1 -- p1: bend_euler_RNone_A90_P0_7c94df4d_69287_3387,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_69287_3387,o2 p2: cp2,o3 -- p1: bend_euler_RNone_A90_P0_7c94df4d_69287_m3388,o1 +- p1: bend_euler_sc_RNone_A90_3aec9813_69287_m3388,o1 p2: cp2,o4 -- p1: bend_euler_RNone_A90_P0_7c94df4d_69287_m3388,o2 +- p1: bend_euler_sc_RNone_A90_3aec9813_69287_m3388,o2 p2: straight_L6p57_WNone_CSxs_sc_66900_m9285,o2 placements: - bend_euler_RNone_A90_P0_7c94df4d_54412_3957: + bend_euler_sc_RNone_A90_3aec9813_54412_3957: mirror: false rotation: 0 x: 51.8 y: 1.57 - bend_euler_RNone_A90_P0_7c94df4d_54412_m3958: + bend_euler_sc_RNone_A90_3aec9813_54412_m3958: mirror: true rotation: 0 x: 51.8 y: -1.57 - bend_euler_RNone_A90_P0_7c94df4d_59187_10182: + bend_euler_sc_RNone_A90_3aec9813_59187_10182: mirror: false rotation: 180 x: 61.8 y: 12.57 - bend_euler_RNone_A90_P0_7c94df4d_59187_m15183: + bend_euler_sc_RNone_A90_3aec9813_59187_m15183: mirror: false rotation: 270 x: 56.8 y: -12.57 - bend_euler_RNone_A90_P0_7c94df4d_64512_10182: + bend_euler_sc_RNone_A90_3aec9813_64512_10182: mirror: false rotation: 90 x: 66.9 y: 7.57 - bend_euler_RNone_A90_P0_7c94df4d_64512_m15183: + bend_euler_sc_RNone_A90_3aec9813_64512_m15183: mirror: false rotation: 0 x: 61.9 y: -17.57 - bend_euler_RNone_A90_P0_7c94df4d_69287_3387: + bend_euler_sc_RNone_A90_3aec9813_69287_3387: mirror: false rotation: 270 x: 66.9 y: 6 - bend_euler_RNone_A90_P0_7c94df4d_69287_m3388: + bend_euler_sc_RNone_A90_3aec9813_69287_m3388: mirror: false rotation: 180 x: 71.9 diff --git a/tests/test_netlists_si220/test_netlists_mzi_so_.yml b/tests/test_netlists_si220/test_netlists_mzi_so_.yml index 900b731..8b34af9 100644 --- a/tests/test_netlists_si220/test_netlists_mzi_so_.yml +++ b/tests/test_netlists_si220/test_netlists_mzi_so_.yml @@ -1,6 +1,6 @@ instances: - bend_euler_RNone_A90_P0_aec1b638_62700_3925: - component: bend_euler + bend_euler_sc_RNone_A90_b1011900_62700_3925: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -16,8 +16,8 @@ instances: angle: 90 cross_section: xs_so p: 0.5 - bend_euler_RNone_A90_P0_aec1b638_62700_m3925: - component: bend_euler + bend_euler_sc_RNone_A90_b1011900_62700_m3925: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -33,8 +33,8 @@ instances: angle: 90 cross_section: xs_so p: 0.5 - bend_euler_RNone_A90_P0_aec1b638_67500_10125: - component: bend_euler + bend_euler_sc_RNone_A90_b1011900_67500_10125: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -50,8 +50,8 @@ instances: angle: 90 cross_section: xs_so p: 0.5 - bend_euler_RNone_A90_P0_aec1b638_67500_m15125: - component: bend_euler + bend_euler_sc_RNone_A90_b1011900_67500_m15125: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -67,8 +67,8 @@ instances: angle: 90 cross_section: xs_so p: 0.5 - bend_euler_RNone_A90_P0_aec1b638_72800_10125: - component: bend_euler + bend_euler_sc_RNone_A90_b1011900_72800_10125: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -84,8 +84,8 @@ instances: angle: 90 cross_section: xs_so p: 0.5 - bend_euler_RNone_A90_P0_aec1b638_72800_m15125: - component: bend_euler + bend_euler_sc_RNone_A90_b1011900_72800_m15125: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -101,8 +101,8 @@ instances: angle: 90 cross_section: xs_so p: 0.5 - bend_euler_RNone_A90_P0_aec1b638_77600_3415: - component: bend_euler + bend_euler_sc_RNone_A90_b1011900_77600_3415: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -118,8 +118,8 @@ instances: angle: 90 cross_section: xs_so p: 0.5 - bend_euler_RNone_A90_P0_aec1b638_77600_m3415: - component: bend_euler + bend_euler_sc_RNone_A90_b1011900_77600_m3415: + component: bend_euler_sc info: dy: 5 length: 8.318 @@ -227,77 +227,77 @@ instances: settings: cross_section: xs_so length: 1 -name: mzi_DL10_Bbend_so_Sstra_d6395d3d +name: mzi_DL10_Bbend_euler_so_1dd08374 nets: -- p1: bend_euler_RNone_A90_P0_aec1b638_62700_3925,o1 +- p1: bend_euler_sc_RNone_A90_b1011900_62700_3925,o1 p2: cp1,o2 -- p1: bend_euler_RNone_A90_P0_aec1b638_62700_3925,o2 +- p1: bend_euler_sc_RNone_A90_b1011900_62700_3925,o2 p2: sytl,o1 -- p1: bend_euler_RNone_A90_P0_aec1b638_62700_m3925,o1 +- p1: bend_euler_sc_RNone_A90_b1011900_62700_m3925,o1 p2: cp1,o3 -- p1: bend_euler_RNone_A90_P0_aec1b638_62700_m3925,o2 +- p1: bend_euler_sc_RNone_A90_b1011900_62700_m3925,o2 p2: syl,o1 -- p1: bend_euler_RNone_A90_P0_aec1b638_67500_10125,o1 +- p1: bend_euler_sc_RNone_A90_b1011900_67500_10125,o1 p2: sxt,o1 -- p1: bend_euler_RNone_A90_P0_aec1b638_67500_10125,o2 +- p1: bend_euler_sc_RNone_A90_b1011900_67500_10125,o2 p2: sytl,o2 -- p1: bend_euler_RNone_A90_P0_aec1b638_67500_m15125,o1 +- p1: bend_euler_sc_RNone_A90_b1011900_67500_m15125,o1 p2: syl,o2 -- p1: bend_euler_RNone_A90_P0_aec1b638_67500_m15125,o2 +- p1: bend_euler_sc_RNone_A90_b1011900_67500_m15125,o2 p2: sxb,o1 -- p1: bend_euler_RNone_A90_P0_aec1b638_72800_10125,o1 +- p1: bend_euler_sc_RNone_A90_b1011900_72800_10125,o1 p2: straight_L1p51_WNone_CSxs_so_75200_6770,o2 -- p1: bend_euler_RNone_A90_P0_aec1b638_72800_10125,o2 +- p1: bend_euler_sc_RNone_A90_b1011900_72800_10125,o2 p2: sxt,o2 -- p1: bend_euler_RNone_A90_P0_aec1b638_72800_m15125,o1 +- p1: bend_euler_sc_RNone_A90_b1011900_72800_m15125,o1 p2: sxb,o2 -- p1: bend_euler_RNone_A90_P0_aec1b638_72800_m15125,o2 +- p1: bend_euler_sc_RNone_A90_b1011900_72800_m15125,o2 p2: straight_L6p51_WNone_CSxs_so_75200_m9270,o1 -- p1: bend_euler_RNone_A90_P0_aec1b638_77600_3415,o1 +- p1: bend_euler_sc_RNone_A90_b1011900_77600_3415,o1 p2: straight_L1p51_WNone_CSxs_so_75200_6770,o1 -- p1: bend_euler_RNone_A90_P0_aec1b638_77600_3415,o2 +- p1: bend_euler_sc_RNone_A90_b1011900_77600_3415,o2 p2: cp2,o3 -- p1: bend_euler_RNone_A90_P0_aec1b638_77600_m3415,o1 +- p1: bend_euler_sc_RNone_A90_b1011900_77600_m3415,o1 p2: cp2,o4 -- p1: bend_euler_RNone_A90_P0_aec1b638_77600_m3415,o2 +- p1: bend_euler_sc_RNone_A90_b1011900_77600_m3415,o2 p2: straight_L6p51_WNone_CSxs_so_75200_m9270,o2 placements: - bend_euler_RNone_A90_P0_aec1b638_62700_3925: + bend_euler_sc_RNone_A90_b1011900_62700_3925: mirror: false rotation: 0 x: 60.1 y: 1.525 - bend_euler_RNone_A90_P0_aec1b638_62700_m3925: + bend_euler_sc_RNone_A90_b1011900_62700_m3925: mirror: true rotation: 0 x: 60.1 y: -1.525 - bend_euler_RNone_A90_P0_aec1b638_67500_10125: + bend_euler_sc_RNone_A90_b1011900_67500_10125: mirror: false rotation: 180 x: 70.1 y: 12.525 - bend_euler_RNone_A90_P0_aec1b638_67500_m15125: + bend_euler_sc_RNone_A90_b1011900_67500_m15125: mirror: false rotation: 270 x: 65.1 y: -12.525 - bend_euler_RNone_A90_P0_aec1b638_72800_10125: + bend_euler_sc_RNone_A90_b1011900_72800_10125: mirror: false rotation: 90 x: 75.2 y: 7.525 - bend_euler_RNone_A90_P0_aec1b638_72800_m15125: + bend_euler_sc_RNone_A90_b1011900_72800_m15125: mirror: false rotation: 0 x: 70.2 y: -17.525 - bend_euler_RNone_A90_P0_aec1b638_77600_3415: + bend_euler_sc_RNone_A90_b1011900_77600_3415: mirror: false rotation: 270 x: 75.2 y: 6.015 - bend_euler_RNone_A90_P0_aec1b638_77600_m3415: + bend_euler_sc_RNone_A90_b1011900_77600_m3415: mirror: false rotation: 180 x: 80.2 diff --git a/tests/test_netlists_si220/test_netlists_ring_single_sc_.yml b/tests/test_netlists_si220/test_netlists_ring_single_sc_.yml new file mode 100644 index 0000000..20c2cc4 --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_ring_single_sc_.yml @@ -0,0 +1,132 @@ +instances: + bend_euler_sc_R10_A90_P_a19f663e_5112_16362: + component: bend_euler_sc + info: + dy: 10 + length: 16.637 + min_bend_radius: 7.061 + radius: 10 + route_info_length: 16.637 + route_info_min_bend_radius: 7.061 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 16.637 + route_info_xs_sc_length: 16.637 + settings: + angle: 90 + cross_section: xs_sc + p: 0.5 + radius: 10 + bend_euler_sc_R10_A90_P_a19f663e_m9113_16362: + component: bend_euler_sc + info: + dy: 10 + length: 16.637 + min_bend_radius: 7.061 + radius: 10 + route_info_length: 16.637 + route_info_min_bend_radius: 7.061 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 16.637 + route_info_xs_sc_length: 16.637 + settings: + angle: 90 + cross_section: xs_sc + p: 0.5 + radius: 10 + coupler_ring_sc_G0p2_R1_c8cba183_m2000_5212: + component: coupler_ring_sc + info: {} + settings: + bend: bend_euler_sc + cross_section: xs_sc + gap: 0.2 + length_extension: 3 + length_x: 4 + radius: 10 + straight: straight_sc + straight_L0p6_WNone_CSxs_sc_10000_10950: + component: straight + info: + length: 0.6 + route_info_length: 0.6 + route_info_type: xs_sc + route_info_weight: 0.6 + route_info_xs_sc_length: 0.6 + width: 0.45 + settings: + cross_section: xs_sc + length: 0.6 + straight_L0p6_WNone_CSxs_sc_m14000_10950: + component: straight + info: + length: 0.6 + route_info_length: 0.6 + route_info_type: xs_sc + route_info_weight: 0.6 + route_info_xs_sc_length: 0.6 + width: 0.45 + settings: + cross_section: xs_sc + length: 0.6 + straight_L4_WNone_CSxs_sc_m2000_21250: + component: straight + info: + length: 4 + route_info_length: 4 + route_info_type: xs_sc + route_info_weight: 4 + route_info_xs_sc_length: 4 + width: 0.45 + settings: + cross_section: xs_sc + length: 4 +name: ring_single_sc_G0p2_R10_a4ddd2ab +nets: +- p1: bend_euler_sc_R10_A90_P_a19f663e_5112_16362,o1 + p2: straight_L0p6_WNone_CSxs_sc_10000_10950,o1 +- p1: bend_euler_sc_R10_A90_P_a19f663e_5112_16362,o2 + p2: straight_L4_WNone_CSxs_sc_m2000_21250,o1 +- p1: bend_euler_sc_R10_A90_P_a19f663e_m9113_16362,o1 + p2: straight_L4_WNone_CSxs_sc_m2000_21250,o2 +- p1: bend_euler_sc_R10_A90_P_a19f663e_m9113_16362,o2 + p2: straight_L0p6_WNone_CSxs_sc_m14000_10950,o2 +- p1: coupler_ring_sc_G0p2_R1_c8cba183_m2000_5212,o2 + p2: straight_L0p6_WNone_CSxs_sc_m14000_10950,o1 +- p1: coupler_ring_sc_G0p2_R1_c8cba183_m2000_5212,o3 + p2: straight_L0p6_WNone_CSxs_sc_10000_10950,o2 +placements: + bend_euler_sc_R10_A90_P_a19f663e_5112_16362: + mirror: false + rotation: 90 + x: 10 + y: 11.25 + bend_euler_sc_R10_A90_P_a19f663e_m9113_16362: + mirror: false + rotation: 180 + x: -4 + y: 21.25 + coupler_ring_sc_G0p2_R1_c8cba183_m2000_5212: + mirror: false + rotation: 0 + x: 0 + y: 0 + straight_L0p6_WNone_CSxs_sc_10000_10950: + mirror: false + rotation: 270 + x: 10 + y: 11.25 + straight_L0p6_WNone_CSxs_sc_m14000_10950: + mirror: false + rotation: 90 + x: -14 + y: 10.65 + straight_L4_WNone_CSxs_sc_m2000_21250: + mirror: false + rotation: 180 + x: 0 + y: 21.25 +ports: + o1: coupler_ring_sc_G0p2_R1_c8cba183_m2000_5212,o1 + o2: coupler_ring_sc_G0p2_R1_c8cba183_m2000_5212,o4 diff --git a/tests/test_netlists_si220/test_netlists_ring_single_so_.yml b/tests/test_netlists_si220/test_netlists_ring_single_so_.yml new file mode 100644 index 0000000..81dcbc6 --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_ring_single_so_.yml @@ -0,0 +1,132 @@ +instances: + bend_euler_sc_R10_A90_P_b5bfad2b_5100_16300: + component: bend_euler_sc + info: + dy: 10 + length: 16.637 + min_bend_radius: 7.061 + radius: 10 + route_info_length: 16.637 + route_info_min_bend_radius: 7.061 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 16.637 + route_info_xs_so_length: 16.637 + settings: + angle: 90 + cross_section: xs_so + p: 0.5 + radius: 10 + bend_euler_sc_R10_A90_P_b5bfad2b_m9100_16300: + component: bend_euler_sc + info: + dy: 10 + length: 16.637 + min_bend_radius: 7.061 + radius: 10 + route_info_length: 16.637 + route_info_min_bend_radius: 7.061 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 16.637 + route_info_xs_so_length: 16.637 + settings: + angle: 90 + cross_section: xs_so + p: 0.5 + radius: 10 + coupler_ring_sc_G0p2_R1_48750ebd_m2000_5200: + component: coupler_ring_sc + info: {} + settings: + bend: bend_euler_so + cross_section: xs_so + gap: 0.2 + length_extension: 3 + length_x: 4 + radius: 10 + straight: straight_so + straight_L0p6_WNone_CSxs_so_10000_10900: + component: straight + info: + length: 0.6 + route_info_length: 0.6 + route_info_type: xs_so + route_info_weight: 0.6 + route_info_xs_so_length: 0.6 + width: 0.4 + settings: + cross_section: xs_so + length: 0.6 + straight_L0p6_WNone_CSxs_so_m14000_10900: + component: straight + info: + length: 0.6 + route_info_length: 0.6 + route_info_type: xs_so + route_info_weight: 0.6 + route_info_xs_so_length: 0.6 + width: 0.4 + settings: + cross_section: xs_so + length: 0.6 + straight_L4_WNone_CSxs_so_m2000_21200: + component: straight + info: + length: 4 + route_info_length: 4 + route_info_type: xs_so + route_info_weight: 4 + route_info_xs_so_length: 4 + width: 0.4 + settings: + cross_section: xs_so + length: 4 +name: ring_single_sc_G0p2_R10_7d576c4a +nets: +- p1: bend_euler_sc_R10_A90_P_b5bfad2b_5100_16300,o1 + p2: straight_L0p6_WNone_CSxs_so_10000_10900,o1 +- p1: bend_euler_sc_R10_A90_P_b5bfad2b_5100_16300,o2 + p2: straight_L4_WNone_CSxs_so_m2000_21200,o1 +- p1: bend_euler_sc_R10_A90_P_b5bfad2b_m9100_16300,o1 + p2: straight_L4_WNone_CSxs_so_m2000_21200,o2 +- p1: bend_euler_sc_R10_A90_P_b5bfad2b_m9100_16300,o2 + p2: straight_L0p6_WNone_CSxs_so_m14000_10900,o2 +- p1: coupler_ring_sc_G0p2_R1_48750ebd_m2000_5200,o2 + p2: straight_L0p6_WNone_CSxs_so_m14000_10900,o1 +- p1: coupler_ring_sc_G0p2_R1_48750ebd_m2000_5200,o3 + p2: straight_L0p6_WNone_CSxs_so_10000_10900,o2 +placements: + bend_euler_sc_R10_A90_P_b5bfad2b_5100_16300: + mirror: false + rotation: 90 + x: 10 + y: 11.2 + bend_euler_sc_R10_A90_P_b5bfad2b_m9100_16300: + mirror: false + rotation: 180 + x: -4 + y: 21.2 + coupler_ring_sc_G0p2_R1_48750ebd_m2000_5200: + mirror: false + rotation: 0 + x: 0 + y: 0 + straight_L0p6_WNone_CSxs_so_10000_10900: + mirror: false + rotation: 270 + x: 10 + y: 11.2 + straight_L0p6_WNone_CSxs_so_m14000_10900: + mirror: false + rotation: 90 + x: -14 + y: 10.6 + straight_L4_WNone_CSxs_so_m2000_21200: + mirror: false + rotation: 180 + x: 0 + y: 21.2 +ports: + o1: coupler_ring_sc_G0p2_R1_48750ebd_m2000_5200,o1 + o2: coupler_ring_sc_G0p2_R1_48750ebd_m2000_5200,o4 diff --git a/tests/test_netlists_si220/test_netlists_straight_heater_metal_.yml b/tests/test_netlists_si220/test_netlists_straight_heater_metal_.yml new file mode 100644 index 0000000..8e53f0b --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_straight_heater_metal_.yml @@ -0,0 +1,543 @@ +instances: + H1: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + H2: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + H3: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + H4: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + H5: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + H6: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + H7: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + H8: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + U1: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + U2: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + U3: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + U4: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + U5: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + U6: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + U7: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + U8: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + _1: + component: straight + info: + length: 0.1 + route_info_length: 0.1 + route_info_type: xs_sc + route_info_weight: 0.1 + route_info_xs_sc_length: 0.1 + width: 0.45 + settings: + cross_section: xs_sc + length: 0.1 + npoints: 2 + _2: + component: straight + info: + length: 0.1 + route_info_length: 0.1 + route_info_type: xs_sc + route_info_weight: 0.1 + route_info_xs_sc_length: 0.1 + width: 0.45 + settings: + cross_section: xs_sc + length: 0.1 + npoints: 2 + m1: + component: straight + info: + length: 15.9 + route_info_length: 15.9 + route_info_type: xs_sc_heater + route_info_weight: 15.9 + route_info_xs_sc_heater_length: 15.9 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 15.9 + npoints: 2 + m2: + component: straight + info: + length: 15.9 + route_info_length: 15.9 + route_info_type: xs_sc_heater + route_info_weight: 15.9 + route_info_xs_sc_heater_length: 15.9 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 15.9 + npoints: 2 + taper_L5_W10_W4_PNone_W_9659be32_322400_0: + component: taper + info: + length: 5 + width1: 10 + width2: 4 + settings: + cross_section: heater_metal + length: 5 + port_names: + - e1 + - e2 + port_types: + - electrical + - electrical + width1: 10 + width2: 4 + with_bbox: true + with_two_ports: true + taper_L5_W10_W4_PNone_W_9659be32_m2400_0: + component: taper + info: + length: 5 + width1: 10 + width2: 4 + settings: + cross_section: heater_metal + length: 5 + port_names: + - e1 + - e2 + port_types: + - electrical + - electrical + width1: 10 + width2: 4 + with_bbox: true + with_two_ports: true + via_stack_heater_mtop_S10_10_329900_0: + component: via_stack_heater_mtop + info: + xsize: 10 + ysize: 10 + settings: + size: + - 10 + - 10 + via_stack_heater_mtop_S10_10_m9900_0: + component: via_stack_heater_mtop + info: + xsize: 10 + ysize: 10 + settings: + size: + - 10 + - 10 +name: straight_heater_metal_L_aebc074c +nets: +- p1: H1,e1 + p2: U1,e2 +- p1: H1,e2 + p2: U2,e1 +- p1: H1,o1 + p2: U1,o2 +- p1: H1,o2 + p2: U2,o1 +- p1: H2,e1 + p2: U2,e2 +- p1: H2,e2 + p2: U3,e1 +- p1: H2,o1 + p2: U2,o2 +- p1: H2,o2 + p2: U3,o1 +- p1: H3,e1 + p2: U3,e2 +- p1: H3,e2 + p2: U4,e1 +- p1: H3,o1 + p2: U3,o2 +- p1: H3,o2 + p2: U4,o1 +- p1: H4,e1 + p2: U4,e2 +- p1: H4,e2 + p2: U5,e1 +- p1: H4,o1 + p2: U4,o2 +- p1: H4,o2 + p2: U5,o1 +- p1: H5,e1 + p2: U5,e2 +- p1: H5,e2 + p2: U6,e1 +- p1: H5,o1 + p2: U5,o2 +- p1: H5,o2 + p2: U6,o1 +- p1: H6,e1 + p2: U6,e2 +- p1: H6,e2 + p2: U7,e1 +- p1: H6,o1 + p2: U6,o2 +- p1: H6,o2 + p2: U7,o1 +- p1: H7,e1 + p2: U7,e2 +- p1: H7,e2 + p2: U8,e1 +- p1: H7,o1 + p2: U7,o2 +- p1: H7,o2 + p2: U8,o1 +- p1: H8,e1 + p2: U8,e2 +- p1: H8,e2 + p2: m2,e1 +- p1: H8,o1 + p2: U8,o2 +- p1: H8,o2 + p2: m2,o1 +- p1: U1,e1 + p2: m1,e2 +- p1: U1,o1 + p2: m1,o2 +- p1: _1,o2 + p2: m1,o1 +- p1: _2,o1 + p2: m2,o2 +- p1: m1,e1 + p2: taper_L5_W10_W4_PNone_W_9659be32_m2400_0,e2 +- p1: m2,e2 + p2: taper_L5_W10_W4_PNone_W_9659be32_322400_0,e2 +- p1: taper_L5_W10_W4_PNone_W_9659be32_322400_0,e1 + p2: via_stack_heater_mtop_S10_10_329900_0,e1 +- p1: taper_L5_W10_W4_PNone_W_9659be32_m2400_0,e1 + p2: via_stack_heater_mtop_S10_10_m9900_0,e3 +placements: + H1: + mirror: false + rotation: 0 + x: 46 + y: 0 + H2: + mirror: false + rotation: 0 + x: 82 + y: 0 + H3: + mirror: false + rotation: 0 + x: 118 + y: 0 + H4: + mirror: false + rotation: 0 + x: 154 + y: 0 + H5: + mirror: false + rotation: 0 + x: 190 + y: 0 + H6: + mirror: false + rotation: 0 + x: 226 + y: 0 + H7: + mirror: false + rotation: 0 + x: 262 + y: 0 + H8: + mirror: false + rotation: 0 + x: 298 + y: 0 + U1: + mirror: false + rotation: 0 + x: 16 + y: 0 + U2: + mirror: false + rotation: 0 + x: 52 + y: 0 + U3: + mirror: false + rotation: 0 + x: 88 + y: 0 + U4: + mirror: false + rotation: 0 + x: 124 + y: 0 + U5: + mirror: false + rotation: 0 + x: 160 + y: 0 + U6: + mirror: false + rotation: 0 + x: 196 + y: 0 + U7: + mirror: false + rotation: 0 + x: 232 + y: 0 + U8: + mirror: false + rotation: 0 + x: 268 + y: 0 + _1: + mirror: false + rotation: 0 + x: 0 + y: 0 + _2: + mirror: false + rotation: 0 + x: 319.9 + y: 0 + m1: + mirror: false + rotation: 0 + x: 0.1 + y: 0 + m2: + mirror: false + rotation: 0 + x: 304 + y: 0 + taper_L5_W10_W4_PNone_W_9659be32_322400_0: + mirror: false + rotation: 180 + x: 324.9 + y: 0 + taper_L5_W10_W4_PNone_W_9659be32_m2400_0: + mirror: false + rotation: 0 + x: -4.9 + y: 0 + via_stack_heater_mtop_S10_10_329900_0: + mirror: false + rotation: 0 + x: 329.9 + y: 0 + via_stack_heater_mtop_S10_10_m9900_0: + mirror: false + rotation: 0 + x: -9.9 + y: 0 +ports: + l_e1: via_stack_heater_mtop_S10_10_m9900_0,e1 + o1: _1,o1 + o2: _2,o2 + r_e3: via_stack_heater_mtop_S10_10_329900_0,e3 +warnings: + electrical: + unconnected_ports: + - message: 4 unconnected electrical ports! + ports: + - via_stack_heater_mtop_S10_10_m9900_0,e2 + - via_stack_heater_mtop_S10_10_m9900_0,e4 + - via_stack_heater_mtop_S10_10_329900_0,e2 + - via_stack_heater_mtop_S10_10_329900_0,e4 + values: + - - -9900 + - 5000 + - - -9900 + - -5000 + - - 329900 + - 5000 + - - 329900 + - -5000 diff --git a/tests/test_netlists_si220/test_netlists_straight_heater_metal_sc_.yml b/tests/test_netlists_si220/test_netlists_straight_heater_metal_sc_.yml new file mode 100644 index 0000000..b849dfa --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_straight_heater_metal_sc_.yml @@ -0,0 +1,543 @@ +instances: + H1: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + H2: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + H3: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + H4: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + H5: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + H6: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + H7: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + H8: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_sc_heater + route_info_weight: 6 + route_info_xs_sc_heater_length: 6 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 6 + npoints: 2 + U1: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + U2: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + U3: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + U4: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + U5: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + U6: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + U7: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + U8: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_sc_heater + route_info_weight: 30 + route_info_xs_sc_heater_length: 30 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 30 + npoints: 2 + _1: + component: straight + info: + length: 0.1 + route_info_length: 0.1 + route_info_type: xs_sc + route_info_weight: 0.1 + route_info_xs_sc_length: 0.1 + width: 0.45 + settings: + cross_section: xs_sc + length: 0.1 + npoints: 2 + _2: + component: straight + info: + length: 0.1 + route_info_length: 0.1 + route_info_type: xs_sc + route_info_weight: 0.1 + route_info_xs_sc_length: 0.1 + width: 0.45 + settings: + cross_section: xs_sc + length: 0.1 + npoints: 2 + m1: + component: straight + info: + length: 15.9 + route_info_length: 15.9 + route_info_type: xs_sc_heater + route_info_weight: 15.9 + route_info_xs_sc_heater_length: 15.9 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 15.9 + npoints: 2 + m2: + component: straight + info: + length: 15.9 + route_info_length: 15.9 + route_info_type: xs_sc_heater + route_info_weight: 15.9 + route_info_xs_sc_heater_length: 15.9 + width: 0.45 + settings: + cross_section: xs_sc_heater + length: 15.9 + npoints: 2 + taper_L5_W10_W4_PNone_W_9659be32_322400_0: + component: taper + info: + length: 5 + width1: 10 + width2: 4 + settings: + cross_section: heater_metal + length: 5 + port_names: + - e1 + - e2 + port_types: + - electrical + - electrical + width1: 10 + width2: 4 + with_bbox: true + with_two_ports: true + taper_L5_W10_W4_PNone_W_9659be32_m2400_0: + component: taper + info: + length: 5 + width1: 10 + width2: 4 + settings: + cross_section: heater_metal + length: 5 + port_names: + - e1 + - e2 + port_types: + - electrical + - electrical + width1: 10 + width2: 4 + with_bbox: true + with_two_ports: true + via_stack_heater_mtop_S10_10_329900_0: + component: via_stack_heater_mtop + info: + xsize: 10 + ysize: 10 + settings: + size: + - 10 + - 10 + via_stack_heater_mtop_S10_10_m9900_0: + component: via_stack_heater_mtop + info: + xsize: 10 + ysize: 10 + settings: + size: + - 10 + - 10 +name: straight_heater_metal_s_0352bf83 +nets: +- p1: H1,e1 + p2: U1,e2 +- p1: H1,e2 + p2: U2,e1 +- p1: H1,o1 + p2: U1,o2 +- p1: H1,o2 + p2: U2,o1 +- p1: H2,e1 + p2: U2,e2 +- p1: H2,e2 + p2: U3,e1 +- p1: H2,o1 + p2: U2,o2 +- p1: H2,o2 + p2: U3,o1 +- p1: H3,e1 + p2: U3,e2 +- p1: H3,e2 + p2: U4,e1 +- p1: H3,o1 + p2: U3,o2 +- p1: H3,o2 + p2: U4,o1 +- p1: H4,e1 + p2: U4,e2 +- p1: H4,e2 + p2: U5,e1 +- p1: H4,o1 + p2: U4,o2 +- p1: H4,o2 + p2: U5,o1 +- p1: H5,e1 + p2: U5,e2 +- p1: H5,e2 + p2: U6,e1 +- p1: H5,o1 + p2: U5,o2 +- p1: H5,o2 + p2: U6,o1 +- p1: H6,e1 + p2: U6,e2 +- p1: H6,e2 + p2: U7,e1 +- p1: H6,o1 + p2: U6,o2 +- p1: H6,o2 + p2: U7,o1 +- p1: H7,e1 + p2: U7,e2 +- p1: H7,e2 + p2: U8,e1 +- p1: H7,o1 + p2: U7,o2 +- p1: H7,o2 + p2: U8,o1 +- p1: H8,e1 + p2: U8,e2 +- p1: H8,e2 + p2: m2,e1 +- p1: H8,o1 + p2: U8,o2 +- p1: H8,o2 + p2: m2,o1 +- p1: U1,e1 + p2: m1,e2 +- p1: U1,o1 + p2: m1,o2 +- p1: _1,o2 + p2: m1,o1 +- p1: _2,o1 + p2: m2,o2 +- p1: m1,e1 + p2: taper_L5_W10_W4_PNone_W_9659be32_m2400_0,e2 +- p1: m2,e2 + p2: taper_L5_W10_W4_PNone_W_9659be32_322400_0,e2 +- p1: taper_L5_W10_W4_PNone_W_9659be32_322400_0,e1 + p2: via_stack_heater_mtop_S10_10_329900_0,e1 +- p1: taper_L5_W10_W4_PNone_W_9659be32_m2400_0,e1 + p2: via_stack_heater_mtop_S10_10_m9900_0,e3 +placements: + H1: + mirror: false + rotation: 0 + x: 46 + y: 0 + H2: + mirror: false + rotation: 0 + x: 82 + y: 0 + H3: + mirror: false + rotation: 0 + x: 118 + y: 0 + H4: + mirror: false + rotation: 0 + x: 154 + y: 0 + H5: + mirror: false + rotation: 0 + x: 190 + y: 0 + H6: + mirror: false + rotation: 0 + x: 226 + y: 0 + H7: + mirror: false + rotation: 0 + x: 262 + y: 0 + H8: + mirror: false + rotation: 0 + x: 298 + y: 0 + U1: + mirror: false + rotation: 0 + x: 16 + y: 0 + U2: + mirror: false + rotation: 0 + x: 52 + y: 0 + U3: + mirror: false + rotation: 0 + x: 88 + y: 0 + U4: + mirror: false + rotation: 0 + x: 124 + y: 0 + U5: + mirror: false + rotation: 0 + x: 160 + y: 0 + U6: + mirror: false + rotation: 0 + x: 196 + y: 0 + U7: + mirror: false + rotation: 0 + x: 232 + y: 0 + U8: + mirror: false + rotation: 0 + x: 268 + y: 0 + _1: + mirror: false + rotation: 0 + x: 0 + y: 0 + _2: + mirror: false + rotation: 0 + x: 319.9 + y: 0 + m1: + mirror: false + rotation: 0 + x: 0.1 + y: 0 + m2: + mirror: false + rotation: 0 + x: 304 + y: 0 + taper_L5_W10_W4_PNone_W_9659be32_322400_0: + mirror: false + rotation: 180 + x: 324.9 + y: 0 + taper_L5_W10_W4_PNone_W_9659be32_m2400_0: + mirror: false + rotation: 0 + x: -4.9 + y: 0 + via_stack_heater_mtop_S10_10_329900_0: + mirror: false + rotation: 0 + x: 329.9 + y: 0 + via_stack_heater_mtop_S10_10_m9900_0: + mirror: false + rotation: 0 + x: -9.9 + y: 0 +ports: + l_e1: via_stack_heater_mtop_S10_10_m9900_0,e1 + o1: _1,o1 + o2: _2,o2 + r_e3: via_stack_heater_mtop_S10_10_329900_0,e3 +warnings: + electrical: + unconnected_ports: + - message: 4 unconnected electrical ports! + ports: + - via_stack_heater_mtop_S10_10_m9900_0,e2 + - via_stack_heater_mtop_S10_10_m9900_0,e4 + - via_stack_heater_mtop_S10_10_329900_0,e2 + - via_stack_heater_mtop_S10_10_329900_0,e4 + values: + - - -9900 + - 5000 + - - -9900 + - -5000 + - - 329900 + - 5000 + - - 329900 + - -5000 diff --git a/tests/test_netlists_si220/test_netlists_straight_heater_metal_so_.yml b/tests/test_netlists_si220/test_netlists_straight_heater_metal_so_.yml new file mode 100644 index 0000000..e275021 --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_straight_heater_metal_so_.yml @@ -0,0 +1,543 @@ +instances: + H1: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_so_heater + route_info_weight: 6 + route_info_xs_so_heater_length: 6 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 6 + npoints: 2 + H2: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_so_heater + route_info_weight: 6 + route_info_xs_so_heater_length: 6 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 6 + npoints: 2 + H3: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_so_heater + route_info_weight: 6 + route_info_xs_so_heater_length: 6 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 6 + npoints: 2 + H4: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_so_heater + route_info_weight: 6 + route_info_xs_so_heater_length: 6 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 6 + npoints: 2 + H5: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_so_heater + route_info_weight: 6 + route_info_xs_so_heater_length: 6 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 6 + npoints: 2 + H6: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_so_heater + route_info_weight: 6 + route_info_xs_so_heater_length: 6 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 6 + npoints: 2 + H7: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_so_heater + route_info_weight: 6 + route_info_xs_so_heater_length: 6 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 6 + npoints: 2 + H8: + component: straight + info: + length: 6 + route_info_length: 6 + route_info_type: xs_so_heater + route_info_weight: 6 + route_info_xs_so_heater_length: 6 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 6 + npoints: 2 + U1: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_so_heater + route_info_weight: 30 + route_info_xs_so_heater_length: 30 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 30 + npoints: 2 + U2: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_so_heater + route_info_weight: 30 + route_info_xs_so_heater_length: 30 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 30 + npoints: 2 + U3: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_so_heater + route_info_weight: 30 + route_info_xs_so_heater_length: 30 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 30 + npoints: 2 + U4: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_so_heater + route_info_weight: 30 + route_info_xs_so_heater_length: 30 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 30 + npoints: 2 + U5: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_so_heater + route_info_weight: 30 + route_info_xs_so_heater_length: 30 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 30 + npoints: 2 + U6: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_so_heater + route_info_weight: 30 + route_info_xs_so_heater_length: 30 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 30 + npoints: 2 + U7: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_so_heater + route_info_weight: 30 + route_info_xs_so_heater_length: 30 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 30 + npoints: 2 + U8: + component: straight + info: + length: 30 + route_info_length: 30 + route_info_type: xs_so_heater + route_info_weight: 30 + route_info_xs_so_heater_length: 30 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 30 + npoints: 2 + _1: + component: straight + info: + length: 0.1 + route_info_length: 0.1 + route_info_type: xs_so + route_info_weight: 0.1 + route_info_xs_so_length: 0.1 + width: 0.4 + settings: + cross_section: xs_so + length: 0.1 + npoints: 2 + _2: + component: straight + info: + length: 0.1 + route_info_length: 0.1 + route_info_type: xs_so + route_info_weight: 0.1 + route_info_xs_so_length: 0.1 + width: 0.4 + settings: + cross_section: xs_so + length: 0.1 + npoints: 2 + m1: + component: straight + info: + length: 15.9 + route_info_length: 15.9 + route_info_type: xs_so_heater + route_info_weight: 15.9 + route_info_xs_so_heater_length: 15.9 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 15.9 + npoints: 2 + m2: + component: straight + info: + length: 15.9 + route_info_length: 15.9 + route_info_type: xs_so_heater + route_info_weight: 15.9 + route_info_xs_so_heater_length: 15.9 + width: 0.4 + settings: + cross_section: xs_so_heater + length: 15.9 + npoints: 2 + taper_L5_W10_W4_PNone_W_9659be32_322400_0: + component: taper + info: + length: 5 + width1: 10 + width2: 4 + settings: + cross_section: heater_metal + length: 5 + port_names: + - e1 + - e2 + port_types: + - electrical + - electrical + width1: 10 + width2: 4 + with_bbox: true + with_two_ports: true + taper_L5_W10_W4_PNone_W_9659be32_m2400_0: + component: taper + info: + length: 5 + width1: 10 + width2: 4 + settings: + cross_section: heater_metal + length: 5 + port_names: + - e1 + - e2 + port_types: + - electrical + - electrical + width1: 10 + width2: 4 + with_bbox: true + with_two_ports: true + via_stack_heater_mtop_S10_10_329900_0: + component: via_stack_heater_mtop + info: + xsize: 10 + ysize: 10 + settings: + size: + - 10 + - 10 + via_stack_heater_mtop_S10_10_m9900_0: + component: via_stack_heater_mtop + info: + xsize: 10 + ysize: 10 + settings: + size: + - 10 + - 10 +name: straight_heater_metal_s_815de6a5 +nets: +- p1: H1,e1 + p2: U1,e2 +- p1: H1,e2 + p2: U2,e1 +- p1: H1,o1 + p2: U1,o2 +- p1: H1,o2 + p2: U2,o1 +- p1: H2,e1 + p2: U2,e2 +- p1: H2,e2 + p2: U3,e1 +- p1: H2,o1 + p2: U2,o2 +- p1: H2,o2 + p2: U3,o1 +- p1: H3,e1 + p2: U3,e2 +- p1: H3,e2 + p2: U4,e1 +- p1: H3,o1 + p2: U3,o2 +- p1: H3,o2 + p2: U4,o1 +- p1: H4,e1 + p2: U4,e2 +- p1: H4,e2 + p2: U5,e1 +- p1: H4,o1 + p2: U4,o2 +- p1: H4,o2 + p2: U5,o1 +- p1: H5,e1 + p2: U5,e2 +- p1: H5,e2 + p2: U6,e1 +- p1: H5,o1 + p2: U5,o2 +- p1: H5,o2 + p2: U6,o1 +- p1: H6,e1 + p2: U6,e2 +- p1: H6,e2 + p2: U7,e1 +- p1: H6,o1 + p2: U6,o2 +- p1: H6,o2 + p2: U7,o1 +- p1: H7,e1 + p2: U7,e2 +- p1: H7,e2 + p2: U8,e1 +- p1: H7,o1 + p2: U7,o2 +- p1: H7,o2 + p2: U8,o1 +- p1: H8,e1 + p2: U8,e2 +- p1: H8,e2 + p2: m2,e1 +- p1: H8,o1 + p2: U8,o2 +- p1: H8,o2 + p2: m2,o1 +- p1: U1,e1 + p2: m1,e2 +- p1: U1,o1 + p2: m1,o2 +- p1: _1,o2 + p2: m1,o1 +- p1: _2,o1 + p2: m2,o2 +- p1: m1,e1 + p2: taper_L5_W10_W4_PNone_W_9659be32_m2400_0,e2 +- p1: m2,e2 + p2: taper_L5_W10_W4_PNone_W_9659be32_322400_0,e2 +- p1: taper_L5_W10_W4_PNone_W_9659be32_322400_0,e1 + p2: via_stack_heater_mtop_S10_10_329900_0,e1 +- p1: taper_L5_W10_W4_PNone_W_9659be32_m2400_0,e1 + p2: via_stack_heater_mtop_S10_10_m9900_0,e3 +placements: + H1: + mirror: false + rotation: 0 + x: 46 + y: 0 + H2: + mirror: false + rotation: 0 + x: 82 + y: 0 + H3: + mirror: false + rotation: 0 + x: 118 + y: 0 + H4: + mirror: false + rotation: 0 + x: 154 + y: 0 + H5: + mirror: false + rotation: 0 + x: 190 + y: 0 + H6: + mirror: false + rotation: 0 + x: 226 + y: 0 + H7: + mirror: false + rotation: 0 + x: 262 + y: 0 + H8: + mirror: false + rotation: 0 + x: 298 + y: 0 + U1: + mirror: false + rotation: 0 + x: 16 + y: 0 + U2: + mirror: false + rotation: 0 + x: 52 + y: 0 + U3: + mirror: false + rotation: 0 + x: 88 + y: 0 + U4: + mirror: false + rotation: 0 + x: 124 + y: 0 + U5: + mirror: false + rotation: 0 + x: 160 + y: 0 + U6: + mirror: false + rotation: 0 + x: 196 + y: 0 + U7: + mirror: false + rotation: 0 + x: 232 + y: 0 + U8: + mirror: false + rotation: 0 + x: 268 + y: 0 + _1: + mirror: false + rotation: 0 + x: 0 + y: 0 + _2: + mirror: false + rotation: 0 + x: 319.9 + y: 0 + m1: + mirror: false + rotation: 0 + x: 0.1 + y: 0 + m2: + mirror: false + rotation: 0 + x: 304 + y: 0 + taper_L5_W10_W4_PNone_W_9659be32_322400_0: + mirror: false + rotation: 180 + x: 324.9 + y: 0 + taper_L5_W10_W4_PNone_W_9659be32_m2400_0: + mirror: false + rotation: 0 + x: -4.9 + y: 0 + via_stack_heater_mtop_S10_10_329900_0: + mirror: false + rotation: 0 + x: 329.9 + y: 0 + via_stack_heater_mtop_S10_10_m9900_0: + mirror: false + rotation: 0 + x: -9.9 + y: 0 +ports: + l_e1: via_stack_heater_mtop_S10_10_m9900_0,e1 + o1: _1,o1 + o2: _2,o2 + r_e3: via_stack_heater_mtop_S10_10_329900_0,e3 +warnings: + electrical: + unconnected_ports: + - message: 4 unconnected electrical ports! + ports: + - via_stack_heater_mtop_S10_10_m9900_0,e2 + - via_stack_heater_mtop_S10_10_m9900_0,e4 + - via_stack_heater_mtop_S10_10_329900_0,e2 + - via_stack_heater_mtop_S10_10_329900_0,e4 + values: + - - -9900 + - 5000 + - - -9900 + - -5000 + - - 329900 + - 5000 + - - 329900 + - -5000 diff --git a/tests/test_netlists_si220/test_netlists_via_stack_heater_mtop_.yml b/tests/test_netlists_si220/test_netlists_via_stack_heater_mtop_.yml new file mode 100644 index 0000000..1b9f248 --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_via_stack_heater_mtop_.yml @@ -0,0 +1,5 @@ +instances: {} +name: via_stack_heater_mtop_S10_10 +nets: [] +placements: {} +ports: {} diff --git a/tests/test_netlists_si500/test_netlists_bend_euler_rc_.yml b/tests/test_netlists_si500/test_netlists_bend_euler_rc_.yml new file mode 100644 index 0000000..243df6d --- /dev/null +++ b/tests/test_netlists_si500/test_netlists_bend_euler_rc_.yml @@ -0,0 +1,5 @@ +instances: {} +name: bend_euler_RNone_A90_P0_ddb8ac70 +nets: [] +placements: {} +ports: {} diff --git a/tests/test_netlists_si500/test_netlists_bend_euler_ro_.yml b/tests/test_netlists_si500/test_netlists_bend_euler_ro_.yml new file mode 100644 index 0000000..59aa025 --- /dev/null +++ b/tests/test_netlists_si500/test_netlists_bend_euler_ro_.yml @@ -0,0 +1,5 @@ +instances: {} +name: bend_euler_RNone_A90_P0_3e63eab5 +nets: [] +placements: {} +ports: {} diff --git a/tests/test_netlists_si500/test_netlists_mzi_.yml b/tests/test_netlists_si500/test_netlists_mzi_.yml index 7611f2c..29180f4 100644 --- a/tests/test_netlists_si500/test_netlists_mzi_.yml +++ b/tests/test_netlists_si500/test_netlists_mzi_.yml @@ -227,7 +227,7 @@ instances: settings: cross_section: xs_rc length: 1 -name: mzi_DL10_Bbend_rc_Sstra_02ff743c +name: mzi_DL10_Bbend_euler_rc_de758620 nets: - p1: bend_euler_RNone_A90_P0_ddb8ac70_122712_m50098,o1 p2: sxb,o2 diff --git a/tests/test_netlists_si500/test_netlists_mzi_rc_.yml b/tests/test_netlists_si500/test_netlists_mzi_rc_.yml index 7611f2c..29180f4 100644 --- a/tests/test_netlists_si500/test_netlists_mzi_rc_.yml +++ b/tests/test_netlists_si500/test_netlists_mzi_rc_.yml @@ -227,7 +227,7 @@ instances: settings: cross_section: xs_rc length: 1 -name: mzi_DL10_Bbend_rc_Sstra_02ff743c +name: mzi_DL10_Bbend_euler_rc_de758620 nets: - p1: bend_euler_RNone_A90_P0_ddb8ac70_122712_m50098,o1 p2: sxb,o2 diff --git a/tests/test_netlists_si500/test_netlists_mzi_ro_.yml b/tests/test_netlists_si500/test_netlists_mzi_ro_.yml index 073985f..e9bb584 100644 --- a/tests/test_netlists_si500/test_netlists_mzi_ro_.yml +++ b/tests/test_netlists_si500/test_netlists_mzi_ro_.yml @@ -227,7 +227,7 @@ instances: settings: cross_section: xs_ro length: 1 -name: mzi_DL10_Bbend_ro_Sstra_bf2966fd +name: mzi_DL10_Bbend_euler_ro_29a93d64 nets: - p1: bend_euler_RNone_A90_P0_3e63eab5_122712_m50098,o1 p2: sxb,o2 diff --git a/tests/test_pdk_si220.py b/tests/test_pdk_si220.py index 2acb2e9..0df27de 100644 --- a/tests/test_pdk_si220.py +++ b/tests/test_pdk_si220.py @@ -19,7 +19,16 @@ def activate_pdk() -> None: cells = PDK.cells -skip_test = {"import_gds"} +skip_test = { + "import_gds", + "pack_doe", + "pack_doe_grid", + "add_pads_top", + "add_fiber_single_sc", + "add_fiber_single_so", + "add_fiber_array_sc", + "add_fiber_array_so", +} cell_names = set(cells.keys()) - set(skip_test) cell_names = sorted([name for name in cell_names if not name.startswith("_")]) diff --git a/tests/test_pdk_si220/test_settings_add_fiber_array_sc_.yml b/tests/test_pdk_si220/test_settings_add_fiber_array_sc_.yml new file mode 100644 index 0000000..a9c7d64 --- /dev/null +++ b/tests/test_pdk_si220/test_settings_add_fiber_array_sc_.yml @@ -0,0 +1,9 @@ +info: + length: 10 + route_info_length: 10 + route_info_type: xs_sc + route_info_weight: 10 + route_info_xs_sc_length: 10 + width: 0.45 +name: Unnamed_183 +settings: {} diff --git a/tests/test_pdk_si220/test_settings_add_fiber_array_so_.yml b/tests/test_pdk_si220/test_settings_add_fiber_array_so_.yml new file mode 100644 index 0000000..b233c61 --- /dev/null +++ b/tests/test_pdk_si220/test_settings_add_fiber_array_so_.yml @@ -0,0 +1,9 @@ +info: + length: 10 + route_info_length: 10 + route_info_type: xs_so + route_info_weight: 10 + route_info_xs_so_length: 10 + width: 0.4 +name: Unnamed_196 +settings: {} diff --git a/tests/test_pdk_si220/test_settings_add_fiber_single_sc_.yml b/tests/test_pdk_si220/test_settings_add_fiber_single_sc_.yml new file mode 100644 index 0000000..f9241d2 --- /dev/null +++ b/tests/test_pdk_si220/test_settings_add_fiber_single_sc_.yml @@ -0,0 +1,9 @@ +info: + length: 10 + route_info_length: 10 + route_info_type: xs_sc + route_info_weight: 10 + route_info_xs_sc_length: 10 + width: 0.45 +name: Unnamed_212 +settings: {} diff --git a/tests/test_pdk_si220/test_settings_add_fiber_single_so_.yml b/tests/test_pdk_si220/test_settings_add_fiber_single_so_.yml new file mode 100644 index 0000000..58545b5 --- /dev/null +++ b/tests/test_pdk_si220/test_settings_add_fiber_single_so_.yml @@ -0,0 +1,9 @@ +info: + length: 10 + route_info_length: 10 + route_info_type: xs_so + route_info_weight: 10 + route_info_xs_so_length: 10 + width: 0.4 +name: Unnamed_221 +settings: {} diff --git a/tests/test_pdk_si220/test_settings_bend_euler_rc_.yml b/tests/test_pdk_si220/test_settings_bend_euler_rc_.yml new file mode 100644 index 0000000..05a06b2 --- /dev/null +++ b/tests/test_pdk_si220/test_settings_bend_euler_rc_.yml @@ -0,0 +1,16 @@ +info: + dy: 25 + length: 41.592 + min_bend_radius: 17.652 + radius: 25 + route_info_length: 41.592 + route_info_min_bend_radius: 17.652 + route_info_n_bend_90: 1 + route_info_type: xs_rc + route_info_weight: 41.592 + route_info_xs_rc_length: 41.592 +name: bend_euler_sc_RNone_A90_323c7861 +settings: + angle: 90 + cross_section: xs_rc + p: 0.5 diff --git a/tests/test_pdk_si220/test_settings_bend_euler_ro_.yml b/tests/test_pdk_si220/test_settings_bend_euler_ro_.yml new file mode 100644 index 0000000..b3e1f73 --- /dev/null +++ b/tests/test_pdk_si220/test_settings_bend_euler_ro_.yml @@ -0,0 +1,16 @@ +info: + dy: 25 + length: 41.592 + min_bend_radius: 17.652 + radius: 25 + route_info_length: 41.592 + route_info_min_bend_radius: 17.652 + route_info_n_bend_90: 1 + route_info_type: xs_ro + route_info_weight: 41.592 + route_info_xs_ro_length: 41.592 +name: bend_euler_sc_RNone_A90_a1dd07b8 +settings: + angle: 90 + cross_section: xs_ro + p: 0.5 diff --git a/tests/test_pdk_si220/test_settings_bend_euler_sc_.yml b/tests/test_pdk_si220/test_settings_bend_euler_sc_.yml new file mode 100644 index 0000000..16d9971 --- /dev/null +++ b/tests/test_pdk_si220/test_settings_bend_euler_sc_.yml @@ -0,0 +1,16 @@ +info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_sc + route_info_weight: 8.318 + route_info_xs_sc_length: 8.318 +name: bend_euler_sc_RNone_A90_3aec9813 +settings: + angle: 90 + cross_section: xs_sc + p: 0.5 diff --git a/tests/test_pdk_si220/test_settings_bend_euler_so_.yml b/tests/test_pdk_si220/test_settings_bend_euler_so_.yml new file mode 100644 index 0000000..30644c5 --- /dev/null +++ b/tests/test_pdk_si220/test_settings_bend_euler_so_.yml @@ -0,0 +1,16 @@ +info: + dy: 5 + length: 8.318 + min_bend_radius: 3.53 + radius: 5 + route_info_length: 8.318 + route_info_min_bend_radius: 3.53 + route_info_n_bend_90: 1 + route_info_type: xs_so + route_info_weight: 8.318 + route_info_xs_so_length: 8.318 +name: bend_euler_sc_RNone_A90_b1011900 +settings: + angle: 90 + cross_section: xs_so + p: 0.5 diff --git a/tests/test_pdk_si220/test_settings_bend_metal_.yml b/tests/test_pdk_si220/test_settings_bend_metal_.yml index 6fba775..ca5cc72 100644 --- a/tests/test_pdk_si220/test_settings_bend_metal_.yml +++ b/tests/test_pdk_si220/test_settings_bend_metal_.yml @@ -9,7 +9,7 @@ info: route_info_n_bend_90: 1 route_info_type: metal_routing route_info_weight: 16.637 -name: bend_euler_RNone_A90_P0_3e16ea58 +name: bend_euler_sc_RNone_A90_61017d47 settings: angle: 90 cross_section: metal_routing diff --git a/tests/test_pdk_si220/test_settings_coupler_ring_.yml b/tests/test_pdk_si220/test_settings_coupler_ring_.yml new file mode 100644 index 0000000..d3427eb --- /dev/null +++ b/tests/test_pdk_si220/test_settings_coupler_ring_.yml @@ -0,0 +1,10 @@ +info: {} +name: coupler_ring_G0p2_R5_LX_98be2a52 +settings: + bend: bend_euler + cross_section: xs_sc + gap: 0.2 + length_extension: 3 + length_x: 4 + radius: 5 + straight: straight diff --git a/tests/test_pdk_si220/test_settings_coupler_ring_sc_.yml b/tests/test_pdk_si220/test_settings_coupler_ring_sc_.yml new file mode 100644 index 0000000..f3caab3 --- /dev/null +++ b/tests/test_pdk_si220/test_settings_coupler_ring_sc_.yml @@ -0,0 +1,10 @@ +info: {} +name: coupler_ring_sc_G0p2_R5_908c8ce4 +settings: + bend: bend_euler_sc + cross_section: xs_sc + gap: 0.2 + length_extension: 3 + length_x: 4 + radius: 5 + straight: straight_sc diff --git a/tests/test_pdk_si220/test_settings_coupler_ring_so_.yml b/tests/test_pdk_si220/test_settings_coupler_ring_so_.yml new file mode 100644 index 0000000..969d324 --- /dev/null +++ b/tests/test_pdk_si220/test_settings_coupler_ring_so_.yml @@ -0,0 +1,10 @@ +info: {} +name: coupler_ring_sc_G0p2_R5_a0a9c63e +settings: + bend: bend_euler_so + cross_section: xs_so + gap: 0.2 + length_extension: 3 + length_x: 4 + radius: 5 + straight: straight_so diff --git a/tests/test_pdk_si220/test_settings_mzi_.yml b/tests/test_pdk_si220/test_settings_mzi_.yml index ac4857d..ab69a73 100644 --- a/tests/test_pdk_si220/test_settings_mzi_.yml +++ b/tests/test_pdk_si220/test_settings_mzi_.yml @@ -1,7 +1,7 @@ info: {} -name: mzi_DL10_Bbend_sc_Sstra_2b181802 +name: mzi_DL10_Bbend_euler_sc_1d19725f settings: - bend: bend_sc + bend: bend_euler_sc combiner: mmi2x2_sc cross_section: xs_sc delta_length: 10 diff --git a/tests/test_pdk_si220/test_settings_mzi_rc_.yml b/tests/test_pdk_si220/test_settings_mzi_rc_.yml index 9283d8e..7b00b73 100644 --- a/tests/test_pdk_si220/test_settings_mzi_rc_.yml +++ b/tests/test_pdk_si220/test_settings_mzi_rc_.yml @@ -1,7 +1,7 @@ info: {} -name: mzi_DL10_Bbend_rc_Sstra_02ff743c +name: mzi_DL10_Bbend_euler_rc_de758620 settings: - bend: bend_rc + bend: bend_euler_rc combiner: mmi2x2_rc cross_section: xs_rc delta_length: 10 diff --git a/tests/test_pdk_si220/test_settings_mzi_ro_.yml b/tests/test_pdk_si220/test_settings_mzi_ro_.yml index aad7371..052d6df 100644 --- a/tests/test_pdk_si220/test_settings_mzi_ro_.yml +++ b/tests/test_pdk_si220/test_settings_mzi_ro_.yml @@ -1,7 +1,7 @@ info: {} -name: mzi_DL10_Bbend_ro_Sstra_bf2966fd +name: mzi_DL10_Bbend_euler_ro_29a93d64 settings: - bend: bend_ro + bend: bend_euler_ro combiner: mmi2x2_ro cross_section: xs_ro delta_length: 10 diff --git a/tests/test_pdk_si220/test_settings_mzi_sc_.yml b/tests/test_pdk_si220/test_settings_mzi_sc_.yml index ac4857d..ab69a73 100644 --- a/tests/test_pdk_si220/test_settings_mzi_sc_.yml +++ b/tests/test_pdk_si220/test_settings_mzi_sc_.yml @@ -1,7 +1,7 @@ info: {} -name: mzi_DL10_Bbend_sc_Sstra_2b181802 +name: mzi_DL10_Bbend_euler_sc_1d19725f settings: - bend: bend_sc + bend: bend_euler_sc combiner: mmi2x2_sc cross_section: xs_sc delta_length: 10 diff --git a/tests/test_pdk_si220/test_settings_mzi_so_.yml b/tests/test_pdk_si220/test_settings_mzi_so_.yml index 0ca81a7..14adee1 100644 --- a/tests/test_pdk_si220/test_settings_mzi_so_.yml +++ b/tests/test_pdk_si220/test_settings_mzi_so_.yml @@ -1,7 +1,7 @@ info: {} -name: mzi_DL10_Bbend_so_Sstra_d6395d3d +name: mzi_DL10_Bbend_euler_so_1dd08374 settings: - bend: bend_so + bend: bend_euler_so combiner: mmi2x2_so cross_section: xs_so delta_length: 10 diff --git a/tests/test_pdk_si220/test_settings_ring_single_sc_.yml b/tests/test_pdk_si220/test_settings_ring_single_sc_.yml new file mode 100644 index 0000000..996776c --- /dev/null +++ b/tests/test_pdk_si220/test_settings_ring_single_sc_.yml @@ -0,0 +1,11 @@ +info: {} +name: ring_single_sc_G0p2_R10_a4ddd2ab +settings: + bend: bend_euler_sc + coupler_ring: coupler_ring_sc + cross_section: xs_sc + gap: 0.2 + length_x: 4 + length_y: 0.6 + radius: 10 + straight: straight_sc diff --git a/tests/test_pdk_si220/test_settings_ring_single_so_.yml b/tests/test_pdk_si220/test_settings_ring_single_so_.yml new file mode 100644 index 0000000..d3b9e3d --- /dev/null +++ b/tests/test_pdk_si220/test_settings_ring_single_so_.yml @@ -0,0 +1,11 @@ +info: {} +name: ring_single_sc_G0p2_R10_7d576c4a +settings: + bend: bend_euler_so + coupler_ring: coupler_ring_so + cross_section: xs_so + gap: 0.2 + length_x: 4 + length_y: 0.6 + radius: 10 + straight: straight_so diff --git a/tests/test_pdk_si220/test_settings_straight_heater_metal_.yml b/tests/test_pdk_si220/test_settings_straight_heater_metal_.yml new file mode 100644 index 0000000..c2c9c9e --- /dev/null +++ b/tests/test_pdk_si220/test_settings_straight_heater_metal_.yml @@ -0,0 +1,18 @@ +info: + resistance: 0 +name: straight_heater_metal_L_aebc074c +settings: + cross_section: xs_sc + cross_section_heater: heater_metal + cross_section_heater_undercut: xs_sc_heater + cross_section_waveguide_heater: xs_sc_heater + heater_taper_length: 5 + length: 320 + length_straight: 0.1 + length_straight_input: 15 + length_undercut: 30 + length_undercut_spacing: 6 + port_orientation1: 180 + port_orientation2: 0 + via_stack: via_stack_heater_mtop + with_undercut: true diff --git a/tests/test_pdk_si220/test_settings_straight_heater_metal_sc_.yml b/tests/test_pdk_si220/test_settings_straight_heater_metal_sc_.yml new file mode 100644 index 0000000..d083c73 --- /dev/null +++ b/tests/test_pdk_si220/test_settings_straight_heater_metal_sc_.yml @@ -0,0 +1,18 @@ +info: + resistance: 0 +name: straight_heater_metal_s_0352bf83 +settings: + cross_section: xs_sc + cross_section_heater: heater_metal + cross_section_heater_undercut: xs_sc_heater + cross_section_waveguide_heater: xs_sc_heater + heater_taper_length: 5 + length: 320 + length_straight: 0.1 + length_straight_input: 15 + length_undercut: 30 + length_undercut_spacing: 6 + port_orientation1: 180 + port_orientation2: 0 + via_stack: via_stack_heater_mtop + with_undercut: true diff --git a/tests/test_pdk_si220/test_settings_straight_heater_metal_so_.yml b/tests/test_pdk_si220/test_settings_straight_heater_metal_so_.yml new file mode 100644 index 0000000..58dc4b3 --- /dev/null +++ b/tests/test_pdk_si220/test_settings_straight_heater_metal_so_.yml @@ -0,0 +1,18 @@ +info: + resistance: 0 +name: straight_heater_metal_s_815de6a5 +settings: + cross_section: xs_so + cross_section_heater: heater_metal + cross_section_heater_undercut: xs_so_heater + cross_section_waveguide_heater: xs_so_heater + heater_taper_length: 5 + length: 320 + length_straight: 0.1 + length_straight_input: 15 + length_undercut: 30 + length_undercut_spacing: 6 + port_orientation1: 180 + port_orientation2: 0 + via_stack: via_stack_heater_mtop + with_undercut: true diff --git a/tests/test_pdk_si220/test_settings_via_stack_heater_mtop_.yml b/tests/test_pdk_si220/test_settings_via_stack_heater_mtop_.yml new file mode 100644 index 0000000..a832ec9 --- /dev/null +++ b/tests/test_pdk_si220/test_settings_via_stack_heater_mtop_.yml @@ -0,0 +1,8 @@ +info: + xsize: 10 + ysize: 10 +name: via_stack_heater_mtop_S10_10 +settings: + size: + - 10 + - 10 diff --git a/tests/test_pdk_si500/test_settings_bend_euler_rc_.yml b/tests/test_pdk_si500/test_settings_bend_euler_rc_.yml new file mode 100644 index 0000000..62f4ba9 --- /dev/null +++ b/tests/test_pdk_si500/test_settings_bend_euler_rc_.yml @@ -0,0 +1,16 @@ +info: + dy: 25 + length: 41.592 + min_bend_radius: 17.652 + radius: 25 + route_info_length: 41.592 + route_info_min_bend_radius: 17.652 + route_info_n_bend_90: 1 + route_info_type: xs_rc + route_info_weight: 41.592 + route_info_xs_rc_length: 41.592 +name: bend_euler_RNone_A90_P0_ddb8ac70 +settings: + angle: 90 + cross_section: xs_rc + p: 0.5 diff --git a/tests/test_pdk_si500/test_settings_bend_euler_ro_.yml b/tests/test_pdk_si500/test_settings_bend_euler_ro_.yml new file mode 100644 index 0000000..66727c4 --- /dev/null +++ b/tests/test_pdk_si500/test_settings_bend_euler_ro_.yml @@ -0,0 +1,16 @@ +info: + dy: 25 + length: 41.592 + min_bend_radius: 17.652 + radius: 25 + route_info_length: 41.592 + route_info_min_bend_radius: 17.652 + route_info_n_bend_90: 1 + route_info_type: xs_ro + route_info_weight: 41.592 + route_info_xs_ro_length: 41.592 +name: bend_euler_RNone_A90_P0_3e63eab5 +settings: + angle: 90 + cross_section: xs_ro + p: 0.5 diff --git a/tests/test_pdk_si500/test_settings_mzi_.yml b/tests/test_pdk_si500/test_settings_mzi_.yml index 9283d8e..7b00b73 100644 --- a/tests/test_pdk_si500/test_settings_mzi_.yml +++ b/tests/test_pdk_si500/test_settings_mzi_.yml @@ -1,7 +1,7 @@ info: {} -name: mzi_DL10_Bbend_rc_Sstra_02ff743c +name: mzi_DL10_Bbend_euler_rc_de758620 settings: - bend: bend_rc + bend: bend_euler_rc combiner: mmi2x2_rc cross_section: xs_rc delta_length: 10 diff --git a/tests/test_pdk_si500/test_settings_mzi_rc_.yml b/tests/test_pdk_si500/test_settings_mzi_rc_.yml index 9283d8e..7b00b73 100644 --- a/tests/test_pdk_si500/test_settings_mzi_rc_.yml +++ b/tests/test_pdk_si500/test_settings_mzi_rc_.yml @@ -1,7 +1,7 @@ info: {} -name: mzi_DL10_Bbend_rc_Sstra_02ff743c +name: mzi_DL10_Bbend_euler_rc_de758620 settings: - bend: bend_rc + bend: bend_euler_rc combiner: mmi2x2_rc cross_section: xs_rc delta_length: 10 diff --git a/tests/test_pdk_si500/test_settings_mzi_ro_.yml b/tests/test_pdk_si500/test_settings_mzi_ro_.yml index aad7371..052d6df 100644 --- a/tests/test_pdk_si500/test_settings_mzi_ro_.yml +++ b/tests/test_pdk_si500/test_settings_mzi_ro_.yml @@ -1,7 +1,7 @@ info: {} -name: mzi_DL10_Bbend_ro_Sstra_bf2966fd +name: mzi_DL10_Bbend_euler_ro_29a93d64 settings: - bend: bend_ro + bend: bend_euler_ro combiner: mmi2x2_ro cross_section: xs_ro delta_length: 10