Trait libreda_pnr::place::stdcell_placer::SimpleStdCellPlacer
source · pub trait SimpleStdCellPlacer<N: NetlistBase> {
// Required methods
fn name(&self) -> &str;
fn find_cell_positions_impl(
&self,
netlist: &N,
top_cell: &N::CellId,
core_area: &SimplePolygon<Coord>,
initial_positions: &HashMap<N::CellInstId, Point<Coord>>,
fixed_instances: &HashSet<N::CellInstId>,
cell_outlines: &HashMap<N::CellId, Rect<Coord>>,
net_weights: &HashMap<N::NetId, f64>
) -> HashMap<N::CellInstId, Point<Coord>>;
// Provided method
fn find_cell_positions(
&self,
netlist: &N,
cell_id: &N::CellId,
core_area: &SimplePolygon<Coord>,
initial_positions: &HashMap<N::CellInstId, Point<Coord>>,
fixed_instances: &HashSet<N::CellInstId>,
cell_outlines: &HashMap<N::CellId, Rect<Coord>>,
net_weights: &HashMap<N::NetId, f64>
) -> HashMap<N::CellInstId, Point<SInt>> { ... }
}Expand description
Traits for simple placement engines that care about standard-cells only and cannot handle obstructions.
Required Methods§
sourcefn find_cell_positions_impl(
&self,
netlist: &N,
top_cell: &N::CellId,
core_area: &SimplePolygon<Coord>,
initial_positions: &HashMap<N::CellInstId, Point<Coord>>,
fixed_instances: &HashSet<N::CellInstId>,
cell_outlines: &HashMap<N::CellId, Rect<Coord>>,
net_weights: &HashMap<N::NetId, f64>
) -> HashMap<N::CellInstId, Point<Coord>>
fn find_cell_positions_impl( &self, netlist: &N, top_cell: &N::CellId, core_area: &SimplePolygon<Coord>, initial_positions: &HashMap<N::CellInstId, Point<Coord>>, fixed_instances: &HashSet<N::CellInstId>, cell_outlines: &HashMap<N::CellId, Rect<Coord>>, net_weights: &HashMap<N::NetId, f64> ) -> HashMap<N::CellInstId, Point<Coord>>
Find the rough positions of all cell instances inside cell.
Parameters
netlist: The netlist holding the connectivity information.cell_id: The ID of the cell containing all the standard-cell instances to be placed.core_area: The region where the cells are allowed to be placed.initial_positions: Initial positions of the cells. For movable instances this can serve as a hint for the optimization, fixed instances must have a position defined.fixed_instances: A set of instances that have fixed positions and cannot be moved.cell_outlines: Rectangular outline shapes of the cells.
Returns
Returns a HashMap which maps cell instances to positions.
Provided Methods§
sourcefn find_cell_positions(
&self,
netlist: &N,
cell_id: &N::CellId,
core_area: &SimplePolygon<Coord>,
initial_positions: &HashMap<N::CellInstId, Point<Coord>>,
fixed_instances: &HashSet<N::CellInstId>,
cell_outlines: &HashMap<N::CellId, Rect<Coord>>,
net_weights: &HashMap<N::NetId, f64>
) -> HashMap<N::CellInstId, Point<SInt>>
fn find_cell_positions( &self, netlist: &N, cell_id: &N::CellId, core_area: &SimplePolygon<Coord>, initial_positions: &HashMap<N::CellInstId, Point<Coord>>, fixed_instances: &HashSet<N::CellInstId>, cell_outlines: &HashMap<N::CellId, Rect<Coord>>, net_weights: &HashMap<N::NetId, f64> ) -> HashMap<N::CellInstId, Point<SInt>>
Calls find_cell_positions_impl() before and after doing some sanity checks.