Elements and Layers
Elements are the building blocks of a layout. By structuring elements in more complex groups, you can gradually build more advanced blocks.
In IPKISS we make a distinction between the following types of elements.
Shape Elements
used to define a geometric element on a certain Layer.Text Elements
used to place some text on your design on a certain Layer.Reference Elements
for referring to another PCell’s layout view.
These elements can be grouped in an i3.ElementList
.
Note that there is a difference as where these elements should be defined in the LayoutView
of a component.
To use shape elements and text elements, you must return them from the _generate_elements
method of the LayoutView
of a PCell that you define.
This in explained in more detail in this guide together with some examples.
On the other hand, reference elements, which are also known as instances, should be returned from the _generate_instances
method of the LayoutView
to create a hierarchical layout.
Click here for a tutorial on how to do so.
Shape Elements
Shape Elements are basically elements that take a shape and a layer. Hence they provide a way to place geometrical objects (shapes) on your layout. IPKISS contains a range of different types of shape elements, but these can all be reduced to 3 distinct types:
Layout element consisting of a closed Shape drawn on a given Layer. |
|
A rectangular layout element defined via its center coordinate and extent in x and y, drawn on a given layer. |
|
Layout element consisting of a closed or open Shape drawn on a given Layer with a given line width |
All shape elements are derived from one of those two types. Below you can find a list of all those derived elements:
Derived from Boundary
Returns a Boundary Element with a circle shape. |
|
Returns a Boundary Element with a cross shape. |
|
Returns a Boundary Element with an elliptical shape. |
|
Returns a Boundary Element with a hexagon shape. |
|
Returns a Boundary Element with a parabilically tapered wedge shape. |
|
Returns a Boundary Element with a linear wedge (tapered) shape emanating from a center point. |
|
Returns a Boundary Element with a rectangular shape. |
|
Returns a Boundary Element with a regular polygon shape. |
|
Returns a Boundary Element with a ring segment shape. |
|
Returns a Boundary Element with an rectangular shape with rounded corners. |
|
Bend with relative turning angle instead of absolute end angle |
|
Returns a Boundary Element with a linear wedge (tapered) shape. |
Derived from Path
Returns a Path Element along a circular arc. |
|
Returns a Path Element along a circuler bend. |
|
Returns a Path Element along a closed circle. |
|
Returns a Path forming the outline of a cross |
|
Returns a Path Element along a closed elliptical path. |
|
Returns a Path Element along an elliptical arc. |
|
Returns a Path Element along a straight line. |
|
Returns a Path Element along a closed regular hexagon shape. |
|
Returns a Path Element along a straight line emanating from a center point. |
|
Returns a Path Element along a a closed rectangular shape. |
|
Returns a Path Element along a closed regular polygon shape. |
|
Returns a Path Element along a a circular bend calculated relatively from a starting point. |
|
Returns a Path Element along a closed rounded rectangular shape. |
Text elements
Text elements are used to add text to a GDS. There are two types of text element in IPKISS.
i3.PolygonText
is used to write text on a layer in the GDS, e.g. if it is to be physically fabricatedi3.Label
is used to write labels on a GDS, these are not physically fabricated and are only for annotation purposes
Layout element which places text as a Group of Boundary elements or Path Elements. |
|
Layout element which places text as a Label on the layout. |
Reference Elements
Reference elements (also called instances) are used to place a reference to a layout view of another PCell in the layout instead of the element itself. Doing this allows re-use of repeating layout information, by defining the unit cell in a separate container (PCell) and referring to it from other PCells. In this way, a layout is hierarchically structured. Reference elements can apply transformations on the referred layout, without changing the original layout itself. You could for example place a ringresonator on your layout and place another translated copy next to it.
The most frequently used reference element is i3.SRef
, in case you need to place several copies of your element you can leverage i3.ARef
.
IPKISS also offers a range of more specialized references. Below you can find a complete list, but we want to remark that those are rarely needed.
Single reference of a LayoutView |
|
Array reference: places the referenced layout view in a regular 2D array. |
|
Multi-reference. |
|
A 1D array of references along the X-axis (prior to transformation) |
|
A 1D array of references along the Y-axis (prior to transformation) |
|
An array reference that automatically breaks down the array into individual single references (SREF) |
|
An array reference that automatically breaks down the array into individual single references (SREF) if the transformation is not along Manhattan directions. |
Grouping Elements
Two containers are available for grouping elements: i3.Group
and i3.ElementList
.
They are similar, but a Group behaves as an Element itself while an ElementList does not.
Group of Layout Elements. |
|
List of Layout Elements |