# 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.

## 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 2 distinct types:

 Boundary(layer, shape[, transformation]) Layout element consisting of a closed Shape drawn on a given Layer. Path(layer, shape[, line_width, path_type, …]) 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

 Circle(layer[, center, radius, angle_step]) Returns a Boundary Element with a circle shape. Cross(layer[, center, box_size, thickness]) Returns a Boundary Element with a cross shape. Ellipse(layer[, center, box_size, angle_step]) Returns a Boundary Element with an elliptical shape. Hexagon(layer[, center, radius]) Returns a Boundary Element with a hexagon shape. ParabolicWedge(layer[, begin_coord, …]) Returns a Boundary Element with a parabilically tapered wedge shape. RadialWedge(layer[, center, inner_radius, …]) Returns a Boundary Element with a linear wedge (tapered) shape emanating from a center point. Rectangle(layer[, center, box_size]) Returns a Boundary Element with an rectangular shape. RegularPolygon(layer[, center, radius, …]) Returns a Boundary Element with a regular polygon shape. RoundedRectangle(layer[, center, box_size, …]) Returns a Boundary Element with an rectangular shape with rounded corners. Wedge(layer[, begin_coord, end_coord, …]) Returns a Boundary Element with a linear wedge (tapered) shape. RingSegment(layer[, center, angle_start, …]) Returns a Boundary Element with a ring segment shape.

Derived from Path

 CirclePath(layer[, center, radius, …]) Returns a Path Element along a closed circle. CrossPath(layer[, center, box_size, …]) Returns a Path Element along a straight line. EllipsePath(layer[, center, box_size, …]) Returns a Path Element along a closed elliptical path. HexagonPath(layer[, center, radius, line_width]) Returns a Path Element along a closed regular hexagon shape. RadialLine(layer[, center, inner_radius, …]) Returns a Path Element along a straight line emanating from a center point. RectanglePath(layer[, center, box_size, …]) Returns a Path Element along a a closed rectangular shape. RegularPolygonPath(layer[, center, radius, …]) Returns a Path Element along a closed regular polygon shape. RelativeBendPath(layer[, start_point, …]) Returns a Path Element along a a circular bend calculated relatively from a starting point. RoundedRectanglePath(layer[, center, …]) Returns a Path Element along a closed rounded rectangular shape.

## 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 SRef, in case you need to place several copies of your element you can leverage 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.

 SRef(reference[, position, transformation]) Single reference of a LayoutView ARef(reference, origin, period, n_o_periods) Array reference: places the referenced layout view in a regular 2D array. ARefX(reference, origin, period_1d, …[, …]) A 1D array of references along the X-axis (prior to transformation) ARefY(reference, origin, period_1d, …[, …]) A 1D array of references along the Y-axis (prior to transformation)