Skip to content

Commit

Permalink
Lukas MZI updates
Browse files Browse the repository at this point in the history
  • Loading branch information
lukasc-ubc committed Oct 18, 2024
1 parent 6295de5 commit 66e685c
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 40 deletions.
4 changes: 2 additions & 2 deletions submissions/KLayout Python/EBeam_LukasChrostowski_MZI_1310.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
waveguide_type_delay='SiN routing TE 1550 nm (compound waveguide)'

# Load cells from library
cell_ebeam_gc = ly.create_cell('ebeam_GC_SiN_TE_1310_8deg', 'EBeam-SiN', {})
cell_ebeam_gc = ly.create_cell('GC_SiN_TE_1310_8degOxide_BB', 'EBeam-SiN')
cell_ebeam_y = ly.create_cell('ebeam_YBranch_te1310', 'EBeam-SiN')
cell_ebeam_taper = ly.create_cell('taper_bezier', 'EBeam_Beta',
{'wg_width1':0.75,
Expand All @@ -76,7 +76,7 @@


# grating couplers, place at absolute positions
x,y = 60000, 16000
x,y = 60000, 14500
t = Trans(Trans.R0,x,y)
instGC1 = cell.insert(CellInstArray(cell_ebeam_gc.cell_index(), t))
t = Trans(Trans.R0,x,y+127000)
Expand Down
97 changes: 59 additions & 38 deletions submissions/KLayout Python/EBeam_LukasChrostowski_MZI_1550.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@
'''

designer_name = 'LukasChrostowski'
top_cell_name = 'EBeam_%s_test' % designer_name
export_type = 'static' # static: for fabrication, PCell: include PCells in file
top_cell_name = 'EBeam_%s_MZI' % designer_name
#export_type = 'static' # static: for fabrication, PCell: include PCells in file
export_type = 'PCell' # static: for fabrication, PCell: include PCells in file

import pya
from pya import *
Expand Down Expand Up @@ -55,7 +56,7 @@
and Draw the floor plan
'''
cell, ly = new_layout(tech_name, top_cell_name, GUI=True, overwrite = True)
floorplan(cell, 605e3, 410e3)
floorplan(cell, 1000e3, 410e3)

dbu = ly.dbu

Expand All @@ -65,53 +66,73 @@

# Load cells from library
cell_ebeam_gc = ly.create_cell('GC_SiN_TE_1550_8degOxide_BB', 'EBeam-SiN')
cell_ebeam_y = ly.create_cell('ANT_MMI_1x2_te1550_3dB_BB', 'EBeam-SiN')

#######################
# Circuit #1 – Loopback
#######################
# grating couplers, place at absolute positions
x,y = 60000, 20000
x,y = 60000, 14500
t = Trans(Trans.R0,x,y)
instGC1 = cell.insert(CellInstArray(cell_ebeam_gc.cell_index(), t))
t = Trans(Trans.R0,x,y+127000)
instGC2 = cell.insert(CellInstArray(cell_ebeam_gc.cell_index(), t))
# automated test label
text = Text ("opt_in_TE_1550_device_%s_MZI" % designer_name, t)
cell.shapes(ly.layer(ly.TECHNOLOGY['Text'])).insert(text).text_size = 5/dbu
# Waveguide:
connect_pins_with_waveguide(instGC1, 'opt1', instGC2, 'opt1', waveguide_type=waveguide_type1)

#######################
# Circuit #2 – MZI
#######################
x += 110e3
# grating couplers, place at absolute positions
t = Trans(Trans.R0,x,y)
instGC3 = cell.insert(CellInstArray(cell_ebeam_gc.cell_index(), t))
t = Trans(Trans.R0,x,y+127000)
instGC4 = cell.insert(CellInstArray(cell_ebeam_gc.cell_index(), t))
# automated test label
text = Text ("opt_in_TE_1550_device_%s_loopback" % designer_name, t)
cell.shapes(ly.layer(ly.TECHNOLOGY['Text'])).insert(text).text_size = 5/dbu

# Y branches:
instY1 = connect_cell(instGC3, 'opt1', cell_ebeam_y, 'pin1')
instY2 = connect_cell(instGC4, 'opt1', cell_ebeam_y, 'pin1')
# Waveguides:
connect_pins_with_waveguide(instGC1, 'opt1', instGC2, 'opt1', waveguide_type=waveguide_type1)
connect_pins_with_waveguide(instY1, 'pin2', instY2, 'pin3', waveguide_type=waveguide_type1)
connect_pins_with_waveguide(instY1, 'pin3', instY2, 'pin2', waveguide_type=waveguide_type1, turtle_A=[100,-90])

#######################
# Circuit #3 - MZI, with a very long delay line
#######################
cell_ebeam_delay = ly.create_cell('spiral_paperclip', 'EBeam_Beta',
{'waveguide_type':waveguide_type_delay,
'length':325,
'loops':8,
'flatten':True})
x,y = 60000, 14500+127e3*2
t = Trans(Trans.R0,x,y)
instGC1 = cell.insert(CellInstArray(cell_ebeam_gc.cell_index(), t))
t = Trans(Trans.R0,x,y+127e3)
instGC2 = cell.insert(CellInstArray(cell_ebeam_gc.cell_index(), t))
# automated test label
text = Text ("opt_in_TE_1550_device_%s_MZI3" % designer_name, t)
cell.shapes(ly.layer(ly.TECHNOLOGY['Text'])).insert(text).text_size = 5/dbu
# Y branches:
instY1 = connect_cell(instGC1, 'opt1', cell_ebeam_y, 'pin1')
instY1.transform(Trans(20000,0))
instY2 = connect_cell(instGC2, 'opt1', cell_ebeam_y, 'pin1')
instY2.transform(Trans(20000,0))
# Spiral:
instSpiral = connect_cell(instY2, 'pin2', cell_ebeam_delay, 'optA')
instSpiral.transform(Trans(110e3,0))
# Waveguides:
connect_pins_with_waveguide(instGC1, 'opt1', instY1, 'pin1', waveguide_type=waveguide_type1)
connect_pins_with_waveguide(instGC2, 'opt1', instY2, 'pin1', waveguide_type=waveguide_type1)
connect_pins_with_waveguide(instY1, 'pin2', instY2, 'pin3', waveguide_type=waveguide_type1)
connect_pins_with_waveguide(instY2, 'pin2', instSpiral, 'optA', waveguide_type=waveguide_type1)
connect_pins_with_waveguide(instY1, 'pin3', instSpiral, 'optB', waveguide_type=waveguide_type1,turtle_A=[50,90])

if 0:
# 3rd MZI, with a very long delay line
cell_ebeam_delay = ly.create_cell('spiral_paperclip', 'EBeam_Beta',
{'waveguide_type':waveguide_type_delay,
'length':200,
'flatten':True})
x,y = 60000, 205000
t = Trans(Trans.R0,x,y)
instGC1 = cell.insert(CellInstArray(cell_ebeam_gc.cell_index(), t))
t = Trans(Trans.R0,x,y+127000)
instGC2 = cell.insert(CellInstArray(cell_ebeam_gc.cell_index(), t))

# automated test label
text = Text ("opt_in_TE_1550_device_%s_MZI3" % designer_name, t)
cell.shapes(ly.layer(ly.TECHNOLOGY['Text'])).insert(text).text_size = 5/dbu

# Y branches:
instY1 = connect_cell(instGC1, 'opt1', cell_ebeam_y_dream, 'opt1')
instY1.transform(Trans(20000,0))
instY2 = connect_cell(instGC2, 'opt1', cell_ebeam_y_dream, 'opt1')
instY2.transform(Trans(20000,0))

# Spiral:
instSpiral = connect_cell(instY2, 'opt2', cell_ebeam_delay, 'optA')
instSpiral.transform(Trans(20000,0))

# Waveguides:
connect_pins_with_waveguide(instGC1, 'opt1', instY1, 'opt1', waveguide_type=waveguide_type)
connect_pins_with_waveguide(instGC2, 'opt1', instY2, 'opt1', waveguide_type=waveguide_type)
connect_pins_with_waveguide(instY1, 'opt2', instY2, 'opt3', waveguide_type=waveguide_type)
connect_pins_with_waveguide(instY2, 'opt2', instSpiral, 'optA', waveguide_type=waveguide_type)
connect_pins_with_waveguide(instY1, 'opt3', instSpiral, 'optB', waveguide_type=waveguide_type,turtle_B=[5,-90])

# Zoom out
zoom_out(cell)
Expand Down

0 comments on commit 66e685c

Please sign in to comment.