pub trait PlacementProblem<C: L2NBase> {
    fn fused_layout_netlist(&self) -> &C;
    fn top_cell(&self) -> C::CellId;
    fn placement_region(&self) -> Vec<SimpleRPolygon<C::Coord>>;
    fn initial_position(
        cell_instance: &C::CellInstId
    ) -> SimpleTransform<C::Coord>; fn placement_status(&self, cell_instance: &C::CellInstId) -> PlacementStatus; fn cell_outline(&self, cell: &C::CellId) -> Option<Rect<C::Coord>>; fn soft_blockages(&self) -> Vec<SimpleRPolygon<C::Coord>> { ... } fn cell_instance_outline(
        cell_instance: &C::CellInstId
    ) -> Option<Rect<C::Coord>> { ... } fn net_weight(&self, _net: &C::NetId) -> f64 { ... } fn get_fixed_instances(&self) -> HashSet<C::CellInstId> { ... } fn get_movable_instances(&self) -> HashSet<C::CellInstId> { ... } }
Expand description

Representation of the placement task.

Required Methods

Get the base layout/netlist structure.

Get the top cell whose content should be placed.

Get a list of polygons which describe where cells are allowed to be placed.

Get the position of a cell instance which should be used as an initial value for the optimization. This is most likely the output of the previous placement step.

Tell if the cell instance can be moved by the placement engine.

Get the abutment box / outline of the cell.

Provided Methods

Get regions which should not be used for placement but can if necessary. Overlap of cells with this regions should be minimized.

Get the abutment box / outline of the cell instance.

Get the weight of a net. Default is 1.0. When optimizing the wire-length, the weighted wire-length should be used. For example a weight 0.0 means that the net should not be considered for wire-length optimization.

TODO: fn arc_weight(&self, arc: &ArcId) -> f64; Get the set of fixed instances.

Get the set of movable cell instances.


Representation of the placement task.