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: CBase layout and netlist data-structure.
top_cell: C::CellIdCell 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>
TODO: fn arc_weight(&self, arc: &ArcId) -> f64;
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.
Auto Trait Implementations§
impl<C> Freeze for SimpleDesign<C>
impl<C> RefUnwindSafe for SimpleDesign<C>where
C: RefUnwindSafe,
<C as HierarchyBase>::CellId: RefUnwindSafe,
<C as HierarchyBase>::CellInstId: RefUnwindSafe,
<C as LayoutBase>::Coord: RefUnwindSafe,
impl<C> Send for SimpleDesign<C>where
C: Send,
<C as HierarchyBase>::CellId: Send,
<C as HierarchyBase>::CellInstId: Send,
<C as LayoutBase>::Coord: Send,
impl<C> Sync for SimpleDesign<C>where
C: Sync,
<C as HierarchyBase>::CellId: Sync,
<C as HierarchyBase>::CellInstId: Sync,
<C as LayoutBase>::Coord: Sync,
impl<C> Unpin for SimpleDesign<C>where
C: Unpin,
<C as HierarchyBase>::CellId: Unpin,
<C as HierarchyBase>::CellInstId: Unpin,
<C as LayoutBase>::Coord: Unpin,
impl<C> UnwindSafe for SimpleDesign<C>where
C: UnwindSafe,
<C as HierarchyBase>::CellId: UnwindSafe,
<C as HierarchyBase>::CellInstId: UnwindSafe,
<C as LayoutBase>::Coord: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more