From 811e4eced6825f38108a57ae34c28949e158c54b Mon Sep 17 00:00:00 2001 From: thomas Date: Sat, 12 Mar 2022 12:08:29 -0800 Subject: [PATCH 1/6] seperate function to add grating couplers for interconnect --- ubcpdk/components/grating_couplers.py | 24 +++++++++++++++--------- ubcpdk/import_gds.py | 25 ++++++++++++++++++++----- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/ubcpdk/components/grating_couplers.py b/ubcpdk/components/grating_couplers.py index 9cf4d75e..7d6ee161 100644 --- a/ubcpdk/components/grating_couplers.py +++ b/ubcpdk/components/grating_couplers.py @@ -1,43 +1,49 @@ import gdsfactory as gf -from ubcpdk.import_gds import add_ports_renamed_gratings, import_gds_siepic_pins +from ubcpdk.import_gds import add_ports_renamed_gratings, import_gds_siepic_pins, import_gds_siepic_pins_gratings, add_ports_siepic_gratings # This rotation is causing issues in interconnect add_ports_rotate180 = gf.compose(gf.functions.rotate180, add_ports_renamed_gratings) +add_ports_rotate180_siepic = gf.compose(gf.functions.rotate180, add_ports_siepic_gratings) +import_gc = gf.partial( + import_gds_siepic_pins, + decorator=add_ports_rotate180, +) + +import_gc_interconnect = gf.partial( + import_gds_siepic_pins_gratings, + decorator=add_ports_rotate180_siepic, +) gc_te1550 = gf.partial( - import_gds_siepic_pins, + import_gc, "ebeam_gc_te1550.gds", polarization="te", wavelength=1.55, name="ebeam_gc_te1550", opt1="opt_wg", - decorator=add_ports_rotate180, ) gc_te1550_broadband = gf.partial( - import_gds_siepic_pins, + import_gc, "ebeam_gc_te1550_broadband.gds", polarization="te", wavelength=1.55, - decorator=add_ports_rotate180, ) gc_te1310 = gf.partial( - import_gds_siepic_pins, + import_gc, "ebeam_gc_te1310.gds", polarization="te", wavelength=1.31, - decorator=add_ports_rotate180, ) gc_tm1550 = gf.partial( - import_gds_siepic_pins, + import_gc, "ebeam_gc_tm1550.gds", polarization="tm", wavelength=1.55, - decorator=add_ports_rotate180, ) diff --git a/ubcpdk/import_gds.py b/ubcpdk/import_gds.py index 1e4bca61..0a1d3eb6 100644 --- a/ubcpdk/import_gds.py +++ b/ubcpdk/import_gds.py @@ -176,26 +176,41 @@ def add_siepic_labels_and_simulation_info( add_pins_gratings = gf.partial(add_pins_bbox_siepic, padding=-1e-3) add_ports_renamed = gf.compose( - add_pins_bbox_siepic, gf.port.auto_rename_ports, remove_pins, add_ports + add_pins_bbox_siepic, + gf.port.auto_rename_ports, + remove_pins, + add_ports ) add_ports_renamed_gratings = gf.compose( - add_pins_gratings, gf.port.auto_rename_ports, remove_pins, add_ports + add_pins_gratings, + gf.port.auto_rename_ports, + remove_pins, + add_ports ) import_gds = gf.partial(gf.import_gds, gdsdir=PATH.gds, decorator=add_ports_renamed) -add_ports_renamed_siepic = gf.compose( +add_ports_siepic = gf.compose( add_siepic_labels_and_simulation_info, add_pins_bbox_siepic, - # gf.port.auto_rename_ports, + remove_pins, + add_ports_from_siepic_pins, +) + +add_ports_siepic_gratings = gf.compose( + add_siepic_labels_and_simulation_info, + add_pins_gratings, remove_pins, add_ports_from_siepic_pins, ) import_gds_siepic_pins = gf.partial( - gf.import_gds, gdsdir=PATH.gds, decorator=add_ports_renamed_siepic + gf.import_gds, gdsdir=PATH.gds, decorator=add_ports_siepic ) +import_gds_siepic_pins_gratings = gf.partial( + gf.import_gds, gdsdir=PATH.gds, decorator=add_ports_siepic_gratings +) if __name__ == "__main__": gdsname = "ebeam_crossing4.gds" From ce35730ae45affdca6fe221095fe100fe3ef7451 Mon Sep 17 00:00:00 2001 From: thomas Date: Sat, 12 Mar 2022 12:38:10 -0800 Subject: [PATCH 2/6] use import_gc or import_gc_interconnect instead of import_gds --- ubcpdk/components/grating_couplers.py | 11 ++++++----- ubcpdk/import_gds.py | 23 +++++++++++++++++++++-- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/ubcpdk/components/grating_couplers.py b/ubcpdk/components/grating_couplers.py index 7d6ee161..7f63d591 100644 --- a/ubcpdk/components/grating_couplers.py +++ b/ubcpdk/components/grating_couplers.py @@ -1,9 +1,10 @@ import gdsfactory as gf -from ubcpdk.import_gds import add_ports_renamed_gratings, import_gds_siepic_pins, import_gds_siepic_pins_gratings, add_ports_siepic_gratings +from ubcpdk.import_gds import add_ports_renamed_gratings, import_gds_siepic_pins +from ubcpdk.import_gds import add_ports_siepic_gratings_interconnect, import_gds_siepic_pins_gratings_interconnect # This rotation is causing issues in interconnect add_ports_rotate180 = gf.compose(gf.functions.rotate180, add_ports_renamed_gratings) -add_ports_rotate180_siepic = gf.compose(gf.functions.rotate180, add_ports_siepic_gratings) +add_ports_rotate180_siepic_interconnect = gf.compose(gf.functions.rotate180, add_ports_siepic_gratings_interconnect) import_gc = gf.partial( import_gds_siepic_pins, @@ -11,12 +12,12 @@ ) import_gc_interconnect = gf.partial( - import_gds_siepic_pins_gratings, - decorator=add_ports_rotate180_siepic, + import_gds_siepic_pins_gratings_interconnect, + decorator=add_ports_rotate180_siepic_interconnect, ) gc_te1550 = gf.partial( - import_gc, + import_gc_interconnect, "ebeam_gc_te1550.gds", polarization="te", wavelength=1.55, diff --git a/ubcpdk/import_gds.py b/ubcpdk/import_gds.py index 0a1d3eb6..0b698b52 100644 --- a/ubcpdk/import_gds.py +++ b/ubcpdk/import_gds.py @@ -167,8 +167,9 @@ def add_siepic_labels_and_simulation_info( position=c.center - (0, c.size_info.height / 6), layer=label_layer, ) - # c.settings["model"] = model - # c.settings["info"] = c.info + c.settings["model"] = model + c.settings["info"] = c.info + c.settings["name"] = c.name return c @@ -212,6 +213,24 @@ def add_siepic_labels_and_simulation_info( gf.import_gds, gdsdir=PATH.gds, decorator=add_ports_siepic_gratings ) +add_ports_siepic_interconnect = gf.compose( + add_siepic_labels_and_simulation_info, + add_ports_siepic +) + +add_ports_siepic_gratings_interconnect = gf.compose( + add_siepic_labels_and_simulation_info, + add_ports_siepic_gratings +) + +import_gds_siepic_pins_interconnect = gf.partial( + gf.import_gds, gdsdir=PATH.gds, decorator=add_ports_siepic_interconnect +) + +import_gds_siepic_pins_gratings_interconnect = gf.partial( + gf.import_gds, gdsdir=PATH.gds, decorator=add_ports_siepic_gratings_interconnect +) + if __name__ == "__main__": gdsname = "ebeam_crossing4.gds" gdsname = "ebeam_y_1550.gds" From a40627cc79640516ff6e7e112c8bb5aa69c5d5cb Mon Sep 17 00:00:00 2001 From: thomas Date: Sat, 12 Mar 2022 13:50:23 -0800 Subject: [PATCH 3/6] cleaned up for netlist improvement --- ubcpdk/components/grating_couplers.py | 12 ++++++------ ubcpdk/import_gds.py | 20 -------------------- 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/ubcpdk/components/grating_couplers.py b/ubcpdk/components/grating_couplers.py index 7f63d591..2424114e 100644 --- a/ubcpdk/components/grating_couplers.py +++ b/ubcpdk/components/grating_couplers.py @@ -1,10 +1,10 @@ import gdsfactory as gf -from ubcpdk.import_gds import add_ports_renamed_gratings, import_gds_siepic_pins -from ubcpdk.import_gds import add_ports_siepic_gratings_interconnect, import_gds_siepic_pins_gratings_interconnect +from ubcpdk.import_gds import add_ports_renamed_gratings, add_ports_siepic_gratings, import_gds_siepic_pins + # This rotation is causing issues in interconnect add_ports_rotate180 = gf.compose(gf.functions.rotate180, add_ports_renamed_gratings) -add_ports_rotate180_siepic_interconnect = gf.compose(gf.functions.rotate180, add_ports_siepic_gratings_interconnect) +add_ports_rotate180_siepic = gf.compose(gf.functions.rotate180, add_ports_siepic_gratings) import_gc = gf.partial( import_gds_siepic_pins, @@ -12,8 +12,8 @@ ) import_gc_interconnect = gf.partial( - import_gds_siepic_pins_gratings_interconnect, - decorator=add_ports_rotate180_siepic_interconnect, + import_gds_siepic_pins, + decorator=add_ports_rotate180_siepic, ) gc_te1550 = gf.partial( @@ -21,7 +21,7 @@ "ebeam_gc_te1550.gds", polarization="te", wavelength=1.55, - name="ebeam_gc_te1550", + model="ebeam_gc_te1550", opt1="opt_wg", ) diff --git a/ubcpdk/import_gds.py b/ubcpdk/import_gds.py index 0b698b52..16092502 100644 --- a/ubcpdk/import_gds.py +++ b/ubcpdk/import_gds.py @@ -167,9 +167,6 @@ def add_siepic_labels_and_simulation_info( position=c.center - (0, c.size_info.height / 6), layer=label_layer, ) - c.settings["model"] = model - c.settings["info"] = c.info - c.settings["name"] = c.name return c @@ -213,23 +210,6 @@ def add_siepic_labels_and_simulation_info( gf.import_gds, gdsdir=PATH.gds, decorator=add_ports_siepic_gratings ) -add_ports_siepic_interconnect = gf.compose( - add_siepic_labels_and_simulation_info, - add_ports_siepic -) - -add_ports_siepic_gratings_interconnect = gf.compose( - add_siepic_labels_and_simulation_info, - add_ports_siepic_gratings -) - -import_gds_siepic_pins_interconnect = gf.partial( - gf.import_gds, gdsdir=PATH.gds, decorator=add_ports_siepic_interconnect -) - -import_gds_siepic_pins_gratings_interconnect = gf.partial( - gf.import_gds, gdsdir=PATH.gds, decorator=add_ports_siepic_gratings_interconnect -) if __name__ == "__main__": gdsname = "ebeam_crossing4.gds" From bac1e39967c51dda305b139a031dc2f80e4bb8cf Mon Sep 17 00:00:00 2001 From: thomas Date: Sat, 12 Mar 2022 14:11:45 -0800 Subject: [PATCH 4/6] fix tests --- ubcpdk/components/grating_couplers.py | 3 +-- .../straight_87bde41b_strai_f36470d5.gds | Bin 0 -> 112540 bytes 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 ubcpdk/tests/test_components.gds/gds_ref/straight_87bde41b_strai_f36470d5.gds diff --git a/ubcpdk/components/grating_couplers.py b/ubcpdk/components/grating_couplers.py index 2424114e..621933e2 100644 --- a/ubcpdk/components/grating_couplers.py +++ b/ubcpdk/components/grating_couplers.py @@ -2,7 +2,6 @@ from ubcpdk.import_gds import add_ports_renamed_gratings, add_ports_siepic_gratings, import_gds_siepic_pins -# This rotation is causing issues in interconnect add_ports_rotate180 = gf.compose(gf.functions.rotate180, add_ports_renamed_gratings) add_ports_rotate180_siepic = gf.compose(gf.functions.rotate180, add_ports_siepic_gratings) @@ -17,7 +16,7 @@ ) gc_te1550 = gf.partial( - import_gc_interconnect, + import_gc, "ebeam_gc_te1550.gds", polarization="te", wavelength=1.55, diff --git a/ubcpdk/tests/test_components.gds/gds_ref/straight_87bde41b_strai_f36470d5.gds b/ubcpdk/tests/test_components.gds/gds_ref/straight_87bde41b_strai_f36470d5.gds new file mode 100644 index 0000000000000000000000000000000000000000..2ba26fbf2de475b48c596bcea28de66d864e1ca1 GIT binary patch literal 112540 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 &t<+B%0qu4AGtHLe(l|LG{92b7b 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

!*NuUS04yM4Qk;*nzg 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 literal 0 HcmV?d00001 From b7823f86c33d07d33ecc58060e910aed280d48a4 Mon Sep 17 00:00:00 2001 From: thomas Date: Sun, 13 Mar 2022 19:12:53 -0700 Subject: [PATCH 5/6] replaced ebeam_dc_halfring_straight with modified version for Interconnect --- ubcpdk/components/cells.py | 40 +++++++++++++++++++++++++-- ubcpdk/components/grating_couplers.py | 3 +- ubcpdk/tech.py | 8 +++++- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/ubcpdk/components/cells.py b/ubcpdk/components/cells.py index 16ffda60..d929ec0c 100644 --- a/ubcpdk/components/cells.py +++ b/ubcpdk/components/cells.py @@ -7,9 +7,10 @@ def y_splitter() -> Component: import gdsfactory as gf from gdsfactory.add_pins import add_pins_bbox_siepic -from ubcpdk.import_gds import import_gds_siepic_pins +from ubcpdk.import_gds import import_gds_siepic_pins from ubcpdk.components.straight import straight +from ubcpdk.tech import strip, LAYER_STACK, LAYER dc_broadband_te = gf.partial( @@ -66,7 +67,40 @@ def y_splitter() -> Component: port_e0_combiner="opt3", ) ring_single = gf.partial(gf.components.ring_single) -ebeam_dc_halfring_straight = gf.partial(gf.components.coupler_ring) + + +def ebeam_dc_halfring_straight( + gap: float = 0.2, + radius: float = 5.0, + length_x: float = 4.0, + cross_section=strip, + **kwargs +): + component = gf.components.coupler_ring( + gap=gap, + radius=radius, + length_x=length_x, + cross_section=cross_section, + ) + x = cross_section(**kwargs) if callable(cross_section) else cross_section + thickness = LAYER_STACK.get_layer_to_thickness() + um = 1e-6 + component.info["model"] = "ebeam_dc_halfring_straight" + component.info["name"] = "ebeam_dc_halfring_straight" + component.info["o1"] = "port 1" + component.info["o2"] = "port 2" + component.info["o3"] = "port 4" + component.info["o4"] = "port 3" + component.info["interconnect"] = { + "gap": gap*um, + "radius": radius*um, + "wg_thickness": thickness[LAYER.WG]*um, + "wg_width": x.info["width"]*um, + "Lc": length_x*um + } + return component + + ebeam_dc_te1550 = gf.partial(gf.components.coupler) spiral = gf.partial(gf.components.spiral_external_io) ring_with_crossing = gf.partial( @@ -99,5 +133,5 @@ def y_splitter() -> Component: # wg = c << straight() # wg.connect("o1", sp.ports["opt1"]) - c = ring_with_crossing() + c = ebeam_dc_halfring_straight() c.show(show_ports=False) diff --git a/ubcpdk/components/grating_couplers.py b/ubcpdk/components/grating_couplers.py index 621933e2..2424114e 100644 --- a/ubcpdk/components/grating_couplers.py +++ b/ubcpdk/components/grating_couplers.py @@ -2,6 +2,7 @@ from ubcpdk.import_gds import add_ports_renamed_gratings, add_ports_siepic_gratings, import_gds_siepic_pins +# This rotation is causing issues in interconnect add_ports_rotate180 = gf.compose(gf.functions.rotate180, add_ports_renamed_gratings) add_ports_rotate180_siepic = gf.compose(gf.functions.rotate180, add_ports_siepic_gratings) @@ -16,7 +17,7 @@ ) gc_te1550 = gf.partial( - import_gc, + import_gc_interconnect, "ebeam_gc_te1550.gds", polarization="te", wavelength=1.55, diff --git a/ubcpdk/tech.py b/ubcpdk/tech.py index 74191400..0acd34bf 100644 --- a/ubcpdk/tech.py +++ b/ubcpdk/tech.py @@ -12,6 +12,7 @@ from gdsfactory.types import Layer import gdsfactory.simulation as sim import gdsfactory.simulation.lumerical as lumerical +from gdsfactory.add_pins import add_pins_siepic from ubcpdk.config import PATH @@ -83,4 +84,9 @@ def get_layer_stack_ubc(thickness: float = 220 * nm) -> LayerStack: ) -strip = gf.partial(gf.cross_section.strip, layers_cladding=(LAYER.DEVREC,)) +strip = gf.partial( + gf.cross_section.strip, + layer=LAYER.WG, + layer_bbox=LAYER.DEVREC, + decorator=add_pins_siepic +) From 89be2776fddb46dfe8a096ada2749ca6584930a5 Mon Sep 17 00:00:00 2001 From: thomas Date: Sun, 13 Mar 2022 19:13:07 -0700 Subject: [PATCH 6/6] replaced ebeam_dc_halfring_straight with modified version for Interconnect --- ubcpdk/components/cells.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ubcpdk/components/cells.py b/ubcpdk/components/cells.py index d929ec0c..0288e7c4 100644 --- a/ubcpdk/components/cells.py +++ b/ubcpdk/components/cells.py @@ -68,7 +68,7 @@ def y_splitter() -> Component: ) ring_single = gf.partial(gf.components.ring_single) - +@gf.cell def ebeam_dc_halfring_straight( gap: float = 0.2, radius: float = 5.0,