GenericElectricalVia

class ipkiss3.pcell.via.cell.GenericElectricalVia(*args, **kwargs)

Most generic class for electrical vias. Its purpose is to electrically connect two layers (layer_top and layer_bottom) that are defined in the Layoutview. Two ports/terms named top and bottom refer to the connection points on those respective layers.

Parameters:

cell_instances: _PCellInstanceDict, optional

name: optional

The unique name of the pcell

Views

Layout

Layout view of a generic via. Adds all the shapes contained in the property shapes onto layer defined in the property layers.

By default those properties are determined with the help of other properties refering to two layers (top and bottom) that are most commonly used in vias. For each layer (top and bottom) 2 properties are defined:

  • top_shape
  • top_layer

analogous properties are defined for the bottom layer.

Parameters:

bottom_layer: Layer, optional

Drawing layer for the bottom of the via.

bottom_shape: Shape, optional

Shape used for the bottom of the via. Also used as shape in the ``bottom``port.

grids_per_unit: optional

Number of grid cells per design unit

layers: list and List with type restriction, allowed types: <class ‘ipkiss.primitives.layer.Layer’>, optional

List of layers used to make the via

shapes: list and List with type restriction, allowed types: <class ‘ipkiss.geometry.shape.Shape’>, optional

List of shapes used to make the via

top_layer: Layer, optional

Drawing layer for the top of the via.

top_shape: Shape, optional

Shape used for the top of the via. Also used as shape in the ``top``port.

units_per_grid: optional

Ratio of grid cell and design unit

view_name: str, optional

The name of the view

grid: float and number > 0, optional

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

unit: float and number > 0, optional

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

Examples

from technologies import silicon_photonics
from ipkiss3 import all as i3
from ipkiss3.pcell.via.cell import GenericElectricalVia

cell = GenericElectricalVia()
# defining the shapes that are going to be used
# For the top and bottom layer you can either define a layer or a combination of and a purpose.

layout = cell.Layout(top_shape=i3.ShapeRegularPolygon(n_o_sides=3),
                     bottom_shape=i3.ShapeRegularPolygon(n_o_sides=9),
                     top_layer=i3.TECH.PPLAYER.M1.LINE,
                     bottom_layer=i3.TECH.PPLAYER.M2.LINE
                     )

layout.visualize()
../../../../_images/ipkiss3-pcell-via-cell-GenericElectricalVia-1.png
from technologies import silicon_photonics
from ipkiss3 import all as i3
from ipkiss3.pcell.via.cell import GenericElectricalVia

cell = GenericElectricalVia()
# defining the shapes that are going to be used
shapes = []
for i in range(3):
    shapes.append(i3.ShapeRegularPolygon(n_o_sides=i + 3))
# defining the corresponding layers that are going to be used
layers = [i3.TECH.PPLAYER.M1.LINE, i3.TECH.PPLAYER.V12.PILLAR, i3.TECH.PPLAYER.M2.LINE]
# If you set the shape array you have to explicitly set the properties relating to the  top and bottom layers that are expected to be defined.
layout = cell.Layout(shapes=shapes, layers=layers,
                     top_shape=shapes[0],
                     bottom_shape=shapes[2],
                     top_layer=layers[0],
                     bottom_layer=layers[2],
                     )
layout.visualize()
../../../../_images/ipkiss3-pcell-via-cell-GenericElectricalVia-2.png