FiberCouplerCurvedGrating

class picazzo3.fibcoup.curved.cell.FiberCouplerCurvedGrating(*args, **kwargs)

Class for the definition of periodic curved fiber grating couplers with a focal point that fit in a box.

Parameters:

inclination: float, optional

out-of-plane angle of the grating coupler

socket: PCell and WgSocket, optional

socket of the fiber coupler

grating: PCell, optional

grating of this fiber coupler

start_trace_template: PCell and _WaveguideTemplate, optional

start waveguide for the socket waveguide (narrow side)

wide_trace_template: PCell and _WaveguideTemplate, optional

end waveguide for the socket waveguide (broad side)

cell_instances: _PCellInstanceDict, optional

name: optional

The unique name of the pcell

Views

Layout
Parameters:

box_width: float and number > 0, optional

Width of the box used that contains the grating.

fill_factor: float and fraction, optional

Fill factor used to calculate the trench widths. 0 means no trench a all and 1 means that the trench covers the entire period

grating_transformation: GenericNoDistortTransform, optional

period_x: float and number > 0, optional

Period in the x direction.

socket_extension: float and Real, number and number >= 0, optional

extension of the wide side of the socket, asymmetric with respect to the specified center. By default this is calculated such that the entire grating fits in the socket with a margin of TECH.IO.FIBCOUP.CURVED.DEFAULT_SOCKET_MARGIN_FROM_GRATING

socket_straight_extension: Coord2, optional

tuple: straight extension at start and end of socket

spread_angle: float, optional

Angle in degrees of the far field radiation field of the socket. By default this is set to be equal to the angle of the taper that is set by its length and the width of the core of input and output waveguides.

view_name: str, optional

The name of the view

min_x: float and number > 0, optional

Miniumum distance from the first line to the focus. By default it is set to the focal distance.

n_o_lines: int and number > 0, optional

Number of lines in the grating. By default this number is chosen so that the curves fit in the box width.

focal_distance_x: float, optional

Distance between the vertical port of the grating and the focal point. By default this is TECH.IO.FIBCOUP.CURVED.GRATING.FOCAL_DISTANCE.

period_y: float and number > 0, optional

Period in the y direction. By default equal to period_x

start_radius_y: float and number > 0, optional

Starting radius in the y direction. By default this is set to start_period_x

process: ProcessLayer, optional

default process used for the grating

purpose: optional

socket_transformation: GenericNoDistortTransform, optional

grids_per_unit: locked

Number of grid cells per design unit

socket_length: locked

units_per_grid: locked

Ratio of grid cell and design unit

line_widths: locked

Line width of the grating coupler

start_radius_x: locked

centers: locked

focal_point: Coord2, locked

Coordinate of the east focus point shared by all ellipses. The y coordinate of the focuspoint has to be zero

ellipse_radii_x: locked

ellipse_radii_y: locked

end_angles: locked

start_angles: locked

grid: float and number > 0, locked

design grid. Extracted by default from TECH.METRICS.GRID

unit: float and number > 0, locked

design unit. Extracted by default from TECH.METRICS.UNIT

Examples

Basic use:

# Example demonstrating the basic use of the FiberGratingCoupler.
from technologies import silicon_photonics
from ipkiss3 import all as i3

from picazzo3.fibcoup.curved import FiberCouplerCurvedGrating
from picazzo3.traces.wire_wg import WireWaveguideTemplate

# Creating the wire templates for the socket.
start_wg_tmpl = WireWaveguideTemplate()
start_wg_tmpl.Layout(core_width=0.5, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 0.5)
end_wg_tmpl = WireWaveguideTemplate()
end_wg_tmpl.Layout(core_width=17.0, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 17.0)

fc_cell = FiberCouplerCurvedGrating(start_trace_template=start_wg_tmpl,
                                    wide_trace_template=end_wg_tmpl)

fc_layout = fc_cell.Layout(period_x=0.8, # We with a period of 0.8
                           focal_distance_x=20.0) # We use a focal distance of 20.0

fc_layout.visualize()
../../../../_images/picazzo3-fibcoup-curved-cell-FiberCouplerCurvedGrating-1.png

Changing the n_o_lines and where to place the first line:

# Example demonstrating how to change the length of the grating coupler using n_o_lines
# and how to set the location of the first grating line using min_x
from technologies import silicon_photonics
from ipkiss3 import all as i3

from picazzo3.fibcoup.curved import FiberCouplerCurvedGrating
from picazzo3.traces.wire_wg import WireWaveguideTemplate

# Creating the wire templates for the socket.
start_wg_tmpl = WireWaveguideTemplate()
start_wg_tmpl.Layout(core_width=0.5, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 0.5)
end_wg_tmpl = WireWaveguideTemplate()
end_wg_tmpl.Layout(core_width=17.0, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 17.0)

fc_cell = FiberCouplerCurvedGrating(start_trace_template=start_wg_tmpl,
                                    wide_trace_template=end_wg_tmpl)

fc_layout = fc_cell.Layout(period_x=0.8, # We with a period of 0.8
                           focal_distance_x=20.0,# We use a focal distance of 20.0
                           n_o_lines=30,# We set the number of lines to 30
                           min_x=10.0) #We set the first line at 10.

fc_layout.visualize()
../../../../_images/picazzo3-fibcoup-curved-cell-FiberCouplerCurvedGrating-2.png

Changing the box_width:

# Example demonstrating how to change the box_width.
from technologies import silicon_photonics
from ipkiss3 import all as i3

from picazzo3.fibcoup.curved import FiberCouplerCurvedGrating
from picazzo3.traces.wire_wg import WireWaveguideTemplate

# Creating the wire templates for the socket.
start_wg_tmpl = WireWaveguideTemplate()
start_wg_tmpl.Layout(core_width=0.5, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 0.5)
end_wg_tmpl = WireWaveguideTemplate()
end_wg_tmpl.Layout(core_width=17.0, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 17.0)

fc_cell = FiberCouplerCurvedGrating(start_trace_template=start_wg_tmpl,
                                    wide_trace_template=end_wg_tmpl)

fc_layout = fc_cell.Layout(period_x=0.8, # We with a period of 0.8
                           focal_distance_x=20.0,# We use a focal distance of 20.0.
                           n_o_lines=30,#We set the number of lines to 30.
                           min_x=10.0,#We set the first line at 10.
                           box_width=40.0)# All the lines will be contained between -20 and 20

fc_layout.visualize()
../../../../_images/picazzo3-fibcoup-curved-cell-FiberCouplerCurvedGrating-3.png

Changing the fill_factor to set the line width:

# Example demonstrating how to change the fill_factor.
import technologies.silicon_photonics
from ipkiss3 import all as i3

from picazzo3.fibcoup.curved import FiberCouplerCurvedGrating
from picazzo3.traces.wire_wg import WireWaveguideTemplate

# Creating the wire templates for the socket.
start_wg_tmpl = WireWaveguideTemplate()
start_wg_tmpl.Layout(core_width=0.5, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 0.5)
end_wg_tmpl = WireWaveguideTemplate()
end_wg_tmpl.Layout(core_width=17.0, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 17.0)

fc_cell = FiberCouplerCurvedGrating(start_trace_template=start_wg_tmpl,
                                    wide_trace_template=end_wg_tmpl)

fc_layout = fc_cell.Layout(period_x=0.8, # We with a period of 0.8
                           focal_distance_x=20.0,# We use a focal distance of 20.0.
                           n_o_lines=30,#We set the number of lines to 30.
                           min_x=10.0,#We set the first line at 10.
                           fill_factor=0.2)  #Here we set the fill factor to 0.2 meaning that lines will be 0.2 * period_x thick

fc_layout.visualize()
../../../../_images/picazzo3-fibcoup-curved-cell-FiberCouplerCurvedGrating-4.png

Changing the start radii in the y direction:

# Example that illustrates the degrees of freedom at your disposal concerning the
# periodicity and radii of the gratings in the y direction. You have more freedom in
# y direction since the focus is in the x-axis.

from technologies import silicon_photonics
from ipkiss3 import all as i3

from picazzo3.fibcoup.curved import FiberCouplerCurvedGrating
from picazzo3.traces.wire_wg import WireWaveguideTemplate

# Creating the wire templates for the socket.
start_wg_tmpl = WireWaveguideTemplate()
start_wg_tmpl.Layout(core_width=0.5, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 0.5)
end_wg_tmpl = WireWaveguideTemplate()
end_wg_tmpl.Layout(core_width=17.0, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 17.0)

fc_cell = FiberCouplerCurvedGrating(start_trace_template=start_wg_tmpl,
                                    wide_trace_template=end_wg_tmpl)

fc_layout = fc_cell.Layout(focal_distance_x=20.0,# We use a focal distance of 20.0.
                           n_o_lines=30, # We use 30 lines.
                           period_x=0.8, # We with a period of 0.8
                           period_y=0.5, # period has to be smaller than the period in the x direction
                           start_radius_y=3.0, # Start_radius_y has to be smaller than min_x
                           fill_factor = 0.2, # Fill factor of 0.2
                           min_x = 10.0) #First line at 10.0

fc_layout.visualize()
../../../../_images/picazzo3-fibcoup-curved-cell-FiberCouplerCurvedGrating-5.png

Changing the socket extensions:

# Example demonstrating how to change the socket_extension.
import technologies.silicon_photonics
from ipkiss3 import all as i3

from picazzo3.fibcoup.curved import FiberCouplerCurvedGrating
from picazzo3.traces.wire_wg import WireWaveguideTemplate

# Creating the wire templates for the socket.
start_wg_tmpl = WireWaveguideTemplate()
start_wg_tmpl.Layout(core_width=0.5, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 0.5)
end_wg_tmpl = WireWaveguideTemplate()
end_wg_tmpl.Layout(core_width=17.0, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 17.0)

fc_cell = FiberCouplerCurvedGrating(start_trace_template=start_wg_tmpl,
                                    wide_trace_template=end_wg_tmpl)

fc_layout = fc_cell.Layout(period_x=0.8, # We with a period of 0.8
                           focal_distance_x=20.0, # We use a focal distance of 20.0.
                           n_o_lines=30, #We set the number of lines to 30.
                           min_x=10.0,#We set the first line at 10.
                           box_width=40.0,# All the lines will be contained between -20 and 20
                           socket_extension=30.0) #A socket extension will of 30.0 will be added

fc_layout.visualize()
../../../../_images/picazzo3-fibcoup-curved-cell-FiberCouplerCurvedGrating-6.png

Changing the straight socket extensions:

# Example demonstrating how to change the socket_straight_extensions.
import technologies.silicon_photonics
from ipkiss3 import all as i3

from picazzo3.fibcoup.curved import FiberCouplerCurvedGrating
from picazzo3.traces.wire_wg import WireWaveguideTemplate

# Creating the wire templates for the socket.
start_wg_tmpl = WireWaveguideTemplate()
start_wg_tmpl.Layout(core_width=0.5, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 0.5)
end_wg_tmpl = WireWaveguideTemplate()
end_wg_tmpl.Layout(core_width=17.0, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 17.0)

fc_cell = FiberCouplerCurvedGrating(start_trace_template=start_wg_tmpl,
                                    wide_trace_template=end_wg_tmpl)

fc_layout = fc_cell.Layout(period_x=0.8, # We with a period of 0.8
                           focal_distance_x=20.0,# We use a focal distance of 20.0.
                           n_o_lines=30,#We set the number of lines to 30.
                           min_x=10.0,#We set the first line at 10.
                           box_width=40.0,
                           socket_straight_extension=(10.0,5.0))# A straight extension of 10.0 will be added at the
                                                                #narrow side and 5.0 at the wide part of the socket.

fc_layout.visualize()
../../../../_images/picazzo3-fibcoup-curved-cell-FiberCouplerCurvedGrating-7.png