Layout
'Layout' refers to the multi-layer geometrical shapes which describe the physical circuit.
Cells may contain geometrical shapes on different layers. Instances of cells don't contain any shapes because they are 'clones' of their template cell. However, instances have a location, rotation and magnification (rarely used) relative to their parent cell.
Following the spirit of the hierarchy traits, LibrEDA also defines traits for
accessing and editing layout information: LayoutBase
and LayoutEdit
.
LayoutBase
also defines ID types for layout objects (Coord
, LayerId
, ShapeId
).
Coord
specifies the actual data type used for coordinates in the euclidean plane.
For most applications this will be an i32
.
LayerId
is a handle which points to a certain layer. Layers can be referenced also by
name or (index, datatype)
tuples as used in GDSII or Oasis file formats.
However, names and layer numbers first need to be converted into a LayerId
using
methods like find_layer()
or layer_by_name()
.
Geometrical shapes are based on the iron-shapes
crate and further documented in Euclidean Geometry.