diff --git a/.github/write_components_plot.py b/.github/write_components_plot.py index 111ec7a..b2dff03 100644 --- a/.github/write_components_plot.py +++ b/.github/write_components_plot.py @@ -1,7 +1,7 @@ import inspect -from cspdk import _cells as cells -from cspdk.config import PATH +from cspdk.si220 import _cells as cells +from cspdk.si220.config import PATH filepath = PATH.repo / "docs" / "cells.rst" @@ -15,10 +15,7 @@ f.write( """ -Here are the components available in the PDK - - -Cells +Cells Si220 ============================= """ ) @@ -43,7 +40,7 @@ {name} ---------------------------------------------------- -.. autofunction:: cspdk.cells.{name} +.. autofunction:: cspdk.si220.cells.{name} """ ) @@ -54,14 +51,14 @@ {name} ---------------------------------------------------- -.. autofunction:: cspdk.cells.{name} +.. autofunction:: cspdk.si220.cells.{name} .. plot:: :include-source: import cspdk - c = cspdk.cells.{name}({kwargs}) + c = cspdk.si220.cells.{name}({kwargs}) c.plot() """ diff --git a/cspdk/__init__.py b/cspdk/__init__.py index 4ee87eb..49e0fc1 100644 --- a/cspdk/__init__.py +++ b/cspdk/__init__.py @@ -1,42 +1 @@ -from gdsfactory.cross_section import get_cross_sections -from gdsfactory.get_factories import get_cells -from gdsfactory.pdk import Pdk - -from cspdk import cells, config, tech -from cspdk.cells import _bend, _straight, _taper -from cspdk.config import PATH -from cspdk.models import get_models -from cspdk.tech import LAYER, LAYER_STACK, LAYER_VIEWS, routing_strategies - -_models = get_models() -_cells = get_cells(cells) -_cells.update( - { - "_straight": _straight, - "_bend": _bend, - "_taper": _taper, - } -) -_cross_sections = get_cross_sections(tech) -PDK = Pdk( - name="cornerstone", - cells=_cells, - cross_sections=_cross_sections, - layers=dict(LAYER), - layer_stack=LAYER_STACK, - layer_views=LAYER_VIEWS, - models=_models, - routing_strategies=routing_strategies, -) -PDK.activate() - -__all__ = [ - "LAYER", - "LAYER_STACK", - "LAYER_VIEWS", - "PATH", - "cells", - "config", - "tech", -] __version__ = "0.7.0" diff --git a/cspdk/si220/__init__.py b/cspdk/si220/__init__.py new file mode 100644 index 0000000..4e17f47 --- /dev/null +++ b/cspdk/si220/__init__.py @@ -0,0 +1,41 @@ +from gdsfactory.cross_section import get_cross_sections +from gdsfactory.get_factories import get_cells +from gdsfactory.pdk import Pdk + +from cspdk.si220 import cells, config, tech +from cspdk.si220.cells import _bend, _straight, _taper +from cspdk.si220.config import PATH +from cspdk.si220.models import get_models +from cspdk.si220.tech import LAYER, LAYER_STACK, LAYER_VIEWS, routing_strategies + +_models = get_models() +_cells = get_cells(cells) +_cells.update( + { + "_straight": _straight, + "_bend": _bend, + "_taper": _taper, + } +) +_cross_sections = get_cross_sections(tech) +PDK = Pdk( + name="cornerstone_si220", + cells=_cells, + cross_sections=_cross_sections, + layers=dict(LAYER), + layer_stack=LAYER_STACK, + layer_views=LAYER_VIEWS, + models=_models, + routing_strategies=routing_strategies, +) +PDK.activate() + +__all__ = [ + "LAYER", + "LAYER_STACK", + "LAYER_VIEWS", + "PATH", + "cells", + "config", + "tech", +] diff --git a/cspdk/cells.py b/cspdk/si220/cells.py similarity index 78% rename from cspdk/cells.py rename to cspdk/si220/cells.py index 6f073fc..c05d854 100644 --- a/cspdk/cells.py +++ b/cspdk/si220/cells.py @@ -4,8 +4,8 @@ import gdsfactory as gf from gdsfactory.typings import ComponentSpec, CrossSectionSpec, LayerSpec -from cspdk.config import PATH -from cspdk.tech import LAYER, xs_nc, xs_no, xs_rc, xs_ro, xs_sc, xs_so +from cspdk.si220.config import PATH +from cspdk.si220.tech import LAYER, xs_rc, xs_ro, xs_sc, xs_so ################ # Straights @@ -95,42 +95,6 @@ def straight_ro(length: float = 10.0, **kwargs) -> gf.Component: ) -@gf.cell -def straight_nc(length: float = 10.0, **kwargs) -> gf.Component: - """Straight waveguide in nitride, c-band. - - Args: - length (float, optional): The length of the waveguide. Defaults to 10.0. - - Returns: - gf.Component: the component - """ - if "cross_section" not in kwargs: - kwargs["cross_section"] = "xs_nc" - return _straight( - length=length, - **kwargs, - ) - - -@gf.cell -def straight_no(length: float = 10.0, **kwargs) -> gf.Component: - """Straight waveguide in nitride, o-band. - - Args: - length (float, optional): The length of the waveguide. Defaults to 10.0. - - Returns: - gf.Component: the component - """ - if "cross_section" not in kwargs: - kwargs["cross_section"] = "xs_no" - return _straight( - length=length, - **kwargs, - ) - - ################ # Bends ################ @@ -286,50 +250,6 @@ def bend_ro( ) -@gf.cell -def bend_nc( - radius: float = _float(xs_nc.radius), angle: float = 90.0, **kwargs -) -> gf.Component: - """An euler bend in nitride, c-band. - - Args: - radius (float, optional): the radius of the bend. Defaults to the PDK's default value for that cross-section. - angle (float, optional): the angle of the bend. Defaults to 90.0. - - Returns: - gf.Component: the component - """ - if "cross_section" not in kwargs: - kwargs["cross_section"] = "xs_nc" - return _bend( - radius=radius, - angle=angle, - **kwargs, - ) - - -@gf.cell -def bend_no( - radius: float = _float(xs_no.radius), angle: float = 90.0, **kwargs -) -> gf.Component: - """An euler bend in nitride, o-band. - - Args: - radius (float, optional): the radius of the bend. Defaults to the PDK's default value for that cross-section. - angle (float, optional): the angle of the bend. Defaults to 90.0. - - Returns: - gf.Component: the component - """ - if "cross_section" not in kwargs: - kwargs["cross_section"] = "xs_no" - return _bend( - radius=radius, - angle=angle, - **kwargs, - ) - - ################ # Transitions ################ @@ -450,54 +370,6 @@ def taper_ro( return _taper(length=length, width1=width1, width2=width2, port=port, **kwargs) -@gf.cell -def taper_nc( - length: float = 10.0, - width1: float = 0.5, - width2: float | None = None, - port: gf.Port | None = None, - **kwargs, -) -> gf.Component: - """A width taper in nitride, c-band. - - Args: - length (float, optional): the length of the taper, in um. Defaults to 10.0. - width1 (float, optional): the width of the taper input, in um. Defaults to 0.5. - width2 (float | None, optional): the width of the taper output, in um. Defaults to None. - port (gf.Port | None, optional): if given, starts from the port's width and transitions to width1. Defaults to None. - - Returns: - gf.Component: the component - """ - if "cross_section" not in kwargs: - kwargs["cross_section"] = "xs_nc" - return _taper(length=length, width1=width1, width2=width2, port=port, **kwargs) - - -@gf.cell -def taper_no( - length: float = 10.0, - width1: float = 0.5, - width2: float | None = None, - port: gf.Port | None = None, - **kwargs, -) -> gf.Component: - """A width taper in nitride, o-band. - - Args: - length (float, optional): the length of the taper, in um. Defaults to 10.0. - width1 (float, optional): the width of the taper input, in um. Defaults to 0.5. - width2 (float | None, optional): the width of the taper output, in um. Defaults to None. - port (gf.Port | None, optional): if given, starts from the port's width and transitions to width1. Defaults to None. - - Returns: - gf.Component: the component - """ - if "cross_section" not in kwargs: - kwargs["cross_section"] = "xs_no" - return _taper(length=length, width1=width1, width2=width2, port=port, **kwargs) - - @gf.cell def _taper_cross_section( length: float = 10, @@ -746,92 +618,6 @@ def mmi2x2_so(**kwargs) -> gf.Component: ) -################ -# Nitride MMIs oband -################ - - -@gf.cell -def mmi1x2_no(**kwargs) -> gf.Component: - """A 1x2 MMI in nitride, o-band. - - Returns: - gf.Component: the component - """ - if "cross_section" not in kwargs: - kwargs["cross_section"] = "xs_no" - return _mmi1x2( - width_mmi=12.0, - length_taper=50.0, - width_taper=5.5, - gap_mmi=0.4, - length_mmi=42.0, - **kwargs, - ) - - -@gf.cell -def mmi2x2_no(**kwargs) -> gf.Component: - """A 2x2 MMI in nitride, o-band. - - Returns: - gf.Component: the component - """ - if "cross_section" not in kwargs: - kwargs["cross_section"] = "xs_no" - return _mmi2x2( - width_mmi=12.0, - length_taper=50.0, - width_taper=5.5, - gap_mmi=0.4, - length_mmi=126.0, - **kwargs, - ) - - -################ -# Nitride MMIs cband -################ - - -@gf.cell -def mmi1x2_nc(**kwargs) -> gf.Component: - """A 1x2 MMI in nitride, c-band. - - Returns: - gf.Component: the component - """ - if "cross_section" not in kwargs: - kwargs["cross_section"] = "xs_nc" - return _mmi1x2( - width_mmi=12.0, - length_taper=50.0, - width_taper=5.5, - gap_mmi=0.4, - length_mmi=64.7, - **kwargs, - ) - - -@gf.cell -def mmi2x2_nc(**kwargs) -> gf.Component: - """A 2x2 MMI in nitride, c-band. - - Returns: - gf.Component: the component - """ - if "cross_section" not in kwargs: - kwargs["cross_section"] = "xs_nc" - return _mmi2x2( - width_mmi=12.0, - length_taper=50.0, - width_taper=5.5, - gap_mmi=0.4, - length_mmi=232.0, - **kwargs, - ) - - ############################## # Evanescent couplers ############################## @@ -1010,66 +796,6 @@ def coupler_ro( ) -@gf.cell -def coupler_nc( - gap: float = 0.4, - length: float = 20.0, - dx: float = 10.0, - dy: float = 4.0, - **kwargs, -) -> gf.Component: - """A symmetric coupler in nitride, c-band. - - Args: - gap (float, optional): the coupling gap, in um. Defaults to 0.4. - length (float, optional): the length of the coupling section, in um. Defaults to 20.0. - dx (float, optional): the port-to-port horizontal spacing. Defaults to 10.0. - dy (float, optional): the port-to-port vertical spacing. Defaults to 4.0. - - Returns: - gf.Component: the component - """ - if "cross_section" not in kwargs: - kwargs["cross_section"] = "xs_nc" - return _coupler( - gap=gap, - length=length, - dx=dx, - dy=dy, - **kwargs, - ) - - -@gf.cell -def coupler_no( - gap: float = 0.4, - length: float = 20.0, - dx: float = 10.0, - dy: float = 4.0, - **kwargs, -) -> gf.Component: - """A symmetric coupler in nitride, o-band. - - Args: - gap (float, optional): the coupling gap, in um. Defaults to 0.4. - length (float, optional): the length of the coupling section, in um. Defaults to 20.0. - dx (float, optional): the port-to-port horizontal spacing. Defaults to 10.0. - dy (float, optional): the port-to-port vertical spacing. Defaults to 4.0. - - Returns: - gf.Component: the component - """ - if "cross_section" not in kwargs: - kwargs["cross_section"] = "xs_no" - return _coupler( - gap=gap, - length=length, - dx=dx, - dy=dy, - **kwargs, - ) - - ############################## # grating couplers Rectangular ############################## @@ -1168,42 +894,6 @@ def gc_rectangular_rc() -> gf.Component: ) -@gf.cell -def gc_rectangular_nc() -> gf.Component: - """A rectangular grating coupler in nitride, c-band. - - Returns: - gf.Component: the component - """ - return _gc_rectangular( - period=0.66, - cross_section="xs_nc", - length_taper=200, - fiber_angle=20, - layer_grating=LAYER.NITRIDE_ETCH, - layer_slab=LAYER.NITRIDE, - slab_offset=0, - ) - - -@gf.cell -def gc_rectangular_no() -> gf.Component: - """A rectangular grating coupler in nitride, o-band. - - Returns: - gf.Component: the component - """ - return _gc_rectangular( - period=0.964, - cross_section="xs_no", - length_taper=200, - fiber_angle=20, - layer_grating=LAYER.NITRIDE_ETCH, - layer_slab=LAYER.NITRIDE, - slab_offset=0, - ) - - ############################## # grating couplers elliptical ############################## @@ -1479,74 +1169,6 @@ def mzi_ro( ) -@gf.cell -def mzi_nc( - delta_length: float = 10.0, - length_y: float = 2.0, - length_x: float = 0.1, - add_electrical_ports_bot: bool = True, - **kwargs, -) -> gf.Component: - """A Mach-Zehnder Interferometer (MZI) in nitride, c-band. - - Args: - delta_length (float, optional): the length differential between the two arms. Defaults to 10.0. - length_y (float, optional): the common vertical length, in um. Defaults to 2.0. - length_x (float, optional): the common horizontal length, in um. Defaults to 0.1. - add_electrical_ports_bot (bool, optional): if true, adds electrical ports to the bottom. Defaults to True. - - Returns: - gf.Component: the component - """ - if "cross_section" not in kwargs: - kwargs["cross_section"] = "xs_nc" - return _mzi( - delta_length=delta_length, - length_y=length_y, - length_x=length_x, - add_electrical_ports_bot=add_electrical_ports_bot, - straight=straight_nc, - bend=bend_nc, - combiner=mmi1x2_nc, - splitter=mmi1x2_nc, - **kwargs, - ) - - -@gf.cell -def mzi_no( - delta_length: float = 10.0, - length_y: float = 2.0, - length_x: float = 0.1, - add_electrical_ports_bot: bool = True, - **kwargs, -) -> gf.Component: - """A Mach-Zehnder Interferometer (MZI) in nitride, o-band. - - Args: - delta_length (float, optional): the length differential between the two arms. Defaults to 10.0. - length_y (float, optional): the common vertical length, in um. Defaults to 2.0. - length_x (float, optional): the common horizontal length, in um. Defaults to 0.1. - add_electrical_ports_bot (bool, optional): if true, adds electrical ports to the bottom. Defaults to True. - - Returns: - gf.Component: the component - """ - if "cross_section" not in kwargs: - kwargs["cross_section"] = "xs_no" - return _mzi( - delta_length=delta_length, - length_y=length_y, - length_x=length_x, - add_electrical_ports_bot=add_electrical_ports_bot, - bend=bend_no, - straight=straight_no, - combiner=mmi1x2_no, - splitter=mmi1x2_no, - **kwargs, - ) - - ################ # Packaging ################ @@ -1628,8 +1250,8 @@ def grating_coupler_array( with_loopback: bool = False, bend: ComponentSpec = _bend, grating_coupler_spacing: float = 0.0, - grating_coupler: ComponentSpec = gc_rectangular_nc, - cross_section: CrossSectionSpec = "xs_nc", + grating_coupler: ComponentSpec = gc_rectangular_sc, + cross_section: CrossSectionSpec = "xs_sc", ) -> gf.Component: """An array of grating couplers. @@ -1641,8 +1263,8 @@ def grating_coupler_array( with_loopback (bool, optional): if True, adds a loopback. Defaults to False. bend (ComponentSpec, optional): the bend to be used for the loopback. Defaults to _bend. grating_coupler_spacing (float, optional): the spacing to be used in the loopback. Defaults to 0.0. - grating_coupler (ComponentSpec, optional): the grating coupler component to use. Defaults to gc_rectangular_nc. - cross_section (CrossSectionSpec, optional): the cross section to be used for routing in the loopback. Defaults to "xs_nc". + grating_coupler (ComponentSpec, optional): the grating coupler component to use. + cross_section (CrossSectionSpec, optional): the cross section to be used for routing in the loopback. Returns: gf.Component: the component @@ -1667,8 +1289,8 @@ def _die( npads: int = 31, grating_pitch: float = 250.0, pad_pitch: float = 300.0, - grating_coupler: ComponentSpec = gc_rectangular_nc, - cross_section: CrossSectionSpec = "xs_nc", + grating_coupler: ComponentSpec = gc_rectangular_sc, + cross_section: CrossSectionSpec = "xs_sc", pad: ComponentSpec = pad, ) -> gf.Component: c = gf.Component() @@ -1726,32 +1348,6 @@ def _die( return c -@gf.cell -def die_nc() -> gf.Component: - """The standard die template for nitride, c-band. This has 24 grating couplers, split evenly between the left and right sides of the chip and 62 electrical pads split between the top and bottom. - - Returns: - gf.Component: the component - """ - return _die( - grating_coupler=gc_rectangular_nc, - cross_section="xs_nc", - ) - - -@gf.cell -def die_no() -> gf.Component: - """The standard die template for nitride, o-band. This has 24 grating couplers, split evenly between the left and right sides of the chip and 62 electrical pads split between the top and bottom. - - Returns: - gf.Component: the component - """ - return _die( - grating_coupler=gc_rectangular_no, - cross_section="xs_no", - ) - - @gf.cell def die_sc() -> gf.Component: """The standard die template for strip, c-band. This has 24 grating couplers, split evenly between the left and right sides of the chip and 62 electrical pads split between the top and bottom. diff --git a/cspdk/config.py b/cspdk/si220/config.py similarity index 94% rename from cspdk/config.py rename to cspdk/si220/config.py index 0ef3f98..f3f88c7 100644 --- a/cspdk/config.py +++ b/cspdk/si220/config.py @@ -7,7 +7,7 @@ cwd = pathlib.Path.cwd() cwd_config = cwd / "config.yml" module = pathlib.Path(__file__).parent.absolute() -repo = module.parent +repo = module.parent.parent class Path: diff --git a/cspdk/gds/CORNERSTONE MPW SOI 220nm GDSII Template.gds b/cspdk/si220/gds/CORNERSTONE MPW SOI 220nm GDSII Template.gds similarity index 100% rename from cspdk/gds/CORNERSTONE MPW SOI 220nm GDSII Template.gds rename to cspdk/si220/gds/CORNERSTONE MPW SOI 220nm GDSII Template.gds diff --git a/cspdk/gds/Cell0_Institution_Name.gds b/cspdk/si220/gds/Cell0_Institution_Name.gds similarity index 100% rename from cspdk/gds/Cell0_Institution_Name.gds rename to cspdk/si220/gds/Cell0_Institution_Name.gds diff --git a/cspdk/gds/Cell0_SOI220_Full_1550nm_Packaging_Template.gds b/cspdk/si220/gds/Cell0_SOI220_Full_1550nm_Packaging_Template.gds similarity index 100% rename from cspdk/gds/Cell0_SOI220_Full_1550nm_Packaging_Template.gds rename to cspdk/si220/gds/Cell0_SOI220_Full_1550nm_Packaging_Template.gds diff --git a/cspdk/gds/Cell0_SOI_Full_Institution_Name.gds b/cspdk/si220/gds/Cell0_SOI_Full_Institution_Name.gds similarity index 100% rename from cspdk/gds/Cell0_SOI_Full_Institution_Name.gds rename to cspdk/si220/gds/Cell0_SOI_Full_Institution_Name.gds diff --git a/cspdk/gds/Cell0_SOI_Half_Institution_Name.gds b/cspdk/si220/gds/Cell0_SOI_Half_Institution_Name.gds similarity index 100% rename from cspdk/gds/Cell0_SOI_Half_Institution_Name.gds rename to cspdk/si220/gds/Cell0_SOI_Half_Institution_Name.gds diff --git a/cspdk/gds/Flip_Chip_Bonding_Example.gds b/cspdk/si220/gds/Flip_Chip_Bonding_Example.gds similarity index 100% rename from cspdk/gds/Flip_Chip_Bonding_Example.gds rename to cspdk/si220/gds/Flip_Chip_Bonding_Example.gds diff --git a/cspdk/gds/Heater.gds b/cspdk/si220/gds/Heater.gds similarity index 100% rename from cspdk/gds/Heater.gds rename to cspdk/si220/gds/Heater.gds diff --git a/cspdk/gds/Layer_Designations.gds b/cspdk/si220/gds/Layer_Designations.gds similarity index 100% rename from cspdk/gds/Layer_Designations.gds rename to cspdk/si220/gds/Layer_Designations.gds diff --git a/cspdk/gds/SOI220nm_1310nm_TE_RIB_2x1_MMI.gds b/cspdk/si220/gds/SOI220nm_1310nm_TE_RIB_2x1_MMI.gds similarity index 100% rename from cspdk/gds/SOI220nm_1310nm_TE_RIB_2x1_MMI.gds rename to cspdk/si220/gds/SOI220nm_1310nm_TE_RIB_2x1_MMI.gds diff --git a/cspdk/gds/SOI220nm_1310nm_TE_RIB_2x2_MMI.gds b/cspdk/si220/gds/SOI220nm_1310nm_TE_RIB_2x2_MMI.gds similarity index 100% rename from cspdk/gds/SOI220nm_1310nm_TE_RIB_2x2_MMI.gds rename to cspdk/si220/gds/SOI220nm_1310nm_TE_RIB_2x2_MMI.gds diff --git a/cspdk/gds/SOI220nm_1310nm_TE_RIB_90_Degree_Bend.gds b/cspdk/si220/gds/SOI220nm_1310nm_TE_RIB_90_Degree_Bend.gds similarity index 100% rename from cspdk/gds/SOI220nm_1310nm_TE_RIB_90_Degree_Bend.gds rename to cspdk/si220/gds/SOI220nm_1310nm_TE_RIB_90_Degree_Bend.gds diff --git a/cspdk/gds/SOI220nm_1310nm_TE_RIB_Grating_Coupler.gds b/cspdk/si220/gds/SOI220nm_1310nm_TE_RIB_Grating_Coupler.gds similarity index 100% rename from cspdk/gds/SOI220nm_1310nm_TE_RIB_Grating_Coupler.gds rename to cspdk/si220/gds/SOI220nm_1310nm_TE_RIB_Grating_Coupler.gds diff --git a/cspdk/gds/SOI220nm_1310nm_TE_RIB_Waveguide.gds b/cspdk/si220/gds/SOI220nm_1310nm_TE_RIB_Waveguide.gds similarity index 100% rename from cspdk/gds/SOI220nm_1310nm_TE_RIB_Waveguide.gds rename to cspdk/si220/gds/SOI220nm_1310nm_TE_RIB_Waveguide.gds diff --git a/cspdk/gds/SOI220nm_1310nm_TE_RIB_Waveguide_Crossing.gds b/cspdk/si220/gds/SOI220nm_1310nm_TE_RIB_Waveguide_Crossing.gds similarity index 100% rename from cspdk/gds/SOI220nm_1310nm_TE_RIB_Waveguide_Crossing.gds rename to cspdk/si220/gds/SOI220nm_1310nm_TE_RIB_Waveguide_Crossing.gds diff --git a/cspdk/gds/SOI220nm_1310nm_TE_STRIP_2x1_MMI.gds b/cspdk/si220/gds/SOI220nm_1310nm_TE_STRIP_2x1_MMI.gds similarity index 100% rename from cspdk/gds/SOI220nm_1310nm_TE_STRIP_2x1_MMI.gds rename to cspdk/si220/gds/SOI220nm_1310nm_TE_STRIP_2x1_MMI.gds diff --git a/cspdk/gds/SOI220nm_1310nm_TE_STRIP_2x2_MMI.gds b/cspdk/si220/gds/SOI220nm_1310nm_TE_STRIP_2x2_MMI.gds similarity index 100% rename from cspdk/gds/SOI220nm_1310nm_TE_STRIP_2x2_MMI.gds rename to cspdk/si220/gds/SOI220nm_1310nm_TE_STRIP_2x2_MMI.gds diff --git a/cspdk/gds/SOI220nm_1310nm_TE_STRIP_90_Degree_Bend.gds b/cspdk/si220/gds/SOI220nm_1310nm_TE_STRIP_90_Degree_Bend.gds similarity index 100% rename from cspdk/gds/SOI220nm_1310nm_TE_STRIP_90_Degree_Bend.gds rename to cspdk/si220/gds/SOI220nm_1310nm_TE_STRIP_90_Degree_Bend.gds diff --git a/cspdk/gds/SOI220nm_1310nm_TE_STRIP_Grating_Coupler.gds b/cspdk/si220/gds/SOI220nm_1310nm_TE_STRIP_Grating_Coupler.gds similarity index 100% rename from cspdk/gds/SOI220nm_1310nm_TE_STRIP_Grating_Coupler.gds rename to cspdk/si220/gds/SOI220nm_1310nm_TE_STRIP_Grating_Coupler.gds diff --git a/cspdk/gds/SOI220nm_1310nm_TE_STRIP_Waveguide.gds b/cspdk/si220/gds/SOI220nm_1310nm_TE_STRIP_Waveguide.gds similarity index 100% rename from cspdk/gds/SOI220nm_1310nm_TE_STRIP_Waveguide.gds rename to cspdk/si220/gds/SOI220nm_1310nm_TE_STRIP_Waveguide.gds diff --git a/cspdk/gds/SOI220nm_1310nm_TE_STRIP_Waveguide_Crossing.gds b/cspdk/si220/gds/SOI220nm_1310nm_TE_STRIP_Waveguide_Crossing.gds similarity index 100% rename from cspdk/gds/SOI220nm_1310nm_TE_STRIP_Waveguide_Crossing.gds rename to cspdk/si220/gds/SOI220nm_1310nm_TE_STRIP_Waveguide_Crossing.gds diff --git a/cspdk/gds/SOI220nm_1550nm_TE_RIB_2x1_MMI.gds b/cspdk/si220/gds/SOI220nm_1550nm_TE_RIB_2x1_MMI.gds similarity index 100% rename from cspdk/gds/SOI220nm_1550nm_TE_RIB_2x1_MMI.gds rename to cspdk/si220/gds/SOI220nm_1550nm_TE_RIB_2x1_MMI.gds diff --git a/cspdk/gds/SOI220nm_1550nm_TE_RIB_2x2_MMI.gds b/cspdk/si220/gds/SOI220nm_1550nm_TE_RIB_2x2_MMI.gds similarity index 100% rename from cspdk/gds/SOI220nm_1550nm_TE_RIB_2x2_MMI.gds rename to cspdk/si220/gds/SOI220nm_1550nm_TE_RIB_2x2_MMI.gds diff --git a/cspdk/gds/SOI220nm_1550nm_TE_RIB_90_Degree_Bend.gds b/cspdk/si220/gds/SOI220nm_1550nm_TE_RIB_90_Degree_Bend.gds similarity index 100% rename from cspdk/gds/SOI220nm_1550nm_TE_RIB_90_Degree_Bend.gds rename to cspdk/si220/gds/SOI220nm_1550nm_TE_RIB_90_Degree_Bend.gds diff --git a/cspdk/gds/SOI220nm_1550nm_TE_RIB_Grating_Coupler.gds b/cspdk/si220/gds/SOI220nm_1550nm_TE_RIB_Grating_Coupler.gds similarity index 100% rename from cspdk/gds/SOI220nm_1550nm_TE_RIB_Grating_Coupler.gds rename to cspdk/si220/gds/SOI220nm_1550nm_TE_RIB_Grating_Coupler.gds diff --git a/cspdk/gds/SOI220nm_1550nm_TE_RIB_Waveguide.gds b/cspdk/si220/gds/SOI220nm_1550nm_TE_RIB_Waveguide.gds similarity index 100% rename from cspdk/gds/SOI220nm_1550nm_TE_RIB_Waveguide.gds rename to cspdk/si220/gds/SOI220nm_1550nm_TE_RIB_Waveguide.gds diff --git a/cspdk/gds/SOI220nm_1550nm_TE_RIB_Waveguide_Crossing.gds b/cspdk/si220/gds/SOI220nm_1550nm_TE_RIB_Waveguide_Crossing.gds similarity index 100% rename from cspdk/gds/SOI220nm_1550nm_TE_RIB_Waveguide_Crossing.gds rename to cspdk/si220/gds/SOI220nm_1550nm_TE_RIB_Waveguide_Crossing.gds diff --git a/cspdk/gds/SOI220nm_1550nm_TE_STRIP_2x1_MMI.gds b/cspdk/si220/gds/SOI220nm_1550nm_TE_STRIP_2x1_MMI.gds similarity index 100% rename from cspdk/gds/SOI220nm_1550nm_TE_STRIP_2x1_MMI.gds rename to cspdk/si220/gds/SOI220nm_1550nm_TE_STRIP_2x1_MMI.gds diff --git a/cspdk/gds/SOI220nm_1550nm_TE_STRIP_2x2_MMI.gds b/cspdk/si220/gds/SOI220nm_1550nm_TE_STRIP_2x2_MMI.gds similarity index 100% rename from cspdk/gds/SOI220nm_1550nm_TE_STRIP_2x2_MMI.gds rename to cspdk/si220/gds/SOI220nm_1550nm_TE_STRIP_2x2_MMI.gds diff --git a/cspdk/gds/SOI220nm_1550nm_TE_STRIP_90_Degree_Bend.gds b/cspdk/si220/gds/SOI220nm_1550nm_TE_STRIP_90_Degree_Bend.gds similarity index 100% rename from cspdk/gds/SOI220nm_1550nm_TE_STRIP_90_Degree_Bend.gds rename to cspdk/si220/gds/SOI220nm_1550nm_TE_STRIP_90_Degree_Bend.gds diff --git a/cspdk/gds/SOI220nm_1550nm_TE_STRIP_Waveguide.gds b/cspdk/si220/gds/SOI220nm_1550nm_TE_STRIP_Waveguide.gds similarity index 100% rename from cspdk/gds/SOI220nm_1550nm_TE_STRIP_Waveguide.gds rename to cspdk/si220/gds/SOI220nm_1550nm_TE_STRIP_Waveguide.gds diff --git a/cspdk/gds/SOI220nm_1550nm_TE_STRIP_Waveguide_Crossing.gds b/cspdk/si220/gds/SOI220nm_1550nm_TE_STRIP_Waveguide_Crossing.gds similarity index 100% rename from cspdk/gds/SOI220nm_1550nm_TE_STRIP_Waveguide_Crossing.gds rename to cspdk/si220/gds/SOI220nm_1550nm_TE_STRIP_Waveguide_Crossing.gds diff --git a/cspdk/si220/import_pdk.py b/cspdk/si220/import_pdk.py new file mode 100644 index 0000000..2e3ad07 --- /dev/null +++ b/cspdk/si220/import_pdk.py @@ -0,0 +1,6 @@ +""" From a list of GDS files, generate a script to import the cells from a pdk """ + +import gdsfactory as gf + +if __name__ == "__main__": + print(gf.write_cells.get_import_gds_script("gds", module="cspdk.si220.cells")) diff --git a/cspdk/klayout/d25/Cornerstone.lyd25 b/cspdk/si220/klayout/d25/Cornerstone.lyd25 similarity index 100% rename from cspdk/klayout/d25/Cornerstone.lyd25 rename to cspdk/si220/klayout/d25/Cornerstone.lyd25 diff --git a/cspdk/si220/klayout/d25/Cornerstone_si220.lyd25 b/cspdk/si220/klayout/d25/Cornerstone_si220.lyd25 new file mode 100644 index 0000000..2796a20 --- /dev/null +++ b/cspdk/si220/klayout/d25/Cornerstone_si220.lyd25 @@ -0,0 +1,34 @@ + + + + + d25 + + + + false + false + 0 + + true + d25_scripts + tools_menu.d25.end + dsl + d25-dsl-xml + + +core = input(3, 0) +slab = input(5, 0) +heater = input(39, 0) +metal = input(41, 0) + + + +z(core, zstart: 0.0, zstop: 0.2, name: 'core: si 3/0', ) +z(slab, zstart: 0.0, zstop: 0.1, name: 'slab: si 5/0', ) +z(heater, zstart: 1.1, zstop: 1.8, name: 'heater: TiN 39/0', ) +z(metal, zstart: 1.8, zstop: 2.5, name: 'metal: Aluminum 41/0', ) + + + + diff --git a/cspdk/klayout/layers.lyp b/cspdk/si220/klayout/layers.lyp similarity index 81% rename from cspdk/klayout/layers.lyp rename to cspdk/si220/klayout/layers.lyp index 811824a..8f5bfae 100644 --- a/cspdk/klayout/layers.lyp +++ b/cspdk/si220/klayout/layers.lyp @@ -68,40 +68,6 @@ GRA 6/0 6/0@1 - - #ffa500 - #ffa500 - 0 - 0 - I3 - - true - true - false - - false - false - 0 - NITRIDE 203/0 - 203/0@1 - - - #0000ff - #0000ff - 0 - 0 - I3 - - true - true - true - 1 - false - false - 0 - NITRIDE_ETCH 204/0 - 204/0@1 - #ebc634 #ebc634 diff --git a/cspdk/klayout/tech.lyt b/cspdk/si220/klayout/tech.lyt similarity index 99% rename from cspdk/klayout/tech.lyt rename to cspdk/si220/klayout/tech.lyt index 35c2b1b..79e6616 100644 --- a/cspdk/klayout/tech.lyt +++ b/cspdk/si220/klayout/tech.lyt @@ -1,6 +1,6 @@ - Cornerstone + Cornerstone_si220 0.001 @@ -156,7 +156,7 @@ HEATER,HEATER,PAD - PAD='41/0' HEATER='39/0' + PAD='41/0' diff --git a/cspdk/layers.yaml b/cspdk/si220/layers.yaml similarity index 80% rename from cspdk/layers.yaml rename to cspdk/si220/layers.yaml index 848c959..ef535ea 100644 --- a/cspdk/layers.yaml +++ b/cspdk/si220/layers.yaml @@ -25,18 +25,6 @@ LayerViews: transparent: true width: 1 color: "blue" - NITRIDE: - layer: [203, 0] - layer_in_name: true - color: "orange" - hatch_pattern: coarsely dotted - NITRIDE_ETCH: - layer: [204, 0] - layer_in_name: true - hatch_pattern: coarsely dotted - transparent: true - width: 1 - color: "blue" HEATER: layer: [39, 0] layer_in_name: true diff --git a/cspdk/models.py b/cspdk/si220/models.py similarity index 100% rename from cspdk/models.py rename to cspdk/si220/models.py diff --git a/cspdk/samples/circuit_simulations.py b/cspdk/si220/samples/circuit_simulations_sc.py similarity index 86% rename from cspdk/samples/circuit_simulations.py rename to cspdk/si220/samples/circuit_simulations_sc.py index 4b53482..4f32dbc 100644 --- a/cspdk/samples/circuit_simulations.py +++ b/cspdk/si220/samples/circuit_simulations_sc.py @@ -2,11 +2,10 @@ import matplotlib.pyplot as plt import sax -import cspdk -from cspdk import PDK +from cspdk.si220 import PDK, cells if __name__ == "__main__": - c = cspdk.cells.mzi_sc(delta_length=100) + c = cells.mzi_sc(delta_length=100) c.show() c.plot_netlist() netlist = c.get_netlist() diff --git a/cspdk/samples/circuit_simulations_with_routing.py b/cspdk/si220/samples/circuit_simulations_sc_with_routing.py similarity index 77% rename from cspdk/samples/circuit_simulations_with_routing.py rename to cspdk/si220/samples/circuit_simulations_sc_with_routing.py index 6f40a05..0231f1c 100644 --- a/cspdk/samples/circuit_simulations_with_routing.py +++ b/cspdk/si220/samples/circuit_simulations_sc_with_routing.py @@ -3,15 +3,14 @@ import matplotlib.pyplot as plt import sax -import cspdk -from cspdk import PDK +from cspdk.si220 import PDK, cells, tech if __name__ == "__main__": c = gf.Component() - mzi1 = c << cspdk.cells.mzi_sc(delta_length=10) - mzi2 = c << cspdk.cells.mzi_sc(delta_length=100) + mzi1 = c << cells.mzi_sc(delta_length=10) + mzi2 = c << cells.mzi_sc(delta_length=100) mzi2.move((200, 200)) - route = cspdk.tech.get_route_sc(mzi1.ports["o2"], mzi2.ports["o1"]) + route = tech.get_route_sc(mzi1.ports["o2"], mzi2.ports["o1"]) c.add(route.references) c.add_port(name="o1", port=mzi1.ports["o1"]) c.add_port(name="o2", port=mzi2.ports["o2"]) diff --git a/cspdk/samples/component_from_yaml.py b/cspdk/si220/samples/component_from_yaml_sc.py similarity index 97% rename from cspdk/samples/component_from_yaml.py rename to cspdk/si220/samples/component_from_yaml_sc.py index ee02e5c..edc8c1f 100644 --- a/cspdk/samples/component_from_yaml.py +++ b/cspdk/si220/samples/component_from_yaml_sc.py @@ -1,6 +1,6 @@ sample_pads = """ name: pads -pdk: cspdk +pdk: cspdk.si220 instances: bl: diff --git a/cspdk/samples/get_route.py b/cspdk/si220/samples/get_route_sc.py similarity index 67% rename from cspdk/samples/get_route.py rename to cspdk/si220/samples/get_route_sc.py index 0473a92..6343354 100644 --- a/cspdk/samples/get_route.py +++ b/cspdk/si220/samples/get_route_sc.py @@ -2,15 +2,15 @@ import gdsfactory as gf -import cspdk +from cspdk.si220 import cells, tech if __name__ == "__main__": c = gf.Component("sample_connect") - mmi1 = c << cspdk.cells.mmi1x2_nc() - mmi2 = c << cspdk.cells.mmi1x2_nc() + mmi1 = c << cells.mmi1x2_sc() + mmi2 = c << cells.mmi1x2_sc() mmi2.move((500, 50)) - route = cspdk.tech.get_route_nc( + route = tech.get_route_sc( mmi1.ports["o3"], mmi2.ports["o1"], ) diff --git a/cspdk/samples/mode_solver_r.py b/cspdk/si220/samples/mode_solver_r.py similarity index 100% rename from cspdk/samples/mode_solver_r.py rename to cspdk/si220/samples/mode_solver_r.py diff --git a/cspdk/samples/mode_solver_s.py b/cspdk/si220/samples/mode_solver_s.py similarity index 100% rename from cspdk/samples/mode_solver_s.py rename to cspdk/si220/samples/mode_solver_s.py diff --git a/cspdk/tech.py b/cspdk/si220/tech.py similarity index 75% rename from cspdk/tech.py rename to cspdk/si220/tech.py index 9005025..a46271c 100644 --- a/cspdk/tech.py +++ b/cspdk/si220/tech.py @@ -9,7 +9,7 @@ from gdsfactory.technology import LayerLevel, LayerMap, LayerStack, LayerViews from gdsfactory.typings import ConnectivitySpec, Layer -from cspdk.config import PATH +from cspdk.si220.config import PATH nm = 1e-3 @@ -22,8 +22,6 @@ class LayerMapCornerstone(LayerMap): GRA: Layer = (6, 0) LBL: Layer = (100, 0) PAD: Layer = (41, 0) - NITRIDE: Layer = (203, 0) - NITRIDE_ETCH: Layer = (204, 0) # labels for gdsfactory LABEL_SETTINGS: Layer = (100, 0) @@ -36,7 +34,6 @@ class LayerMapCornerstone(LayerMap): def get_layer_stack( thickness_wg: float = 220 * nm, thickness_slab: float = 100 * nm, - thickness_nitride: float = 300 * nm, zmin_heater: float = 1.1, thickness_heater: float = 700 * nm, zmin_metal: float = 1.1, @@ -48,7 +45,7 @@ def get_layer_stack( Args: thickness_wg: waveguide thickness in um. - thickness_nitride: nitride thickness in um. + thickness_slab: slab thickness in um. zmin_heater: TiN heater. thickness_heater: TiN thickness. zmin_metal: metal thickness in um. @@ -75,24 +72,6 @@ def get_layer_stack( sidewall_angle=10, width_to_z=0.5, ), - nitride=LayerLevel( - layer=LAYER.NITRIDE, - thickness=thickness_nitride, - zmin=0.0, - material="sin", - info={"mesh_order": 2}, - sidewall_angle=10, - width_to_z=0.5, - ), - nitride_etch=LayerLevel( - layer=LAYER.NITRIDE_ETCH, - thickness=thickness_nitride, - zmin=0.0, - material="sin", - info={"mesh_order": 1}, - sidewall_angle=10, - width_to_z=0.5, - ), heater=LayerLevel( layer=LAYER.HEATER, thickness=thickness_heater, @@ -133,10 +112,6 @@ def get_layer_stack( radius_min=25, ) xf_ro = partial(xf_rc, width=0.40) - -xf_nc = partial(gf.cross_section.strip, layer=LAYER.NITRIDE, width=1.20, radius=25) -xf_no = partial(gf.cross_section.strip, layer=LAYER.NITRIDE, width=0.95, radius=25) - xf_rc_tip = partial( gf.cross_section.strip, sections=(gf.Section(width=0.2, layer="SLAB", name="slab"),), @@ -168,8 +143,6 @@ def get_layer_stack( xs_rc = xf_rc() xs_so = xf_so() xs_ro = xf_ro() -xs_nc = xf_nc() -xs_no = xf_no() xs_rc_tip = xf_rc_tip() xs_sc_heater_metal = xf_sc_heater_metal() @@ -194,20 +167,11 @@ def get_layer_stack( _settings_ro = dict( straight="straight_ro", cross_section=xs_ro, bend="bend_ro", taper="taper_ro" ) -_settings_nc = dict( - straight="straight_nc", cross_section=xs_nc, bend="bend_nc", taper="taper_nc" -) -_settings_no = dict( - straight="straight_no", cross_section=xs_no, bend="bend_no", taper="taper_no" -) - get_route_sc = partial(gf.routing.get_route, **_settings_sc) get_route_so = partial(gf.routing.get_route, **_settings_so) get_route_rc = partial(gf.routing.get_route, **_settings_rc) get_route_ro = partial(gf.routing.get_route, **_settings_ro) -get_route_nc = partial(gf.routing.get_route, **_settings_nc) -get_route_no = partial(gf.routing.get_route, **_settings_no) get_route_from_steps_sc = partial( gf.routing.get_route_from_steps, @@ -225,22 +189,11 @@ def get_layer_stack( gf.routing.get_route_from_steps, **_settings_ro, ) -get_route_from_steps_nc = partial( - gf.routing.get_route_from_steps, - **_settings_nc, -) -get_route_from_steps_no = partial( - gf.routing.get_route_from_steps, - **_settings_no, -) - get_bundle_sc = partial(gf.routing.get_bundle, **_settings_sc) get_bundle_so = partial(gf.routing.get_bundle, **_settings_so) get_bundle_rc = partial(gf.routing.get_bundle, **_settings_rc) get_bundle_ro = partial(gf.routing.get_bundle, **_settings_ro) -get_bundle_nc = partial(gf.routing.get_bundle, **_settings_nc) -get_bundle_no = partial(gf.routing.get_bundle, **_settings_no) get_bundle_from_steps_sc = partial( gf.routing.get_bundle_from_steps, @@ -258,14 +211,6 @@ def get_layer_stack( gf.routing.get_bundle_from_steps, **_settings_ro, ) -get_bundle_from_steps_nc = partial( - gf.routing.get_bundle_from_steps, - **_settings_nc, -) -get_bundle_from_steps_no = partial( - gf.routing.get_bundle_from_steps, - **_settings_no, -) routing_strategies = dict( @@ -273,26 +218,18 @@ def get_layer_stack( get_route_so=get_route_so, get_route_rc=get_route_rc, get_route_ro=get_route_ro, - get_route_nc=get_route_nc, - get_route_no=get_route_no, get_route_from_steps_sc=get_route_from_steps_sc, get_route_from_steps_so=get_route_from_steps_so, get_route_from_steps_rc=get_route_from_steps_rc, get_route_from_steps_ro=get_route_from_steps_ro, - get_route_from_steps_nc=get_route_from_steps_nc, - get_route_from_steps_no=get_route_from_steps_no, get_bundle_sc=get_bundle_sc, get_bundle_so=get_bundle_so, get_bundle_rc=get_bundle_rc, get_bundle_ro=get_bundle_ro, - get_bundle_nc=get_bundle_nc, - get_bundle_no=get_bundle_no, get_bundle_from_steps_sc=get_bundle_from_steps_sc, get_bundle_from_steps_so=get_bundle_from_steps_so, get_bundle_from_steps_rc=get_bundle_from_steps_rc, get_bundle_from_steps_ro=get_bundle_from_steps_ro, - get_bundle_from_steps_nc=get_bundle_from_steps_nc, - get_bundle_from_steps_no=get_bundle_from_steps_no, ) @@ -305,7 +242,7 @@ def get_layer_stack( connectivity = cast(list[ConnectivitySpec], [("HEATER", "HEATER", "PAD")]) t = KLayoutTechnology( - name="Cornerstone", + name="Cornerstone_si220", layer_map=dict(LAYER), layer_views=LAYER_VIEWS, layer_stack=LAYER_STACK, @@ -315,4 +252,3 @@ def get_layer_stack( if __name__ == "__main__": print(xs_rc.sections) - print(type(LAYER.NITRIDE), LAYER.NITRIDE) diff --git a/cspdk/sin300/__init__.py b/cspdk/sin300/__init__.py new file mode 100644 index 0000000..17f7cfb --- /dev/null +++ b/cspdk/sin300/__init__.py @@ -0,0 +1,41 @@ +from gdsfactory.cross_section import get_cross_sections +from gdsfactory.get_factories import get_cells +from gdsfactory.pdk import Pdk + +from cspdk.sin300 import cells, config, tech +from cspdk.sin300.cells import _bend, _straight, _taper +from cspdk.sin300.config import PATH +from cspdk.sin300.models import get_models +from cspdk.sin300.tech import LAYER, LAYER_STACK, LAYER_VIEWS, routing_strategies + +_models = get_models() +_cells = get_cells(cells) +_cells.update( + { + "_straight": _straight, + "_bend": _bend, + "_taper": _taper, + } +) +_cross_sections = get_cross_sections(tech) +PDK = Pdk( + name="cornerstone_sin300", + cells=_cells, + cross_sections=_cross_sections, + layers=dict(LAYER), + layer_stack=LAYER_STACK, + layer_views=LAYER_VIEWS, + models=_models, + routing_strategies=routing_strategies, +) +PDK.activate() + +__all__ = [ + "LAYER", + "LAYER_STACK", + "LAYER_VIEWS", + "PATH", + "cells", + "config", + "tech", +] diff --git a/cspdk/sin300/cells.py b/cspdk/sin300/cells.py new file mode 100644 index 0000000..9b24d2a --- /dev/null +++ b/cspdk/sin300/cells.py @@ -0,0 +1,1003 @@ +from functools import partial +from typing import Any + +import gdsfactory as gf +from gdsfactory.typings import ComponentSpec, CrossSectionSpec, LayerSpec + +from cspdk.sin300.config import PATH +from cspdk.sin300.tech import LAYER, xs_nc, xs_no + +################ +# Straights +################ + + +@gf.cell +def _straight( + length: float = 10.0, + cross_section: CrossSectionSpec = "xs_nc", +) -> gf.Component: + return gf.components.straight( + length=length, + cross_section=cross_section, + ) + + +@gf.cell +def straight_nc(length: float = 10.0, **kwargs) -> gf.Component: + """Straight waveguide in nitride, c-band. + + Args: + length (float, optional): The length of the waveguide. Defaults to 10.0. + + Returns: + gf.Component: the component + """ + if "cross_section" not in kwargs: + kwargs["cross_section"] = "xs_nc" + return _straight( + length=length, + **kwargs, + ) + + +@gf.cell +def straight_no(length: float = 10.0, **kwargs) -> gf.Component: + """Straight waveguide in nitride, o-band. + + Args: + length (float, optional): The length of the waveguide. Defaults to 10.0. + + Returns: + gf.Component: the component + """ + if "cross_section" not in kwargs: + kwargs["cross_section"] = "xs_no" + return _straight( + length=length, + **kwargs, + ) + + +################ +# Bends +################ + + +@gf.cell +def bend_s( + size: tuple[float, float] = (11.0, 1.8), + cross_section: CrossSectionSpec = "xs_nc", + **kwargs, +) -> gf.Component: + """An S-bend. + + Args: + size (tuple[float, float], optional): The size of the s-bend, in x and y. Defaults to (11.0, 1.8). + cross_section (CrossSectionSpec, optional): the bend cross-section. Defaults to "xs_nc" (nitride, c-band). + + Returns: + gf.Component: the component + """ + return gf.components.bend_s( + size=size, + cross_section=cross_section, + **kwargs, + ) + + +@gf.cell +def _bend( + radius: float | None = None, + angle: float = 90.0, + p: float = 0.5, + with_arc_floorplan: bool = True, + npoints: int | None = None, + direction: str = "ccw", + cross_section: CrossSectionSpec = "xs_nc", +) -> gf.Component: + return gf.components.bend_euler( + radius=radius, + angle=angle, + p=p, + with_arc_floorplan=with_arc_floorplan, + npoints=npoints, + direction=direction, + cross_section=cross_section, + ) + + +@gf.cell +def wire_corner( + cross_section: CrossSectionSpec = "xs_metal_routing", +) -> gf.Component: + """The bend equivalent for electrical wires, which is a simple corner. + + Args: + cross_section (CrossSectionSpec, optional): the bend cross-section. Defaults to "xs_metal_routing". + + Returns: + gf.Component: the component + """ + return gf.components.wire_corner(cross_section=cross_section) + + +def _float(x: Any) -> float: + return float(x) + + +@gf.cell +def bend_nc( + radius: float = _float(xs_nc.radius), angle: float = 90.0, **kwargs +) -> gf.Component: + """An euler bend in nitride, c-band. + + Args: + radius (float, optional): the radius of the bend. Defaults to the PDK's default value for that cross-section. + angle (float, optional): the angle of the bend. Defaults to 90.0. + + Returns: + gf.Component: the component + """ + if "cross_section" not in kwargs: + kwargs["cross_section"] = "xs_nc" + return _bend( + radius=radius, + angle=angle, + **kwargs, + ) + + +@gf.cell +def bend_no( + radius: float = _float(xs_no.radius), angle: float = 90.0, **kwargs +) -> gf.Component: + """An euler bend in nitride, o-band. + + Args: + radius (float, optional): the radius of the bend. Defaults to the PDK's default value for that cross-section. + angle (float, optional): the angle of the bend. Defaults to 90.0. + + Returns: + gf.Component: the component + """ + if "cross_section" not in kwargs: + kwargs["cross_section"] = "xs_no" + return _bend( + radius=radius, + angle=angle, + **kwargs, + ) + + +################ +# Transitions +################ + + +@gf.cell +def _taper( + length: float = 10.0, + width1: float = 0.5, + width2: float | None = None, + port: gf.Port | None = None, + cross_section: CrossSectionSpec = "xs_nc", + **kwargs, +) -> gf.Component: + return gf.components.taper( + length=length, + width1=width1, + width2=width2, + port=port, + cross_section=cross_section, + **kwargs, + ) + + +@gf.cell +def taper_nc( + length: float = 10.0, + width1: float = 0.5, + width2: float | None = None, + port: gf.Port | None = None, + **kwargs, +) -> gf.Component: + """A width taper in nitride, c-band. + + Args: + length (float, optional): the length of the taper, in um. Defaults to 10.0. + width1 (float, optional): the width of the taper input, in um. Defaults to 0.5. + width2 (float | None, optional): the width of the taper output, in um. Defaults to None. + port (gf.Port | None, optional): if given, starts from the port's width and transitions to width1. Defaults to None. + + Returns: + gf.Component: the component + """ + if "cross_section" not in kwargs: + kwargs["cross_section"] = "xs_nc" + return _taper(length=length, width1=width1, width2=width2, port=port, **kwargs) + + +@gf.cell +def taper_no( + length: float = 10.0, + width1: float = 0.5, + width2: float | None = None, + port: gf.Port | None = None, + **kwargs, +) -> gf.Component: + """A width taper in nitride, o-band. + + Args: + length (float, optional): the length of the taper, in um. Defaults to 10.0. + width1 (float, optional): the width of the taper input, in um. Defaults to 0.5. + width2 (float | None, optional): the width of the taper output, in um. Defaults to None. + port (gf.Port | None, optional): if given, starts from the port's width and transitions to width1. Defaults to None. + + Returns: + gf.Component: the component + """ + if "cross_section" not in kwargs: + kwargs["cross_section"] = "xs_no" + return _taper(length=length, width1=width1, width2=width2, port=port, **kwargs) + + +################ +# MMIs +################ + + +@gf.cell +def _mmi1x2( + width_mmi: float = 6.0, + width_taper: float = 1.5, + length_taper: float = 20.0, + cross_section: CrossSectionSpec = "xs_nc", + **kwargs, +) -> gf.Component: + return gf.components.mmi1x2( + width_mmi=width_mmi, + length_taper=length_taper, + width_taper=width_taper, + cross_section=cross_section, + **kwargs, + ) + + +@gf.cell +def _mmi2x2( + width_mmi: float = 6.0, + width_taper: float = 1.5, + length_taper: float = 20.0, + cross_section: CrossSectionSpec = "xs_nc", + **kwargs, +) -> gf.Component: + return gf.components.mmi2x2( + width_mmi=width_mmi, + length_taper=length_taper, + width_taper=width_taper, + cross_section=cross_section, + **kwargs, + ) + + +################ +# Nitride MMIs oband +################ + + +@gf.cell +def mmi1x2_no(**kwargs) -> gf.Component: + """A 1x2 MMI in nitride, o-band. + + Returns: + gf.Component: the component + """ + if "cross_section" not in kwargs: + kwargs["cross_section"] = "xs_no" + return _mmi1x2( + width_mmi=12.0, + length_taper=50.0, + width_taper=5.5, + gap_mmi=0.4, + length_mmi=42.0, + **kwargs, + ) + + +@gf.cell +def mmi2x2_no(**kwargs) -> gf.Component: + """A 2x2 MMI in nitride, o-band. + + Returns: + gf.Component: the component + """ + if "cross_section" not in kwargs: + kwargs["cross_section"] = "xs_no" + return _mmi2x2( + width_mmi=12.0, + length_taper=50.0, + width_taper=5.5, + gap_mmi=0.4, + length_mmi=126.0, + **kwargs, + ) + + +################ +# Nitride MMIs cband +################ + + +@gf.cell +def mmi1x2_nc(**kwargs) -> gf.Component: + """A 1x2 MMI in nitride, c-band. + + Returns: + gf.Component: the component + """ + if "cross_section" not in kwargs: + kwargs["cross_section"] = "xs_nc" + return _mmi1x2( + width_mmi=12.0, + length_taper=50.0, + width_taper=5.5, + gap_mmi=0.4, + length_mmi=64.7, + **kwargs, + ) + + +@gf.cell +def mmi2x2_nc(**kwargs) -> gf.Component: + """A 2x2 MMI in nitride, c-band. + + Returns: + gf.Component: the component + """ + if "cross_section" not in kwargs: + kwargs["cross_section"] = "xs_nc" + return _mmi2x2( + width_mmi=12.0, + length_taper=50.0, + width_taper=5.5, + gap_mmi=0.4, + length_mmi=232.0, + **kwargs, + ) + + +############################## +# Evanescent couplers +############################## + + +@gf.cell +def _coupler_symmetric( + bend: ComponentSpec = bend_s, + gap: float = 0.234, + dx: float = 10.0, + dy: float = 4.0, + cross_section: CrossSectionSpec = "xs_nc", +) -> gf.Component: + return gf.components.coupler_symmetric( + bend=bend, + gap=gap, + dx=dx, + dy=dy, + cross_section=cross_section, + ) + + +@gf.cell +def _coupler_straight( + length: float = 10.0, + gap: float = 0.4, + straight: ComponentSpec = _straight, + cross_section: CrossSectionSpec = "xs_nc", +) -> gf.Component: + return gf.components.coupler_straight( + length=length, + gap=gap, + straight=straight, + cross_section=cross_section, + ) + + +@gf.cell +def _coupler( + gap: float = 0.236, + length: float = 20.0, + coupler_symmetric: ComponentSpec = _coupler_symmetric, + coupler_straight: ComponentSpec = _coupler_straight, + dx: float = 10.0, + dy: float = 4.0, + cross_section: CrossSectionSpec = "xs_nc", +) -> gf.Component: + return gf.components.coupler( + gap=gap, + length=length, + coupler_symmetric=coupler_symmetric, + coupler_straight=coupler_straight, + dx=dx, + dy=dy, + cross_section=cross_section, + ) + + +@gf.cell +def coupler_nc( + gap: float = 0.4, + length: float = 20.0, + dx: float = 10.0, + dy: float = 4.0, + **kwargs, +) -> gf.Component: + """A symmetric coupler in nitride, c-band. + + Args: + gap (float, optional): the coupling gap, in um. Defaults to 0.4. + length (float, optional): the length of the coupling section, in um. Defaults to 20.0. + dx (float, optional): the port-to-port horizontal spacing. Defaults to 10.0. + dy (float, optional): the port-to-port vertical spacing. Defaults to 4.0. + + Returns: + gf.Component: the component + """ + if "cross_section" not in kwargs: + kwargs["cross_section"] = "xs_nc" + return _coupler( + gap=gap, + length=length, + dx=dx, + dy=dy, + **kwargs, + ) + + +@gf.cell +def coupler_no( + gap: float = 0.4, + length: float = 20.0, + dx: float = 10.0, + dy: float = 4.0, + **kwargs, +) -> gf.Component: + """A symmetric coupler in nitride, o-band. + + Args: + gap (float, optional): the coupling gap, in um. Defaults to 0.4. + length (float, optional): the length of the coupling section, in um. Defaults to 20.0. + dx (float, optional): the port-to-port horizontal spacing. Defaults to 10.0. + dy (float, optional): the port-to-port vertical spacing. Defaults to 4.0. + + Returns: + gf.Component: the component + """ + if "cross_section" not in kwargs: + kwargs["cross_section"] = "xs_no" + return _coupler( + gap=gap, + length=length, + dx=dx, + dy=dy, + **kwargs, + ) + + +############################## +# grating couplers Rectangular +############################## + + +@gf.cell +def _gc_rectangular( + n_periods: int = 30, + fill_factor: float = 0.5, + length_taper: float = 350.0, + fiber_angle: float = 10.0, + layer_grating: LayerSpec = LAYER.GRA, + layer_slab: LayerSpec = LAYER.WG, + slab_offset: float = 0.0, + period: float = 0.75, + width_grating: float = 11.0, + polarization: str = "te", + wavelength: float = 1.55, + taper: ComponentSpec = _taper, + slab_xmin: float = -1.0, + cross_section: CrossSectionSpec = "xs_nc", +) -> gf.Component: + c = gf.components.grating_coupler_rectangular( + n_periods=n_periods, + fill_factor=fill_factor, + length_taper=length_taper, + fiber_angle=fiber_angle, + layer_grating=layer_grating, + layer_slab=layer_slab, + slab_offset=slab_offset, + period=period, + width_grating=width_grating, + polarization=polarization, + wavelength=wavelength, + taper=taper, + slab_xmin=slab_xmin, + cross_section=cross_section, + ).flatten() + return c + + +@gf.cell +def gc_rectangular_nc() -> gf.Component: + """A rectangular grating coupler in nitride, c-band. + + Returns: + gf.Component: the component + """ + return _gc_rectangular( + period=0.66, + cross_section="xs_nc", + length_taper=200, + fiber_angle=20, + layer_grating=LAYER.NITRIDE_ETCH, + layer_slab=LAYER.NITRIDE, + slab_offset=0, + ) + + +@gf.cell +def gc_rectangular_no() -> gf.Component: + """A rectangular grating coupler in nitride, o-band. + + Returns: + gf.Component: the component + """ + return _gc_rectangular( + period=0.964, + cross_section="xs_no", + length_taper=200, + fiber_angle=20, + layer_grating=LAYER.NITRIDE_ETCH, + layer_slab=LAYER.NITRIDE, + slab_offset=0, + ) + + +############################## +# grating couplers elliptical +############################## + + +@gf.cell +def _gc_elliptical( + polarization: str = "te", + taper_length: float = 16.6, + taper_angle: float = 30.0, + trenches_extra_angle: float = 9.0, + wavelength: float = 1.53, + fiber_angle: float = 20.0, + grating_line_width: float = 0.343, + neff: float = 1.6, + ncladding: float = 1.443, + layer_trench: LayerSpec = LAYER.GRA, + p_start: int = 26, + n_periods: int = 30, + end_straight_length: float = 0.2, + cross_section: CrossSectionSpec = "xs_nc", +) -> gf.Component: + return gf.components.grating_coupler_elliptical_trenches( + polarization=polarization, + taper_length=taper_length, + taper_angle=taper_angle, + trenches_extra_angle=trenches_extra_angle, + wavelength=wavelength, + fiber_angle=fiber_angle, + grating_line_width=grating_line_width, + neff=neff, + ncladding=ncladding, + layer_trench=layer_trench, + p_start=p_start, + n_periods=n_periods, + end_straight_length=end_straight_length, + cross_section=cross_section, + ) + + +@gf.cell +def gc_elliptical_nc( + grating_line_width: float = 0.343, + fiber_angle: float = 20, + wavelength: float = 1.53, + neff: float = 1.6, + cross_section: CrossSectionSpec = "xs_nc", + **kwargs, +) -> gf.Component: + """An elliptical grating coupler in strip, c-band. + + Args: + grating_line_width: the grating line width, in um. Defaults to 0.343. + fiber_angle: the fiber angle, in degrees. Defaults to 15. + wavelength: the center wavelength, in um. Defaults to 1.53. + neff: the effective index of the waveguide. Defaults to 1.6. + cross_section: the cross-section. Defaults to "xs_nc". + + Returns: + gf.Component: the component + """ + return _gc_elliptical( + grating_line_width=grating_line_width, + fiber_angle=fiber_angle, + wavelength=wavelength, + cross_section=cross_section, + neff=neff, + **kwargs, + ) + + +@gf.cell +def gc_elliptical_no( + grating_line_width: float = 0.343, + fiber_angle: float = 20, + wavelength: float = 1.31, + neff: float = 1.63, + cross_section: CrossSectionSpec = "xs_no", + **kwargs, +) -> gf.Component: + """An elliptical grating coupler in strip, o-band. + + Args: + grating_line_width: the grating line width, in um. Defaults to 0.343. + fiber_angle: the fiber angle, in degrees. Defaults to 15. + wavelength: the center wavelength, in um. Defaults to 1.31. + neff: the effective index of the waveguide. Defaults to 1.63. + cross_section: the cross-section. Defaults to "xs_no". + + + Returns: + gf.Component: the component + """ + return _gc_elliptical( + grating_line_width=grating_line_width, + fiber_angle=fiber_angle, + wavelength=wavelength, + neff=neff, + cross_section=cross_section, + **kwargs, + ) + + +################ +# MZI +################ + + +@gf.cell +def _mzi( + delta_length: float = 10.0, + length_y: float = 2.0, + length_x: float = 0.1, + cross_section: CrossSectionSpec = "xs_nc", + add_electrical_ports_bot: bool = True, + bend: ComponentSpec = _bend, + straight: ComponentSpec = _straight, + splitter: ComponentSpec = _mmi1x2, + combiner: ComponentSpec = _mmi2x2, +) -> gf.Component: + return gf.components.mzi( + delta_length=delta_length, + length_y=length_y, + length_x=length_x, + bend=bend, + straight=straight, + straight_y=straight, + straight_x_top=straight, + straight_x_bot=straight, + splitter=splitter, + combiner=combiner, + with_splitter=True, + port_e1_splitter="o2", + port_e0_splitter="o3", + port_e1_combiner="o2", + port_e0_combiner="o3", + nbends=2, + cross_section=cross_section, + cross_section_x_top=cross_section, + cross_section_x_bot=cross_section, + mirror_bot=False, + add_optical_ports_arms=False, + add_electrical_ports_bot=add_electrical_ports_bot, + min_length=0.01, + extend_ports_straight_x=None, + ) + + +@gf.cell +def mzi_nc( + delta_length: float = 10.0, + length_y: float = 2.0, + length_x: float = 0.1, + add_electrical_ports_bot: bool = True, + **kwargs, +) -> gf.Component: + """A Mach-Zehnder Interferometer (MZI) in nitride, c-band. + + Args: + delta_length (float, optional): the length differential between the two arms. Defaults to 10.0. + length_y (float, optional): the common vertical length, in um. Defaults to 2.0. + length_x (float, optional): the common horizontal length, in um. Defaults to 0.1. + add_electrical_ports_bot (bool, optional): if true, adds electrical ports to the bottom. Defaults to True. + + Returns: + gf.Component: the component + """ + if "cross_section" not in kwargs: + kwargs["cross_section"] = "xs_nc" + return _mzi( + delta_length=delta_length, + length_y=length_y, + length_x=length_x, + add_electrical_ports_bot=add_electrical_ports_bot, + straight=straight_nc, + bend=bend_nc, + combiner=mmi1x2_nc, + splitter=mmi1x2_nc, + **kwargs, + ) + + +@gf.cell +def mzi_no( + delta_length: float = 10.0, + length_y: float = 2.0, + length_x: float = 0.1, + add_electrical_ports_bot: bool = True, + **kwargs, +) -> gf.Component: + """A Mach-Zehnder Interferometer (MZI) in nitride, o-band. + + Args: + delta_length (float, optional): the length differential between the two arms. Defaults to 10.0. + length_y (float, optional): the common vertical length, in um. Defaults to 2.0. + length_x (float, optional): the common horizontal length, in um. Defaults to 0.1. + add_electrical_ports_bot (bool, optional): if true, adds electrical ports to the bottom. Defaults to True. + + Returns: + gf.Component: the component + """ + if "cross_section" not in kwargs: + kwargs["cross_section"] = "xs_no" + return _mzi( + delta_length=delta_length, + length_y=length_y, + length_x=length_x, + add_electrical_ports_bot=add_electrical_ports_bot, + bend=bend_no, + straight=straight_no, + combiner=mmi1x2_no, + splitter=mmi1x2_no, + **kwargs, + ) + + +################ +# Packaging +################ + + +@gf.cell +def pad( + size: tuple[float, float] = (100.0, 100.0), + layer: LayerSpec = LAYER.PAD, + bbox_layers: None = None, + bbox_offsets: None = None, + port_inclusion: float = 0.0, + port_orientation: None = None, +) -> gf.Component: + """An electrical pad. + + Args: + size (tuple[float, float], optional): Size of the pad in (x, y). Defaults to (100.0, 100.0). + layer (LayerSpec, optional): the layer to draw the pad on. Defaults to LAYER.PAD. + bbox_layers (None, optional): if set, draws a box around the pad with the given layers. Defaults to None. + bbox_offsets (None, optional): if set, applies an offset to grow the bbox's specified with `bbox_layers`. Defaults to None. + port_inclusion (float, optional): if set, insets the port from the edge by the specified amount. Defaults to 0.0. + port_orientation (None, optional): if set, gives the port a fixed orientation. Defaults to None. + + Returns: + gf.Component: the component + """ + return gf.components.pad( + size=size, + layer=layer, + bbox_layers=bbox_layers, + bbox_offsets=bbox_offsets, + port_inclusion=port_inclusion, + port_orientation=port_orientation, + ) + + +@gf.cell +def rectangle( + size: tuple[float, float] = (4.0, 2.0), + layer: LayerSpec = LAYER.FLOORPLAN, + centered: bool = False, + port_type: str = "electrical", + port_orientations: tuple[float, float, float, float] = (180.0, 90.0, 0.0, -90.0), + round_corners_east_west: bool = False, + round_corners_north_south: bool = False, +) -> gf.Component: + """A simple rectangle on the given layer. + + Args: + size (tuple[float, float], optional): the size of the rectangle in (x, y). Defaults to (4.0, 2.0). + layer (LayerSpec, optional): the layer to draw the rectangle on. Defaults to LAYER.FLOORPLAN. + centered (bool, optional): if true, the rectangle's origin will be placed at the center (otherwise it will be bottom-left). Defaults to False. + port_type (str, optional): the port type for ports automatically added to edges of the rectangle. Defaults to "electrical". + port_orientations (tuple[float, float, float, float], optional): orientations of the ports to be automatically added. Defaults to (180.0, 90.0, 0.0, -90.0). + round_corners_east_west (bool, optional): if True, circles are added to the east and west edges, forming a horizontal pill shape. Defaults to False. + round_corners_north_south (bool, optional): if True, circles are added to the north and south edges, forming a vertical pill shape. Defaults to False. + + Returns: + gf.Component: the component + """ + return gf.components.rectangle( + size=size, + layer=layer, + centered=centered, + port_type=port_type, + port_orientations=port_orientations, + round_corners_east_west=round_corners_east_west, + round_corners_north_south=round_corners_north_south, + ) + + +@gf.cell +def grating_coupler_array( + pitch: float = 127.0, + n: int = 6, + port_name: str = "o1", + rotation: float = 0.0, + with_loopback: bool = False, + bend: ComponentSpec = _bend, + grating_coupler_spacing: float = 0.0, + grating_coupler: ComponentSpec = gc_rectangular_nc, + cross_section: CrossSectionSpec = "xs_nc", +) -> gf.Component: + """An array of grating couplers. + + Args: + pitch (float, optional): the center-center pitch between grating couplers. Defaults to 127.0. + n (int, optional): the number of grating couplers to place. Defaults to 6. + port_name (str, optional): the routing port of the grating coupler to be placed. Defaults to "o1". + rotation (float, optional): rotation of the grating couplers, in degrees. Defaults to 0.0. + with_loopback (bool, optional): if True, adds a loopback. Defaults to False. + bend (ComponentSpec, optional): the bend to be used for the loopback. Defaults to _bend. + grating_coupler_spacing (float, optional): the spacing to be used in the loopback. Defaults to 0.0. + grating_coupler (ComponentSpec, optional): the grating coupler component to use. Defaults to gc_rectangular_nc. + cross_section (CrossSectionSpec, optional): the cross section to be used for routing in the loopback. Defaults to "xs_nc". + + Returns: + gf.Component: the component + """ + return gf.components.grating_coupler_array( + pitch=pitch, + n=n, + port_name=port_name, + rotation=rotation, + with_loopback=with_loopback, + bend=bend, + grating_coupler_spacing=grating_coupler_spacing, + grating_coupler=grating_coupler, + cross_section=cross_section, + ) + + +@gf.cell +def _die( + size: tuple[float, float] = (11470.0, 4900.0), + ngratings: int = 14, + npads: int = 31, + grating_pitch: float = 250.0, + pad_pitch: float = 300.0, + grating_coupler: ComponentSpec = gc_rectangular_nc, + cross_section: CrossSectionSpec = "xs_nc", + pad: ComponentSpec = pad, +) -> gf.Component: + c = gf.Component() + + fp = c << rectangle(size=size, layer=LAYER.FLOORPLAN, centered=True) + + # Add optical ports + x0 = -4925 + 2.827 + y0 = 1650 + + gca = grating_coupler_array( + n=ngratings, + pitch=grating_pitch, + with_loopback=True, + rotation=90, + grating_coupler=grating_coupler, + cross_section=cross_section, + ) + left = c << gca + left.rotate(90) + left.xmax = x0 + left.y = fp.y + c.add_ports(left.ports, prefix="W") + + right = c << gca + right.rotate(-90) + right.xmax = -x0 + right.y = fp.y + c.add_ports(right.ports, prefix="E") + + # Add electrical ports + x0 = -4615 + y0 = 2200 + pad = pad() + + for i in range(npads): + pad_ref = c << pad + pad_ref.xmin = x0 + i * pad_pitch + pad_ref.ymin = y0 + c.add_port( + name=f"N{i}", + port=pad_ref.ports["e4"], + ) + + for i in range(npads): + pad_ref = c << pad + pad_ref.xmin = x0 + i * pad_pitch + pad_ref.ymax = -y0 + c.add_port( + name=f"S{i}", + port=pad_ref.ports["e2"], + ) + + c.auto_rename_ports() + return c + + +@gf.cell +def die_nc() -> gf.Component: + """The standard die template for nitride, c-band. This has 24 grating couplers, split evenly between the left and right sides of the chip and 62 electrical pads split between the top and bottom. + + Returns: + gf.Component: the component + """ + return _die( + grating_coupler=gc_rectangular_nc, + cross_section="xs_nc", + ) + + +@gf.cell +def die_no() -> gf.Component: + """The standard die template for nitride, o-band. This has 24 grating couplers, split evenly between the left and right sides of the chip and 62 electrical pads split between the top and bottom. + + Returns: + gf.Component: the component + """ + return _die( + grating_coupler=gc_rectangular_no, + cross_section="xs_no", + ) + + +################ +# Imported from Cornerstone MPW SOI 220nm GDSII Template +################ +_import_gds = partial(gf.import_gds, gdsdir=PATH.gds) + + +array = gf.components.array + + +if __name__ == "__main__": + c = taper_nc() + c.show() + # for name, func in list(globals().items()): + # if not callable(func): + # continue + # if name in ["partial", "_import_gds"]: + # continue + # print(name, func()) diff --git a/cspdk/sin300/config.py b/cspdk/sin300/config.py new file mode 100644 index 0000000..f3f88c7 --- /dev/null +++ b/cspdk/sin300/config.py @@ -0,0 +1,25 @@ +"""Store path.""" + +__all__ = ["PATH"] + +import pathlib + +cwd = pathlib.Path.cwd() +cwd_config = cwd / "config.yml" +module = pathlib.Path(__file__).parent.absolute() +repo = module.parent.parent + + +class Path: + module = module + repo = repo + gds = module / "gds" + klayout = module / "klayout" + + lyp = klayout / "tech" / "layers.lyp" + lyt = klayout / "tech" / "tech.lyt" + lyp_yaml = module / "layers.yaml" + tech = module / "klayout" / "tech" + + +PATH = Path() diff --git a/cspdk/sin300/gds/CORNERSTONE MPW SOI 220nm GDSII Template.gds b/cspdk/sin300/gds/CORNERSTONE MPW SOI 220nm GDSII Template.gds new file mode 100644 index 0000000..1e9bc59 Binary files /dev/null and b/cspdk/sin300/gds/CORNERSTONE MPW SOI 220nm GDSII Template.gds differ diff --git a/cspdk/sin300/gds/Cell0_Institution_Name.gds b/cspdk/sin300/gds/Cell0_Institution_Name.gds new file mode 100644 index 0000000..93d8220 Binary files /dev/null and b/cspdk/sin300/gds/Cell0_Institution_Name.gds differ diff --git a/cspdk/sin300/gds/Cell0_SOI220_Full_1550nm_Packaging_Template.gds b/cspdk/sin300/gds/Cell0_SOI220_Full_1550nm_Packaging_Template.gds new file mode 100644 index 0000000..a45450f Binary files /dev/null and b/cspdk/sin300/gds/Cell0_SOI220_Full_1550nm_Packaging_Template.gds differ diff --git a/cspdk/sin300/gds/Cell0_SOI_Full_Institution_Name.gds b/cspdk/sin300/gds/Cell0_SOI_Full_Institution_Name.gds new file mode 100644 index 0000000..024985b Binary files /dev/null and b/cspdk/sin300/gds/Cell0_SOI_Full_Institution_Name.gds differ diff --git a/cspdk/sin300/gds/Cell0_SOI_Half_Institution_Name.gds b/cspdk/sin300/gds/Cell0_SOI_Half_Institution_Name.gds new file mode 100644 index 0000000..3082776 Binary files /dev/null and b/cspdk/sin300/gds/Cell0_SOI_Half_Institution_Name.gds differ diff --git a/cspdk/sin300/gds/Flip_Chip_Bonding_Example.gds b/cspdk/sin300/gds/Flip_Chip_Bonding_Example.gds new file mode 100644 index 0000000..6713de8 Binary files /dev/null and b/cspdk/sin300/gds/Flip_Chip_Bonding_Example.gds differ diff --git a/tests/gds_ref/heater.gds b/cspdk/sin300/gds/Heater.gds similarity index 90% rename from tests/gds_ref/heater.gds rename to cspdk/sin300/gds/Heater.gds index 6646920..9d8ce74 100644 Binary files a/tests/gds_ref/heater.gds and b/cspdk/sin300/gds/Heater.gds differ diff --git a/cspdk/sin300/gds/Layer_Designations.gds b/cspdk/sin300/gds/Layer_Designations.gds new file mode 100644 index 0000000..393bec3 Binary files /dev/null and b/cspdk/sin300/gds/Layer_Designations.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_2x1_MMI.gds b/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_2x1_MMI.gds new file mode 100644 index 0000000..48ecf30 Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_2x1_MMI.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_2x2_MMI.gds b/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_2x2_MMI.gds new file mode 100644 index 0000000..a2ad4ba Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_2x2_MMI.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_90_Degree_Bend.gds b/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_90_Degree_Bend.gds new file mode 100644 index 0000000..e7ca1fb Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_90_Degree_Bend.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_Grating_Coupler.gds b/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_Grating_Coupler.gds new file mode 100644 index 0000000..52ee55b Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_Grating_Coupler.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_Waveguide.gds b/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_Waveguide.gds new file mode 100644 index 0000000..a437845 Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_Waveguide.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_Waveguide_Crossing.gds b/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_Waveguide_Crossing.gds new file mode 100644 index 0000000..dc8931c Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1310nm_TE_RIB_Waveguide_Crossing.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_2x1_MMI.gds b/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_2x1_MMI.gds new file mode 100644 index 0000000..86833f0 Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_2x1_MMI.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_2x2_MMI.gds b/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_2x2_MMI.gds new file mode 100644 index 0000000..32c178f Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_2x2_MMI.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_90_Degree_Bend.gds b/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_90_Degree_Bend.gds new file mode 100644 index 0000000..11a64f1 Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_90_Degree_Bend.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_Grating_Coupler.gds b/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_Grating_Coupler.gds new file mode 100644 index 0000000..147082c Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_Grating_Coupler.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_Waveguide.gds b/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_Waveguide.gds new file mode 100644 index 0000000..cad9dbe Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_Waveguide.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_Waveguide_Crossing.gds b/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_Waveguide_Crossing.gds new file mode 100644 index 0000000..711bde8 Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1310nm_TE_STRIP_Waveguide_Crossing.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_2x1_MMI.gds b/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_2x1_MMI.gds new file mode 100644 index 0000000..aa0cbed Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_2x1_MMI.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_2x2_MMI.gds b/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_2x2_MMI.gds new file mode 100644 index 0000000..c67bfee Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_2x2_MMI.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_90_Degree_Bend.gds b/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_90_Degree_Bend.gds new file mode 100644 index 0000000..959a11c Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_90_Degree_Bend.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_Grating_Coupler.gds b/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_Grating_Coupler.gds new file mode 100644 index 0000000..e118e0c Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_Grating_Coupler.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_Waveguide.gds b/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_Waveguide.gds new file mode 100644 index 0000000..557f03b Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_Waveguide.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_Waveguide_Crossing.gds b/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_Waveguide_Crossing.gds new file mode 100644 index 0000000..2c388d1 Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1550nm_TE_RIB_Waveguide_Crossing.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_2x1_MMI.gds b/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_2x1_MMI.gds new file mode 100644 index 0000000..c3c5e51 Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_2x1_MMI.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_2x2_MMI.gds b/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_2x2_MMI.gds new file mode 100644 index 0000000..032dac4 Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_2x2_MMI.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_90_Degree_Bend.gds b/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_90_Degree_Bend.gds new file mode 100644 index 0000000..7a3a5e9 Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_90_Degree_Bend.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_Waveguide.gds b/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_Waveguide.gds new file mode 100644 index 0000000..acdba8b Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_Waveguide.gds differ diff --git a/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_Waveguide_Crossing.gds b/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_Waveguide_Crossing.gds new file mode 100644 index 0000000..8686cf6 Binary files /dev/null and b/cspdk/sin300/gds/SOI220nm_1550nm_TE_STRIP_Waveguide_Crossing.gds differ diff --git a/cspdk/gds/SiN300nm_1310nm_TE_STRIP_2x1_MMI.gds b/cspdk/sin300/gds/SiN300nm_1310nm_TE_STRIP_2x1_MMI.gds similarity index 100% rename from cspdk/gds/SiN300nm_1310nm_TE_STRIP_2x1_MMI.gds rename to cspdk/sin300/gds/SiN300nm_1310nm_TE_STRIP_2x1_MMI.gds diff --git a/cspdk/gds/SiN300nm_1310nm_TE_STRIP_2x2_MMI.gds b/cspdk/sin300/gds/SiN300nm_1310nm_TE_STRIP_2x2_MMI.gds similarity index 100% rename from cspdk/gds/SiN300nm_1310nm_TE_STRIP_2x2_MMI.gds rename to cspdk/sin300/gds/SiN300nm_1310nm_TE_STRIP_2x2_MMI.gds diff --git a/cspdk/gds/SiN300nm_1310nm_TE_STRIP_90_Degr.gds b/cspdk/sin300/gds/SiN300nm_1310nm_TE_STRIP_90_Degr.gds similarity index 100% rename from cspdk/gds/SiN300nm_1310nm_TE_STRIP_90_Degr.gds rename to cspdk/sin300/gds/SiN300nm_1310nm_TE_STRIP_90_Degr.gds diff --git a/cspdk/gds/SiN300nm_1310nm_TE_STRIP_Grating.gds b/cspdk/sin300/gds/SiN300nm_1310nm_TE_STRIP_Grating.gds similarity index 100% rename from cspdk/gds/SiN300nm_1310nm_TE_STRIP_Grating.gds rename to cspdk/sin300/gds/SiN300nm_1310nm_TE_STRIP_Grating.gds diff --git a/cspdk/gds/SiN300nm_1310nm_TE_STRIP_Wavegui.gds b/cspdk/sin300/gds/SiN300nm_1310nm_TE_STRIP_Wavegui.gds similarity index 100% rename from cspdk/gds/SiN300nm_1310nm_TE_STRIP_Wavegui.gds rename to cspdk/sin300/gds/SiN300nm_1310nm_TE_STRIP_Wavegui.gds diff --git a/cspdk/gds/SiN300nm_1550nm_TE_STRIP_2x1_MMI.gds b/cspdk/sin300/gds/SiN300nm_1550nm_TE_STRIP_2x1_MMI.gds similarity index 100% rename from cspdk/gds/SiN300nm_1550nm_TE_STRIP_2x1_MMI.gds rename to cspdk/sin300/gds/SiN300nm_1550nm_TE_STRIP_2x1_MMI.gds diff --git a/cspdk/gds/SiN300nm_1550nm_TE_STRIP_2x2_MMI.gds b/cspdk/sin300/gds/SiN300nm_1550nm_TE_STRIP_2x2_MMI.gds similarity index 100% rename from cspdk/gds/SiN300nm_1550nm_TE_STRIP_2x2_MMI.gds rename to cspdk/sin300/gds/SiN300nm_1550nm_TE_STRIP_2x2_MMI.gds diff --git a/cspdk/gds/SiN300nm_1550nm_TE_STRIP_90_Degr.gds b/cspdk/sin300/gds/SiN300nm_1550nm_TE_STRIP_90_Degr.gds similarity index 100% rename from cspdk/gds/SiN300nm_1550nm_TE_STRIP_90_Degr.gds rename to cspdk/sin300/gds/SiN300nm_1550nm_TE_STRIP_90_Degr.gds diff --git a/cspdk/gds/SiN300nm_1550nm_TE_STRIP_Grating.gds b/cspdk/sin300/gds/SiN300nm_1550nm_TE_STRIP_Grating.gds similarity index 100% rename from cspdk/gds/SiN300nm_1550nm_TE_STRIP_Grating.gds rename to cspdk/sin300/gds/SiN300nm_1550nm_TE_STRIP_Grating.gds diff --git a/cspdk/gds/SiN300nm_1550nm_TE_STRIP_Wavegui.gds b/cspdk/sin300/gds/SiN300nm_1550nm_TE_STRIP_Wavegui.gds similarity index 100% rename from cspdk/gds/SiN300nm_1550nm_TE_STRIP_Wavegui.gds rename to cspdk/sin300/gds/SiN300nm_1550nm_TE_STRIP_Wavegui.gds diff --git a/cspdk/import_pdk.py b/cspdk/sin300/import_pdk.py similarity index 100% rename from cspdk/import_pdk.py rename to cspdk/sin300/import_pdk.py diff --git a/cspdk/sin300/klayout/d25/Cornerstone.lyd25 b/cspdk/sin300/klayout/d25/Cornerstone.lyd25 new file mode 100644 index 0000000..6128169 --- /dev/null +++ b/cspdk/sin300/klayout/d25/Cornerstone.lyd25 @@ -0,0 +1,38 @@ + + + + + d25 + + + + false + false + 0 + + true + d25_scripts + tools_menu.d25.end + dsl + d25-dsl-xml + + +core = input(3, 0) +slab = input(5, 0) +nitride = input(203, 0) +nitride_etch = input(204, 0) +heater = input(39, 0) +metal = input(41, 0) + + + +z(core, zstart: 0.0, zstop: 0.2, name: 'core: si 3/0', ) +z(slab, zstart: 0.0, zstop: 0.1, name: 'slab: si 5/0', ) +z(nitride, zstart: 0.0, zstop: 0.3, name: 'nitride: sin 203/0', ) +z(nitride_etch, zstart: 0.0, zstop: 0.3, name: 'nitride_etch: sin 204/0', ) +z(heater, zstart: 1.1, zstop: 1.8, name: 'heater: TiN 39/0', ) +z(metal, zstart: 1.8, zstop: 2.5, name: 'metal: Aluminum 41/0', ) + + + + diff --git a/cspdk/sin300/klayout/d25/Cornerstone_sin300.lyd25 b/cspdk/sin300/klayout/d25/Cornerstone_sin300.lyd25 new file mode 100644 index 0000000..bbb059c --- /dev/null +++ b/cspdk/sin300/klayout/d25/Cornerstone_sin300.lyd25 @@ -0,0 +1,34 @@ + + + + + d25 + + + + false + false + 0 + + true + d25_scripts + tools_menu.d25.end + dsl + d25-dsl-xml + + +nitride = input(203, 0) +nitride_etch = input(204, 0) +heater = input(39, 0) +metal = input(41, 0) + + + +z(nitride, zstart: 0.0, zstop: 0.3, name: 'nitride: sin 203/0', ) +z(nitride_etch, zstart: 0.0, zstop: 0.3, name: 'nitride_etch: sin 204/0', ) +z(heater, zstart: 1.1, zstop: 1.8, name: 'heater: TiN 39/0', ) +z(metal, zstart: 1.8, zstop: 2.5, name: 'metal: Aluminum 41/0', ) + + + + diff --git a/cspdk/sin300/klayout/layers.lyp b/cspdk/sin300/klayout/layers.lyp new file mode 100644 index 0000000..8190ff8 --- /dev/null +++ b/cspdk/sin300/klayout/layers.lyp @@ -0,0 +1,122 @@ + + + + #ffa500 + #ffa500 + 0 + 0 + I3 + + true + true + false + + false + false + 0 + NITRIDE 203/0 + 203/0@1 + + + #0000ff + #0000ff + 0 + 0 + I3 + + true + true + true + 1 + false + false + 0 + NITRIDE_ETCH 204/0 + 204/0@1 + + + #ebc634 + #ebc634 + 0 + 0 + I3 + + true + true + false + + false + false + 0 + HEATER 39/0 + 39/0@1 + + + + #008080 + 0 + 0 + I3 + + true + true + false + + false + false + 0 + PAD 41/0 + 41/0@1 + + + #000000 + #000000 + 0 + 0 + I1 + + true + true + false + + false + false + 0 + FLOORPLAN 99/0 + 99/0@1 + + + #00ffff + #00ffff + 0 + 0 + I1 + + true + true + false + + false + false + 0 + LABEL_SETTINGS 100/0 + 100/0@1 + + + #00ffff + #00ffff + 0 + 0 + I1 + + true + true + false + + false + false + 0 + LABEL_INSTANCE 101/0 + 101/0@1 + + diff --git a/cspdk/sin300/klayout/tech.lyt b/cspdk/sin300/klayout/tech.lyt new file mode 100644 index 0000000..cfdc5e1 --- /dev/null +++ b/cspdk/sin300/klayout/tech.lyt @@ -0,0 +1,162 @@ + + + Cornerstone_sin300 + + + 0.001 + + + + layers.lyp + true + + + 1 + true + true + + + true + layer_map() + true + true + + + true + layer_map() + 0.001 + true + #1 + true + #1 + false + #1 + true + OUTLINE + true + PLACEMENT_BLK + true + REGIONS + true + + 0 + true + .PIN + 2 + true + .PIN + 2 + true + .FILL + 5 + true + .OBS + 3 + true + .BLK + 4 + true + .LABEL + 1 + true + .LABEL + 1 + true + + 0 + true + + 0 + VIA_ + true + default + false + false + + + + false + true + true + 64 + 0 + 1 + 0 + DATA + 0 + 0 + BORDER + layer_map() + true + + + 0.001 + 1 + 100 + 100 + 0 + 0 + 0 + false + false + false + true + layer_map() + + + 0 + 0.001 + layer_map() + true + false + + + 1 + 0.001 + layer_map() + true + false + true + + + + + GDS2 + + true + false + false + false + false + false + 8000 + 32000 + LIB + + + 2 + true + true + 1 + * + false + + + 0 + + + false + false + + + 0 + + true + + + + HEATER,HEATER,PAD + HEATER='39/0' + PAD='41/0' + + diff --git a/cspdk/sin300/layers.yaml b/cspdk/sin300/layers.yaml new file mode 100644 index 0000000..9f0fe0b --- /dev/null +++ b/cspdk/sin300/layers.yaml @@ -0,0 +1,38 @@ +LayerViews: + NITRIDE: + layer: [203, 0] + layer_in_name: true + color: "orange" + hatch_pattern: coarsely dotted + NITRIDE_ETCH: + layer: [204, 0] + layer_in_name: true + hatch_pattern: coarsely dotted + transparent: true + width: 1 + color: "blue" + HEATER: + layer: [39, 0] + layer_in_name: true + color: "#ebc634" + hatch_pattern: coarsely dotted + PAD: + layer: [41, 0] + layer_in_name: true + fill_color: "teal" + hatch_pattern: coarsely dotted + FLOORPLAN: + layer: [99, 0] + layer_in_name: true + color: "black" + hatch_pattern: hollow + LABEL_SETTINGS: + layer: [100, 0] + layer_in_name: true + color: "cyan" + hatch_pattern: hollow + LABEL_INSTANCE: + layer: [101, 0] + layer_in_name: true + color: "cyan" + hatch_pattern: hollow diff --git a/cspdk/sin300/models.py b/cspdk/sin300/models.py new file mode 100644 index 0000000..5ded49c --- /dev/null +++ b/cspdk/sin300/models.py @@ -0,0 +1,146 @@ +from __future__ import annotations + +import inspect +from collections.abc import Callable +from functools import partial + +import gplugins.sax.models as sm +import jax.numpy as jnp +import sax +from gdsfactory.pdk import get_cross_section_name +from gdsfactory.typings import CrossSectionSpec +from gplugins.sax.models import bend as __bend +from gplugins.sax.models import straight as __straight +from numpy.typing import NDArray + +nm = 1e-3 + +FloatArray = NDArray[jnp.floating] +Float = float | FloatArray + +################ +# Straights +################ + + +def _straight( + *, + wl: Float = 1.55, + length: Float = 10.0, + loss: Float = 0.0, + cross_section: CrossSectionSpec = "xs_sc", +) -> sax.SDict: + if get_cross_section_name(cross_section).endswith("nc"): + return __straight( + wl=wl, # type: ignore + length=length, # type: ignore + loss=loss, # type: ignore + wl0=1.55, + neff=1.6, + ng=1.94, + ) + elif get_cross_section_name(cross_section).endswith("no"): + return __straight( + wl=wl, # type: ignore + length=length, # type: ignore + loss=loss, # type: ignore + wl0=1.31, + neff=1.63, + ng=2.00, + ) + else: + return __straight( + wl=wl, # type: ignore + length=length, # type: ignore + loss=loss, # type: ignore + wl0=1.55, + neff=2.38, + ng=4.30, + ) + + +straight_nc = partial(_straight, cross_section="xs_nc") +straight_no = partial(_straight, cross_section="xs_no") + +################ +# Bends +################ +bend_s = _straight + + +def _bend(wl: Float = 1.5, length: Float = 20.0, loss: Float = 0.03) -> sax.SDict: + return __bend( + wl=wl, # type: ignore + length=length, # type: ignore + loss=loss, # type: ignore + ) + + +bend_nc = partial(_bend, loss=0.03) +bend_no = partial(_bend, loss=0.03) + + +################ +# MMIs +################ +_mmi1x2 = sm.mmi1x2 +_mmi2x2 = sm.mmi2x2 + +_mmi1x2_o = partial(_mmi1x2, wl0=1.31) +_mmi1x2_c = partial(_mmi1x2, wl0=1.55) +_mmi2x2_o = partial(_mmi2x2, wl0=1.31) +_mmi2x2_c = partial(_mmi2x2, wl0=1.55) + +mmi1x2_nc = _mmi1x2_c +mmi1x2_no = _mmi1x2_o + +mmi2x2_nc = _mmi2x2_c +mmi2x2_no = _mmi2x2_o + +############################## +# Evanescent couplers +############################## + +_coupler = _mmi2x2 +_coupler_o = partial(_coupler, wl0=1.31) +_coupler_c = partial(_coupler, wl0=1.55) +coupler_nc = _coupler_c +coupler_no = _coupler_o + +############################## +# grating couplers Rectangular +############################## +_gc_rectangular = sm.grating_coupler +_gcro = partial(_gc_rectangular, loss=6, bandwidth=35 * nm, wavelength=1.31) +_gcrc = partial(_gc_rectangular, loss=6, bandwidth=35 * nm, wavelength=1.55) +gc_rectangular_nc = _gcrc +gc_rectangular_no = _gcro + +############################## +# grating couplers Elliptical +############################## +_gc_elliptical = _gc_rectangular +_gceo = partial(_gc_elliptical, loss=6, bandwidth=35 * nm, wavelength=1.31) +_gcec = partial(_gc_elliptical, loss=6, bandwidth=35 * nm, wavelength=1.55) +gc_elliptical_nc = _gcec +gc_elliptical_no = _gceo + + +################ +# Models Dict +################ +def get_models() -> dict[str, Callable[..., sax.SDict]]: + models = {} + for name, func in list(globals().items()): + if not callable(func): + continue + _func = func + while isinstance(_func, partial): + _func = _func.func + try: + sig = inspect.signature(_func) + except ValueError: + continue + if str(sig.return_annotation) == "sax.SDict": + models[name] = func + return models diff --git a/cspdk/sin300/samples/circuit_simulations_nc.py b/cspdk/sin300/samples/circuit_simulations_nc.py new file mode 100644 index 0000000..f80ca8d --- /dev/null +++ b/cspdk/sin300/samples/circuit_simulations_nc.py @@ -0,0 +1,23 @@ +import jax.numpy as jnp +import matplotlib.pyplot as plt +import sax + +from cspdk.sin300 import PDK, cells + +if __name__ == "__main__": + c = cells.mzi_nc(delta_length=100) + c.show() + c.plot_netlist() + netlist = c.get_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/sin300/samples/circuit_simulations_nc_with_routing.py b/cspdk/sin300/samples/circuit_simulations_nc_with_routing.py new file mode 100644 index 0000000..a624476 --- /dev/null +++ b/cspdk/sin300/samples/circuit_simulations_nc_with_routing.py @@ -0,0 +1,31 @@ +import gdsfactory as gf +import jax.numpy as jnp +import matplotlib.pyplot as plt +import sax + +from cspdk.sin300 import PDK, cells, tech + +if __name__ == "__main__": + c = gf.Component() + mzi1 = c << cells.mzi_nc(delta_length=10) + mzi2 = c << cells.mzi_nc(delta_length=100) + mzi2.move((200, 200)) + route = tech.get_route_nc(mzi1.ports["o2"], mzi2.ports["o1"]) + c.add(route.references) + c.add_port(name="o1", port=mzi1.ports["o1"]) + c.add_port(name="o2", port=mzi2.ports["o2"]) + c.show() + c.plot_netlist_flat() + netlist = c.get_netlist_recursive() + 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/sin300/samples/component_from_yaml_nc.py b/cspdk/sin300/samples/component_from_yaml_nc.py new file mode 100644 index 0000000..855a779 --- /dev/null +++ b/cspdk/sin300/samples/component_from_yaml_nc.py @@ -0,0 +1,54 @@ +sample_pads = """ +name: pads +pdk: cspdk.sin300 + +instances: + bl: + component: pad + tl: + component: pad + br: + component: pad + tr: + component: pad + +placements: + tl: + x: -200 + y: 500 + + br: + x: 400 + y: 400 + + tr: + x: 400 + y: 600 + + +routes: + electrical: + settings: + cross_section: xs_metal_routing + separation: 20 + width: 10 + path_length_match_loops: 2 + end_straight_length: 100 + links: + tl,e3: tr,e1 + bl,e3: br,e1 + optical: + settings: + cross_section: xs_nc + radius: 100 + links: + bl,e4: br,e3 + +""" + + +if __name__ == "__main__": + import gdsfactory as gf + + c = gf.read.from_yaml(sample_pads) + c.show() diff --git a/cspdk/sin300/samples/get_route_nc.py b/cspdk/sin300/samples/get_route_nc.py new file mode 100644 index 0000000..168a817 --- /dev/null +++ b/cspdk/sin300/samples/get_route_nc.py @@ -0,0 +1,18 @@ +"""`get_route` returns a Manhattan route between two ports. """ + +import gdsfactory as gf + +from cspdk.sin300 import cells, tech + +if __name__ == "__main__": + c = gf.Component("sample_connect") + mmi1 = c << cells.mmi1x2_nc() + mmi2 = c << cells.mmi1x2_nc() + mmi2.move((500, 50)) + + route = tech.get_route_nc( + mmi1.ports["o3"], + mmi2.ports["o1"], + ) + c.add(route.references) + c.show() diff --git a/cspdk/samples/mode_solver_n.py b/cspdk/sin300/samples/mode_solver_n.py similarity index 100% rename from cspdk/samples/mode_solver_n.py rename to cspdk/sin300/samples/mode_solver_n.py diff --git a/cspdk/sin300/tech.py b/cspdk/sin300/tech.py new file mode 100644 index 0000000..0345aa5 --- /dev/null +++ b/cspdk/sin300/tech.py @@ -0,0 +1,198 @@ +"""Technology definitions.""" + +import sys +from functools import partial +from typing import cast + +import gdsfactory as gf +from gdsfactory.cross_section import get_cross_sections +from gdsfactory.technology import LayerLevel, LayerMap, LayerStack, LayerViews +from gdsfactory.typings import ConnectivitySpec, Layer + +from cspdk.sin300.config import PATH + +nm = 1e-3 + + +class LayerMapCornerstone(LayerMap): + WG: Layer = (3, 0) + SLAB: Layer = (5, 0) + FLOORPLAN: Layer = (99, 0) + HEATER: Layer = (39, 0) + GRA: Layer = (6, 0) + LBL: Layer = (100, 0) + PAD: Layer = (41, 0) + NITRIDE: Layer = (203, 0) + NITRIDE_ETCH: Layer = (204, 0) + + # labels for gdsfactory + LABEL_SETTINGS: Layer = (100, 0) + LABEL_INSTANCE: Layer = (101, 0) + + +LAYER = LayerMapCornerstone() + + +def get_layer_stack( + thickness_nitride: float = 300 * nm, + zmin_heater: float = 1.1, + thickness_heater: float = 700 * nm, + zmin_metal: float = 1.1, + thickness_metal: float = 700 * nm, +) -> LayerStack: + """Returns LayerStack. + + based on paper https://www.degruyter.com/document/doi/10.1515/nanoph-2013-0034/html + + Args: + thickness_nitride: nitride thickness in um. + zmin_heater: TiN heater. + thickness_heater: TiN thickness. + zmin_metal: metal thickness in um. + thickness_metal: metal2 thickness. + """ + + return LayerStack( + layers=dict( + nitride=LayerLevel( + layer=LAYER.NITRIDE, + thickness=thickness_nitride, + zmin=0.0, + material="sin", + info={"mesh_order": 2}, + sidewall_angle=10, + width_to_z=0.5, + ), + nitride_etch=LayerLevel( + layer=LAYER.NITRIDE_ETCH, + thickness=thickness_nitride, + zmin=0.0, + material="sin", + info={"mesh_order": 1}, + sidewall_angle=10, + width_to_z=0.5, + ), + heater=LayerLevel( + layer=LAYER.HEATER, + thickness=thickness_heater, + zmin=zmin_heater, + material="TiN", + info={"mesh_order": 1}, + ), + metal=LayerLevel( + layer=LAYER.PAD, + thickness=thickness_metal, + zmin=zmin_metal + thickness_metal, + material="Aluminum", + info={"mesh_order": 2}, + ), + ) + ) + + +LAYER_STACK = get_layer_stack() +LAYER_VIEWS = gf.technology.LayerViews(PATH.lyp_yaml) + + +############################ +# Cross-sections functions +############################ +xf_nc = partial(gf.cross_section.strip, layer=LAYER.NITRIDE, width=1.20, radius=25) +xf_no = partial(gf.cross_section.strip, layer=LAYER.NITRIDE, width=0.95, radius=25) + +xf_nc_heater_metal = partial( + gf.cross_section.strip_heater_metal, + layer=LAYER.NITRIDE, + heater_width=2.5, + layer_heater=LAYER.HEATER, + width=1.20, +) + +metal_routing = partial( + gf.cross_section.cross_section, + layer=LAYER.PAD, + width=10.0, + port_names=gf.cross_section.port_names_electrical, + port_types=gf.cross_section.port_types_electrical, + radius=None, +) +heater_metal = partial(metal_routing, width=4, layer=LAYER.HEATER) + +############################ +# Cross-sections +############################ +xs_nc = xf_nc() +xs_no = xf_no() + +xs_sc_heater_metal = xf_nc_heater_metal() +xs_metal_routing = metal_routing() +xs_heater_metal = heater_metal() + +cross_sections = get_cross_sections(sys.modules[__name__]) + +############################ +# Routing functions +############################ +_settings_nc = dict( + straight="straight_nc", cross_section=xs_nc, bend="bend_nc", taper="taper_nc" +) +_settings_no = dict( + straight="straight_no", cross_section=xs_no, bend="bend_no", taper="taper_no" +) + +get_route_nc = partial(gf.routing.get_route, **_settings_nc) +get_route_no = partial(gf.routing.get_route, **_settings_no) + +get_route_from_steps_nc = partial( + gf.routing.get_route_from_steps, + **_settings_nc, +) +get_route_from_steps_no = partial( + gf.routing.get_route_from_steps, + **_settings_no, +) + +get_bundle_nc = partial(gf.routing.get_bundle, **_settings_nc) +get_bundle_no = partial(gf.routing.get_bundle, **_settings_no) + +get_bundle_from_steps_nc = partial( + gf.routing.get_bundle_from_steps, + **_settings_nc, +) +get_bundle_from_steps_no = partial( + gf.routing.get_bundle_from_steps, + **_settings_no, +) + + +routing_strategies = dict( + get_route_nc=get_route_nc, + get_route_no=get_route_no, + get_route_from_steps_nc=get_route_from_steps_nc, + get_route_from_steps_no=get_route_from_steps_no, + get_bundle_nc=get_bundle_nc, + get_bundle_no=get_bundle_no, + get_bundle_from_steps_nc=get_bundle_from_steps_nc, + get_bundle_from_steps_no=get_bundle_from_steps_no, +) + + +if __name__ == "__main__": + from gdsfactory.technology.klayout_tech import KLayoutTechnology + + LAYER_VIEWS = LayerViews(PATH.lyp_yaml) + # LAYER_VIEWS.to_lyp(PATH.lyp) + + connectivity = cast(list[ConnectivitySpec], [("HEATER", "HEATER", "PAD")]) + + t = KLayoutTechnology( + name="Cornerstone_sin300", + layer_map=dict(LAYER), + layer_views=LAYER_VIEWS, + layer_stack=LAYER_STACK, + connectivity=connectivity, + ) + t.write_tech(tech_dir=PATH.klayout) + +if __name__ == "__main__": + print(type(LAYER.NITRIDE), LAYER.NITRIDE) diff --git a/docs/cells.rst b/docs/cells.rst index 8873e8b..8bf25d4 100644 --- a/docs/cells.rst +++ b/docs/cells.rst @@ -1,23 +1,35 @@ -Here are the components available in the PDK +Cells Si220 +============================= -Cells -============================= +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_nc ---------------------------------------------------- -.. autofunction:: cspdk.cells.bend_nc +.. autofunction:: cspdk.si220.cells.bend_nc .. plot:: :include-source: import cspdk - c = cspdk.cells.bend_nc(radius=25.0, angle=90.0) + c = cspdk.si220.cells.bend_nc(radius=25.0, angle=90.0) c.plot() @@ -25,14 +37,14 @@ bend_nc bend_no ---------------------------------------------------- -.. autofunction:: cspdk.cells.bend_no +.. autofunction:: cspdk.si220.cells.bend_no .. plot:: :include-source: import cspdk - c = cspdk.cells.bend_no(radius=25.0, angle=90.0) + c = cspdk.si220.cells.bend_no(radius=25.0, angle=90.0) c.plot() @@ -40,14 +52,14 @@ bend_no bend_rc ---------------------------------------------------- -.. autofunction:: cspdk.cells.bend_rc +.. autofunction:: cspdk.si220.cells.bend_rc .. plot:: :include-source: import cspdk - c = cspdk.cells.bend_rc(radius=25.0, angle=90.0) + c = cspdk.si220.cells.bend_rc(radius=25.0, angle=90.0) c.plot() @@ -55,14 +67,14 @@ bend_rc bend_ro ---------------------------------------------------- -.. autofunction:: cspdk.cells.bend_ro +.. autofunction:: cspdk.si220.cells.bend_ro .. plot:: :include-source: import cspdk - c = cspdk.cells.bend_ro(radius=25.0, angle=90.0) + c = cspdk.si220.cells.bend_ro(radius=25.0, angle=90.0) c.plot() @@ -70,14 +82,14 @@ bend_ro bend_s ---------------------------------------------------- -.. autofunction:: cspdk.cells.bend_s +.. autofunction:: cspdk.si220.cells.bend_s .. plot:: :include-source: import cspdk - c = cspdk.cells.bend_s(size=(11.0, 1.8), cross_section='xs_sc') + c = cspdk.si220.cells.bend_s(size=(11.0, 1.8), cross_section='xs_sc') c.plot() @@ -85,14 +97,14 @@ bend_s bend_sc ---------------------------------------------------- -.. autofunction:: cspdk.cells.bend_sc +.. autofunction:: cspdk.si220.cells.bend_sc .. plot:: :include-source: import cspdk - c = cspdk.cells.bend_sc(radius=10.0, angle=90.0) + c = cspdk.si220.cells.bend_sc(radius=10.0, angle=90.0) c.plot() @@ -100,14 +112,14 @@ bend_sc bend_so ---------------------------------------------------- -.. autofunction:: cspdk.cells.bend_so +.. autofunction:: cspdk.si220.cells.bend_so .. plot:: :include-source: import cspdk - c = cspdk.cells.bend_so(radius=10.0, angle=90.0) + c = cspdk.si220.cells.bend_so(radius=10.0, angle=90.0) c.plot() @@ -115,14 +127,14 @@ bend_so coupler_nc ---------------------------------------------------- -.. autofunction:: cspdk.cells.coupler_nc +.. autofunction:: cspdk.si220.cells.coupler_nc .. plot:: :include-source: import cspdk - c = cspdk.cells.coupler_nc(gap=0.4, length=20.0, dx=10.0, dy=4.0) + c = cspdk.si220.cells.coupler_nc(gap=0.4, length=20.0, dx=10.0, dy=4.0) c.plot() @@ -130,14 +142,14 @@ coupler_nc coupler_no ---------------------------------------------------- -.. autofunction:: cspdk.cells.coupler_no +.. autofunction:: cspdk.si220.cells.coupler_no .. plot:: :include-source: import cspdk - c = cspdk.cells.coupler_no(gap=0.4, length=20.0, dx=10.0, dy=4.0) + c = cspdk.si220.cells.coupler_no(gap=0.4, length=20.0, dx=10.0, dy=4.0) c.plot() @@ -145,14 +157,14 @@ coupler_no coupler_rc ---------------------------------------------------- -.. autofunction:: cspdk.cells.coupler_rc +.. autofunction:: cspdk.si220.cells.coupler_rc .. plot:: :include-source: import cspdk - c = cspdk.cells.coupler_rc(gap=0.236, length=20.0, dx=10.0, dy=4.0) + c = cspdk.si220.cells.coupler_rc(gap=0.236, length=20.0, dx=10.0, dy=4.0) c.plot() @@ -160,14 +172,14 @@ coupler_rc coupler_ro ---------------------------------------------------- -.. autofunction:: cspdk.cells.coupler_ro +.. autofunction:: cspdk.si220.cells.coupler_ro .. plot:: :include-source: import cspdk - c = cspdk.cells.coupler_ro(gap=0.236, length=20.0, dx=10.0, dy=4.0) + c = cspdk.si220.cells.coupler_ro(gap=0.236, length=20.0, dx=10.0, dy=4.0) c.plot() @@ -175,14 +187,14 @@ coupler_ro coupler_sc ---------------------------------------------------- -.. autofunction:: cspdk.cells.coupler_sc +.. autofunction:: cspdk.si220.cells.coupler_sc .. plot:: :include-source: import cspdk - c = cspdk.cells.coupler_sc(gap=0.236, length=20.0, dx=10.0, dy=4.0) + c = cspdk.si220.cells.coupler_sc(gap=0.236, length=20.0, dx=10.0, dy=4.0) c.plot() @@ -190,14 +202,14 @@ coupler_sc coupler_so ---------------------------------------------------- -.. autofunction:: cspdk.cells.coupler_so +.. autofunction:: cspdk.si220.cells.coupler_so .. plot:: :include-source: import cspdk - c = cspdk.cells.coupler_so(gap=0.236, length=20.0, dx=10.0, dy=4.0) + c = cspdk.si220.cells.coupler_so(gap=0.236, length=20.0, dx=10.0, dy=4.0) c.plot() @@ -205,14 +217,14 @@ coupler_so crossing_rc ---------------------------------------------------- -.. autofunction:: cspdk.cells.crossing_rc +.. autofunction:: cspdk.si220.cells.crossing_rc .. plot:: :include-source: import cspdk - c = cspdk.cells.crossing_rc() + c = cspdk.si220.cells.crossing_rc() c.plot() @@ -220,14 +232,14 @@ crossing_rc crossing_sc ---------------------------------------------------- -.. autofunction:: cspdk.cells.crossing_sc +.. autofunction:: cspdk.si220.cells.crossing_sc .. plot:: :include-source: import cspdk - c = cspdk.cells.crossing_sc() + c = cspdk.si220.cells.crossing_sc() c.plot() @@ -235,14 +247,14 @@ crossing_sc crossing_so ---------------------------------------------------- -.. autofunction:: cspdk.cells.crossing_so +.. autofunction:: cspdk.si220.cells.crossing_so .. plot:: :include-source: import cspdk - c = cspdk.cells.crossing_so() + c = cspdk.si220.cells.crossing_so() c.plot() @@ -250,14 +262,14 @@ crossing_so die_nc ---------------------------------------------------- -.. autofunction:: cspdk.cells.die_nc +.. autofunction:: cspdk.si220.cells.die_nc .. plot:: :include-source: import cspdk - c = cspdk.cells.die_nc() + c = cspdk.si220.cells.die_nc() c.plot() @@ -265,14 +277,14 @@ die_nc die_no ---------------------------------------------------- -.. autofunction:: cspdk.cells.die_no +.. autofunction:: cspdk.si220.cells.die_no .. plot:: :include-source: import cspdk - c = cspdk.cells.die_no() + c = cspdk.si220.cells.die_no() c.plot() @@ -280,14 +292,14 @@ die_no die_rc ---------------------------------------------------- -.. autofunction:: cspdk.cells.die_rc +.. autofunction:: cspdk.si220.cells.die_rc .. plot:: :include-source: import cspdk - c = cspdk.cells.die_rc() + c = cspdk.si220.cells.die_rc() c.plot() @@ -295,14 +307,14 @@ die_rc die_ro ---------------------------------------------------- -.. autofunction:: cspdk.cells.die_ro +.. autofunction:: cspdk.si220.cells.die_ro .. plot:: :include-source: import cspdk - c = cspdk.cells.die_ro() + c = cspdk.si220.cells.die_ro() c.plot() @@ -310,14 +322,14 @@ die_ro die_sc ---------------------------------------------------- -.. autofunction:: cspdk.cells.die_sc +.. autofunction:: cspdk.si220.cells.die_sc .. plot:: :include-source: import cspdk - c = cspdk.cells.die_sc() + c = cspdk.si220.cells.die_sc() c.plot() @@ -325,14 +337,14 @@ die_sc die_so ---------------------------------------------------- -.. autofunction:: cspdk.cells.die_so +.. autofunction:: cspdk.si220.cells.die_so .. plot:: :include-source: import cspdk - c = cspdk.cells.die_so() + c = cspdk.si220.cells.die_so() c.plot() @@ -340,14 +352,14 @@ die_so gc_elliptical_sc ---------------------------------------------------- -.. autofunction:: cspdk.cells.gc_elliptical_sc +.. autofunction:: cspdk.si220.cells.gc_elliptical_sc .. plot:: :include-source: import cspdk - c = cspdk.cells.gc_elliptical_sc(grating_line_width=0.343, fiber_angle=15, wavelength=1.53) + c = cspdk.si220.cells.gc_elliptical_sc(grating_line_width=0.343, fiber_angle=15, wavelength=1.53) c.plot() @@ -355,14 +367,14 @@ gc_elliptical_sc gc_elliptical_so ---------------------------------------------------- -.. autofunction:: cspdk.cells.gc_elliptical_so +.. autofunction:: cspdk.si220.cells.gc_elliptical_so .. plot:: :include-source: import cspdk - c = cspdk.cells.gc_elliptical_so(grating_line_width=0.343, fiber_angle=15, wavelength=1.31) + c = cspdk.si220.cells.gc_elliptical_so(grating_line_width=0.343, fiber_angle=15, wavelength=1.31) c.plot() @@ -370,14 +382,14 @@ gc_elliptical_so gc_rectangular_nc ---------------------------------------------------- -.. autofunction:: cspdk.cells.gc_rectangular_nc +.. autofunction:: cspdk.si220.cells.gc_rectangular_nc .. plot:: :include-source: import cspdk - c = cspdk.cells.gc_rectangular_nc() + c = cspdk.si220.cells.gc_rectangular_nc() c.plot() @@ -385,14 +397,14 @@ gc_rectangular_nc gc_rectangular_no ---------------------------------------------------- -.. autofunction:: cspdk.cells.gc_rectangular_no +.. autofunction:: cspdk.si220.cells.gc_rectangular_no .. plot:: :include-source: import cspdk - c = cspdk.cells.gc_rectangular_no() + c = cspdk.si220.cells.gc_rectangular_no() c.plot() @@ -400,14 +412,14 @@ gc_rectangular_no gc_rectangular_rc ---------------------------------------------------- -.. autofunction:: cspdk.cells.gc_rectangular_rc +.. autofunction:: cspdk.si220.cells.gc_rectangular_rc .. plot:: :include-source: import cspdk - c = cspdk.cells.gc_rectangular_rc() + c = cspdk.si220.cells.gc_rectangular_rc() c.plot() @@ -415,14 +427,14 @@ gc_rectangular_rc gc_rectangular_ro ---------------------------------------------------- -.. autofunction:: cspdk.cells.gc_rectangular_ro +.. autofunction:: cspdk.si220.cells.gc_rectangular_ro .. plot:: :include-source: import cspdk - c = cspdk.cells.gc_rectangular_ro() + c = cspdk.si220.cells.gc_rectangular_ro() c.plot() @@ -430,14 +442,14 @@ gc_rectangular_ro gc_rectangular_sc ---------------------------------------------------- -.. autofunction:: cspdk.cells.gc_rectangular_sc +.. autofunction:: cspdk.si220.cells.gc_rectangular_sc .. plot:: :include-source: import cspdk - c = cspdk.cells.gc_rectangular_sc() + c = cspdk.si220.cells.gc_rectangular_sc() c.plot() @@ -445,14 +457,14 @@ gc_rectangular_sc gc_rectangular_so ---------------------------------------------------- -.. autofunction:: cspdk.cells.gc_rectangular_so +.. autofunction:: cspdk.si220.cells.gc_rectangular_so .. plot:: :include-source: import cspdk - c = cspdk.cells.gc_rectangular_so() + c = cspdk.si220.cells.gc_rectangular_so() c.plot() @@ -460,14 +472,14 @@ gc_rectangular_so grating_coupler_array ---------------------------------------------------- -.. autofunction:: cspdk.cells.grating_coupler_array +.. autofunction:: cspdk.si220.cells.grating_coupler_array .. plot:: :include-source: import cspdk - c = cspdk.cells.grating_coupler_array(pitch=127.0, n=6, port_name='o1', rotation=0.0, with_loopback=False, grating_coupler_spacing=0.0, cross_section='xs_nc') + c = cspdk.si220.cells.grating_coupler_array(pitch=127.0, n=6, port_name='o1', rotation=0.0, with_loopback=False, grating_coupler_spacing=0.0, cross_section='xs_nc') c.plot() @@ -475,14 +487,14 @@ grating_coupler_array heater ---------------------------------------------------- -.. autofunction:: cspdk.cells.heater +.. autofunction:: cspdk.si220.cells.heater .. plot:: :include-source: import cspdk - c = cspdk.cells.heater() + c = cspdk.si220.cells.heater() c.plot() @@ -490,14 +502,14 @@ heater mmi1x2_nc ---------------------------------------------------- -.. autofunction:: cspdk.cells.mmi1x2_nc +.. autofunction:: cspdk.si220.cells.mmi1x2_nc .. plot:: :include-source: import cspdk - c = cspdk.cells.mmi1x2_nc() + c = cspdk.si220.cells.mmi1x2_nc() c.plot() @@ -505,14 +517,14 @@ mmi1x2_nc mmi1x2_no ---------------------------------------------------- -.. autofunction:: cspdk.cells.mmi1x2_no +.. autofunction:: cspdk.si220.cells.mmi1x2_no .. plot:: :include-source: import cspdk - c = cspdk.cells.mmi1x2_no() + c = cspdk.si220.cells.mmi1x2_no() c.plot() @@ -520,14 +532,14 @@ mmi1x2_no mmi1x2_rc ---------------------------------------------------- -.. autofunction:: cspdk.cells.mmi1x2_rc +.. autofunction:: cspdk.si220.cells.mmi1x2_rc .. plot:: :include-source: import cspdk - c = cspdk.cells.mmi1x2_rc() + c = cspdk.si220.cells.mmi1x2_rc() c.plot() @@ -535,14 +547,14 @@ mmi1x2_rc mmi1x2_ro ---------------------------------------------------- -.. autofunction:: cspdk.cells.mmi1x2_ro +.. autofunction:: cspdk.si220.cells.mmi1x2_ro .. plot:: :include-source: import cspdk - c = cspdk.cells.mmi1x2_ro() + c = cspdk.si220.cells.mmi1x2_ro() c.plot() @@ -550,14 +562,14 @@ mmi1x2_ro mmi1x2_sc ---------------------------------------------------- -.. autofunction:: cspdk.cells.mmi1x2_sc +.. autofunction:: cspdk.si220.cells.mmi1x2_sc .. plot:: :include-source: import cspdk - c = cspdk.cells.mmi1x2_sc() + c = cspdk.si220.cells.mmi1x2_sc() c.plot() @@ -565,14 +577,14 @@ mmi1x2_sc mmi1x2_so ---------------------------------------------------- -.. autofunction:: cspdk.cells.mmi1x2_so +.. autofunction:: cspdk.si220.cells.mmi1x2_so .. plot:: :include-source: import cspdk - c = cspdk.cells.mmi1x2_so() + c = cspdk.si220.cells.mmi1x2_so() c.plot() @@ -580,14 +592,14 @@ mmi1x2_so mmi2x2_nc ---------------------------------------------------- -.. autofunction:: cspdk.cells.mmi2x2_nc +.. autofunction:: cspdk.si220.cells.mmi2x2_nc .. plot:: :include-source: import cspdk - c = cspdk.cells.mmi2x2_nc() + c = cspdk.si220.cells.mmi2x2_nc() c.plot() @@ -595,14 +607,14 @@ mmi2x2_nc mmi2x2_no ---------------------------------------------------- -.. autofunction:: cspdk.cells.mmi2x2_no +.. autofunction:: cspdk.si220.cells.mmi2x2_no .. plot:: :include-source: import cspdk - c = cspdk.cells.mmi2x2_no() + c = cspdk.si220.cells.mmi2x2_no() c.plot() @@ -610,14 +622,14 @@ mmi2x2_no mmi2x2_rc ---------------------------------------------------- -.. autofunction:: cspdk.cells.mmi2x2_rc +.. autofunction:: cspdk.si220.cells.mmi2x2_rc .. plot:: :include-source: import cspdk - c = cspdk.cells.mmi2x2_rc() + c = cspdk.si220.cells.mmi2x2_rc() c.plot() @@ -625,14 +637,14 @@ mmi2x2_rc mmi2x2_ro ---------------------------------------------------- -.. autofunction:: cspdk.cells.mmi2x2_ro +.. autofunction:: cspdk.si220.cells.mmi2x2_ro .. plot:: :include-source: import cspdk - c = cspdk.cells.mmi2x2_ro() + c = cspdk.si220.cells.mmi2x2_ro() c.plot() @@ -640,14 +652,14 @@ mmi2x2_ro mmi2x2_sc ---------------------------------------------------- -.. autofunction:: cspdk.cells.mmi2x2_sc +.. autofunction:: cspdk.si220.cells.mmi2x2_sc .. plot:: :include-source: import cspdk - c = cspdk.cells.mmi2x2_sc() + c = cspdk.si220.cells.mmi2x2_sc() c.plot() @@ -655,14 +667,14 @@ mmi2x2_sc mmi2x2_so ---------------------------------------------------- -.. autofunction:: cspdk.cells.mmi2x2_so +.. autofunction:: cspdk.si220.cells.mmi2x2_so .. plot:: :include-source: import cspdk - c = cspdk.cells.mmi2x2_so() + c = cspdk.si220.cells.mmi2x2_so() c.plot() @@ -670,14 +682,14 @@ mmi2x2_so mzi_nc ---------------------------------------------------- -.. autofunction:: cspdk.cells.mzi_nc +.. autofunction:: cspdk.si220.cells.mzi_nc .. plot:: :include-source: import cspdk - c = cspdk.cells.mzi_nc(delta_length=10.0, length_y=2.0, length_x=0.1, add_electrical_ports_bot=True) + c = cspdk.si220.cells.mzi_nc(delta_length=10.0, length_y=2.0, length_x=0.1, add_electrical_ports_bot=True) c.plot() @@ -685,14 +697,14 @@ mzi_nc mzi_no ---------------------------------------------------- -.. autofunction:: cspdk.cells.mzi_no +.. autofunction:: cspdk.si220.cells.mzi_no .. plot:: :include-source: import cspdk - c = cspdk.cells.mzi_no(delta_length=10.0, length_y=2.0, length_x=0.1, add_electrical_ports_bot=True) + c = cspdk.si220.cells.mzi_no(delta_length=10.0, length_y=2.0, length_x=0.1, add_electrical_ports_bot=True) c.plot() @@ -700,14 +712,14 @@ mzi_no mzi_rc ---------------------------------------------------- -.. autofunction:: cspdk.cells.mzi_rc +.. autofunction:: cspdk.si220.cells.mzi_rc .. plot:: :include-source: import cspdk - c = cspdk.cells.mzi_rc(delta_length=10.0, length_y=2.0, length_x=0.1, add_electrical_ports_bot=True) + c = cspdk.si220.cells.mzi_rc(delta_length=10.0, length_y=2.0, length_x=0.1, add_electrical_ports_bot=True) c.plot() @@ -715,14 +727,14 @@ mzi_rc mzi_ro ---------------------------------------------------- -.. autofunction:: cspdk.cells.mzi_ro +.. autofunction:: cspdk.si220.cells.mzi_ro .. plot:: :include-source: import cspdk - c = cspdk.cells.mzi_ro(delta_length=10.0, length_y=2.0, length_x=0.1, add_electrical_ports_bot=True) + c = cspdk.si220.cells.mzi_ro(delta_length=10.0, length_y=2.0, length_x=0.1, add_electrical_ports_bot=True) c.plot() @@ -730,14 +742,14 @@ mzi_ro mzi_sc ---------------------------------------------------- -.. autofunction:: cspdk.cells.mzi_sc +.. autofunction:: cspdk.si220.cells.mzi_sc .. plot:: :include-source: import cspdk - c = cspdk.cells.mzi_sc(delta_length=10.0, length_y=2.0, length_x=0.1, add_electrical_ports_bot=True) + c = cspdk.si220.cells.mzi_sc(delta_length=10.0, length_y=2.0, length_x=0.1, add_electrical_ports_bot=True) c.plot() @@ -745,14 +757,14 @@ mzi_sc mzi_so ---------------------------------------------------- -.. autofunction:: cspdk.cells.mzi_so +.. autofunction:: cspdk.si220.cells.mzi_so .. plot:: :include-source: import cspdk - c = cspdk.cells.mzi_so(delta_length=10.0, length_y=2.0, length_x=0.1, add_electrical_ports_bot=True) + c = cspdk.si220.cells.mzi_so(delta_length=10.0, length_y=2.0, length_x=0.1, add_electrical_ports_bot=True) c.plot() @@ -760,14 +772,14 @@ mzi_so pad ---------------------------------------------------- -.. autofunction:: cspdk.cells.pad +.. autofunction:: cspdk.si220.cells.pad .. plot:: :include-source: import cspdk - c = cspdk.cells.pad(size=(100.0, 100.0), layer=(41, 0), port_inclusion=0.0) + c = cspdk.si220.cells.pad(size=(100.0, 100.0), layer=(41, 0), port_inclusion=0.0) c.plot() @@ -775,14 +787,14 @@ pad rectangle ---------------------------------------------------- -.. autofunction:: cspdk.cells.rectangle +.. autofunction:: cspdk.si220.cells.rectangle .. plot:: :include-source: import cspdk - c = cspdk.cells.rectangle(size=(4.0, 2.0), layer=(99, 0), centered=False, port_type='electrical', port_orientations=(180.0, 90.0, 0.0, -90.0), round_corners_east_west=False, round_corners_north_south=False) + c = cspdk.si220.cells.rectangle(size=(4.0, 2.0), layer=(99, 0), centered=False, port_type='electrical', port_orientations=(180.0, 90.0, 0.0, -90.0), round_corners_east_west=False, round_corners_north_south=False) c.plot() @@ -790,14 +802,14 @@ rectangle straight_nc ---------------------------------------------------- -.. autofunction:: cspdk.cells.straight_nc +.. autofunction:: cspdk.si220.cells.straight_nc .. plot:: :include-source: import cspdk - c = cspdk.cells.straight_nc(length=10.0) + c = cspdk.si220.cells.straight_nc(length=10.0) c.plot() @@ -805,14 +817,14 @@ straight_nc straight_no ---------------------------------------------------- -.. autofunction:: cspdk.cells.straight_no +.. autofunction:: cspdk.si220.cells.straight_no .. plot:: :include-source: import cspdk - c = cspdk.cells.straight_no(length=10.0) + c = cspdk.si220.cells.straight_no(length=10.0) c.plot() @@ -820,14 +832,14 @@ straight_no straight_rc ---------------------------------------------------- -.. autofunction:: cspdk.cells.straight_rc +.. autofunction:: cspdk.si220.cells.straight_rc .. plot:: :include-source: import cspdk - c = cspdk.cells.straight_rc(length=10.0) + c = cspdk.si220.cells.straight_rc(length=10.0) c.plot() @@ -835,14 +847,14 @@ straight_rc straight_ro ---------------------------------------------------- -.. autofunction:: cspdk.cells.straight_ro +.. autofunction:: cspdk.si220.cells.straight_ro .. plot:: :include-source: import cspdk - c = cspdk.cells.straight_ro(length=10.0) + c = cspdk.si220.cells.straight_ro(length=10.0) c.plot() @@ -850,14 +862,14 @@ straight_ro straight_sc ---------------------------------------------------- -.. autofunction:: cspdk.cells.straight_sc +.. autofunction:: cspdk.si220.cells.straight_sc .. plot:: :include-source: import cspdk - c = cspdk.cells.straight_sc(length=10.0) + c = cspdk.si220.cells.straight_sc(length=10.0) c.plot() @@ -865,14 +877,14 @@ straight_sc straight_so ---------------------------------------------------- -.. autofunction:: cspdk.cells.straight_so +.. autofunction:: cspdk.si220.cells.straight_so .. plot:: :include-source: import cspdk - c = cspdk.cells.straight_so(length=10.0) + c = cspdk.si220.cells.straight_so(length=10.0) c.plot() @@ -880,14 +892,14 @@ straight_so taper_nc ---------------------------------------------------- -.. autofunction:: cspdk.cells.taper_nc +.. autofunction:: cspdk.si220.cells.taper_nc .. plot:: :include-source: import cspdk - c = cspdk.cells.taper_nc(length=10.0, width1=0.5) + c = cspdk.si220.cells.taper_nc(length=10.0, width1=0.5) c.plot() @@ -895,14 +907,14 @@ taper_nc taper_no ---------------------------------------------------- -.. autofunction:: cspdk.cells.taper_no +.. autofunction:: cspdk.si220.cells.taper_no .. plot:: :include-source: import cspdk - c = cspdk.cells.taper_no(length=10.0, width1=0.5) + c = cspdk.si220.cells.taper_no(length=10.0, width1=0.5) c.plot() @@ -910,14 +922,14 @@ taper_no taper_rc ---------------------------------------------------- -.. autofunction:: cspdk.cells.taper_rc +.. autofunction:: cspdk.si220.cells.taper_rc .. plot:: :include-source: import cspdk - c = cspdk.cells.taper_rc(length=10.0, width1=0.5) + c = cspdk.si220.cells.taper_rc(length=10.0, width1=0.5) c.plot() @@ -925,14 +937,14 @@ taper_rc taper_ro ---------------------------------------------------- -.. autofunction:: cspdk.cells.taper_ro +.. autofunction:: cspdk.si220.cells.taper_ro .. plot:: :include-source: import cspdk - c = cspdk.cells.taper_ro(length=10.0, width1=0.5) + c = cspdk.si220.cells.taper_ro(length=10.0, width1=0.5) c.plot() @@ -940,14 +952,14 @@ taper_ro taper_sc ---------------------------------------------------- -.. autofunction:: cspdk.cells.taper_sc +.. autofunction:: cspdk.si220.cells.taper_sc .. plot:: :include-source: import cspdk - c = cspdk.cells.taper_sc(length=10.0, width1=0.5) + c = cspdk.si220.cells.taper_sc(length=10.0, width1=0.5) c.plot() @@ -955,14 +967,14 @@ taper_sc taper_so ---------------------------------------------------- -.. autofunction:: cspdk.cells.taper_so +.. autofunction:: cspdk.si220.cells.taper_so .. plot:: :include-source: import cspdk - c = cspdk.cells.taper_so(length=10.0, width1=0.5) + c = cspdk.si220.cells.taper_so(length=10.0, width1=0.5) c.plot() @@ -970,14 +982,14 @@ taper_so trans_sc_rc10 ---------------------------------------------------- -.. autofunction:: cspdk.cells.trans_sc_rc10 +.. autofunction:: cspdk.si220.cells.trans_sc_rc10 .. plot:: :include-source: import cspdk - c = cspdk.cells.trans_sc_rc10() + c = cspdk.si220.cells.trans_sc_rc10() c.plot() @@ -985,14 +997,14 @@ trans_sc_rc10 trans_sc_rc20 ---------------------------------------------------- -.. autofunction:: cspdk.cells.trans_sc_rc20 +.. autofunction:: cspdk.si220.cells.trans_sc_rc20 .. plot:: :include-source: import cspdk - c = cspdk.cells.trans_sc_rc20() + c = cspdk.si220.cells.trans_sc_rc20() c.plot() @@ -1000,14 +1012,14 @@ trans_sc_rc20 trans_sc_rc50 ---------------------------------------------------- -.. autofunction:: cspdk.cells.trans_sc_rc50 +.. autofunction:: cspdk.si220.cells.trans_sc_rc50 .. plot:: :include-source: import cspdk - c = cspdk.cells.trans_sc_rc50() + c = cspdk.si220.cells.trans_sc_rc50() c.plot() @@ -1015,12 +1027,12 @@ trans_sc_rc50 wire_corner ---------------------------------------------------- -.. autofunction:: cspdk.cells.wire_corner +.. autofunction:: cspdk.si220.cells.wire_corner .. plot:: :include-source: import cspdk - c = cspdk.cells.wire_corner(cross_section='xs_metal_routing') + c = cspdk.si220.cells.wire_corner(cross_section='xs_metal_routing') c.plot() diff --git a/install_tech.py b/install_tech.py index 53aed55..eb079e1 100644 --- a/install_tech.py +++ b/install_tech.py @@ -14,6 +14,9 @@ def remove_path_or_dir(dest: pathlib.Path): def make_link(src, dest, overwrite: bool = True) -> None: dest = pathlib.Path(dest) + if not src.exists(): + raise FileNotFoundError(f"{src} does not exist") + if dest.exists() and not overwrite: print(f"{dest} already exists") return @@ -33,8 +36,13 @@ def make_link(src, dest, overwrite: bool = True) -> None: klayout_folder = "KLayout" if sys.platform == "win32" else ".klayout" cwd = pathlib.Path(__file__).resolve().parent home = pathlib.Path.home() - src = cwd / "cspdk" / "klayout" dest_folder = home / klayout_folder / "tech" dest_folder.mkdir(exist_ok=True, parents=True) - dest = dest_folder / "cspdk" + + src = cwd / "cspdk" / "si220" / "klayout" + dest = dest_folder / "cspdk_si220" + make_link(src=src, dest=dest) + + src = cwd / "cspdk" / "sin300" / "klayout" + dest = dest_folder / "cspdk_sin300" make_link(src=src, dest=dest) diff --git a/pyproject.toml b/pyproject.toml index 871ebfc..7cc274d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ classifiers = [ "Operating System :: OS Independent" ] dependencies = [ - "gdsfactory==7.25.0", + "gdsfactory==7.25.1", "gplugins[sax]>=0.13,<0.14" ] description = "CornerStone PDK" diff --git a/tests/gds_ref/_bend.gds b/tests/gds_ref/_bend.gds deleted file mode 100644 index 223bd77..0000000 Binary files a/tests/gds_ref/_bend.gds and /dev/null differ diff --git a/tests/gds_ref/_gc_rectangular.gds b/tests/gds_ref/_gc_rectangular.gds deleted file mode 100644 index beeacac..0000000 Binary files a/tests/gds_ref/_gc_rectangular.gds and /dev/null differ diff --git a/tests/gds_ref/_mm1x2_nitride_cband.gds b/tests/gds_ref/_mm1x2_nitride_cband.gds deleted file mode 100644 index bbcab54..0000000 Binary files a/tests/gds_ref/_mm1x2_nitride_cband.gds and /dev/null differ diff --git a/tests/gds_ref/_mm2x2_nitride_cband.gds b/tests/gds_ref/_mm2x2_nitride_cband.gds deleted file mode 100644 index 8c3d420..0000000 Binary files a/tests/gds_ref/_mm2x2_nitride_cband.gds and /dev/null differ diff --git a/tests/gds_ref/_mmi1x2.gds b/tests/gds_ref/_mmi1x2.gds deleted file mode 100644 index ec67fdc..0000000 Binary files a/tests/gds_ref/_mmi1x2.gds and /dev/null differ diff --git a/tests/gds_ref/_mmi1x2_nitride_oband.gds b/tests/gds_ref/_mmi1x2_nitride_oband.gds deleted file mode 100644 index 534adce..0000000 Binary files a/tests/gds_ref/_mmi1x2_nitride_oband.gds and /dev/null differ diff --git a/tests/gds_ref/_mmi2x2.gds b/tests/gds_ref/_mmi2x2.gds deleted file mode 100644 index 0a5a743..0000000 Binary files a/tests/gds_ref/_mmi2x2.gds and /dev/null differ diff --git a/tests/gds_ref/_mmi2x2_nitride_oband.gds b/tests/gds_ref/_mmi2x2_nitride_oband.gds deleted file mode 100644 index 4dde2da..0000000 Binary files a/tests/gds_ref/_mmi2x2_nitride_oband.gds and /dev/null differ diff --git a/tests/gds_ref/_taper.gds b/tests/gds_ref/_taper.gds deleted file mode 100644 index 8b0f8f1..0000000 Binary files a/tests/gds_ref/_taper.gds and /dev/null differ diff --git a/tests/gds_ref/bend_euler.gds b/tests/gds_ref/bend_euler.gds deleted file mode 100644 index f2e585f..0000000 Binary files a/tests/gds_ref/bend_euler.gds and /dev/null differ diff --git a/tests/gds_ref/die_sc.gds b/tests/gds_ref/die_sc.gds deleted file mode 100644 index 8eac2fc..0000000 Binary files a/tests/gds_ref/die_sc.gds and /dev/null differ diff --git a/tests/gds_ref/die_so.gds b/tests/gds_ref/die_so.gds deleted file mode 100644 index 1a70deb..0000000 Binary files a/tests/gds_ref/die_so.gds and /dev/null differ diff --git a/tests/gds_ref/gc_rectangular.gds b/tests/gds_ref/gc_rectangular.gds deleted file mode 100644 index 6b8d9ab..0000000 Binary files a/tests/gds_ref/gc_rectangular.gds and /dev/null differ diff --git a/tests/gds_ref/gc_rectangular_nc.gds b/tests/gds_ref/gc_rectangular_nc.gds deleted file mode 100644 index 9d8bcdc..0000000 Binary files a/tests/gds_ref/gc_rectangular_nc.gds and /dev/null differ diff --git a/tests/gds_ref/gc_rectangular_no.gds b/tests/gds_ref/gc_rectangular_no.gds deleted file mode 100644 index a34f5bf..0000000 Binary files a/tests/gds_ref/gc_rectangular_no.gds and /dev/null differ diff --git a/tests/gds_ref/gc_rectangular_rc.gds b/tests/gds_ref/gc_rectangular_rc.gds deleted file mode 100644 index d1204c7..0000000 Binary files a/tests/gds_ref/gc_rectangular_rc.gds and /dev/null differ diff --git a/tests/gds_ref/gc_rectangular_ro.gds b/tests/gds_ref/gc_rectangular_ro.gds deleted file mode 100644 index ef1748e..0000000 Binary files a/tests/gds_ref/gc_rectangular_ro.gds and /dev/null differ diff --git a/tests/gds_ref/gc_rectangular_sc.gds b/tests/gds_ref/gc_rectangular_sc.gds deleted file mode 100644 index 06e4073..0000000 Binary files a/tests/gds_ref/gc_rectangular_sc.gds and /dev/null differ diff --git a/tests/gds_ref/gc_rectangular_so.gds b/tests/gds_ref/gc_rectangular_so.gds deleted file mode 100644 index a4f33e4..0000000 Binary files a/tests/gds_ref/gc_rectangular_so.gds and /dev/null differ diff --git a/tests/gds_ref/grating_coupler_array.gds b/tests/gds_ref/grating_coupler_array.gds deleted file mode 100644 index 61ece74..0000000 Binary files a/tests/gds_ref/grating_coupler_array.gds and /dev/null differ diff --git a/tests/gds_ref/mmi1x2.gds b/tests/gds_ref/mmi1x2.gds deleted file mode 100644 index 22b27c7..0000000 Binary files a/tests/gds_ref/mmi1x2.gds and /dev/null differ diff --git a/tests/gds_ref/mmi1x2_rc.gds b/tests/gds_ref/mmi1x2_rc.gds deleted file mode 100644 index 8f05d09..0000000 Binary files a/tests/gds_ref/mmi1x2_rc.gds and /dev/null differ diff --git a/tests/gds_ref/mmi1x2_ro.gds b/tests/gds_ref/mmi1x2_ro.gds deleted file mode 100644 index 8583a92..0000000 Binary files a/tests/gds_ref/mmi1x2_ro.gds and /dev/null differ diff --git a/tests/gds_ref/mmi1x2_sc.gds b/tests/gds_ref/mmi1x2_sc.gds deleted file mode 100644 index a3446de..0000000 Binary files a/tests/gds_ref/mmi1x2_sc.gds and /dev/null differ diff --git a/tests/gds_ref/mmi1x2_so.gds b/tests/gds_ref/mmi1x2_so.gds deleted file mode 100644 index ec11edc..0000000 Binary files a/tests/gds_ref/mmi1x2_so.gds and /dev/null differ diff --git a/tests/gds_ref/mmi2x2.gds b/tests/gds_ref/mmi2x2.gds deleted file mode 100644 index b349bb6..0000000 Binary files a/tests/gds_ref/mmi2x2.gds and /dev/null differ diff --git a/tests/gds_ref/mmi2x2_rc.gds b/tests/gds_ref/mmi2x2_rc.gds deleted file mode 100644 index 27a35aa..0000000 Binary files a/tests/gds_ref/mmi2x2_rc.gds and /dev/null differ diff --git a/tests/gds_ref/mmi2x2_ro.gds b/tests/gds_ref/mmi2x2_ro.gds deleted file mode 100644 index b6c0477..0000000 Binary files a/tests/gds_ref/mmi2x2_ro.gds and /dev/null differ diff --git a/tests/gds_ref/mmi2x2_sc.gds b/tests/gds_ref/mmi2x2_sc.gds deleted file mode 100644 index ddda3a7..0000000 Binary files a/tests/gds_ref/mmi2x2_sc.gds and /dev/null differ diff --git a/tests/gds_ref/mmi2x2_so.gds b/tests/gds_ref/mmi2x2_so.gds deleted file mode 100644 index 0195c3e..0000000 Binary files a/tests/gds_ref/mmi2x2_so.gds and /dev/null differ diff --git a/tests/gds_ref/mzi_rc.gds b/tests/gds_ref/mzi_rc.gds deleted file mode 100644 index 3369edc..0000000 Binary files a/tests/gds_ref/mzi_rc.gds and /dev/null differ diff --git a/tests/gds_ref/mzi_ro.gds b/tests/gds_ref/mzi_ro.gds deleted file mode 100644 index 6864743..0000000 Binary files a/tests/gds_ref/mzi_ro.gds and /dev/null differ diff --git a/tests/gds_ref/mzi_sc.gds b/tests/gds_ref/mzi_sc.gds deleted file mode 100644 index c1913f6..0000000 Binary files a/tests/gds_ref/mzi_sc.gds and /dev/null differ diff --git a/tests/gds_ref/pad.gds b/tests/gds_ref/pad.gds deleted file mode 100644 index e052818..0000000 Binary files a/tests/gds_ref/pad.gds and /dev/null differ diff --git a/tests/gds_ref/rectangle.gds b/tests/gds_ref/rectangle.gds deleted file mode 100644 index 1a18a75..0000000 Binary files a/tests/gds_ref/rectangle.gds and /dev/null differ diff --git a/tests/gds_ref/straight.gds b/tests/gds_ref/straight.gds deleted file mode 100644 index b080f71..0000000 Binary files a/tests/gds_ref/straight.gds and /dev/null differ diff --git a/tests/gds_ref/straight_nc.gds b/tests/gds_ref/straight_nc.gds deleted file mode 100644 index 85b4bdb..0000000 Binary files a/tests/gds_ref/straight_nc.gds and /dev/null differ diff --git a/tests/gds_ref/straight_no.gds b/tests/gds_ref/straight_no.gds deleted file mode 100644 index adc72fc..0000000 Binary files a/tests/gds_ref/straight_no.gds and /dev/null differ diff --git a/tests/gds_ref/straight_rc.gds b/tests/gds_ref/straight_rc.gds deleted file mode 100644 index e2f3fc7..0000000 Binary files a/tests/gds_ref/straight_rc.gds and /dev/null differ diff --git a/tests/gds_ref/straight_ro.gds b/tests/gds_ref/straight_ro.gds deleted file mode 100644 index 5aa0e4a..0000000 Binary files a/tests/gds_ref/straight_ro.gds and /dev/null differ diff --git a/tests/gds_ref/straight_sc.gds b/tests/gds_ref/straight_sc.gds deleted file mode 100644 index ca8c3c8..0000000 Binary files a/tests/gds_ref/straight_sc.gds and /dev/null differ diff --git a/tests/gds_ref/straight_so.gds b/tests/gds_ref/straight_so.gds deleted file mode 100644 index 33aa424..0000000 Binary files a/tests/gds_ref/straight_so.gds and /dev/null differ diff --git a/tests/gds_ref/taper.gds b/tests/gds_ref/taper.gds deleted file mode 100644 index 2c4bb62..0000000 Binary files a/tests/gds_ref/taper.gds and /dev/null differ diff --git a/tests/gds_ref/taper_cross_section.gds b/tests/gds_ref/taper_cross_section.gds deleted file mode 100644 index 3d5e229..0000000 Binary files a/tests/gds_ref/taper_cross_section.gds and /dev/null differ diff --git a/tests/gds_ref/trans_sc_rc10.gds b/tests/gds_ref/trans_sc_rc10.gds deleted file mode 100644 index a2dd9b9..0000000 Binary files a/tests/gds_ref/trans_sc_rc10.gds and /dev/null differ diff --git a/tests/gds_ref/trans_sc_rc20.gds b/tests/gds_ref/trans_sc_rc20.gds deleted file mode 100644 index 9828c9b..0000000 Binary files a/tests/gds_ref/trans_sc_rc20.gds and /dev/null differ diff --git a/tests/gds_ref/trans_sc_rc50.gds b/tests/gds_ref/trans_sc_rc50.gds deleted file mode 100644 index 96fe0ad..0000000 Binary files a/tests/gds_ref/trans_sc_rc50.gds and /dev/null differ diff --git a/tests/gds_ref/wire_corner.gds b/tests/gds_ref/wire_corner.gds deleted file mode 100644 index ba22294..0000000 Binary files a/tests/gds_ref/wire_corner.gds and /dev/null differ diff --git a/tests/gds_ref/array.gds b/tests/gds_ref_si220/array.gds similarity index 100% rename from tests/gds_ref/array.gds rename to tests/gds_ref_si220/array.gds diff --git a/tests/gds_ref/bend_rc.gds b/tests/gds_ref_si220/bend_rc.gds similarity index 96% rename from tests/gds_ref/bend_rc.gds rename to tests/gds_ref_si220/bend_rc.gds index 6e3da24..c61debd 100644 Binary files a/tests/gds_ref/bend_rc.gds and b/tests/gds_ref_si220/bend_rc.gds differ diff --git a/tests/gds_ref/bend_ro.gds b/tests/gds_ref_si220/bend_ro.gds similarity index 96% rename from tests/gds_ref/bend_ro.gds rename to tests/gds_ref_si220/bend_ro.gds index a2c6b06..e4bba42 100644 Binary files a/tests/gds_ref/bend_ro.gds and b/tests/gds_ref_si220/bend_ro.gds differ diff --git a/tests/gds_ref/bend_s.gds b/tests/gds_ref_si220/bend_s.gds similarity index 98% rename from tests/gds_ref/bend_s.gds rename to tests/gds_ref_si220/bend_s.gds index 481b023..a9109ff 100644 Binary files a/tests/gds_ref/bend_s.gds and b/tests/gds_ref_si220/bend_s.gds differ diff --git a/tests/gds_ref_si220/bend_s.oas b/tests/gds_ref_si220/bend_s.oas new file mode 100644 index 0000000..2aeef85 Binary files /dev/null and b/tests/gds_ref_si220/bend_s.oas differ diff --git a/tests/gds_ref/bend_sc.gds b/tests/gds_ref_si220/bend_sc.gds similarity index 90% rename from tests/gds_ref/bend_sc.gds rename to tests/gds_ref_si220/bend_sc.gds index 819ad2b..9531fe8 100644 Binary files a/tests/gds_ref/bend_sc.gds and b/tests/gds_ref_si220/bend_sc.gds differ diff --git a/tests/gds_ref/bend_so.gds b/tests/gds_ref_si220/bend_so.gds similarity index 90% rename from tests/gds_ref/bend_so.gds rename to tests/gds_ref_si220/bend_so.gds index 88beed9..c25f92d 100644 Binary files a/tests/gds_ref/bend_so.gds and b/tests/gds_ref_si220/bend_so.gds differ diff --git a/tests/gds_ref/coupler_rc.gds b/tests/gds_ref_si220/coupler_rc.gds similarity index 100% rename from tests/gds_ref/coupler_rc.gds rename to tests/gds_ref_si220/coupler_rc.gds diff --git a/tests/gds_ref/coupler_ro.gds b/tests/gds_ref_si220/coupler_ro.gds similarity index 100% rename from tests/gds_ref/coupler_ro.gds rename to tests/gds_ref_si220/coupler_ro.gds diff --git a/tests/gds_ref/coupler_sc.gds b/tests/gds_ref_si220/coupler_sc.gds similarity index 100% rename from tests/gds_ref/coupler_sc.gds rename to tests/gds_ref_si220/coupler_sc.gds diff --git a/tests/gds_ref/coupler_so.gds b/tests/gds_ref_si220/coupler_so.gds similarity index 100% rename from tests/gds_ref/coupler_so.gds rename to tests/gds_ref_si220/coupler_so.gds diff --git a/tests/gds_ref/crossing_rc.gds b/tests/gds_ref_si220/crossing_rc.gds similarity index 100% rename from tests/gds_ref/crossing_rc.gds rename to tests/gds_ref_si220/crossing_rc.gds diff --git a/tests/gds_ref/crossing_sc.gds b/tests/gds_ref_si220/crossing_sc.gds similarity index 100% rename from tests/gds_ref/crossing_sc.gds rename to tests/gds_ref_si220/crossing_sc.gds diff --git a/tests/gds_ref/crossing_so.gds b/tests/gds_ref_si220/crossing_so.gds similarity index 100% rename from tests/gds_ref/crossing_so.gds rename to tests/gds_ref_si220/crossing_so.gds diff --git a/tests/gds_ref/die_rc.gds b/tests/gds_ref_si220/die_rc.gds similarity index 66% rename from tests/gds_ref/die_rc.gds rename to tests/gds_ref_si220/die_rc.gds index bb40781..d70f857 100644 Binary files a/tests/gds_ref/die_rc.gds and b/tests/gds_ref_si220/die_rc.gds differ diff --git a/tests/gds_ref/die_ro.gds b/tests/gds_ref_si220/die_ro.gds similarity index 63% rename from tests/gds_ref/die_ro.gds rename to tests/gds_ref_si220/die_ro.gds index 37c1f99..e464d37 100644 Binary files a/tests/gds_ref/die_ro.gds and b/tests/gds_ref_si220/die_ro.gds differ diff --git a/tests/gds_ref_si220/die_sc.gds b/tests/gds_ref_si220/die_sc.gds new file mode 100644 index 0000000..7eff2d0 Binary files /dev/null and b/tests/gds_ref_si220/die_sc.gds differ diff --git a/tests/gds_ref_si220/die_sc.oas b/tests/gds_ref_si220/die_sc.oas new file mode 100644 index 0000000..f488020 Binary files /dev/null and b/tests/gds_ref_si220/die_sc.oas differ diff --git a/tests/gds_ref_si220/die_so.gds b/tests/gds_ref_si220/die_so.gds new file mode 100644 index 0000000..43344d9 Binary files /dev/null and b/tests/gds_ref_si220/die_so.gds differ diff --git a/tests/gds_ref/gc_elliptical_sc.gds b/tests/gds_ref_si220/gc_elliptical_sc.gds similarity index 100% rename from tests/gds_ref/gc_elliptical_sc.gds rename to tests/gds_ref_si220/gc_elliptical_sc.gds diff --git a/tests/gds_ref/gc_elliptical_so.gds b/tests/gds_ref_si220/gc_elliptical_so.gds similarity index 100% rename from tests/gds_ref/gc_elliptical_so.gds rename to tests/gds_ref_si220/gc_elliptical_so.gds diff --git a/tests/gds_ref_si220/gc_rectangular_rc.gds b/tests/gds_ref_si220/gc_rectangular_rc.gds new file mode 100644 index 0000000..7c53a4c Binary files /dev/null and b/tests/gds_ref_si220/gc_rectangular_rc.gds differ diff --git a/tests/gds_ref_si220/gc_rectangular_ro.gds b/tests/gds_ref_si220/gc_rectangular_ro.gds new file mode 100644 index 0000000..228a363 Binary files /dev/null and b/tests/gds_ref_si220/gc_rectangular_ro.gds differ diff --git a/tests/gds_ref_si220/gc_rectangular_sc.gds b/tests/gds_ref_si220/gc_rectangular_sc.gds new file mode 100644 index 0000000..7c407d5 Binary files /dev/null and b/tests/gds_ref_si220/gc_rectangular_sc.gds differ diff --git a/tests/gds_ref_si220/gc_rectangular_so.gds b/tests/gds_ref_si220/gc_rectangular_so.gds new file mode 100644 index 0000000..94791d9 Binary files /dev/null and b/tests/gds_ref_si220/gc_rectangular_so.gds differ diff --git a/tests/gds_ref_si220/grating_coupler_array.gds b/tests/gds_ref_si220/grating_coupler_array.gds new file mode 100644 index 0000000..355c09d Binary files /dev/null and b/tests/gds_ref_si220/grating_coupler_array.gds differ diff --git a/tests/gds_ref_si220/grating_coupler_array.oas b/tests/gds_ref_si220/grating_coupler_array.oas new file mode 100644 index 0000000..27e94e2 Binary files /dev/null and b/tests/gds_ref_si220/grating_coupler_array.oas differ diff --git a/tests/gds_ref_si220/heater.gds b/tests/gds_ref_si220/heater.gds new file mode 100644 index 0000000..d1aa94a Binary files /dev/null and b/tests/gds_ref_si220/heater.gds differ diff --git a/tests/gds_ref_si220/mmi1x2_rc.gds b/tests/gds_ref_si220/mmi1x2_rc.gds new file mode 100644 index 0000000..f466a2a Binary files /dev/null and b/tests/gds_ref_si220/mmi1x2_rc.gds differ diff --git a/tests/gds_ref_si220/mmi1x2_ro.gds b/tests/gds_ref_si220/mmi1x2_ro.gds new file mode 100644 index 0000000..70d9abd Binary files /dev/null and b/tests/gds_ref_si220/mmi1x2_ro.gds differ diff --git a/tests/gds_ref_si220/mmi1x2_sc.gds b/tests/gds_ref_si220/mmi1x2_sc.gds new file mode 100644 index 0000000..0da7a67 Binary files /dev/null and b/tests/gds_ref_si220/mmi1x2_sc.gds differ diff --git a/tests/gds_ref_si220/mmi1x2_so.gds b/tests/gds_ref_si220/mmi1x2_so.gds new file mode 100644 index 0000000..7b76284 Binary files /dev/null and b/tests/gds_ref_si220/mmi1x2_so.gds differ diff --git a/tests/gds_ref_si220/mmi2x2_rc.gds b/tests/gds_ref_si220/mmi2x2_rc.gds new file mode 100644 index 0000000..25b60c7 Binary files /dev/null and b/tests/gds_ref_si220/mmi2x2_rc.gds differ diff --git a/tests/gds_ref_si220/mmi2x2_ro.gds b/tests/gds_ref_si220/mmi2x2_ro.gds new file mode 100644 index 0000000..66aa709 Binary files /dev/null and b/tests/gds_ref_si220/mmi2x2_ro.gds differ diff --git a/tests/gds_ref_si220/mmi2x2_sc.gds b/tests/gds_ref_si220/mmi2x2_sc.gds new file mode 100644 index 0000000..5471106 Binary files /dev/null and b/tests/gds_ref_si220/mmi2x2_sc.gds differ diff --git a/tests/gds_ref_si220/mmi2x2_so.gds b/tests/gds_ref_si220/mmi2x2_so.gds new file mode 100644 index 0000000..bbcb80d Binary files /dev/null and b/tests/gds_ref_si220/mmi2x2_so.gds differ diff --git a/tests/gds_ref_si220/mzi_rc.gds b/tests/gds_ref_si220/mzi_rc.gds new file mode 100644 index 0000000..68ac018 Binary files /dev/null and b/tests/gds_ref_si220/mzi_rc.gds differ diff --git a/tests/gds_ref_si220/mzi_ro.gds b/tests/gds_ref_si220/mzi_ro.gds new file mode 100644 index 0000000..6960ea8 Binary files /dev/null and b/tests/gds_ref_si220/mzi_ro.gds differ diff --git a/tests/gds_ref/mzi.gds b/tests/gds_ref_si220/mzi_sc.gds similarity index 61% rename from tests/gds_ref/mzi.gds rename to tests/gds_ref_si220/mzi_sc.gds index f1cb13a..66f0aa6 100644 Binary files a/tests/gds_ref/mzi.gds and b/tests/gds_ref_si220/mzi_sc.gds differ diff --git a/tests/gds_ref/mzi_so.gds b/tests/gds_ref_si220/mzi_so.gds similarity index 60% rename from tests/gds_ref/mzi_so.gds rename to tests/gds_ref_si220/mzi_so.gds index 80bece1..b62bd95 100644 Binary files a/tests/gds_ref/mzi_so.gds and b/tests/gds_ref_si220/mzi_so.gds differ diff --git a/tests/gds_ref_si220/pad.gds b/tests/gds_ref_si220/pad.gds new file mode 100644 index 0000000..bc585bf Binary files /dev/null and b/tests/gds_ref_si220/pad.gds differ diff --git a/tests/gds_ref_si220/rectangle.gds b/tests/gds_ref_si220/rectangle.gds new file mode 100644 index 0000000..be4b642 Binary files /dev/null and b/tests/gds_ref_si220/rectangle.gds differ diff --git a/tests/gds_ref_si220/straight_rc.gds b/tests/gds_ref_si220/straight_rc.gds new file mode 100644 index 0000000..392de27 Binary files /dev/null and b/tests/gds_ref_si220/straight_rc.gds differ diff --git a/tests/gds_ref_si220/straight_ro.gds b/tests/gds_ref_si220/straight_ro.gds new file mode 100644 index 0000000..9e3a590 Binary files /dev/null and b/tests/gds_ref_si220/straight_ro.gds differ diff --git a/tests/gds_ref/_straight.gds b/tests/gds_ref_si220/straight_sc.gds similarity index 63% rename from tests/gds_ref/_straight.gds rename to tests/gds_ref_si220/straight_sc.gds index 4072cfe..54b2b95 100644 Binary files a/tests/gds_ref/_straight.gds and b/tests/gds_ref_si220/straight_sc.gds differ diff --git a/tests/gds_ref_si220/straight_sc.oas b/tests/gds_ref_si220/straight_sc.oas new file mode 100644 index 0000000..df1c8a4 Binary files /dev/null and b/tests/gds_ref_si220/straight_sc.oas differ diff --git a/tests/gds_ref_si220/straight_so.gds b/tests/gds_ref_si220/straight_so.gds new file mode 100644 index 0000000..14c1605 Binary files /dev/null and b/tests/gds_ref_si220/straight_so.gds differ diff --git a/tests/gds_ref/taper_rc.gds b/tests/gds_ref_si220/taper_rc.gds similarity index 100% rename from tests/gds_ref/taper_rc.gds rename to tests/gds_ref_si220/taper_rc.gds diff --git a/tests/gds_ref/taper_ro.gds b/tests/gds_ref_si220/taper_ro.gds similarity index 100% rename from tests/gds_ref/taper_ro.gds rename to tests/gds_ref_si220/taper_ro.gds diff --git a/tests/gds_ref/taper_sc.gds b/tests/gds_ref_si220/taper_sc.gds similarity index 100% rename from tests/gds_ref/taper_sc.gds rename to tests/gds_ref_si220/taper_sc.gds diff --git a/tests/gds_ref_si220/taper_sc.oas b/tests/gds_ref_si220/taper_sc.oas new file mode 100644 index 0000000..41a3261 Binary files /dev/null and b/tests/gds_ref_si220/taper_sc.oas differ diff --git a/tests/gds_ref/taper_so.gds b/tests/gds_ref_si220/taper_so.gds similarity index 100% rename from tests/gds_ref/taper_so.gds rename to tests/gds_ref_si220/taper_so.gds diff --git a/tests/gds_ref_si220/trans_sc_rc10.gds b/tests/gds_ref_si220/trans_sc_rc10.gds new file mode 100644 index 0000000..6df7a23 Binary files /dev/null and b/tests/gds_ref_si220/trans_sc_rc10.gds differ diff --git a/tests/gds_ref_si220/trans_sc_rc10.oas b/tests/gds_ref_si220/trans_sc_rc10.oas new file mode 100644 index 0000000..3dc5fa1 Binary files /dev/null and b/tests/gds_ref_si220/trans_sc_rc10.oas differ diff --git a/tests/gds_ref_si220/trans_sc_rc20.gds b/tests/gds_ref_si220/trans_sc_rc20.gds new file mode 100644 index 0000000..8dd0846 Binary files /dev/null and b/tests/gds_ref_si220/trans_sc_rc20.gds differ diff --git a/tests/gds_ref_si220/trans_sc_rc20.oas b/tests/gds_ref_si220/trans_sc_rc20.oas new file mode 100644 index 0000000..fc427a5 Binary files /dev/null and b/tests/gds_ref_si220/trans_sc_rc20.oas differ diff --git a/tests/gds_ref_si220/trans_sc_rc50.gds b/tests/gds_ref_si220/trans_sc_rc50.gds new file mode 100644 index 0000000..6db1f5e Binary files /dev/null and b/tests/gds_ref_si220/trans_sc_rc50.gds differ diff --git a/tests/gds_ref_si220/trans_sc_rc50.oas b/tests/gds_ref_si220/trans_sc_rc50.oas new file mode 100644 index 0000000..2ef859d Binary files /dev/null and b/tests/gds_ref_si220/trans_sc_rc50.oas differ diff --git a/tests/gds_ref_si220/wire_corner.gds b/tests/gds_ref_si220/wire_corner.gds new file mode 100644 index 0000000..ce978d9 Binary files /dev/null and b/tests/gds_ref_si220/wire_corner.gds differ diff --git a/tests/gds_ref_sin300/array.gds b/tests/gds_ref_sin300/array.gds new file mode 100644 index 0000000..fb52ed8 Binary files /dev/null and b/tests/gds_ref_sin300/array.gds differ diff --git a/tests/gds_ref/bend_nc.gds b/tests/gds_ref_sin300/bend_nc.gds similarity index 95% rename from tests/gds_ref/bend_nc.gds rename to tests/gds_ref_sin300/bend_nc.gds index 054b9a0..abde302 100644 Binary files a/tests/gds_ref/bend_nc.gds and b/tests/gds_ref_sin300/bend_nc.gds differ diff --git a/tests/gds_ref/bend_no.gds b/tests/gds_ref_sin300/bend_no.gds similarity index 95% rename from tests/gds_ref/bend_no.gds rename to tests/gds_ref_sin300/bend_no.gds index da65ad3..75605ed 100644 Binary files a/tests/gds_ref/bend_no.gds and b/tests/gds_ref_sin300/bend_no.gds differ diff --git a/tests/gds_ref_sin300/bend_s.gds b/tests/gds_ref_sin300/bend_s.gds new file mode 100644 index 0000000..e57e4d5 Binary files /dev/null and b/tests/gds_ref_sin300/bend_s.gds differ diff --git a/tests/gds_ref/coupler_nc.gds b/tests/gds_ref_sin300/coupler_nc.gds similarity index 100% rename from tests/gds_ref/coupler_nc.gds rename to tests/gds_ref_sin300/coupler_nc.gds diff --git a/tests/gds_ref/coupler_no.gds b/tests/gds_ref_sin300/coupler_no.gds similarity index 100% rename from tests/gds_ref/coupler_no.gds rename to tests/gds_ref_sin300/coupler_no.gds diff --git a/tests/gds_ref/die_nc.gds b/tests/gds_ref_sin300/die_nc.gds similarity index 69% rename from tests/gds_ref/die_nc.gds rename to tests/gds_ref_sin300/die_nc.gds index c898412..9ca56da 100644 Binary files a/tests/gds_ref/die_nc.gds and b/tests/gds_ref_sin300/die_nc.gds differ diff --git a/tests/gds_ref/die_no.gds b/tests/gds_ref_sin300/die_no.gds similarity index 69% rename from tests/gds_ref/die_no.gds rename to tests/gds_ref_sin300/die_no.gds index cf1fdcf..b7f07b2 100644 Binary files a/tests/gds_ref/die_no.gds and b/tests/gds_ref_sin300/die_no.gds differ diff --git a/tests/gds_ref_sin300/gc_elliptical_nc.gds b/tests/gds_ref_sin300/gc_elliptical_nc.gds new file mode 100644 index 0000000..319e9ea Binary files /dev/null and b/tests/gds_ref_sin300/gc_elliptical_nc.gds differ diff --git a/tests/gds_ref_sin300/gc_elliptical_no.gds b/tests/gds_ref_sin300/gc_elliptical_no.gds new file mode 100644 index 0000000..747967f Binary files /dev/null and b/tests/gds_ref_sin300/gc_elliptical_no.gds differ diff --git a/tests/gds_ref_sin300/gc_rectangular_nc.gds b/tests/gds_ref_sin300/gc_rectangular_nc.gds new file mode 100644 index 0000000..835abc3 Binary files /dev/null and b/tests/gds_ref_sin300/gc_rectangular_nc.gds differ diff --git a/tests/gds_ref_sin300/gc_rectangular_no.gds b/tests/gds_ref_sin300/gc_rectangular_no.gds new file mode 100644 index 0000000..ea7788e Binary files /dev/null and b/tests/gds_ref_sin300/gc_rectangular_no.gds differ diff --git a/tests/gds_ref_sin300/grating_coupler_array.gds b/tests/gds_ref_sin300/grating_coupler_array.gds new file mode 100644 index 0000000..2f96407 Binary files /dev/null and b/tests/gds_ref_sin300/grating_coupler_array.gds differ diff --git a/tests/gds_ref/mmi1x2_nc.gds b/tests/gds_ref_sin300/mmi1x2_nc.gds similarity index 100% rename from tests/gds_ref/mmi1x2_nc.gds rename to tests/gds_ref_sin300/mmi1x2_nc.gds diff --git a/tests/gds_ref/mmi1x2_no.gds b/tests/gds_ref_sin300/mmi1x2_no.gds similarity index 100% rename from tests/gds_ref/mmi1x2_no.gds rename to tests/gds_ref_sin300/mmi1x2_no.gds diff --git a/tests/gds_ref/mmi2x2_nc.gds b/tests/gds_ref_sin300/mmi2x2_nc.gds similarity index 100% rename from tests/gds_ref/mmi2x2_nc.gds rename to tests/gds_ref_sin300/mmi2x2_nc.gds diff --git a/tests/gds_ref/mmi2x2_no.gds b/tests/gds_ref_sin300/mmi2x2_no.gds similarity index 100% rename from tests/gds_ref/mmi2x2_no.gds rename to tests/gds_ref_sin300/mmi2x2_no.gds diff --git a/tests/gds_ref/mzi_nc.gds b/tests/gds_ref_sin300/mzi_nc.gds similarity index 52% rename from tests/gds_ref/mzi_nc.gds rename to tests/gds_ref_sin300/mzi_nc.gds index a4231a6..75883f3 100644 Binary files a/tests/gds_ref/mzi_nc.gds and b/tests/gds_ref_sin300/mzi_nc.gds differ diff --git a/tests/gds_ref/mzi_no.gds b/tests/gds_ref_sin300/mzi_no.gds similarity index 91% rename from tests/gds_ref/mzi_no.gds rename to tests/gds_ref_sin300/mzi_no.gds index 7831222..59da158 100644 Binary files a/tests/gds_ref/mzi_no.gds and b/tests/gds_ref_sin300/mzi_no.gds differ diff --git a/tests/gds_ref_sin300/pad.gds b/tests/gds_ref_sin300/pad.gds new file mode 100644 index 0000000..bc585bf Binary files /dev/null and b/tests/gds_ref_sin300/pad.gds differ diff --git a/tests/gds_ref_sin300/rectangle.gds b/tests/gds_ref_sin300/rectangle.gds new file mode 100644 index 0000000..be4b642 Binary files /dev/null and b/tests/gds_ref_sin300/rectangle.gds differ diff --git a/tests/gds_ref_sin300/straight_nc.gds b/tests/gds_ref_sin300/straight_nc.gds new file mode 100644 index 0000000..3685775 Binary files /dev/null and b/tests/gds_ref_sin300/straight_nc.gds differ diff --git a/tests/gds_ref_sin300/straight_no.gds b/tests/gds_ref_sin300/straight_no.gds new file mode 100644 index 0000000..fdc0155 Binary files /dev/null and b/tests/gds_ref_sin300/straight_no.gds differ diff --git a/tests/gds_ref/taper_nc.gds b/tests/gds_ref_sin300/taper_nc.gds similarity index 100% rename from tests/gds_ref/taper_nc.gds rename to tests/gds_ref_sin300/taper_nc.gds diff --git a/tests/gds_ref/taper_no.gds b/tests/gds_ref_sin300/taper_no.gds similarity index 100% rename from tests/gds_ref/taper_no.gds rename to tests/gds_ref_sin300/taper_no.gds diff --git a/tests/gds_ref_sin300/wire_corner.gds b/tests/gds_ref_sin300/wire_corner.gds new file mode 100644 index 0000000..ce978d9 Binary files /dev/null and b/tests/gds_ref_sin300/wire_corner.gds differ diff --git a/tests/test_netlists/test_netlists_gc_rectangular_.yml b/tests/test_netlists/test_netlists_gc_rectangular_.yml deleted file mode 100644 index d351a0b..0000000 --- a/tests/test_netlists/test_netlists_gc_rectangular_.yml +++ /dev/null @@ -1,5 +0,0 @@ -connections: {} -instances: {} -name: gc_rectangular -placements: {} -ports: {} diff --git a/tests/test_netlists/test_netlists_mmi1x2_.yml b/tests/test_netlists/test_netlists_mmi1x2_.yml deleted file mode 100644 index e2c95eb..0000000 --- a/tests/test_netlists/test_netlists_mmi1x2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -connections: {} -instances: {} -name: mmi1x2 -placements: {} -ports: {} diff --git a/tests/test_netlists/test_netlists_mmi2x2_.yml b/tests/test_netlists/test_netlists_mmi2x2_.yml deleted file mode 100644 index b8136c1..0000000 --- a/tests/test_netlists/test_netlists_mmi2x2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -connections: {} -instances: {} -name: mmi2x2 -placements: {} -ports: {} diff --git a/tests/test_netlists/test_netlists_mzi_.yml b/tests/test_netlists/test_netlists_mzi_.yml deleted file mode 100644 index 79f36f5..0000000 --- a/tests/test_netlists/test_netlists_mzi_.yml +++ /dev/null @@ -1,681 +0,0 @@ -connections: - bend_euler_1,o1: cp1,o3 - bend_euler_1,o2: syl,o1 - bend_euler_2,o1: syl,o2 - bend_euler_2,o2: sxb,o1 - bend_euler_3,o1: cp1,o2 - bend_euler_3,o2: sytl,o1 - bend_euler_4,o1: sxt,o1 - bend_euler_4,o2: sytl,o2 - bend_euler_5,o1: straight_5,o2 - bend_euler_5,o2: straight_6,o1 - bend_euler_6,o1: straight_6,o2 - bend_euler_6,o2: straight_7,o1 - bend_euler_7,o1: straight_8,o2 - bend_euler_7,o2: straight_9,o1 - bend_euler_8,o1: straight_9,o2 - bend_euler_8,o2: straight_10,o1 - cp2,o2: straight_7,o2 - cp2,o3: straight_10,o2 - straight_5,o1: sxt,o2 - straight_8,o1: sxb,o2 -instances: - bend_euler_1: - component: bend_euler - info: - dy: 10.0 - length: 16.637 - radius: 10.0 - radius_min: 7.061 - route_info_length: 16.637 - route_info_n_bend_90: 1.0 - route_info_type: xs_sc - route_info_weight: 16.637 - route_info_xs_sc_length: 16.637 - width: 0.45 - settings: - angle: 90.0 - cross_section: xs_sc - direction: ccw - npoints: null - p: 0.5 - radius: null - with_arc_floorplan: true - bend_euler_2: - component: bend_euler - info: - dy: 10.0 - length: 16.637 - radius: 10.0 - radius_min: 7.061 - route_info_length: 16.637 - route_info_n_bend_90: 1.0 - route_info_type: xs_sc - route_info_weight: 16.637 - route_info_xs_sc_length: 16.637 - width: 0.45 - settings: - angle: 90.0 - cross_section: xs_sc - direction: ccw - npoints: null - p: 0.5 - radius: null - with_arc_floorplan: true - bend_euler_3: - component: bend_euler - info: - dy: 10.0 - length: 16.637 - radius: 10.0 - radius_min: 7.061 - route_info_length: 16.637 - route_info_n_bend_90: 1.0 - route_info_type: xs_sc - route_info_weight: 16.637 - route_info_xs_sc_length: 16.637 - width: 0.45 - settings: - angle: 90.0 - cross_section: xs_sc - direction: ccw - npoints: null - p: 0.5 - radius: null - with_arc_floorplan: true - bend_euler_4: - component: bend_euler - info: - dy: 10.0 - length: 16.637 - radius: 10.0 - radius_min: 7.061 - route_info_length: 16.637 - route_info_n_bend_90: 1.0 - route_info_type: xs_sc - route_info_weight: 16.637 - route_info_xs_sc_length: 16.637 - width: 0.45 - settings: - angle: 90.0 - cross_section: xs_sc - direction: ccw - npoints: null - p: 0.5 - radius: null - with_arc_floorplan: true - bend_euler_5: - component: bend_euler - info: - dy: 10.0 - length: 16.637 - radius: 10.0 - radius_min: 7.061 - route_info_length: 16.637 - route_info_n_bend_90: 1.0 - route_info_type: xs_sc - route_info_weight: 16.637 - route_info_xs_sc_length: 16.637 - width: 0.45 - settings: - angle: 90.0 - cross_section: - bbox_layers: null - bbox_offsets: null - components_along_path: [] - radius: 10.0 - radius_min: 5.0 - sections: - - hidden: false - insets: null - layer: - - 3 - - 0 - name: _default - offset: 0.0 - offset_function: null - port_names: - - o1 - - o2 - port_types: - - optical - - optical - simplify: null - width: 0.45 - width_function: null - direction: ccw - npoints: null - p: 0.5 - radius: null - with_arc_floorplan: true - bend_euler_6: - component: bend_euler - info: - dy: 10.0 - length: 16.637 - radius: 10.0 - radius_min: 7.061 - route_info_length: 16.637 - route_info_n_bend_90: 1.0 - route_info_type: xs_sc - route_info_weight: 16.637 - route_info_xs_sc_length: 16.637 - width: 0.45 - settings: - angle: 90.0 - cross_section: - bbox_layers: null - bbox_offsets: null - components_along_path: [] - radius: 10.0 - radius_min: 5.0 - sections: - - hidden: false - insets: null - layer: - - 3 - - 0 - name: _default - offset: 0.0 - offset_function: null - port_names: - - o1 - - o2 - port_types: - - optical - - optical - simplify: null - width: 0.45 - width_function: null - direction: ccw - npoints: null - p: 0.5 - radius: null - with_arc_floorplan: true - bend_euler_7: - component: bend_euler - info: - dy: 10.0 - length: 16.637 - radius: 10.0 - radius_min: 7.061 - route_info_length: 16.637 - route_info_n_bend_90: 1.0 - route_info_type: xs_sc - route_info_weight: 16.637 - route_info_xs_sc_length: 16.637 - width: 0.45 - settings: - angle: 90.0 - cross_section: - bbox_layers: null - bbox_offsets: null - components_along_path: [] - radius: 10.0 - radius_min: 5.0 - sections: - - hidden: false - insets: null - layer: - - 3 - - 0 - name: _default - offset: 0.0 - offset_function: null - port_names: - - o1 - - o2 - port_types: - - optical - - optical - simplify: null - width: 0.45 - width_function: null - direction: ccw - npoints: null - p: 0.5 - radius: null - with_arc_floorplan: true - bend_euler_8: - component: bend_euler - info: - dy: 10.0 - length: 16.637 - radius: 10.0 - radius_min: 7.061 - route_info_length: 16.637 - route_info_n_bend_90: 1.0 - route_info_type: xs_sc - route_info_weight: 16.637 - route_info_xs_sc_length: 16.637 - width: 0.45 - settings: - angle: 90.0 - cross_section: - bbox_layers: null - bbox_offsets: null - components_along_path: [] - radius: 10.0 - radius_min: 5.0 - sections: - - hidden: false - insets: null - layer: - - 3 - - 0 - name: _default - offset: 0.0 - offset_function: null - port_names: - - o1 - - o2 - port_types: - - optical - - optical - simplify: null - width: 0.45 - width_function: null - direction: ccw - npoints: null - p: 0.5 - radius: null - with_arc_floorplan: true - cp1: - component: mmi1x2 - info: {} - settings: - cross_section: xs_sc - gap_mmi: 0.25 - length_mmi: 5.5 - length_taper: 10.0 - taper: - function: taper - width: null - width_mmi: 2.5 - width_taper: 1.0 - cp2: - component: mmi1x2 - info: {} - settings: - cross_section: xs_sc - gap_mmi: 0.25 - length_mmi: 5.5 - length_taper: 10.0 - taper: - function: taper - width: null - width_mmi: 2.5 - width_taper: 1.0 - straight_10: - component: straight - info: - length: 0.01 - route_info_length: 0.01 - route_info_type: xs_sc - route_info_weight: 0.01 - route_info_xs_sc_length: 0.01 - width: 0.45 - settings: - cross_section: - bbox_layers: null - bbox_offsets: null - components_along_path: [] - radius: 10.0 - radius_min: 5.0 - sections: - - hidden: false - insets: null - layer: - - 3 - - 0 - name: _default - offset: 0.0 - offset_function: null - port_names: - - o1 - - o2 - port_types: - - optical - - optical - simplify: null - width: 0.45 - width_function: null - length: 0.01 - npoints: 2 - straight_5: - component: straight - info: - length: 0.01 - route_info_length: 0.01 - route_info_type: xs_sc - route_info_weight: 0.01 - route_info_xs_sc_length: 0.01 - width: 0.45 - settings: - cross_section: - bbox_layers: null - bbox_offsets: null - components_along_path: [] - radius: 10.0 - radius_min: 5.0 - sections: - - hidden: false - insets: null - layer: - - 3 - - 0 - name: _default - offset: 0.0 - offset_function: null - port_names: - - o1 - - o2 - port_types: - - optical - - optical - simplify: null - width: 0.45 - width_function: null - length: 0.01 - npoints: 2 - straight_6: - component: straight - info: - length: 2.0 - route_info_length: 2.0 - route_info_type: xs_sc - route_info_weight: 2.0 - route_info_xs_sc_length: 2.0 - width: 0.45 - settings: - cross_section: - bbox_layers: null - bbox_offsets: null - components_along_path: [] - radius: 10.0 - radius_min: 5.0 - sections: - - hidden: false - insets: null - layer: - - 3 - - 0 - name: _default - offset: 0.0 - offset_function: null - port_names: - - o1 - - o2 - port_types: - - optical - - optical - simplify: null - width: 0.45 - width_function: null - length: 2.0 - npoints: 2 - straight_7: - component: straight - info: - length: 0.01 - route_info_length: 0.01 - route_info_type: xs_sc - route_info_weight: 0.01 - route_info_xs_sc_length: 0.01 - width: 0.45 - settings: - cross_section: - bbox_layers: null - bbox_offsets: null - components_along_path: [] - radius: 10.0 - radius_min: 5.0 - sections: - - hidden: false - insets: null - layer: - - 3 - - 0 - name: _default - offset: 0.0 - offset_function: null - port_names: - - o1 - - o2 - port_types: - - optical - - optical - simplify: null - width: 0.45 - width_function: null - length: 0.01 - npoints: 2 - straight_8: - component: straight - info: - length: 0.01 - route_info_length: 0.01 - route_info_type: xs_sc - route_info_weight: 0.01 - route_info_xs_sc_length: 0.01 - width: 0.45 - settings: - cross_section: - bbox_layers: null - bbox_offsets: null - components_along_path: [] - radius: 10.0 - radius_min: 5.0 - sections: - - hidden: false - insets: null - layer: - - 3 - - 0 - name: _default - offset: 0.0 - offset_function: null - port_names: - - o1 - - o2 - port_types: - - optical - - optical - simplify: null - width: 0.45 - width_function: null - length: 0.01 - npoints: 2 - straight_9: - component: straight - info: - length: 7.0 - route_info_length: 7.0 - route_info_type: xs_sc - route_info_weight: 7.0 - route_info_xs_sc_length: 7.0 - width: 0.45 - settings: - cross_section: - bbox_layers: null - bbox_offsets: null - components_along_path: [] - radius: 10.0 - radius_min: 5.0 - sections: - - hidden: false - insets: null - layer: - - 3 - - 0 - name: _default - offset: 0.0 - offset_function: null - port_names: - - o1 - - o2 - port_types: - - optical - - optical - simplify: null - width: 0.45 - width_function: null - length: 7.0 - npoints: 2 - sxb: - 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 - sxt: - 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 - syl: - component: straight - info: - length: 7.0 - route_info_length: 7.0 - route_info_type: xs_sc - route_info_weight: 7.0 - route_info_xs_sc_length: 7.0 - width: 0.45 - settings: - cross_section: xs_sc - length: 7.0 - npoints: 2 - sytl: - component: straight - info: - length: 2.0 - route_info_length: 2.0 - route_info_type: xs_sc - route_info_weight: 2.0 - route_info_xs_sc_length: 2.0 - width: 0.45 - settings: - cross_section: xs_sc - length: 2.0 - npoints: 2 -name: mzi -placements: - bend_euler_1: - mirror: true - rotation: 0 - x: 15.5 - y: -0.625 - bend_euler_2: - mirror: 0 - rotation: 270 - x: 25.5 - y: -17.625 - bend_euler_3: - mirror: 0 - rotation: 0 - x: 15.5 - y: 0.625 - bend_euler_4: - mirror: 0 - rotation: 180 - x: 35.5 - y: 22.625 - bend_euler_5: - mirror: true - rotation: 0 - x: 35.61 - y: 22.625 - bend_euler_6: - mirror: 0 - rotation: 270 - x: 45.61 - y: 10.625 - bend_euler_7: - mirror: 0 - rotation: 0 - x: 35.61 - y: -27.625 - bend_euler_8: - mirror: true - rotation: 90 - x: 45.61 - y: -10.625 - cp1: - mirror: 0 - rotation: 0 - x: 0.0 - y: 0.0 - cp2: - mirror: true - rotation: 180 - x: 71.12 - y: 0.0 - straight_10: - mirror: 0 - rotation: 0 - x: 55.61 - y: -0.625 - straight_5: - mirror: 0 - rotation: 0 - x: 35.6 - y: 22.625 - straight_6: - mirror: 0 - rotation: 270 - x: 45.61 - y: 12.625 - straight_7: - mirror: 0 - rotation: 0 - x: 55.61 - y: 0.625 - straight_8: - mirror: 0 - rotation: 0 - x: 35.6 - y: -27.625 - straight_9: - mirror: 0 - rotation: 90 - x: 45.61 - y: -17.625 - sxb: - mirror: 0 - rotation: 0 - x: 35.5 - y: -27.625 - sxt: - mirror: 0 - rotation: 0 - x: 35.5 - y: 22.625 - syl: - mirror: 0 - rotation: 270 - x: 25.5 - y: -10.625 - sytl: - mirror: 0 - rotation: 90 - x: 25.5 - y: 10.625 -ports: - o1: cp1,o1 - o2: cp2,o1 diff --git a/tests/test_netlists/test_netlists_straight_.yml b/tests/test_netlists/test_netlists_straight_.yml deleted file mode 100644 index dc6aa4d..0000000 --- a/tests/test_netlists/test_netlists_straight_.yml +++ /dev/null @@ -1,5 +0,0 @@ -connections: {} -instances: {} -name: straight -placements: {} -ports: {} diff --git a/tests/test_netlists/test_netlists_taper_.yml b/tests/test_netlists/test_netlists_taper_.yml deleted file mode 100644 index 472c945..0000000 --- a/tests/test_netlists/test_netlists_taper_.yml +++ /dev/null @@ -1,5 +0,0 @@ -connections: {} -instances: {} -name: taper -placements: {} -ports: {} diff --git a/tests/test_netlists/test_netlists_taper_cross_section_.yml b/tests/test_netlists/test_netlists_taper_cross_section_.yml deleted file mode 100644 index 3196c53..0000000 --- a/tests/test_netlists/test_netlists_taper_cross_section_.yml +++ /dev/null @@ -1,5 +0,0 @@ -connections: {} -instances: {} -name: taper_cross_section -placements: {} -ports: {} diff --git a/tests/test_netlists.py b/tests/test_netlists_si220.py similarity index 84% rename from tests/test_netlists.py rename to tests/test_netlists_si220.py index 86b1ce5..1989829 100644 --- a/tests/test_netlists.py +++ b/tests/test_netlists_si220.py @@ -6,11 +6,18 @@ from omegaconf import OmegaConf from pytest_regressions.data_regression import DataRegressionFixture -from cspdk import PDK +from cspdk.si220 import PDK + + +@pytest.fixture(autouse=True) +def activate_pdk(): + PDK.activate() + cells = PDK.cells skip_test = set() cell_names = cells.keys() - skip_test +cell_names = [name for name in cell_names if not name.startswith("_")] @pytest.mark.parametrize("component_type", cell_names) diff --git a/tests/test_netlists/test_netlists_array_.yml b/tests/test_netlists_si220/test_netlists_array_.yml similarity index 100% rename from tests/test_netlists/test_netlists_array_.yml rename to tests/test_netlists_si220/test_netlists_array_.yml diff --git a/tests/test_netlists/test_netlists_bend_rc_.yml b/tests/test_netlists_si220/test_netlists_bend_rc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_bend_rc_.yml rename to tests/test_netlists_si220/test_netlists_bend_rc_.yml diff --git a/tests/test_netlists/test_netlists_bend_ro_.yml b/tests/test_netlists_si220/test_netlists_bend_ro_.yml similarity index 100% rename from tests/test_netlists/test_netlists_bend_ro_.yml rename to tests/test_netlists_si220/test_netlists_bend_ro_.yml diff --git a/tests/test_netlists/test_netlists_bend_s_.yml b/tests/test_netlists_si220/test_netlists_bend_s_.yml similarity index 100% rename from tests/test_netlists/test_netlists_bend_s_.yml rename to tests/test_netlists_si220/test_netlists_bend_s_.yml diff --git a/tests/test_netlists/test_netlists_bend_sc_.yml b/tests/test_netlists_si220/test_netlists_bend_sc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_bend_sc_.yml rename to tests/test_netlists_si220/test_netlists_bend_sc_.yml diff --git a/tests/test_netlists/test_netlists_bend_so_.yml b/tests/test_netlists_si220/test_netlists_bend_so_.yml similarity index 100% rename from tests/test_netlists/test_netlists_bend_so_.yml rename to tests/test_netlists_si220/test_netlists_bend_so_.yml diff --git a/tests/test_netlists/test_netlists_coupler_rc_.yml b/tests/test_netlists_si220/test_netlists_coupler_rc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_coupler_rc_.yml rename to tests/test_netlists_si220/test_netlists_coupler_rc_.yml diff --git a/tests/test_netlists/test_netlists_coupler_ro_.yml b/tests/test_netlists_si220/test_netlists_coupler_ro_.yml similarity index 100% rename from tests/test_netlists/test_netlists_coupler_ro_.yml rename to tests/test_netlists_si220/test_netlists_coupler_ro_.yml diff --git a/tests/test_netlists/test_netlists_coupler_sc_.yml b/tests/test_netlists_si220/test_netlists_coupler_sc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_coupler_sc_.yml rename to tests/test_netlists_si220/test_netlists_coupler_sc_.yml diff --git a/tests/test_netlists/test_netlists_coupler_so_.yml b/tests/test_netlists_si220/test_netlists_coupler_so_.yml similarity index 100% rename from tests/test_netlists/test_netlists_coupler_so_.yml rename to tests/test_netlists_si220/test_netlists_coupler_so_.yml diff --git a/tests/test_netlists/test_netlists_crossing_rc_.yml b/tests/test_netlists_si220/test_netlists_crossing_rc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_crossing_rc_.yml rename to tests/test_netlists_si220/test_netlists_crossing_rc_.yml diff --git a/tests/test_netlists/test_netlists_crossing_sc_.yml b/tests/test_netlists_si220/test_netlists_crossing_sc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_crossing_sc_.yml rename to tests/test_netlists_si220/test_netlists_crossing_sc_.yml diff --git a/tests/test_netlists/test_netlists_crossing_so_.yml b/tests/test_netlists_si220/test_netlists_crossing_so_.yml similarity index 100% rename from tests/test_netlists/test_netlists_crossing_so_.yml rename to tests/test_netlists_si220/test_netlists_crossing_so_.yml diff --git a/tests/test_netlists/test_netlists_die_rc_.yml b/tests/test_netlists_si220/test_netlists_die_rc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_die_rc_.yml rename to tests/test_netlists_si220/test_netlists_die_rc_.yml diff --git a/tests/test_netlists/test_netlists_die_ro_.yml b/tests/test_netlists_si220/test_netlists_die_ro_.yml similarity index 100% rename from tests/test_netlists/test_netlists_die_ro_.yml rename to tests/test_netlists_si220/test_netlists_die_ro_.yml diff --git a/tests/test_netlists/test_netlists_die_sc_.yml b/tests/test_netlists_si220/test_netlists_die_sc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_die_sc_.yml rename to tests/test_netlists_si220/test_netlists_die_sc_.yml diff --git a/tests/test_netlists/test_netlists_die_so_.yml b/tests/test_netlists_si220/test_netlists_die_so_.yml similarity index 100% rename from tests/test_netlists/test_netlists_die_so_.yml rename to tests/test_netlists_si220/test_netlists_die_so_.yml diff --git a/tests/test_netlists/test_netlists_gc_elliptical_sc_.yml b/tests/test_netlists_si220/test_netlists_gc_elliptical_sc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_gc_elliptical_sc_.yml rename to tests/test_netlists_si220/test_netlists_gc_elliptical_sc_.yml diff --git a/tests/test_netlists/test_netlists_gc_elliptical_so_.yml b/tests/test_netlists_si220/test_netlists_gc_elliptical_so_.yml similarity index 100% rename from tests/test_netlists/test_netlists_gc_elliptical_so_.yml rename to tests/test_netlists_si220/test_netlists_gc_elliptical_so_.yml diff --git a/tests/test_netlists/test_netlists_gc_rectangular_rc_.yml b/tests/test_netlists_si220/test_netlists_gc_rectangular_rc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_gc_rectangular_rc_.yml rename to tests/test_netlists_si220/test_netlists_gc_rectangular_rc_.yml diff --git a/tests/test_netlists/test_netlists_gc_rectangular_ro_.yml b/tests/test_netlists_si220/test_netlists_gc_rectangular_ro_.yml similarity index 100% rename from tests/test_netlists/test_netlists_gc_rectangular_ro_.yml rename to tests/test_netlists_si220/test_netlists_gc_rectangular_ro_.yml diff --git a/tests/test_netlists/test_netlists_gc_rectangular_sc_.yml b/tests/test_netlists_si220/test_netlists_gc_rectangular_sc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_gc_rectangular_sc_.yml rename to tests/test_netlists_si220/test_netlists_gc_rectangular_sc_.yml diff --git a/tests/test_netlists/test_netlists_gc_rectangular_so_.yml b/tests/test_netlists_si220/test_netlists_gc_rectangular_so_.yml similarity index 100% rename from tests/test_netlists/test_netlists_gc_rectangular_so_.yml rename to tests/test_netlists_si220/test_netlists_gc_rectangular_so_.yml diff --git a/tests/test_netlists_si220/test_netlists_grating_coupler_array_.yml b/tests/test_netlists_si220/test_netlists_grating_coupler_array_.yml new file mode 100644 index 0000000..7b3905b --- /dev/null +++ b/tests/test_netlists_si220/test_netlists_grating_coupler_array_.yml @@ -0,0 +1,107 @@ +connections: {} +instances: + gc_rectangular_sc_1: + component: gc_rectangular_sc + info: + fiber_angle: 10 + polarization: te + wavelength: 1.55 + settings: {} + gc_rectangular_sc_2: + component: gc_rectangular_sc + info: + fiber_angle: 10 + polarization: te + wavelength: 1.55 + settings: {} + gc_rectangular_sc_3: + component: gc_rectangular_sc + info: + fiber_angle: 10 + polarization: te + wavelength: 1.55 + settings: {} + gc_rectangular_sc_4: + component: gc_rectangular_sc + info: + fiber_angle: 10 + polarization: te + wavelength: 1.55 + settings: {} + gc_rectangular_sc_5: + component: gc_rectangular_sc + info: + fiber_angle: 10 + polarization: te + wavelength: 1.55 + settings: {} + gc_rectangular_sc_6: + component: gc_rectangular_sc + info: + fiber_angle: 10 + polarization: te + wavelength: 1.55 + settings: {} +name: grating_coupler_array +placements: + gc_rectangular_sc_1: + mirror: 0 + rotation: 0 + x: -193.743 + y: 0.0 + gc_rectangular_sc_2: + mirror: 0 + rotation: 0 + x: -66.743 + y: 0.0 + gc_rectangular_sc_3: + mirror: 0 + rotation: 0 + x: 60.257 + y: 0.0 + gc_rectangular_sc_4: + mirror: 0 + rotation: 0 + x: 187.257 + y: 0.0 + gc_rectangular_sc_5: + mirror: 0 + rotation: 0 + x: 314.257 + y: 0.0 + gc_rectangular_sc_6: + mirror: 0 + rotation: 0 + x: 441.257 + y: 0.0 +ports: + o1: gc_rectangular_sc_1,o1 + o2: gc_rectangular_sc_2,o1 + o3: gc_rectangular_sc_3,o1 + o4: gc_rectangular_sc_4,o1 + o5: gc_rectangular_sc_5,o1 + o6: gc_rectangular_sc_6,o1 +warnings: + vertical_te: + unconnected_ports: + - message: 6 unconnected vertical_te ports! + ports: + - gc_rectangular_sc_1,o2 + - gc_rectangular_sc_2,o2 + - gc_rectangular_sc_3,o2 + - gc_rectangular_sc_4,o2 + - gc_rectangular_sc_5,o2 + - gc_rectangular_sc_6,o2 + values: + - - 174.921 + - 0.0 + - - 301.921 + - 0.0 + - - 428.921 + - 0.0 + - - 555.921 + - 0.0 + - - 682.921 + - 0.0 + - - 809.921 + - 0.0 diff --git a/tests/test_netlists/test_netlists_heater_.yml b/tests/test_netlists_si220/test_netlists_heater_.yml similarity index 100% rename from tests/test_netlists/test_netlists_heater_.yml rename to tests/test_netlists_si220/test_netlists_heater_.yml diff --git a/tests/test_netlists/test_netlists_mmi1x2_rc_.yml b/tests/test_netlists_si220/test_netlists_mmi1x2_rc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mmi1x2_rc_.yml rename to tests/test_netlists_si220/test_netlists_mmi1x2_rc_.yml diff --git a/tests/test_netlists/test_netlists_mmi1x2_ro_.yml b/tests/test_netlists_si220/test_netlists_mmi1x2_ro_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mmi1x2_ro_.yml rename to tests/test_netlists_si220/test_netlists_mmi1x2_ro_.yml diff --git a/tests/test_netlists/test_netlists_mmi1x2_sc_.yml b/tests/test_netlists_si220/test_netlists_mmi1x2_sc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mmi1x2_sc_.yml rename to tests/test_netlists_si220/test_netlists_mmi1x2_sc_.yml diff --git a/tests/test_netlists/test_netlists_mmi1x2_so_.yml b/tests/test_netlists_si220/test_netlists_mmi1x2_so_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mmi1x2_so_.yml rename to tests/test_netlists_si220/test_netlists_mmi1x2_so_.yml diff --git a/tests/test_netlists/test_netlists_mmi2x2_rc_.yml b/tests/test_netlists_si220/test_netlists_mmi2x2_rc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mmi2x2_rc_.yml rename to tests/test_netlists_si220/test_netlists_mmi2x2_rc_.yml diff --git a/tests/test_netlists/test_netlists_mmi2x2_ro_.yml b/tests/test_netlists_si220/test_netlists_mmi2x2_ro_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mmi2x2_ro_.yml rename to tests/test_netlists_si220/test_netlists_mmi2x2_ro_.yml diff --git a/tests/test_netlists/test_netlists_mmi2x2_sc_.yml b/tests/test_netlists_si220/test_netlists_mmi2x2_sc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mmi2x2_sc_.yml rename to tests/test_netlists_si220/test_netlists_mmi2x2_sc_.yml diff --git a/tests/test_netlists/test_netlists_mmi2x2_so_.yml b/tests/test_netlists_si220/test_netlists_mmi2x2_so_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mmi2x2_so_.yml rename to tests/test_netlists_si220/test_netlists_mmi2x2_so_.yml diff --git a/tests/test_netlists/test_netlists_mzi_rc_.yml b/tests/test_netlists_si220/test_netlists_mzi_rc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mzi_rc_.yml rename to tests/test_netlists_si220/test_netlists_mzi_rc_.yml diff --git a/tests/test_netlists/test_netlists_mzi_ro_.yml b/tests/test_netlists_si220/test_netlists_mzi_ro_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mzi_ro_.yml rename to tests/test_netlists_si220/test_netlists_mzi_ro_.yml diff --git a/tests/test_netlists/test_netlists_mzi_sc_.yml b/tests/test_netlists_si220/test_netlists_mzi_sc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mzi_sc_.yml rename to tests/test_netlists_si220/test_netlists_mzi_sc_.yml diff --git a/tests/test_netlists/test_netlists_mzi_so_.yml b/tests/test_netlists_si220/test_netlists_mzi_so_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mzi_so_.yml rename to tests/test_netlists_si220/test_netlists_mzi_so_.yml diff --git a/tests/test_netlists/test_netlists_pad_.yml b/tests/test_netlists_si220/test_netlists_pad_.yml similarity index 100% rename from tests/test_netlists/test_netlists_pad_.yml rename to tests/test_netlists_si220/test_netlists_pad_.yml diff --git a/tests/test_netlists/test_netlists_rectangle_.yml b/tests/test_netlists_si220/test_netlists_rectangle_.yml similarity index 100% rename from tests/test_netlists/test_netlists_rectangle_.yml rename to tests/test_netlists_si220/test_netlists_rectangle_.yml diff --git a/tests/test_netlists/test_netlists_straight_rc_.yml b/tests/test_netlists_si220/test_netlists_straight_rc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_straight_rc_.yml rename to tests/test_netlists_si220/test_netlists_straight_rc_.yml diff --git a/tests/test_netlists/test_netlists_straight_ro_.yml b/tests/test_netlists_si220/test_netlists_straight_ro_.yml similarity index 100% rename from tests/test_netlists/test_netlists_straight_ro_.yml rename to tests/test_netlists_si220/test_netlists_straight_ro_.yml diff --git a/tests/test_netlists/test_netlists_straight_sc_.yml b/tests/test_netlists_si220/test_netlists_straight_sc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_straight_sc_.yml rename to tests/test_netlists_si220/test_netlists_straight_sc_.yml diff --git a/tests/test_netlists/test_netlists_straight_so_.yml b/tests/test_netlists_si220/test_netlists_straight_so_.yml similarity index 100% rename from tests/test_netlists/test_netlists_straight_so_.yml rename to tests/test_netlists_si220/test_netlists_straight_so_.yml diff --git a/tests/test_netlists/test_netlists_taper_rc_.yml b/tests/test_netlists_si220/test_netlists_taper_rc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_taper_rc_.yml rename to tests/test_netlists_si220/test_netlists_taper_rc_.yml diff --git a/tests/test_netlists/test_netlists_taper_ro_.yml b/tests/test_netlists_si220/test_netlists_taper_ro_.yml similarity index 100% rename from tests/test_netlists/test_netlists_taper_ro_.yml rename to tests/test_netlists_si220/test_netlists_taper_ro_.yml diff --git a/tests/test_netlists/test_netlists_taper_sc_.yml b/tests/test_netlists_si220/test_netlists_taper_sc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_taper_sc_.yml rename to tests/test_netlists_si220/test_netlists_taper_sc_.yml diff --git a/tests/test_netlists/test_netlists_taper_so_.yml b/tests/test_netlists_si220/test_netlists_taper_so_.yml similarity index 100% rename from tests/test_netlists/test_netlists_taper_so_.yml rename to tests/test_netlists_si220/test_netlists_taper_so_.yml diff --git a/tests/test_netlists/test_netlists_trans_sc_rc10_.yml b/tests/test_netlists_si220/test_netlists_trans_sc_rc10_.yml similarity index 100% rename from tests/test_netlists/test_netlists_trans_sc_rc10_.yml rename to tests/test_netlists_si220/test_netlists_trans_sc_rc10_.yml diff --git a/tests/test_netlists/test_netlists_trans_sc_rc20_.yml b/tests/test_netlists_si220/test_netlists_trans_sc_rc20_.yml similarity index 100% rename from tests/test_netlists/test_netlists_trans_sc_rc20_.yml rename to tests/test_netlists_si220/test_netlists_trans_sc_rc20_.yml diff --git a/tests/test_netlists/test_netlists_trans_sc_rc50_.yml b/tests/test_netlists_si220/test_netlists_trans_sc_rc50_.yml similarity index 100% rename from tests/test_netlists/test_netlists_trans_sc_rc50_.yml rename to tests/test_netlists_si220/test_netlists_trans_sc_rc50_.yml diff --git a/tests/test_netlists/test_netlists_wire_corner_.yml b/tests/test_netlists_si220/test_netlists_wire_corner_.yml similarity index 100% rename from tests/test_netlists/test_netlists_wire_corner_.yml rename to tests/test_netlists_si220/test_netlists_wire_corner_.yml diff --git a/tests/test_netlists_sin300.py b/tests/test_netlists_sin300.py new file mode 100644 index 0000000..9327e8a --- /dev/null +++ b/tests/test_netlists_sin300.py @@ -0,0 +1,46 @@ +from __future__ import annotations + +import gdsfactory as gf +import jsondiff +import pytest +from omegaconf import OmegaConf +from pytest_regressions.data_regression import DataRegressionFixture + +from cspdk.sin300 import PDK + + +@pytest.fixture(autouse=True) +def activate_pdk(): + PDK.activate() + + +cells = PDK.cells +skip_test = set() +cell_names = cells.keys() - skip_test +cell_names = [name for name in cell_names if not name.startswith("_")] + + +@pytest.mark.parametrize("component_type", cell_names) +def test_netlists( + component_type: str, + data_regression: DataRegressionFixture, + check: bool = True, + component_factory=cells, +) -> None: + """Write netlists for hierarchical circuits. + + Checks that both netlists are the same jsondiff does a hierarchical diff. + + Component -> netlist -> Component -> netlist + + """ + c = component_factory[component_type]() + n = c.get_netlist() + if check: + data_regression.check(n) + + yaml_str = OmegaConf.to_yaml(n, sort_keys=True) + c2 = gf.read.from_yaml(yaml_str, name=c.name) + n2 = c2.get_netlist() + d = jsondiff.diff(n, n2) + assert len(d) == 0, d diff --git a/tests/test_netlists_sin300/test_netlists_array_.yml b/tests/test_netlists_sin300/test_netlists_array_.yml new file mode 100644 index 0000000..6d301e6 --- /dev/null +++ b/tests/test_netlists_sin300/test_netlists_array_.yml @@ -0,0 +1,197 @@ +connections: {} +instances: + pad_1__1_1: + component: pad + info: + layer: + - 41 + - 0 + size: + - 100.0 + - 100.0 + xsize: 100.0 + ysize: 100.0 + settings: + bbox_layers: null + bbox_offsets: null + layer: + - 41 + - 0 + port_inclusion: 0.0 + port_orientation: null + size: + - 100.0 + - 100.0 + pad_1__1_2: + component: pad + info: + layer: + - 41 + - 0 + size: + - 100.0 + - 100.0 + xsize: 100.0 + ysize: 100.0 + settings: + bbox_layers: null + bbox_offsets: null + layer: + - 41 + - 0 + port_inclusion: 0.0 + port_orientation: null + size: + - 100.0 + - 100.0 + pad_1__1_3: + component: pad + info: + layer: + - 41 + - 0 + size: + - 100.0 + - 100.0 + xsize: 100.0 + ysize: 100.0 + settings: + bbox_layers: null + bbox_offsets: null + layer: + - 41 + - 0 + port_inclusion: 0.0 + port_orientation: null + size: + - 100.0 + - 100.0 + pad_1__1_4: + component: pad + info: + layer: + - 41 + - 0 + size: + - 100.0 + - 100.0 + xsize: 100.0 + ysize: 100.0 + settings: + bbox_layers: null + bbox_offsets: null + layer: + - 41 + - 0 + port_inclusion: 0.0 + port_orientation: null + size: + - 100.0 + - 100.0 + pad_1__1_5: + component: pad + info: + layer: + - 41 + - 0 + size: + - 100.0 + - 100.0 + xsize: 100.0 + ysize: 100.0 + settings: + bbox_layers: null + bbox_offsets: null + layer: + - 41 + - 0 + port_inclusion: 0.0 + port_orientation: null + size: + - 100.0 + - 100.0 + pad_1__1_6: + component: pad + info: + layer: + - 41 + - 0 + size: + - 100.0 + - 100.0 + xsize: 100.0 + ysize: 100.0 + settings: + bbox_layers: null + bbox_offsets: null + layer: + - 41 + - 0 + port_inclusion: 0.0 + port_orientation: null + size: + - 100.0 + - 100.0 +name: pad_array +placements: + pad_1__1_1: + mirror: 0 + rotation: 0 + x: 0.0 + y: 0.0 + pad_1__1_2: + mirror: 0 + rotation: 0 + x: 150.0 + y: 0.0 + pad_1__1_3: + mirror: 0 + rotation: 0 + x: 300.0 + y: 0.0 + pad_1__1_4: + mirror: 0 + rotation: 0 + x: 450.0 + y: 0.0 + pad_1__1_5: + mirror: 0 + rotation: 0 + x: 600.0 + y: 0.0 + pad_1__1_6: + mirror: 0 + rotation: 0 + x: 750.0 + y: 0.0 +ports: + e1_1_1: pad_1__1_1,e1 + e1_1_2: pad_1__1_2,e1 + e1_1_3: pad_1__1_3,e1 + e1_1_4: pad_1__1_4,e1 + e1_1_5: pad_1__1_5,e1 + e1_1_6: pad_1__1_6,e1 + e2_1_1: pad_1__1_1,e2 + e2_1_2: pad_1__1_2,e2 + e2_1_3: pad_1__1_3,e2 + e2_1_4: pad_1__1_4,e2 + e2_1_5: pad_1__1_5,e2 + e2_1_6: pad_1__1_6,e2 + e3_1_1: pad_1__1_1,e3 + e3_1_2: pad_1__1_2,e3 + e3_1_3: pad_1__1_3,e3 + e3_1_4: pad_1__1_4,e3 + e3_1_5: pad_1__1_5,e3 + e3_1_6: pad_1__1_6,e3 + e4_1_1: pad_1__1_1,e4 + e4_1_2: pad_1__1_2,e4 + e4_1_3: pad_1__1_3,e4 + e4_1_4: pad_1__1_4,e4 + e4_1_5: pad_1__1_5,e4 + e4_1_6: pad_1__1_6,e4 + pad_1_1: pad_1__1_1,pad + pad_1_2: pad_1__1_2,pad + pad_1_3: pad_1__1_3,pad + pad_1_4: pad_1__1_4,pad + pad_1_5: pad_1__1_5,pad + pad_1_6: pad_1__1_6,pad diff --git a/tests/test_netlists/test_netlists_bend_nc_.yml b/tests/test_netlists_sin300/test_netlists_bend_nc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_bend_nc_.yml rename to tests/test_netlists_sin300/test_netlists_bend_nc_.yml diff --git a/tests/test_netlists/test_netlists_bend_no_.yml b/tests/test_netlists_sin300/test_netlists_bend_no_.yml similarity index 100% rename from tests/test_netlists/test_netlists_bend_no_.yml rename to tests/test_netlists_sin300/test_netlists_bend_no_.yml diff --git a/tests/test_netlists_sin300/test_netlists_bend_s_.yml b/tests/test_netlists_sin300/test_netlists_bend_s_.yml new file mode 100644 index 0000000..14f136e --- /dev/null +++ b/tests/test_netlists_sin300/test_netlists_bend_s_.yml @@ -0,0 +1,35 @@ +connections: {} +instances: + bezier_1: + component: bezier + info: + end_angle: 0 + length: 11.206 + min_bend_radius: 13.012 + start_angle: 0 + settings: + bend_radius_error_type: null + control_points: + - - 0 + - 0 + - - 5.5 + - 0 + - - 5.5 + - 1.8 + - - 11.0 + - 1.8 + cross_section: xs_nc + end_angle: null + npoints: 99 + start_angle: null + with_manhattan_facing_angles: true +name: bend_s +placements: + bezier_1: + mirror: 0 + rotation: 0 + x: 0.0 + y: 0.0 +ports: + o1: bezier_1,o1 + o2: bezier_1,o2 diff --git a/tests/test_netlists/test_netlists_coupler_nc_.yml b/tests/test_netlists_sin300/test_netlists_coupler_nc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_coupler_nc_.yml rename to tests/test_netlists_sin300/test_netlists_coupler_nc_.yml diff --git a/tests/test_netlists/test_netlists_coupler_no_.yml b/tests/test_netlists_sin300/test_netlists_coupler_no_.yml similarity index 100% rename from tests/test_netlists/test_netlists_coupler_no_.yml rename to tests/test_netlists_sin300/test_netlists_coupler_no_.yml diff --git a/tests/test_netlists/test_netlists_die_nc_.yml b/tests/test_netlists_sin300/test_netlists_die_nc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_die_nc_.yml rename to tests/test_netlists_sin300/test_netlists_die_nc_.yml diff --git a/tests/test_netlists/test_netlists_die_no_.yml b/tests/test_netlists_sin300/test_netlists_die_no_.yml similarity index 100% rename from tests/test_netlists/test_netlists_die_no_.yml rename to tests/test_netlists_sin300/test_netlists_die_no_.yml diff --git a/tests/test_netlists/test_netlists__straight_.yml b/tests/test_netlists_sin300/test_netlists_gc_elliptical_nc_.yml similarity index 70% rename from tests/test_netlists/test_netlists__straight_.yml rename to tests/test_netlists_sin300/test_netlists_gc_elliptical_nc_.yml index 4300f36..e8f6d9f 100644 --- a/tests/test_netlists/test_netlists__straight_.yml +++ b/tests/test_netlists_sin300/test_netlists_gc_elliptical_nc_.yml @@ -1,5 +1,5 @@ connections: {} instances: {} -name: _straight +name: gc_elliptical_nc placements: {} ports: {} diff --git a/tests/test_netlists/test_netlists__taper_.yml b/tests/test_netlists_sin300/test_netlists_gc_elliptical_no_.yml similarity index 70% rename from tests/test_netlists/test_netlists__taper_.yml rename to tests/test_netlists_sin300/test_netlists_gc_elliptical_no_.yml index 34af8fe..4c5f1e9 100644 --- a/tests/test_netlists/test_netlists__taper_.yml +++ b/tests/test_netlists_sin300/test_netlists_gc_elliptical_no_.yml @@ -1,5 +1,5 @@ connections: {} instances: {} -name: _taper +name: gc_elliptical_no placements: {} ports: {} diff --git a/tests/test_netlists/test_netlists_gc_rectangular_nc_.yml b/tests/test_netlists_sin300/test_netlists_gc_rectangular_nc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_gc_rectangular_nc_.yml rename to tests/test_netlists_sin300/test_netlists_gc_rectangular_nc_.yml diff --git a/tests/test_netlists/test_netlists_gc_rectangular_no_.yml b/tests/test_netlists_sin300/test_netlists_gc_rectangular_no_.yml similarity index 100% rename from tests/test_netlists/test_netlists_gc_rectangular_no_.yml rename to tests/test_netlists_sin300/test_netlists_gc_rectangular_no_.yml diff --git a/tests/test_netlists/test_netlists_grating_coupler_array_.yml b/tests/test_netlists_sin300/test_netlists_grating_coupler_array_.yml similarity index 100% rename from tests/test_netlists/test_netlists_grating_coupler_array_.yml rename to tests/test_netlists_sin300/test_netlists_grating_coupler_array_.yml diff --git a/tests/test_netlists/test_netlists_mmi1x2_nc_.yml b/tests/test_netlists_sin300/test_netlists_mmi1x2_nc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mmi1x2_nc_.yml rename to tests/test_netlists_sin300/test_netlists_mmi1x2_nc_.yml diff --git a/tests/test_netlists/test_netlists_mmi1x2_no_.yml b/tests/test_netlists_sin300/test_netlists_mmi1x2_no_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mmi1x2_no_.yml rename to tests/test_netlists_sin300/test_netlists_mmi1x2_no_.yml diff --git a/tests/test_netlists/test_netlists_mmi2x2_nc_.yml b/tests/test_netlists_sin300/test_netlists_mmi2x2_nc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mmi2x2_nc_.yml rename to tests/test_netlists_sin300/test_netlists_mmi2x2_nc_.yml diff --git a/tests/test_netlists/test_netlists_mmi2x2_no_.yml b/tests/test_netlists_sin300/test_netlists_mmi2x2_no_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mmi2x2_no_.yml rename to tests/test_netlists_sin300/test_netlists_mmi2x2_no_.yml diff --git a/tests/test_netlists/test_netlists_mzi_nc_.yml b/tests/test_netlists_sin300/test_netlists_mzi_nc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mzi_nc_.yml rename to tests/test_netlists_sin300/test_netlists_mzi_nc_.yml diff --git a/tests/test_netlists/test_netlists_mzi_no_.yml b/tests/test_netlists_sin300/test_netlists_mzi_no_.yml similarity index 100% rename from tests/test_netlists/test_netlists_mzi_no_.yml rename to tests/test_netlists_sin300/test_netlists_mzi_no_.yml diff --git a/tests/test_netlists/test_netlists__bend_.yml b/tests/test_netlists_sin300/test_netlists_pad_.yml similarity index 82% rename from tests/test_netlists/test_netlists__bend_.yml rename to tests/test_netlists_sin300/test_netlists_pad_.yml index d9fb972..a1f29ef 100644 --- a/tests/test_netlists/test_netlists__bend_.yml +++ b/tests/test_netlists_sin300/test_netlists_pad_.yml @@ -1,5 +1,5 @@ connections: {} instances: {} -name: _bend +name: pad placements: {} ports: {} diff --git a/tests/test_netlists_sin300/test_netlists_rectangle_.yml b/tests/test_netlists_sin300/test_netlists_rectangle_.yml new file mode 100644 index 0000000..febfde9 --- /dev/null +++ b/tests/test_netlists_sin300/test_netlists_rectangle_.yml @@ -0,0 +1,31 @@ +connections: {} +instances: + compass_1: + component: compass + info: {} + settings: + layer: + - 99 + - 0 + port_inclusion: 0.0 + port_orientations: + - 180.0 + - 90.0 + - 0.0 + - -90.0 + port_type: electrical + size: + - 4.0 + - 2.0 +name: rectangle +placements: + compass_1: + mirror: 0 + rotation: 0 + x: 2.0 + y: 1.0 +ports: + e1: compass_1,e1 + e2: compass_1,e2 + e3: compass_1,e3 + e4: compass_1,e4 diff --git a/tests/test_netlists/test_netlists_straight_nc_.yml b/tests/test_netlists_sin300/test_netlists_straight_nc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_straight_nc_.yml rename to tests/test_netlists_sin300/test_netlists_straight_nc_.yml diff --git a/tests/test_netlists/test_netlists_straight_no_.yml b/tests/test_netlists_sin300/test_netlists_straight_no_.yml similarity index 100% rename from tests/test_netlists/test_netlists_straight_no_.yml rename to tests/test_netlists_sin300/test_netlists_straight_no_.yml diff --git a/tests/test_netlists/test_netlists_taper_nc_.yml b/tests/test_netlists_sin300/test_netlists_taper_nc_.yml similarity index 100% rename from tests/test_netlists/test_netlists_taper_nc_.yml rename to tests/test_netlists_sin300/test_netlists_taper_nc_.yml diff --git a/tests/test_netlists/test_netlists_taper_no_.yml b/tests/test_netlists_sin300/test_netlists_taper_no_.yml similarity index 100% rename from tests/test_netlists/test_netlists_taper_no_.yml rename to tests/test_netlists_sin300/test_netlists_taper_no_.yml diff --git a/tests/test_netlists/test_netlists_bend_euler_.yml b/tests/test_netlists_sin300/test_netlists_wire_corner_.yml similarity index 55% rename from tests/test_netlists/test_netlists_bend_euler_.yml rename to tests/test_netlists_sin300/test_netlists_wire_corner_.yml index 47a57e9..abe20c9 100644 --- a/tests/test_netlists/test_netlists_bend_euler_.yml +++ b/tests/test_netlists_sin300/test_netlists_wire_corner_.yml @@ -1,5 +1,6 @@ connections: {} instances: {} -name: bend_euler +name: wire_corner$1 placements: {} -ports: {} +ports: + e1: e2 diff --git a/tests/test_pdk/test_settings__bend_.yml b/tests/test_pdk/test_settings__bend_.yml deleted file mode 100644 index 22e6d92..0000000 --- a/tests/test_pdk/test_settings__bend_.yml +++ /dev/null @@ -1,22 +0,0 @@ -function: _bend -info: - dy: 10.0 - length: 16.637 - radius: 10.0 - radius_min: 7.061 - route_info_length: 16.637 - route_info_n_bend_90: 1.0 - route_info_type: xs_sc - route_info_weight: 16.637 - route_info_xs_sc_length: 16.637 - width: 0.45 -module: cspdk.cells -name: _bend -settings: - angle: 90.0 - cross_section: xs_sc - direction: ccw - npoints: null - p: 0.5 - radius: null - with_arc_floorplan: true diff --git a/tests/test_pdk/test_settings__gc_rectangular_.yml b/tests/test_pdk/test_settings__gc_rectangular_.yml deleted file mode 100644 index 77608b6..0000000 --- a/tests/test_pdk/test_settings__gc_rectangular_.yml +++ /dev/null @@ -1,27 +0,0 @@ -function: grating_coupler_rectangular -info: - fiber_angle: 10 - polarization: te - wavelength: 1.55 -module: gdsfactory.components.grating_coupler_rectangular -name: grating_coupler_rectangular_fcb0b7aa -settings: - cross_section: xs_sc - fiber_angle: 10 - fill_factor: 0.5 - layer_grating: - - 6 - - 0 - layer_slab: - - 3 - - 0 - length_taper: 350 - n_periods: 30 - period: 0.75 - polarization: te - slab_offset: 0 - slab_xmin: -1.0 - taper: - function: taper - wavelength: 1.55 - width_grating: 11.0 diff --git a/tests/test_pdk/test_settings__mm1x2_nitride_cband_.yml b/tests/test_pdk/test_settings__mm1x2_nitride_cband_.yml deleted file mode 100644 index 7ccbdca..0000000 --- a/tests/test_pdk/test_settings__mm1x2_nitride_cband_.yml +++ /dev/null @@ -1,53 +0,0 @@ -function: mmi1x2 -info: {} -module: gdsfactory.components.mmi1x2 -name: mmi1x2_c06ba645 -settings: - cross_section: - add_pins_function_module: gdsfactory.add_pins - add_pins_function_name: null - auto_widen: false - auto_widen_minimum_length: 200.0 - bbox_layers: null - bbox_offsets: null - components_along_path: [] - end_straight_length: 0.01 - gap: 3.0 - info: {} - min_length: 0.01 - radius: 25.0 - radius_min: 5.0 - sections: - - hidden: false - insets: null - layer: - - 203 - - 0 - name: _default - offset: 0.0 - offset_function: null - port_names: - - o1 - - o2 - port_types: - - optical - - optical - simplify: null - width: 1.2 - width_function: null - start_straight_length: 0.01 - taper_length: 10.0 - width_wide: null - gap: 0.4 - gap_mmi: 0.25 - length_mmi: 5.5 - length_taper: 50 - post_process: null - straight: - function: straight - taper: - function: taper - width: null - width_mmi: 12 - width_taper: 5.5 - with_bbox: true diff --git a/tests/test_pdk/test_settings__mm2x2_nitride_cband_.yml b/tests/test_pdk/test_settings__mm2x2_nitride_cband_.yml deleted file mode 100644 index ef401cc..0000000 --- a/tests/test_pdk/test_settings__mm2x2_nitride_cband_.yml +++ /dev/null @@ -1,53 +0,0 @@ -function: mmi2x2 -info: {} -module: gdsfactory.components.mmi2x2 -name: mmi2x2_c06ba645 -settings: - cross_section: - add_pins_function_module: gdsfactory.add_pins - add_pins_function_name: null - auto_widen: false - auto_widen_minimum_length: 200.0 - bbox_layers: null - bbox_offsets: null - components_along_path: [] - end_straight_length: 0.01 - gap: 3.0 - info: {} - min_length: 0.01 - radius: 25.0 - radius_min: 5.0 - sections: - - hidden: false - insets: null - layer: - - 203 - - 0 - name: _default - offset: 0.0 - offset_function: null - port_names: - - o1 - - o2 - port_types: - - optical - - optical - simplify: null - width: 1.2 - width_function: null - start_straight_length: 0.01 - taper_length: 10.0 - width_wide: null - gap: 0.4 - gap_mmi: 0.25 - length_mmi: 5.5 - length_taper: 50 - post_process: null - straight: - function: straight - taper: - function: taper - width: null - width_mmi: 12 - width_taper: 5.5 - with_bbox: true diff --git a/tests/test_pdk/test_settings__mmi1x2_.yml b/tests/test_pdk/test_settings__mmi1x2_.yml deleted file mode 100644 index a00f5fb..0000000 --- a/tests/test_pdk/test_settings__mmi1x2_.yml +++ /dev/null @@ -1,18 +0,0 @@ -function: mmi1x2 -info: {} -module: gdsfactory.components.mmi1x2 -name: mmi1x2_18da61b4 -settings: - cross_section: xs_sc - gap_mmi: 0.25 - length_mmi: 5.5 - length_taper: 20 - post_process: null - straight: - function: straight - taper: - function: taper - width: null - width_mmi: 6 - width_taper: 1.5 - with_bbox: true diff --git a/tests/test_pdk/test_settings__mmi1x2_nitride_oband_.yml b/tests/test_pdk/test_settings__mmi1x2_nitride_oband_.yml deleted file mode 100644 index b0d942d..0000000 --- a/tests/test_pdk/test_settings__mmi1x2_nitride_oband_.yml +++ /dev/null @@ -1,53 +0,0 @@ -function: mmi1x2 -info: {} -module: gdsfactory.components.mmi1x2 -name: mmi1x2_c514a145 -settings: - cross_section: - add_pins_function_module: gdsfactory.add_pins - add_pins_function_name: null - auto_widen: false - auto_widen_minimum_length: 200.0 - bbox_layers: null - bbox_offsets: null - components_along_path: [] - end_straight_length: 0.01 - gap: 3.0 - info: {} - min_length: 0.01 - radius: 25.0 - radius_min: 5.0 - sections: - - hidden: false - insets: null - layer: - - 203 - - 0 - name: _default - offset: 0.0 - offset_function: null - port_names: - - o1 - - o2 - port_types: - - optical - - optical - simplify: null - width: 0.95 - width_function: null - start_straight_length: 0.01 - taper_length: 10.0 - width_wide: null - gap: 0.4 - gap_mmi: 0.25 - length_mmi: 5.5 - length_taper: 50 - post_process: null - straight: - function: straight - taper: - function: taper - width: null - width_mmi: 12 - width_taper: 5.5 - with_bbox: true diff --git a/tests/test_pdk/test_settings__mmi2x2_.yml b/tests/test_pdk/test_settings__mmi2x2_.yml deleted file mode 100644 index c91d788..0000000 --- a/tests/test_pdk/test_settings__mmi2x2_.yml +++ /dev/null @@ -1,18 +0,0 @@ -function: mmi2x2 -info: {} -module: gdsfactory.components.mmi2x2 -name: mmi2x2_18da61b4 -settings: - cross_section: xs_sc - gap_mmi: 0.25 - length_mmi: 5.5 - length_taper: 20 - post_process: null - straight: - function: straight - taper: - function: taper - width: null - width_mmi: 6 - width_taper: 1.5 - with_bbox: true diff --git a/tests/test_pdk/test_settings__mmi2x2_nitride_oband_.yml b/tests/test_pdk/test_settings__mmi2x2_nitride_oband_.yml deleted file mode 100644 index 3cfab10..0000000 --- a/tests/test_pdk/test_settings__mmi2x2_nitride_oband_.yml +++ /dev/null @@ -1,53 +0,0 @@ -function: mmi2x2 -info: {} -module: gdsfactory.components.mmi2x2 -name: mmi2x2_c514a145 -settings: - cross_section: - add_pins_function_module: gdsfactory.add_pins - add_pins_function_name: null - auto_widen: false - auto_widen_minimum_length: 200.0 - bbox_layers: null - bbox_offsets: null - components_along_path: [] - end_straight_length: 0.01 - gap: 3.0 - info: {} - min_length: 0.01 - radius: 25.0 - radius_min: 5.0 - sections: - - hidden: false - insets: null - layer: - - 203 - - 0 - name: _default - offset: 0.0 - offset_function: null - port_names: - - o1 - - o2 - port_types: - - optical - - optical - simplify: null - width: 0.95 - width_function: null - start_straight_length: 0.01 - taper_length: 10.0 - width_wide: null - gap: 0.4 - gap_mmi: 0.25 - length_mmi: 5.5 - length_taper: 50 - post_process: null - straight: - function: straight - taper: - function: taper - width: null - width_mmi: 12 - width_taper: 5.5 - with_bbox: true diff --git a/tests/test_pdk/test_settings__straight_.yml b/tests/test_pdk/test_settings__straight_.yml deleted file mode 100644 index 5b8e41c..0000000 --- a/tests/test_pdk/test_settings__straight_.yml +++ /dev/null @@ -1,13 +0,0 @@ -function: _straight -info: - length: 10.0 - route_info_length: 10.0 - route_info_type: xs_sc - route_info_weight: 10.0 - route_info_xs_sc_length: 10.0 - width: 0.45 -module: cspdk.cells -name: _straight -settings: - cross_section: xs_sc - length: 10.0 diff --git a/tests/test_pdk/test_settings__taper_.yml b/tests/test_pdk/test_settings__taper_.yml deleted file mode 100644 index 5f64ac8..0000000 --- a/tests/test_pdk/test_settings__taper_.yml +++ /dev/null @@ -1,13 +0,0 @@ -function: _taper -info: - length: 10.0 - width1: 0.5 - width2: 0.5 -module: cspdk.cells -name: _taper -settings: - cross_section: xs_sc - length: 10.0 - port: null - width1: 0.5 - width2: null diff --git a/tests/test_pdk/test_settings_bend_euler_.yml b/tests/test_pdk/test_settings_bend_euler_.yml deleted file mode 100644 index 8b3a9c3..0000000 --- a/tests/test_pdk/test_settings_bend_euler_.yml +++ /dev/null @@ -1,24 +0,0 @@ -function: bend_euler -info: - dy: 10.0 - length: 16.637 - radius: 10.0 - radius_min: 7.061 - route_info_length: 16.637 - route_info_n_bend_90: 1.0 - route_info_type: xs_sc - route_info_weight: 16.637 - route_info_xs_sc_length: 16.637 - width: 0.45 -module: gdsfactory.components.bend_euler -name: bend_euler -settings: - angle: 90.0 - cross_section: xs_sc - direction: ccw - info: null - npoints: null - p: 0.5 - post_process: null - radius: null - with_arc_floorplan: true diff --git a/tests/test_pdk/test_settings_gc_rectangular_.yml b/tests/test_pdk/test_settings_gc_rectangular_.yml deleted file mode 100644 index 5db460c..0000000 --- a/tests/test_pdk/test_settings_gc_rectangular_.yml +++ /dev/null @@ -1,19 +0,0 @@ -function: gc_rectangular -info: - fiber_angle: 10 - polarization: te - wavelength: 1.55 -module: cspdk.cells -name: gc_rectangular -settings: - fiber_angle: 10 - fill_factor: 0.5 - layer_grating: - - 6 - - 0 - layer_slab: - - 3 - - 0 - length_taper: 350 - n_periods: 30 - slab_offset: 0 diff --git a/tests/test_pdk/test_settings_mmi1x2_.yml b/tests/test_pdk/test_settings_mmi1x2_.yml deleted file mode 100644 index 57995a7..0000000 --- a/tests/test_pdk/test_settings_mmi1x2_.yml +++ /dev/null @@ -1,14 +0,0 @@ -function: mmi1x2 -info: {} -module: gdsfactory.components.mmi1x2 -name: mmi1x2 -settings: - cross_section: xs_sc - gap_mmi: 0.25 - length_mmi: 5.5 - length_taper: 10.0 - taper: - function: taper - width: null - width_mmi: 2.5 - width_taper: 1.0 diff --git a/tests/test_pdk/test_settings_mmi2x2_.yml b/tests/test_pdk/test_settings_mmi2x2_.yml deleted file mode 100644 index 7bfa3d6..0000000 --- a/tests/test_pdk/test_settings_mmi2x2_.yml +++ /dev/null @@ -1,14 +0,0 @@ -function: mmi2x2 -info: {} -module: gdsfactory.components.mmi2x2 -name: mmi2x2 -settings: - cross_section: xs_sc - gap_mmi: 0.25 - length_mmi: 5.5 - length_taper: 10.0 - taper: - function: taper - width: null - width_mmi: 2.5 - width_taper: 1.0 diff --git a/tests/test_pdk/test_settings_mzi_.yml b/tests/test_pdk/test_settings_mzi_.yml deleted file mode 100644 index 33b23d0..0000000 --- a/tests/test_pdk/test_settings_mzi_.yml +++ /dev/null @@ -1,31 +0,0 @@ -function: mzi -info: {} -module: gdsfactory.components.mzi -name: mzi -settings: - add_electrical_ports_bot: true - add_optical_ports_arms: false - bend: - function: bend_euler - combiner: null - cross_section: xs_sc - cross_section_x_bot: null - cross_section_x_top: null - delta_length: 10.0 - extend_ports_straight_x: null - length_x: 0.1 - length_y: 2.0 - min_length: 0.01 - mirror_bot: false - nbends: 2 - port_e0_combiner: o3 - port_e0_splitter: o3 - port_e1_combiner: o2 - port_e1_splitter: o2 - splitter: mmi1x2 - straight: - function: straight - straight_x_bot: null - straight_x_top: null - straight_y: null - with_splitter: true diff --git a/tests/test_pdk/test_settings_straight_.yml b/tests/test_pdk/test_settings_straight_.yml deleted file mode 100644 index 9da98e8..0000000 --- a/tests/test_pdk/test_settings_straight_.yml +++ /dev/null @@ -1,16 +0,0 @@ -function: straight -info: - length: 10.0 - route_info_length: 10.0 - route_info_type: xs_sc - route_info_weight: 10.0 - route_info_xs_sc_length: 10.0 - width: 0.45 -module: gdsfactory.components.straight -name: straight -settings: - cross_section: xs_sc - info: null - length: 10.0 - npoints: 2 - post_process: null diff --git a/tests/test_pdk/test_settings_taper_.yml b/tests/test_pdk/test_settings_taper_.yml deleted file mode 100644 index d945786..0000000 --- a/tests/test_pdk/test_settings_taper_.yml +++ /dev/null @@ -1,20 +0,0 @@ -function: taper -info: - length: 10.0 - width1: 0.5 - width2: 0.5 -module: gdsfactory.components.taper -name: taper -settings: - cross_section: xs_sc - length: 10.0 - port: null - port_order_name: - - o1 - - o2 - port_order_types: - - optical - - optical - width1: 0.5 - width2: null - with_two_ports: true diff --git a/tests/test_pdk/test_settings_taper_cross_section_.yml b/tests/test_pdk/test_settings_taper_cross_section_.yml deleted file mode 100644 index eae24bf..0000000 --- a/tests/test_pdk/test_settings_taper_cross_section_.yml +++ /dev/null @@ -1,16 +0,0 @@ -function: taper_cross_section -info: - length: 10 - route_info_length: 10.0 - route_info_type: xs_rc_tip - route_info_weight: 10.0 - route_info_xs_rc_tip_length: 10.0 - route_info_xs_rc_tip_taper_length: 10 -module: cspdk.cells -name: taper_cross_section -settings: - cross_section1: xs_rc_tip - cross_section2: xs_rc - length: 10 - linear: true - npoints: 2 diff --git a/tests/test_pdk.py b/tests/test_pdk_si220.py similarity index 76% rename from tests/test_pdk.py rename to tests/test_pdk_si220.py index b4bf751..d4ed59a 100644 --- a/tests/test_pdk.py +++ b/tests/test_pdk_si220.py @@ -4,18 +4,25 @@ from gdsfactory.difftest import difftest from pytest_regressions.data_regression import DataRegressionFixture -from cspdk import PDK +from cspdk.si220 import PDK + + +@pytest.fixture(autouse=True) +def activate_pdk(): + PDK.activate() + cells = PDK.cells skip_test = {"import_gds"} -component_names = set(cells.keys()) - set(skip_test) -dirpath = pathlib.Path(__file__).absolute().with_suffix(".gds").parent / "gds_ref" +cell_names = set(cells.keys()) - set(skip_test) +cell_names = [name for name in cell_names if not name.startswith("_")] +dirpath = pathlib.Path(__file__).absolute().with_suffix(".gds").parent / "gds_ref_si220" dirpath.mkdir(exist_ok=True, parents=True) -@pytest.fixture(params=component_names, scope="function") +@pytest.fixture(params=cell_names, scope="function") def component_name(request) -> str: return request.param diff --git a/tests/test_pdk/test_settings_array_.yml b/tests/test_pdk_si220/test_settings_array_.yml similarity index 100% rename from tests/test_pdk/test_settings_array_.yml rename to tests/test_pdk_si220/test_settings_array_.yml diff --git a/tests/test_pdk/test_settings_bend_rc_.yml b/tests/test_pdk_si220/test_settings_bend_rc_.yml similarity index 91% rename from tests/test_pdk/test_settings_bend_rc_.yml rename to tests/test_pdk_si220/test_settings_bend_rc_.yml index 160b3db..ebb0607 100644 --- a/tests/test_pdk/test_settings_bend_rc_.yml +++ b/tests/test_pdk_si220/test_settings_bend_rc_.yml @@ -10,7 +10,7 @@ info: route_info_weight: 41.592 route_info_xs_rc_length: 41.592 width: 0.45 -module: cspdk.cells +module: cspdk.si220.cells name: bend_rc settings: angle: 90.0 diff --git a/tests/test_pdk/test_settings_bend_ro_.yml b/tests/test_pdk_si220/test_settings_bend_ro_.yml similarity index 91% rename from tests/test_pdk/test_settings_bend_ro_.yml rename to tests/test_pdk_si220/test_settings_bend_ro_.yml index 1f51621..f6f1cff 100644 --- a/tests/test_pdk/test_settings_bend_ro_.yml +++ b/tests/test_pdk_si220/test_settings_bend_ro_.yml @@ -10,7 +10,7 @@ info: route_info_weight: 41.592 route_info_xs_ro_length: 41.592 width: 0.4 -module: cspdk.cells +module: cspdk.si220.cells name: bend_ro settings: angle: 90.0 diff --git a/tests/test_pdk/test_settings_bend_s_.yml b/tests/test_pdk_si220/test_settings_bend_s_.yml similarity index 86% rename from tests/test_pdk/test_settings_bend_s_.yml rename to tests/test_pdk_si220/test_settings_bend_s_.yml index 84490b5..d972f2a 100644 --- a/tests/test_pdk/test_settings_bend_s_.yml +++ b/tests/test_pdk_si220/test_settings_bend_s_.yml @@ -4,7 +4,7 @@ info: length: 11.206 min_bend_radius: 13.012 start_angle: 0 -module: cspdk.cells +module: cspdk.si220.cells name: bend_s$1 settings: cross_section: xs_sc diff --git a/tests/test_pdk/test_settings_bend_sc_.yml b/tests/test_pdk_si220/test_settings_bend_sc_.yml similarity index 91% rename from tests/test_pdk/test_settings_bend_sc_.yml rename to tests/test_pdk_si220/test_settings_bend_sc_.yml index 6e484c9..18d5baf 100644 --- a/tests/test_pdk/test_settings_bend_sc_.yml +++ b/tests/test_pdk_si220/test_settings_bend_sc_.yml @@ -10,7 +10,7 @@ info: route_info_weight: 16.637 route_info_xs_sc_length: 16.637 width: 0.45 -module: cspdk.cells +module: cspdk.si220.cells name: bend_sc settings: angle: 90.0 diff --git a/tests/test_pdk/test_settings_bend_so_.yml b/tests/test_pdk_si220/test_settings_bend_so_.yml similarity index 91% rename from tests/test_pdk/test_settings_bend_so_.yml rename to tests/test_pdk_si220/test_settings_bend_so_.yml index 394d4d4..63c66d7 100644 --- a/tests/test_pdk/test_settings_bend_so_.yml +++ b/tests/test_pdk_si220/test_settings_bend_so_.yml @@ -10,7 +10,7 @@ info: route_info_weight: 16.637 route_info_xs_so_length: 16.637 width: 0.4 -module: cspdk.cells +module: cspdk.si220.cells name: bend_so settings: angle: 90.0 diff --git a/tests/test_pdk/test_settings_coupler_rc_.yml b/tests/test_pdk_si220/test_settings_coupler_rc_.yml similarity index 84% rename from tests/test_pdk/test_settings_coupler_rc_.yml rename to tests/test_pdk_si220/test_settings_coupler_rc_.yml index e571155..62142ff 100644 --- a/tests/test_pdk/test_settings_coupler_rc_.yml +++ b/tests/test_pdk_si220/test_settings_coupler_rc_.yml @@ -2,7 +2,7 @@ function: coupler_rc info: length: 10.192 min_bend_radius: 11.701 -module: cspdk.cells +module: cspdk.si220.cells name: coupler_rc settings: dx: 10.0 diff --git a/tests/test_pdk/test_settings_coupler_ro_.yml b/tests/test_pdk_si220/test_settings_coupler_ro_.yml similarity index 84% rename from tests/test_pdk/test_settings_coupler_ro_.yml rename to tests/test_pdk_si220/test_settings_coupler_ro_.yml index d11cf23..5d70fa4 100644 --- a/tests/test_pdk/test_settings_coupler_ro_.yml +++ b/tests/test_pdk_si220/test_settings_coupler_ro_.yml @@ -2,7 +2,7 @@ function: coupler_ro info: length: 10.198 min_bend_radius: 11.548 -module: cspdk.cells +module: cspdk.si220.cells name: coupler_ro settings: dx: 10.0 diff --git a/tests/test_pdk/test_settings_coupler_sc_.yml b/tests/test_pdk_si220/test_settings_coupler_sc_.yml similarity index 84% rename from tests/test_pdk/test_settings_coupler_sc_.yml rename to tests/test_pdk_si220/test_settings_coupler_sc_.yml index 0a95e62..846ac0d 100644 --- a/tests/test_pdk/test_settings_coupler_sc_.yml +++ b/tests/test_pdk_si220/test_settings_coupler_sc_.yml @@ -2,7 +2,7 @@ function: coupler_sc info: length: 10.192 min_bend_radius: 11.701 -module: cspdk.cells +module: cspdk.si220.cells name: coupler_sc settings: dx: 10.0 diff --git a/tests/test_pdk/test_settings_coupler_so_.yml b/tests/test_pdk_si220/test_settings_coupler_so_.yml similarity index 84% rename from tests/test_pdk/test_settings_coupler_so_.yml rename to tests/test_pdk_si220/test_settings_coupler_so_.yml index b0162cb..cad8cb9 100644 --- a/tests/test_pdk/test_settings_coupler_so_.yml +++ b/tests/test_pdk_si220/test_settings_coupler_so_.yml @@ -2,7 +2,7 @@ function: coupler_so info: length: 10.198 min_bend_radius: 11.548 -module: cspdk.cells +module: cspdk.si220.cells name: coupler_so settings: dx: 10.0 diff --git a/tests/test_pdk/test_settings_crossing_rc_.yml b/tests/test_pdk_si220/test_settings_crossing_rc_.yml similarity index 70% rename from tests/test_pdk/test_settings_crossing_rc_.yml rename to tests/test_pdk_si220/test_settings_crossing_rc_.yml index e6615ba..8d3c338 100644 --- a/tests/test_pdk/test_settings_crossing_rc_.yml +++ b/tests/test_pdk_si220/test_settings_crossing_rc_.yml @@ -1,5 +1,5 @@ function: crossing_rc info: {} -module: cspdk.cells +module: cspdk.si220.cells name: crossing_rc settings: {} diff --git a/tests/test_pdk/test_settings_crossing_sc_.yml b/tests/test_pdk_si220/test_settings_crossing_sc_.yml similarity index 70% rename from tests/test_pdk/test_settings_crossing_sc_.yml rename to tests/test_pdk_si220/test_settings_crossing_sc_.yml index 30edf92..cd35aee 100644 --- a/tests/test_pdk/test_settings_crossing_sc_.yml +++ b/tests/test_pdk_si220/test_settings_crossing_sc_.yml @@ -1,5 +1,5 @@ function: crossing_sc info: {} -module: cspdk.cells +module: cspdk.si220.cells name: crossing_sc settings: {} diff --git a/tests/test_pdk/test_settings_crossing_so_.yml b/tests/test_pdk_si220/test_settings_crossing_so_.yml similarity index 70% rename from tests/test_pdk/test_settings_crossing_so_.yml rename to tests/test_pdk_si220/test_settings_crossing_so_.yml index a1f4578..dde3317 100644 --- a/tests/test_pdk/test_settings_crossing_so_.yml +++ b/tests/test_pdk_si220/test_settings_crossing_so_.yml @@ -1,5 +1,5 @@ function: crossing_so info: {} -module: cspdk.cells +module: cspdk.si220.cells name: crossing_so settings: {} diff --git a/tests/test_pdk/test_settings_die_rc_.yml b/tests/test_pdk_si220/test_settings_die_rc_.yml similarity index 66% rename from tests/test_pdk/test_settings_die_rc_.yml rename to tests/test_pdk_si220/test_settings_die_rc_.yml index d04838b..3e79da3 100644 --- a/tests/test_pdk/test_settings_die_rc_.yml +++ b/tests/test_pdk_si220/test_settings_die_rc_.yml @@ -1,5 +1,5 @@ function: die_rc info: {} -module: cspdk.cells +module: cspdk.si220.cells name: die_rc settings: {} diff --git a/tests/test_pdk/test_settings_die_ro_.yml b/tests/test_pdk_si220/test_settings_die_ro_.yml similarity index 66% rename from tests/test_pdk/test_settings_die_ro_.yml rename to tests/test_pdk_si220/test_settings_die_ro_.yml index f770ef3..3349239 100644 --- a/tests/test_pdk/test_settings_die_ro_.yml +++ b/tests/test_pdk_si220/test_settings_die_ro_.yml @@ -1,5 +1,5 @@ function: die_ro info: {} -module: cspdk.cells +module: cspdk.si220.cells name: die_ro settings: {} diff --git a/tests/test_pdk/test_settings_die_sc_.yml b/tests/test_pdk_si220/test_settings_die_sc_.yml similarity index 66% rename from tests/test_pdk/test_settings_die_sc_.yml rename to tests/test_pdk_si220/test_settings_die_sc_.yml index e502ddf..1725211 100644 --- a/tests/test_pdk/test_settings_die_sc_.yml +++ b/tests/test_pdk_si220/test_settings_die_sc_.yml @@ -1,5 +1,5 @@ function: die_sc info: {} -module: cspdk.cells +module: cspdk.si220.cells name: die_sc settings: {} diff --git a/tests/test_pdk/test_settings_die_so_.yml b/tests/test_pdk_si220/test_settings_die_so_.yml similarity index 66% rename from tests/test_pdk/test_settings_die_so_.yml rename to tests/test_pdk_si220/test_settings_die_so_.yml index bce5550..fb72e3f 100644 --- a/tests/test_pdk/test_settings_die_so_.yml +++ b/tests/test_pdk_si220/test_settings_die_so_.yml @@ -1,5 +1,5 @@ function: die_so info: {} -module: cspdk.cells +module: cspdk.si220.cells name: die_so settings: {} diff --git a/tests/test_pdk/test_settings_gc_elliptical_sc_.yml b/tests/test_pdk_si220/test_settings_gc_elliptical_sc_.yml similarity index 88% rename from tests/test_pdk/test_settings_gc_elliptical_sc_.yml rename to tests/test_pdk_si220/test_settings_gc_elliptical_sc_.yml index 8af7c6a..ddbaafb 100644 --- a/tests/test_pdk/test_settings_gc_elliptical_sc_.yml +++ b/tests/test_pdk_si220/test_settings_gc_elliptical_sc_.yml @@ -3,7 +3,7 @@ info: period: 0.6759999999999999 polarization: te wavelength: 1.53 -module: cspdk.cells +module: cspdk.si220.cells name: gc_elliptical_sc settings: fiber_angle: 15 diff --git a/tests/test_pdk/test_settings_gc_elliptical_so_.yml b/tests/test_pdk_si220/test_settings_gc_elliptical_so_.yml similarity index 87% rename from tests/test_pdk/test_settings_gc_elliptical_so_.yml rename to tests/test_pdk_si220/test_settings_gc_elliptical_so_.yml index 10ffbfc..58bf882 100644 --- a/tests/test_pdk/test_settings_gc_elliptical_so_.yml +++ b/tests/test_pdk_si220/test_settings_gc_elliptical_so_.yml @@ -3,7 +3,7 @@ info: period: 0.579 polarization: te wavelength: 1.31 -module: cspdk.cells +module: cspdk.si220.cells name: gc_elliptical_so settings: fiber_angle: 15 diff --git a/tests/test_pdk/test_settings_gc_rectangular_rc_.yml b/tests/test_pdk_si220/test_settings_gc_rectangular_rc_.yml similarity index 83% rename from tests/test_pdk/test_settings_gc_rectangular_rc_.yml rename to tests/test_pdk_si220/test_settings_gc_rectangular_rc_.yml index d533742..cdfafbb 100644 --- a/tests/test_pdk/test_settings_gc_rectangular_rc_.yml +++ b/tests/test_pdk_si220/test_settings_gc_rectangular_rc_.yml @@ -3,6 +3,6 @@ info: fiber_angle: 10.0 polarization: te wavelength: 1.55 -module: cspdk.cells +module: cspdk.si220.cells name: gc_rectangular_rc settings: {} diff --git a/tests/test_pdk/test_settings_gc_rectangular_ro_.yml b/tests/test_pdk_si220/test_settings_gc_rectangular_ro_.yml similarity index 83% rename from tests/test_pdk/test_settings_gc_rectangular_ro_.yml rename to tests/test_pdk_si220/test_settings_gc_rectangular_ro_.yml index 9061ecf..0f1b092 100644 --- a/tests/test_pdk/test_settings_gc_rectangular_ro_.yml +++ b/tests/test_pdk_si220/test_settings_gc_rectangular_ro_.yml @@ -3,6 +3,6 @@ info: fiber_angle: 10.0 polarization: te wavelength: 1.55 -module: cspdk.cells +module: cspdk.si220.cells name: gc_rectangular_ro settings: {} diff --git a/tests/test_pdk/test_settings_gc_rectangular_sc_.yml b/tests/test_pdk_si220/test_settings_gc_rectangular_sc_.yml similarity index 83% rename from tests/test_pdk/test_settings_gc_rectangular_sc_.yml rename to tests/test_pdk_si220/test_settings_gc_rectangular_sc_.yml index 4b7e359..4fd9ee5 100644 --- a/tests/test_pdk/test_settings_gc_rectangular_sc_.yml +++ b/tests/test_pdk_si220/test_settings_gc_rectangular_sc_.yml @@ -3,6 +3,6 @@ info: fiber_angle: 10 polarization: te wavelength: 1.55 -module: cspdk.cells +module: cspdk.si220.cells name: gc_rectangular_sc settings: {} diff --git a/tests/test_pdk/test_settings_gc_rectangular_so_.yml b/tests/test_pdk_si220/test_settings_gc_rectangular_so_.yml similarity index 83% rename from tests/test_pdk/test_settings_gc_rectangular_so_.yml rename to tests/test_pdk_si220/test_settings_gc_rectangular_so_.yml index dbaff68..d9f70d3 100644 --- a/tests/test_pdk/test_settings_gc_rectangular_so_.yml +++ b/tests/test_pdk_si220/test_settings_gc_rectangular_so_.yml @@ -3,6 +3,6 @@ info: fiber_angle: 10.0 polarization: te wavelength: 1.55 -module: cspdk.cells +module: cspdk.si220.cells name: gc_rectangular_so settings: {} diff --git a/tests/test_pdk_si220/test_settings_grating_coupler_array_.yml b/tests/test_pdk_si220/test_settings_grating_coupler_array_.yml new file mode 100644 index 0000000..23e9d5b --- /dev/null +++ b/tests/test_pdk_si220/test_settings_grating_coupler_array_.yml @@ -0,0 +1,16 @@ +function: grating_coupler_array +info: {} +module: cspdk.si220.cells +name: grating_coupler_array +settings: + bend: + function: _bend + cross_section: xs_sc + grating_coupler: + function: gc_rectangular_sc + grating_coupler_spacing: 0.0 + n: 6 + pitch: 127.0 + port_name: o1 + rotation: 0.0 + with_loopback: false diff --git a/tests/test_pdk/test_settings_heater_.yml b/tests/test_pdk_si220/test_settings_heater_.yml similarity index 67% rename from tests/test_pdk/test_settings_heater_.yml rename to tests/test_pdk_si220/test_settings_heater_.yml index 1ab76c1..4c1952c 100644 --- a/tests/test_pdk/test_settings_heater_.yml +++ b/tests/test_pdk_si220/test_settings_heater_.yml @@ -1,5 +1,5 @@ function: heater info: {} -module: cspdk.cells +module: cspdk.si220.cells name: heater$1 settings: {} diff --git a/tests/test_pdk/test_settings_mmi1x2_rc_.yml b/tests/test_pdk_si220/test_settings_mmi1x2_rc_.yml similarity index 69% rename from tests/test_pdk/test_settings_mmi1x2_rc_.yml rename to tests/test_pdk_si220/test_settings_mmi1x2_rc_.yml index 603b4fc..b0381cb 100644 --- a/tests/test_pdk/test_settings_mmi1x2_rc_.yml +++ b/tests/test_pdk_si220/test_settings_mmi1x2_rc_.yml @@ -1,5 +1,5 @@ function: mmi1x2_rc info: {} -module: cspdk.cells +module: cspdk.si220.cells name: mmi1x2_rc settings: {} diff --git a/tests/test_pdk/test_settings_mmi1x2_ro_.yml b/tests/test_pdk_si220/test_settings_mmi1x2_ro_.yml similarity index 69% rename from tests/test_pdk/test_settings_mmi1x2_ro_.yml rename to tests/test_pdk_si220/test_settings_mmi1x2_ro_.yml index 5fdd6f0..3e3d448 100644 --- a/tests/test_pdk/test_settings_mmi1x2_ro_.yml +++ b/tests/test_pdk_si220/test_settings_mmi1x2_ro_.yml @@ -1,5 +1,5 @@ function: mmi1x2_ro info: {} -module: cspdk.cells +module: cspdk.si220.cells name: mmi1x2_ro settings: {} diff --git a/tests/test_pdk/test_settings_mmi1x2_sc_.yml b/tests/test_pdk_si220/test_settings_mmi1x2_sc_.yml similarity index 69% rename from tests/test_pdk/test_settings_mmi1x2_sc_.yml rename to tests/test_pdk_si220/test_settings_mmi1x2_sc_.yml index 000abd4..c23570f 100644 --- a/tests/test_pdk/test_settings_mmi1x2_sc_.yml +++ b/tests/test_pdk_si220/test_settings_mmi1x2_sc_.yml @@ -1,5 +1,5 @@ function: mmi1x2_sc info: {} -module: cspdk.cells +module: cspdk.si220.cells name: mmi1x2_sc settings: {} diff --git a/tests/test_pdk/test_settings_mmi1x2_so_.yml b/tests/test_pdk_si220/test_settings_mmi1x2_so_.yml similarity index 69% rename from tests/test_pdk/test_settings_mmi1x2_so_.yml rename to tests/test_pdk_si220/test_settings_mmi1x2_so_.yml index bf3637b..b8d4fd7 100644 --- a/tests/test_pdk/test_settings_mmi1x2_so_.yml +++ b/tests/test_pdk_si220/test_settings_mmi1x2_so_.yml @@ -1,5 +1,5 @@ function: mmi1x2_so info: {} -module: cspdk.cells +module: cspdk.si220.cells name: mmi1x2_so settings: {} diff --git a/tests/test_pdk/test_settings_mmi2x2_rc_.yml b/tests/test_pdk_si220/test_settings_mmi2x2_rc_.yml similarity index 69% rename from tests/test_pdk/test_settings_mmi2x2_rc_.yml rename to tests/test_pdk_si220/test_settings_mmi2x2_rc_.yml index 974a9d7..8acd7dd 100644 --- a/tests/test_pdk/test_settings_mmi2x2_rc_.yml +++ b/tests/test_pdk_si220/test_settings_mmi2x2_rc_.yml @@ -1,5 +1,5 @@ function: mmi2x2_rc info: {} -module: cspdk.cells +module: cspdk.si220.cells name: mmi2x2_rc settings: {} diff --git a/tests/test_pdk/test_settings_mmi2x2_ro_.yml b/tests/test_pdk_si220/test_settings_mmi2x2_ro_.yml similarity index 69% rename from tests/test_pdk/test_settings_mmi2x2_ro_.yml rename to tests/test_pdk_si220/test_settings_mmi2x2_ro_.yml index 9c4813d..a3aef5f 100644 --- a/tests/test_pdk/test_settings_mmi2x2_ro_.yml +++ b/tests/test_pdk_si220/test_settings_mmi2x2_ro_.yml @@ -1,5 +1,5 @@ function: mmi2x2_ro info: {} -module: cspdk.cells +module: cspdk.si220.cells name: mmi2x2_ro settings: {} diff --git a/tests/test_pdk/test_settings_mmi2x2_sc_.yml b/tests/test_pdk_si220/test_settings_mmi2x2_sc_.yml similarity index 69% rename from tests/test_pdk/test_settings_mmi2x2_sc_.yml rename to tests/test_pdk_si220/test_settings_mmi2x2_sc_.yml index 295aec9..858953f 100644 --- a/tests/test_pdk/test_settings_mmi2x2_sc_.yml +++ b/tests/test_pdk_si220/test_settings_mmi2x2_sc_.yml @@ -1,5 +1,5 @@ function: mmi2x2_sc info: {} -module: cspdk.cells +module: cspdk.si220.cells name: mmi2x2_sc settings: {} diff --git a/tests/test_pdk/test_settings_mmi2x2_so_.yml b/tests/test_pdk_si220/test_settings_mmi2x2_so_.yml similarity index 69% rename from tests/test_pdk/test_settings_mmi2x2_so_.yml rename to tests/test_pdk_si220/test_settings_mmi2x2_so_.yml index cd07874..fdcefe4 100644 --- a/tests/test_pdk/test_settings_mmi2x2_so_.yml +++ b/tests/test_pdk_si220/test_settings_mmi2x2_so_.yml @@ -1,5 +1,5 @@ function: mmi2x2_so info: {} -module: cspdk.cells +module: cspdk.si220.cells name: mmi2x2_so settings: {} diff --git a/tests/test_pdk/test_settings_mzi_rc_.yml b/tests/test_pdk_si220/test_settings_mzi_rc_.yml similarity index 83% rename from tests/test_pdk/test_settings_mzi_rc_.yml rename to tests/test_pdk_si220/test_settings_mzi_rc_.yml index a6ab51c..faf80b5 100644 --- a/tests/test_pdk/test_settings_mzi_rc_.yml +++ b/tests/test_pdk_si220/test_settings_mzi_rc_.yml @@ -1,6 +1,6 @@ function: mzi_rc info: {} -module: cspdk.cells +module: cspdk.si220.cells name: mzi_rc settings: add_electrical_ports_bot: true diff --git a/tests/test_pdk/test_settings_mzi_ro_.yml b/tests/test_pdk_si220/test_settings_mzi_ro_.yml similarity index 83% rename from tests/test_pdk/test_settings_mzi_ro_.yml rename to tests/test_pdk_si220/test_settings_mzi_ro_.yml index ea56e4c..00df37d 100644 --- a/tests/test_pdk/test_settings_mzi_ro_.yml +++ b/tests/test_pdk_si220/test_settings_mzi_ro_.yml @@ -1,6 +1,6 @@ function: mzi_ro info: {} -module: cspdk.cells +module: cspdk.si220.cells name: mzi_ro settings: add_electrical_ports_bot: true diff --git a/tests/test_pdk/test_settings_mzi_sc_.yml b/tests/test_pdk_si220/test_settings_mzi_sc_.yml similarity index 83% rename from tests/test_pdk/test_settings_mzi_sc_.yml rename to tests/test_pdk_si220/test_settings_mzi_sc_.yml index 8361c09..a16ae25 100644 --- a/tests/test_pdk/test_settings_mzi_sc_.yml +++ b/tests/test_pdk_si220/test_settings_mzi_sc_.yml @@ -1,6 +1,6 @@ function: mzi_sc info: {} -module: cspdk.cells +module: cspdk.si220.cells name: mzi_sc settings: add_electrical_ports_bot: true diff --git a/tests/test_pdk/test_settings_mzi_so_.yml b/tests/test_pdk_si220/test_settings_mzi_so_.yml similarity index 83% rename from tests/test_pdk/test_settings_mzi_so_.yml rename to tests/test_pdk_si220/test_settings_mzi_so_.yml index a1e3918..5bc5e6f 100644 --- a/tests/test_pdk/test_settings_mzi_so_.yml +++ b/tests/test_pdk_si220/test_settings_mzi_so_.yml @@ -1,6 +1,6 @@ function: mzi_so info: {} -module: cspdk.cells +module: cspdk.si220.cells name: mzi_so settings: add_electrical_ports_bot: true diff --git a/tests/test_pdk/test_settings_pad_.yml b/tests/test_pdk_si220/test_settings_pad_.yml similarity index 90% rename from tests/test_pdk/test_settings_pad_.yml rename to tests/test_pdk_si220/test_settings_pad_.yml index 5389ff7..fc7ba00 100644 --- a/tests/test_pdk/test_settings_pad_.yml +++ b/tests/test_pdk_si220/test_settings_pad_.yml @@ -8,7 +8,7 @@ info: - 100.0 xsize: 100.0 ysize: 100.0 -module: cspdk.cells +module: cspdk.si220.cells name: pad settings: bbox_layers: null diff --git a/tests/test_pdk/test_settings_rectangle_.yml b/tests/test_pdk_si220/test_settings_rectangle_.yml similarity index 91% rename from tests/test_pdk/test_settings_rectangle_.yml rename to tests/test_pdk_si220/test_settings_rectangle_.yml index adcfc82..82242d0 100644 --- a/tests/test_pdk/test_settings_rectangle_.yml +++ b/tests/test_pdk_si220/test_settings_rectangle_.yml @@ -1,7 +1,7 @@ function: rectangle info: area: 8.0 -module: cspdk.cells +module: cspdk.si220.cells name: rectangle settings: centered: false diff --git a/tests/test_pdk/test_settings_straight_rc_.yml b/tests/test_pdk_si220/test_settings_straight_rc_.yml similarity index 88% rename from tests/test_pdk/test_settings_straight_rc_.yml rename to tests/test_pdk_si220/test_settings_straight_rc_.yml index 3144127..3634542 100644 --- a/tests/test_pdk/test_settings_straight_rc_.yml +++ b/tests/test_pdk_si220/test_settings_straight_rc_.yml @@ -6,7 +6,7 @@ info: route_info_weight: 10.0 route_info_xs_rc_length: 10.0 width: 0.45 -module: cspdk.cells +module: cspdk.si220.cells name: straight_rc settings: length: 10.0 diff --git a/tests/test_pdk/test_settings_straight_ro_.yml b/tests/test_pdk_si220/test_settings_straight_ro_.yml similarity index 88% rename from tests/test_pdk/test_settings_straight_ro_.yml rename to tests/test_pdk_si220/test_settings_straight_ro_.yml index a11ed70..8d37ef0 100644 --- a/tests/test_pdk/test_settings_straight_ro_.yml +++ b/tests/test_pdk_si220/test_settings_straight_ro_.yml @@ -6,7 +6,7 @@ info: route_info_weight: 10.0 route_info_xs_ro_length: 10.0 width: 0.4 -module: cspdk.cells +module: cspdk.si220.cells name: straight_ro settings: length: 10.0 diff --git a/tests/test_pdk/test_settings_straight_sc_.yml b/tests/test_pdk_si220/test_settings_straight_sc_.yml similarity index 88% rename from tests/test_pdk/test_settings_straight_sc_.yml rename to tests/test_pdk_si220/test_settings_straight_sc_.yml index c91c649..7554a25 100644 --- a/tests/test_pdk/test_settings_straight_sc_.yml +++ b/tests/test_pdk_si220/test_settings_straight_sc_.yml @@ -6,7 +6,7 @@ info: route_info_weight: 10.0 route_info_xs_sc_length: 10.0 width: 0.45 -module: cspdk.cells +module: cspdk.si220.cells name: straight_sc settings: length: 10.0 diff --git a/tests/test_pdk/test_settings_straight_so_.yml b/tests/test_pdk_si220/test_settings_straight_so_.yml similarity index 88% rename from tests/test_pdk/test_settings_straight_so_.yml rename to tests/test_pdk_si220/test_settings_straight_so_.yml index 0ded88a..415a9d4 100644 --- a/tests/test_pdk/test_settings_straight_so_.yml +++ b/tests/test_pdk_si220/test_settings_straight_so_.yml @@ -6,7 +6,7 @@ info: route_info_weight: 10.0 route_info_xs_so_length: 10.0 width: 0.4 -module: cspdk.cells +module: cspdk.si220.cells name: straight_so settings: length: 10.0 diff --git a/tests/test_pdk/test_settings_taper_rc_.yml b/tests/test_pdk_si220/test_settings_taper_rc_.yml similarity index 85% rename from tests/test_pdk/test_settings_taper_rc_.yml rename to tests/test_pdk_si220/test_settings_taper_rc_.yml index a1f062b..d1a7c17 100644 --- a/tests/test_pdk/test_settings_taper_rc_.yml +++ b/tests/test_pdk_si220/test_settings_taper_rc_.yml @@ -3,7 +3,7 @@ info: length: 10.0 width1: 0.5 width2: 0.5 -module: cspdk.cells +module: cspdk.si220.cells name: taper_rc settings: length: 10.0 diff --git a/tests/test_pdk/test_settings_taper_ro_.yml b/tests/test_pdk_si220/test_settings_taper_ro_.yml similarity index 85% rename from tests/test_pdk/test_settings_taper_ro_.yml rename to tests/test_pdk_si220/test_settings_taper_ro_.yml index e96be0a..6d8b02e 100644 --- a/tests/test_pdk/test_settings_taper_ro_.yml +++ b/tests/test_pdk_si220/test_settings_taper_ro_.yml @@ -3,7 +3,7 @@ info: length: 10.0 width1: 0.5 width2: 0.5 -module: cspdk.cells +module: cspdk.si220.cells name: taper_ro settings: length: 10.0 diff --git a/tests/test_pdk/test_settings_taper_sc_.yml b/tests/test_pdk_si220/test_settings_taper_sc_.yml similarity index 85% rename from tests/test_pdk/test_settings_taper_sc_.yml rename to tests/test_pdk_si220/test_settings_taper_sc_.yml index fa050eb..b0f1f0f 100644 --- a/tests/test_pdk/test_settings_taper_sc_.yml +++ b/tests/test_pdk_si220/test_settings_taper_sc_.yml @@ -3,7 +3,7 @@ info: length: 10.0 width1: 0.5 width2: 0.5 -module: cspdk.cells +module: cspdk.si220.cells name: taper_sc settings: length: 10.0 diff --git a/tests/test_pdk/test_settings_taper_so_.yml b/tests/test_pdk_si220/test_settings_taper_so_.yml similarity index 85% rename from tests/test_pdk/test_settings_taper_so_.yml rename to tests/test_pdk_si220/test_settings_taper_so_.yml index 1e164ae..3cfd060 100644 --- a/tests/test_pdk/test_settings_taper_so_.yml +++ b/tests/test_pdk_si220/test_settings_taper_so_.yml @@ -3,7 +3,7 @@ info: length: 10.0 width1: 0.5 width2: 0.5 -module: cspdk.cells +module: cspdk.si220.cells name: taper_so settings: length: 10.0 diff --git a/tests/test_pdk/test_settings_trans_sc_rc10_.yml b/tests/test_pdk_si220/test_settings_trans_sc_rc10_.yml similarity index 89% rename from tests/test_pdk/test_settings_trans_sc_rc10_.yml rename to tests/test_pdk_si220/test_settings_trans_sc_rc10_.yml index 2a0de03..9b4aac7 100644 --- a/tests/test_pdk/test_settings_trans_sc_rc10_.yml +++ b/tests/test_pdk_si220/test_settings_trans_sc_rc10_.yml @@ -6,6 +6,6 @@ info: route_info_weight: 10.0 route_info_xs_rc_tip_length: 10.0 route_info_xs_rc_tip_taper_length: 10 -module: cspdk.cells +module: cspdk.si220.cells name: trans_sc_rc10 settings: {} diff --git a/tests/test_pdk/test_settings_trans_sc_rc20_.yml b/tests/test_pdk_si220/test_settings_trans_sc_rc20_.yml similarity index 89% rename from tests/test_pdk/test_settings_trans_sc_rc20_.yml rename to tests/test_pdk_si220/test_settings_trans_sc_rc20_.yml index 4872e2a..c2ceb81 100644 --- a/tests/test_pdk/test_settings_trans_sc_rc20_.yml +++ b/tests/test_pdk_si220/test_settings_trans_sc_rc20_.yml @@ -6,6 +6,6 @@ info: route_info_weight: 20.0 route_info_xs_rc_tip_length: 20.0 route_info_xs_rc_tip_taper_length: 20 -module: cspdk.cells +module: cspdk.si220.cells name: trans_sc_rc20 settings: {} diff --git a/tests/test_pdk/test_settings_trans_sc_rc50_.yml b/tests/test_pdk_si220/test_settings_trans_sc_rc50_.yml similarity index 89% rename from tests/test_pdk/test_settings_trans_sc_rc50_.yml rename to tests/test_pdk_si220/test_settings_trans_sc_rc50_.yml index eec65e3..f121ad2 100644 --- a/tests/test_pdk/test_settings_trans_sc_rc50_.yml +++ b/tests/test_pdk_si220/test_settings_trans_sc_rc50_.yml @@ -6,6 +6,6 @@ info: route_info_weight: 50.0 route_info_xs_rc_tip_length: 50.0 route_info_xs_rc_tip_taper_length: 50 -module: cspdk.cells +module: cspdk.si220.cells name: trans_sc_rc50 settings: {} diff --git a/tests/test_pdk/test_settings_wire_corner_.yml b/tests/test_pdk_si220/test_settings_wire_corner_.yml similarity index 81% rename from tests/test_pdk/test_settings_wire_corner_.yml rename to tests/test_pdk_si220/test_settings_wire_corner_.yml index 3a5ab9a..8ebfc9b 100644 --- a/tests/test_pdk/test_settings_wire_corner_.yml +++ b/tests/test_pdk_si220/test_settings_wire_corner_.yml @@ -2,7 +2,7 @@ function: wire_corner info: dy: 10.0 length: 10.0 -module: cspdk.cells +module: cspdk.si220.cells name: wire_corner$1 settings: cross_section: xs_metal_routing diff --git a/tests/test_pdk_sin300.py b/tests/test_pdk_sin300.py new file mode 100644 index 0000000..5d821a1 --- /dev/null +++ b/tests/test_pdk_sin300.py @@ -0,0 +1,44 @@ +import pathlib + +import pytest +from gdsfactory.difftest import difftest +from pytest_regressions.data_regression import DataRegressionFixture + +from cspdk.sin300 import PDK + + +@pytest.fixture(autouse=True) +def activate_pdk(): + PDK.activate() + + +cells = PDK.cells +skip_test = {"import_gds"} +cell_names = set(cells.keys()) - set(skip_test) +cell_names = [name for name in cell_names if not name.startswith("_")] +dirpath = ( + pathlib.Path(__file__).absolute().with_suffix(".gds").parent / "gds_ref_sin300" +) +dirpath.mkdir(exist_ok=True, parents=True) + + +@pytest.fixture(params=cell_names, scope="function") +def component_name(request) -> str: + return request.param + + +def test_gds(component_name: str) -> None: + """Avoid regressions in GDS geometry shapes and layers.""" + component = cells[component_name]() + difftest(component, test_name=component_name, dirpath=dirpath) + + +def test_settings(component_name: str, data_regression: DataRegressionFixture) -> None: + """Avoid regressions when exporting settings.""" + component = cells[component_name]() + data_regression.check(component.to_dict()) + + +def test_assert_ports_on_grid(component_name: str) -> None: + component = cells[component_name]() + component.assert_ports_on_grid() diff --git a/tests/test_pdk_sin300/test_settings_array_.yml b/tests/test_pdk_sin300/test_settings_array_.yml new file mode 100644 index 0000000..a3682d4 --- /dev/null +++ b/tests/test_pdk_sin300/test_settings_array_.yml @@ -0,0 +1,22 @@ +function: array +info: + layer: + - 41 + - 0 + size: + - 100.0 + - 100.0 + xsize: 100.0 + ysize: 100.0 +module: gdsfactory.components.array_component +name: pad_array +settings: + add_ports: true + centered: false + columns: 6 + component: pad + rows: 1 + size: null + spacing: + - 150.0 + - 150.0 diff --git a/tests/test_pdk/test_settings_bend_nc_.yml b/tests/test_pdk_sin300/test_settings_bend_nc_.yml similarity index 91% rename from tests/test_pdk/test_settings_bend_nc_.yml rename to tests/test_pdk_sin300/test_settings_bend_nc_.yml index 5525477..2f07c75 100644 --- a/tests/test_pdk/test_settings_bend_nc_.yml +++ b/tests/test_pdk_sin300/test_settings_bend_nc_.yml @@ -10,7 +10,7 @@ info: route_info_weight: 41.592 route_info_xs_nc_length: 41.592 width: 1.2 -module: cspdk.cells +module: cspdk.sin300.cells name: bend_nc settings: angle: 90.0 diff --git a/tests/test_pdk/test_settings_bend_no_.yml b/tests/test_pdk_sin300/test_settings_bend_no_.yml similarity index 91% rename from tests/test_pdk/test_settings_bend_no_.yml rename to tests/test_pdk_sin300/test_settings_bend_no_.yml index 68ea6bb..b741f2e 100644 --- a/tests/test_pdk/test_settings_bend_no_.yml +++ b/tests/test_pdk_sin300/test_settings_bend_no_.yml @@ -10,7 +10,7 @@ info: route_info_weight: 41.592 route_info_xs_no_length: 41.592 width: 0.95 -module: cspdk.cells +module: cspdk.sin300.cells name: bend_no settings: angle: 90.0 diff --git a/tests/test_pdk_sin300/test_settings_bend_s_.yml b/tests/test_pdk_sin300/test_settings_bend_s_.yml new file mode 100644 index 0000000..53024e0 --- /dev/null +++ b/tests/test_pdk_sin300/test_settings_bend_s_.yml @@ -0,0 +1,13 @@ +function: bend_s +info: + end_angle: 0 + length: 11.206 + min_bend_radius: 13.012 + start_angle: 0 +module: cspdk.sin300.cells +name: bend_s +settings: + cross_section: xs_nc + size: + - 11.0 + - 1.8 diff --git a/tests/test_pdk/test_settings_coupler_nc_.yml b/tests/test_pdk_sin300/test_settings_coupler_nc_.yml similarity index 84% rename from tests/test_pdk/test_settings_coupler_nc_.yml rename to tests/test_pdk_sin300/test_settings_coupler_nc_.yml index bf4bb92..764c71d 100644 --- a/tests/test_pdk/test_settings_coupler_nc_.yml +++ b/tests/test_pdk_sin300/test_settings_coupler_nc_.yml @@ -2,7 +2,7 @@ function: coupler_nc info: length: 10.102 min_bend_radius: 15.665 -module: cspdk.cells +module: cspdk.sin300.cells name: coupler_nc settings: dx: 10.0 diff --git a/tests/test_pdk/test_settings_coupler_no_.yml b/tests/test_pdk_sin300/test_settings_coupler_no_.yml similarity index 84% rename from tests/test_pdk/test_settings_coupler_no_.yml rename to tests/test_pdk_sin300/test_settings_coupler_no_.yml index c3081a5..7dc8d70 100644 --- a/tests/test_pdk/test_settings_coupler_no_.yml +++ b/tests/test_pdk_sin300/test_settings_coupler_no_.yml @@ -2,7 +2,7 @@ function: coupler_no info: length: 10.124 min_bend_radius: 14.295 -module: cspdk.cells +module: cspdk.sin300.cells name: coupler_no settings: dx: 10.0 diff --git a/tests/test_pdk/test_settings_die_nc_.yml b/tests/test_pdk_sin300/test_settings_die_nc_.yml similarity index 65% rename from tests/test_pdk/test_settings_die_nc_.yml rename to tests/test_pdk_sin300/test_settings_die_nc_.yml index 3bc7ce2..95f285e 100644 --- a/tests/test_pdk/test_settings_die_nc_.yml +++ b/tests/test_pdk_sin300/test_settings_die_nc_.yml @@ -1,5 +1,5 @@ function: die_nc info: {} -module: cspdk.cells +module: cspdk.sin300.cells name: die_nc settings: {} diff --git a/tests/test_pdk/test_settings_die_no_.yml b/tests/test_pdk_sin300/test_settings_die_no_.yml similarity index 65% rename from tests/test_pdk/test_settings_die_no_.yml rename to tests/test_pdk_sin300/test_settings_die_no_.yml index b416c12..2863d07 100644 --- a/tests/test_pdk/test_settings_die_no_.yml +++ b/tests/test_pdk_sin300/test_settings_die_no_.yml @@ -1,5 +1,5 @@ function: die_no info: {} -module: cspdk.cells +module: cspdk.sin300.cells name: die_no settings: {} diff --git a/tests/test_pdk_sin300/test_settings_gc_elliptical_nc_.yml b/tests/test_pdk_sin300/test_settings_gc_elliptical_nc_.yml new file mode 100644 index 0000000..fc484c9 --- /dev/null +++ b/tests/test_pdk_sin300/test_settings_gc_elliptical_nc_.yml @@ -0,0 +1,13 @@ +function: gc_elliptical_nc +info: + period: 1.383 + polarization: te + wavelength: 1.53 +module: cspdk.sin300.cells +name: gc_elliptical_nc +settings: + cross_section: xs_nc + fiber_angle: 20 + grating_line_width: 0.343 + neff: 1.6 + wavelength: 1.53 diff --git a/tests/test_pdk_sin300/test_settings_gc_elliptical_no_.yml b/tests/test_pdk_sin300/test_settings_gc_elliptical_no_.yml new file mode 100644 index 0000000..9866156 --- /dev/null +++ b/tests/test_pdk_sin300/test_settings_gc_elliptical_no_.yml @@ -0,0 +1,13 @@ +function: gc_elliptical_no +info: + period: 1.153 + polarization: te + wavelength: 1.31 +module: cspdk.sin300.cells +name: gc_elliptical_no +settings: + cross_section: xs_no + fiber_angle: 20 + grating_line_width: 0.343 + neff: 1.63 + wavelength: 1.31 diff --git a/tests/test_pdk/test_settings_gc_rectangular_nc_.yml b/tests/test_pdk_sin300/test_settings_gc_rectangular_nc_.yml similarity index 82% rename from tests/test_pdk/test_settings_gc_rectangular_nc_.yml rename to tests/test_pdk_sin300/test_settings_gc_rectangular_nc_.yml index b8565c6..a33d357 100644 --- a/tests/test_pdk/test_settings_gc_rectangular_nc_.yml +++ b/tests/test_pdk_sin300/test_settings_gc_rectangular_nc_.yml @@ -3,6 +3,6 @@ info: fiber_angle: 20 polarization: te wavelength: 1.55 -module: cspdk.cells +module: cspdk.sin300.cells name: gc_rectangular_nc settings: {} diff --git a/tests/test_pdk/test_settings_gc_rectangular_no_.yml b/tests/test_pdk_sin300/test_settings_gc_rectangular_no_.yml similarity index 82% rename from tests/test_pdk/test_settings_gc_rectangular_no_.yml rename to tests/test_pdk_sin300/test_settings_gc_rectangular_no_.yml index 3ae7bd3..bfe85f9 100644 --- a/tests/test_pdk/test_settings_gc_rectangular_no_.yml +++ b/tests/test_pdk_sin300/test_settings_gc_rectangular_no_.yml @@ -3,6 +3,6 @@ info: fiber_angle: 20 polarization: te wavelength: 1.55 -module: cspdk.cells +module: cspdk.sin300.cells name: gc_rectangular_no settings: {} diff --git a/tests/test_pdk/test_settings_grating_coupler_array_.yml b/tests/test_pdk_sin300/test_settings_grating_coupler_array_.yml similarity index 91% rename from tests/test_pdk/test_settings_grating_coupler_array_.yml rename to tests/test_pdk_sin300/test_settings_grating_coupler_array_.yml index f995f7a..f2bf322 100644 --- a/tests/test_pdk/test_settings_grating_coupler_array_.yml +++ b/tests/test_pdk_sin300/test_settings_grating_coupler_array_.yml @@ -1,6 +1,6 @@ function: grating_coupler_array info: {} -module: cspdk.cells +module: cspdk.sin300.cells name: grating_coupler_array settings: bend: diff --git a/tests/test_pdk/test_settings_mmi1x2_nc_.yml b/tests/test_pdk_sin300/test_settings_mmi1x2_nc_.yml similarity index 68% rename from tests/test_pdk/test_settings_mmi1x2_nc_.yml rename to tests/test_pdk_sin300/test_settings_mmi1x2_nc_.yml index 56cbdc2..b056deb 100644 --- a/tests/test_pdk/test_settings_mmi1x2_nc_.yml +++ b/tests/test_pdk_sin300/test_settings_mmi1x2_nc_.yml @@ -1,5 +1,5 @@ function: mmi1x2_nc info: {} -module: cspdk.cells +module: cspdk.sin300.cells name: mmi1x2_nc settings: {} diff --git a/tests/test_pdk/test_settings_mmi1x2_no_.yml b/tests/test_pdk_sin300/test_settings_mmi1x2_no_.yml similarity index 68% rename from tests/test_pdk/test_settings_mmi1x2_no_.yml rename to tests/test_pdk_sin300/test_settings_mmi1x2_no_.yml index f43f842..754a7ca 100644 --- a/tests/test_pdk/test_settings_mmi1x2_no_.yml +++ b/tests/test_pdk_sin300/test_settings_mmi1x2_no_.yml @@ -1,5 +1,5 @@ function: mmi1x2_no info: {} -module: cspdk.cells +module: cspdk.sin300.cells name: mmi1x2_no settings: {} diff --git a/tests/test_pdk/test_settings_mmi2x2_nc_.yml b/tests/test_pdk_sin300/test_settings_mmi2x2_nc_.yml similarity index 68% rename from tests/test_pdk/test_settings_mmi2x2_nc_.yml rename to tests/test_pdk_sin300/test_settings_mmi2x2_nc_.yml index 87ef9ca..d3c30e7 100644 --- a/tests/test_pdk/test_settings_mmi2x2_nc_.yml +++ b/tests/test_pdk_sin300/test_settings_mmi2x2_nc_.yml @@ -1,5 +1,5 @@ function: mmi2x2_nc info: {} -module: cspdk.cells +module: cspdk.sin300.cells name: mmi2x2_nc settings: {} diff --git a/tests/test_pdk/test_settings_mmi2x2_no_.yml b/tests/test_pdk_sin300/test_settings_mmi2x2_no_.yml similarity index 68% rename from tests/test_pdk/test_settings_mmi2x2_no_.yml rename to tests/test_pdk_sin300/test_settings_mmi2x2_no_.yml index e106824..8a8a760 100644 --- a/tests/test_pdk/test_settings_mmi2x2_no_.yml +++ b/tests/test_pdk_sin300/test_settings_mmi2x2_no_.yml @@ -1,5 +1,5 @@ function: mmi2x2_no info: {} -module: cspdk.cells +module: cspdk.sin300.cells name: mmi2x2_no settings: {} diff --git a/tests/test_pdk/test_settings_mzi_nc_.yml b/tests/test_pdk_sin300/test_settings_mzi_nc_.yml similarity index 83% rename from tests/test_pdk/test_settings_mzi_nc_.yml rename to tests/test_pdk_sin300/test_settings_mzi_nc_.yml index a7a15bc..fbf5ad0 100644 --- a/tests/test_pdk/test_settings_mzi_nc_.yml +++ b/tests/test_pdk_sin300/test_settings_mzi_nc_.yml @@ -1,6 +1,6 @@ function: mzi_nc info: {} -module: cspdk.cells +module: cspdk.sin300.cells name: mzi_nc settings: add_electrical_ports_bot: true diff --git a/tests/test_pdk/test_settings_mzi_no_.yml b/tests/test_pdk_sin300/test_settings_mzi_no_.yml similarity index 83% rename from tests/test_pdk/test_settings_mzi_no_.yml rename to tests/test_pdk_sin300/test_settings_mzi_no_.yml index 7bbbdf3..5e75b60 100644 --- a/tests/test_pdk/test_settings_mzi_no_.yml +++ b/tests/test_pdk_sin300/test_settings_mzi_no_.yml @@ -1,6 +1,6 @@ function: mzi_no info: {} -module: cspdk.cells +module: cspdk.sin300.cells name: mzi_no settings: add_electrical_ports_bot: true diff --git a/tests/test_pdk_sin300/test_settings_pad_.yml b/tests/test_pdk_sin300/test_settings_pad_.yml new file mode 100644 index 0000000..5719a58 --- /dev/null +++ b/tests/test_pdk_sin300/test_settings_pad_.yml @@ -0,0 +1,23 @@ +function: pad +info: + layer: + - 41 + - 0 + size: + - 100.0 + - 100.0 + xsize: 100.0 + ysize: 100.0 +module: cspdk.sin300.cells +name: pad +settings: + bbox_layers: null + bbox_offsets: null + layer: + - 41 + - 0 + port_inclusion: 0.0 + port_orientation: null + size: + - 100.0 + - 100.0 diff --git a/tests/test_pdk_sin300/test_settings_rectangle_.yml b/tests/test_pdk_sin300/test_settings_rectangle_.yml new file mode 100644 index 0000000..93f15e4 --- /dev/null +++ b/tests/test_pdk_sin300/test_settings_rectangle_.yml @@ -0,0 +1,21 @@ +function: rectangle +info: + area: 8.0 +module: cspdk.sin300.cells +name: rectangle +settings: + centered: false + layer: + - 99 + - 0 + port_orientations: + - 180.0 + - 90.0 + - 0.0 + - -90.0 + port_type: electrical + round_corners_east_west: false + round_corners_north_south: false + size: + - 4.0 + - 2.0 diff --git a/tests/test_pdk/test_settings_straight_nc_.yml b/tests/test_pdk_sin300/test_settings_straight_nc_.yml similarity index 88% rename from tests/test_pdk/test_settings_straight_nc_.yml rename to tests/test_pdk_sin300/test_settings_straight_nc_.yml index bcd0ed6..9a0c6fd 100644 --- a/tests/test_pdk/test_settings_straight_nc_.yml +++ b/tests/test_pdk_sin300/test_settings_straight_nc_.yml @@ -6,7 +6,7 @@ info: route_info_weight: 10.0 route_info_xs_nc_length: 10.0 width: 1.2 -module: cspdk.cells +module: cspdk.sin300.cells name: straight_nc settings: length: 10.0 diff --git a/tests/test_pdk/test_settings_straight_no_.yml b/tests/test_pdk_sin300/test_settings_straight_no_.yml similarity index 88% rename from tests/test_pdk/test_settings_straight_no_.yml rename to tests/test_pdk_sin300/test_settings_straight_no_.yml index 2583541..863b8a3 100644 --- a/tests/test_pdk/test_settings_straight_no_.yml +++ b/tests/test_pdk_sin300/test_settings_straight_no_.yml @@ -6,7 +6,7 @@ info: route_info_weight: 10.0 route_info_xs_no_length: 10.0 width: 0.95 -module: cspdk.cells +module: cspdk.sin300.cells name: straight_no settings: length: 10.0 diff --git a/tests/test_pdk/test_settings_taper_nc_.yml b/tests/test_pdk_sin300/test_settings_taper_nc_.yml similarity index 84% rename from tests/test_pdk/test_settings_taper_nc_.yml rename to tests/test_pdk_sin300/test_settings_taper_nc_.yml index a332928..8adab36 100644 --- a/tests/test_pdk/test_settings_taper_nc_.yml +++ b/tests/test_pdk_sin300/test_settings_taper_nc_.yml @@ -3,7 +3,7 @@ info: length: 10.0 width1: 0.5 width2: 0.5 -module: cspdk.cells +module: cspdk.sin300.cells name: taper_nc settings: length: 10.0 diff --git a/tests/test_pdk/test_settings_taper_no_.yml b/tests/test_pdk_sin300/test_settings_taper_no_.yml similarity index 84% rename from tests/test_pdk/test_settings_taper_no_.yml rename to tests/test_pdk_sin300/test_settings_taper_no_.yml index 2535a5e..8d012dc 100644 --- a/tests/test_pdk/test_settings_taper_no_.yml +++ b/tests/test_pdk_sin300/test_settings_taper_no_.yml @@ -3,7 +3,7 @@ info: length: 10.0 width1: 0.5 width2: 0.5 -module: cspdk.cells +module: cspdk.sin300.cells name: taper_no settings: length: 10.0 diff --git a/tests/test_pdk_sin300/test_settings_wire_corner_.yml b/tests/test_pdk_sin300/test_settings_wire_corner_.yml new file mode 100644 index 0000000..d748b7f --- /dev/null +++ b/tests/test_pdk_sin300/test_settings_wire_corner_.yml @@ -0,0 +1,8 @@ +function: wire_corner +info: + dy: 10.0 + length: 10.0 +module: cspdk.sin300.cells +name: wire_corner$1 +settings: + cross_section: xs_metal_routing