pub trait SimpleStdCellLegalizer<N: NetlistBase> {
    fn find_legal_positions_impl(
        &self,
        netlist: &N,
        circuit: &N::CellId,
        core_area: &SimplePolygon<SInt>,
        cell_outlines: &HashMap<N::CellId, Rect<SInt>>,
        global_positions: &HashMap<N::CellInstId, Point<SInt>>,
        movable_instances: &HashSet<N::CellInstId>
    ) -> HashMap<N::CellInstId, SimpleTransform<SInt>>; fn find_legal_positions(
        &self,
        netlist: &N,
        circuit: &N::CellId,
        core_area: &SimplePolygon<SInt>,
        cell_outlines: &HashMap<N::CellId, Rect<SInt>>,
        global_positions: &HashMap<N::CellInstId, Point<SInt>>,
        movable_instances: &HashSet<N::CellInstId>
    ) -> HashMap<N::CellInstId, SimpleTransform<SInt>> { ... } }
Expand description

Trait for a legalizer that is able to put globally placed standard-cells into legal positions. A legal position must for instance be overlap free, snapped to a standard-cell row and rotated or flipped correctly such that the power rails and wells are properly oriented.

Required methods

Find legal positions and rotations for the cells based on a global placement.

Parameters
  • netlist: The netlist containing the circuit to be placed.
  • circuit: The circuit netlist which is being placed.
  • core_area: The region which shall be used for the placement.
  • cell_outlines: Outlines (abutment boxes) of the standard cells.
  • global_positions: Result of the global placement: a location for each circuit instance.
  • movable_instances: Circuit instances that can be moved.

Provided methods

Wrapper around `legalize_impl(). Does additional logging and sanity checks.

Parameters
  • netlist: The netlist containing the circuit to be placed.
  • circuit: The circuit netlist which is being placed.
  • core_area: The region which shall be used for the placement.
  • cell_outlines: Outlines (abutment boxes) of the standard cells.
  • global_positions: Result of the global placement: a location for each circuit instance.
  • movable_instances: Circuit instances that can be moved.

Implementors