Struct libreda_pnr::design::SimpleDesign
source · pub struct SimpleDesign<C: L2NBase> {
pub fused_layout_netlist: C,
pub top_cell: C::CellId,
pub cell_outlines: HashMap<C::CellId, Rect<C::Coord>>,
pub placement_region: Vec<SimpleRPolygon<C::Coord>>,
pub placement_status: HashMap<C::CellInstId, PlacementStatus>,
}
Expand description
Collection of data representing the chip during the place & route flow.
This struct owns the data. In contrast, SimpleDesignRef
does only borrow
the data.
Fields§
§fused_layout_netlist: C
Base layout and netlist data-structure.
top_cell: C::CellId
Cell which contains the instances to be placed.
cell_outlines: HashMap<C::CellId, Rect<C::Coord>>
Outline shapes of the cells to be placed.
placement_region: Vec<SimpleRPolygon<C::Coord>>
Regions where cells are allowed to be placed.
placement_status: HashMap<C::CellInstId, PlacementStatus>
Placement status of the cell instances. Default is Movable
.
Implementations§
source§impl<C: L2NBase> SimpleDesign<C>
impl<C: L2NBase> SimpleDesign<C>
sourcepub fn set_placement_status(
&mut self,
cell_inst: C::CellInstId,
placement_status: PlacementStatus
)
pub fn set_placement_status( &mut self, cell_inst: C::CellInstId, placement_status: PlacementStatus )
Set the placement status of a cell instance.
Trait Implementations§
source§impl<C: L2NBase> PlacementProblem<C> for SimpleDesign<C>
impl<C: L2NBase> PlacementProblem<C> for SimpleDesign<C>
source§fn fused_layout_netlist(&self) -> &C
fn fused_layout_netlist(&self) -> &C
Get the base layout/netlist structure.
source§fn placement_region(&self) -> Vec<SimpleRPolygon<C::Coord>>
fn placement_region(&self) -> Vec<SimpleRPolygon<C::Coord>>
Get a list of polygons which describe where cells are allowed to be placed.
source§fn initial_position(
&self,
cell_instance: &C::CellInstId
) -> SimpleTransform<C::Coord>
fn initial_position( &self, cell_instance: &C::CellInstId ) -> SimpleTransform<C::Coord>
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.
source§fn placement_status(&self, cell_instance: &C::CellInstId) -> PlacementStatus
fn placement_status(&self, cell_instance: &C::CellInstId) -> PlacementStatus
Tell if the cell instance can be moved by the placement engine.
source§fn cell_outline(&self, cell: &C::CellId) -> Option<Rect<C::Coord>>
fn cell_outline(&self, cell: &C::CellId) -> Option<Rect<C::Coord>>
Get the abutment box / outline of the cell.
source§fn soft_blockages(&self) -> Vec<SimpleRPolygon<C::Coord>>
fn soft_blockages(&self) -> Vec<SimpleRPolygon<C::Coord>>
Get regions which should not be used for placement but can if necessary.
Overlap of cells with this regions should be minimized.
source§fn cell_instance_outline(
&self,
cell_instance: &C::CellInstId
) -> Option<Rect<C::Coord>>
fn cell_instance_outline( &self, cell_instance: &C::CellInstId ) -> Option<Rect<C::Coord>>
Get the abutment box / outline of the cell instance.
source§fn net_weight(&self, _net: &C::NetId) -> f64
fn net_weight(&self, _net: &C::NetId) -> f64
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.source§fn get_fixed_instances(&self) -> HashSet<C::CellInstId>
fn get_fixed_instances(&self) -> HashSet<C::CellInstId>
Get the set of fixed instances.
source§fn get_movable_instances(&self) -> HashSet<C::CellInstId>
fn get_movable_instances(&self) -> HashSet<C::CellInstId>
Get the set of movable cell instances.