pub trait LayoutBase: LayoutIds + HierarchyBase {
Show 16 methods // Required methods fn dbu(&self) -> Self::Coord; fn each_layer(&self) -> Box<dyn Iterator<Item = Self::LayerId> + '_>; fn layer_info(&self, layer: &Self::LayerId) -> LayerInfo<Self::NameType>; fn find_layer(&self, index: UInt, datatype: UInt) -> Option<Self::LayerId>; fn layer_by_name(&self, name: &str) -> Option<Self::LayerId>; fn bounding_box_per_layer( &self, cell: &Self::CellId, layer: &Self::LayerId ) -> Option<Rect<Self::Coord>>; fn each_shape_id( &self, cell: &Self::CellId, layer: &Self::LayerId ) -> Box<dyn Iterator<Item = Self::ShapeId> + '_>; fn for_each_shape<F>( &self, cell: &Self::CellId, layer: &Self::LayerId, f: F ) where F: FnMut(&Self::ShapeId, &Geometry<Self::Coord>); fn with_shape<F, R>(&self, shape_id: &Self::ShapeId, f: F) -> R where F: FnMut(&Self::LayerId, &Geometry<Self::Coord>) -> R; fn parent_of_shape( &self, shape_id: &Self::ShapeId ) -> (Self::CellId, Self::LayerId); fn get_transform( &self, cell_inst: &Self::CellInstId ) -> SimpleTransform<Self::Coord>; // Provided methods fn bounding_box(&self, cell: &Self::CellId) -> Option<Rect<Self::Coord>> { ... } fn shape_geometry(&self, shape_id: &Self::ShapeId) -> Geometry<Self::Coord> { ... } fn shape_layer(&self, shape_id: &Self::ShapeId) -> Self::LayerId { ... } fn for_each_shape_recursive<F>( &self, cell: &Self::CellId, layer: &Self::LayerId, f: F ) where F: FnMut(SimpleTransform<Self::Coord>, &Self::ShapeId, &Geometry<Self::Coord>) { ... } fn get_shape_property( &self, shape: &Self::ShapeId, key: &Self::NameType ) -> Option<PropertyValue> { ... }
}
Expand description

Most basic trait of a layout.

This traits specifies methods for accessing the components of a layout.

Required Methods§

source

fn dbu(&self) -> Self::Coord

Get the distance unit used in this layout in ‘pixels per micron’.

source

fn each_layer(&self) -> Box<dyn Iterator<Item = Self::LayerId> + '_>

Iterate over all defined layers.

source

fn layer_info(&self, layer: &Self::LayerId) -> LayerInfo<Self::NameType>

Get the LayerInfo data structure for this layer.

source

fn find_layer(&self, index: UInt, datatype: UInt) -> Option<Self::LayerId>

Find layer index by the (index, data type) tuple.

source

fn layer_by_name(&self, name: &str) -> Option<Self::LayerId>

Find layer index by the name.

source

fn bounding_box_per_layer( &self, cell: &Self::CellId, layer: &Self::LayerId ) -> Option<Rect<Self::Coord>>

Compute the bounding box of the shapes on one layer. The bounding box also includes all child cell instances.

source

fn each_shape_id( &self, cell: &Self::CellId, layer: &Self::LayerId ) -> Box<dyn Iterator<Item = Self::ShapeId> + '_>

Iterate over the IDs of all shapes in the cell on a specific layer.

source

fn for_each_shape<F>(&self, cell: &Self::CellId, layer: &Self::LayerId, f: F)where F: FnMut(&Self::ShapeId, &Geometry<Self::Coord>),

Call a function for each shape on this layer.

source

fn with_shape<F, R>(&self, shape_id: &Self::ShapeId, f: F) -> Rwhere F: FnMut(&Self::LayerId, &Geometry<Self::Coord>) -> R,

Access a shape by its ID.

source

fn parent_of_shape( &self, shape_id: &Self::ShapeId ) -> (Self::CellId, Self::LayerId)

Get the parent cell and the layer of a shape as a (cell, layer) tuple.

source

fn get_transform( &self, cell_inst: &Self::CellInstId ) -> SimpleTransform<Self::Coord>

Get the geometric transform that describes the location of a cell instance relative to its parent.

Provided Methods§

source

fn bounding_box(&self, cell: &Self::CellId) -> Option<Rect<Self::Coord>>

Compute the bounding box of the cell over all layers. The bounding box is not defined if the cell is empty. In this case return None.

source

fn shape_geometry(&self, shape_id: &Self::ShapeId) -> Geometry<Self::Coord>

Get a clone of the shape geometry.

source

fn shape_layer(&self, shape_id: &Self::ShapeId) -> Self::LayerId

Get the layer of a shape.

source

fn for_each_shape_recursive<F>( &self, cell: &Self::CellId, layer: &Self::LayerId, f: F )where F: FnMut(SimpleTransform<Self::Coord>, &Self::ShapeId, &Geometry<Self::Coord>),

Call a function f for each shape of this cell and its sub cells. Along to the geometric shape f also gets a transformation as argument. The transformation describes the actual position of the geometric shape relative to the cell.

source

fn get_shape_property( &self, shape: &Self::ShapeId, key: &Self::NameType ) -> Option<PropertyValue>

Get a property of a shape.

Implementors§

source§

impl LayoutBase for Chip<Coord>

source§

impl<'b, L> LayoutBase for RegionSearchAdapter<'b, L>where L: LayoutBase + 'static, L::Coord: PrimInt + Signed + Debug,

source§

impl<'b, L: LayoutBase + 'static> LayoutBase for DBPerf<'b, L>

source§

impl<'b, N, U> LayoutBase for Undo<'b, N, U>where N: LayoutBase,