pub struct SimpleRoutingProblem<'a, LN, RoutingGuide = ()>where
LN: L2NBase,{
pub chip: &'a LN,
pub top_cell: LN::CellId,
pub nets: Vec<LN::NetId>,
pub net_weights: HashMap<LN::NetId, f64>,
pub boundary: Option<SimpleRPolygon<LN::Coord>>,
pub routing_guides: HashMap<LN::NetId, RoutingGuide>,
}Expand description
Simple representation of the global and detail routing problems.
Implements the RoutingProblem traits.
Fields§
§chip: &'a LNA fused layout-netlist structure.
top_cell: LN::CellIdThe ID of the top cell to be routed.
nets: Vec<LN::NetId>The IDs of the nets to be routed.
net_weights: HashMap<LN::NetId, f64>Weights of nets for optimizing the total wire-length.
Default weight is 1.0. A net with weight 0.0 will not be optimized for length
while a net with a high weight will be optimized for wiring length much more aggressively.
boundary: Option<SimpleRPolygon<LN::Coord>>All routes should be contained within this boundary, if it is specified.
routing_guides: HashMap<LN::NetId, RoutingGuide>Global routes.
Implementations§
Source§impl<'a, LN: L2NBase, RG> SimpleRoutingProblem<'a, LN, RG>
impl<'a, LN: L2NBase, RG> SimpleRoutingProblem<'a, LN, RG>
Trait Implementations§
Source§impl<'a, LN, RoutingGuide: Clone> Clone for SimpleRoutingProblem<'a, LN, RoutingGuide>
impl<'a, LN, RoutingGuide: Clone> Clone for SimpleRoutingProblem<'a, LN, RoutingGuide>
Source§fn clone(&self) -> SimpleRoutingProblem<'a, LN, RoutingGuide>
fn clone(&self) -> SimpleRoutingProblem<'a, LN, RoutingGuide>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<'a, LN: L2NBase, RG> DetailRoutingProblem<LN> for SimpleRoutingProblem<'a, LN, RG>where
RG: RoutingGuide<LN>,
impl<'a, LN: L2NBase, RG> DetailRoutingProblem<LN> for SimpleRoutingProblem<'a, LN, RG>where
RG: RoutingGuide<LN>,
Source§type RoutingGuide = RG
type RoutingGuide = RG
Representation of a global route which guides a single net.
Source§fn routing_guide(&self, net: &LN::NetId) -> Option<&Self::RoutingGuide>
fn routing_guide(&self, net: &LN::NetId) -> Option<&Self::RoutingGuide>
Get the routing guide for this net.
Source§impl<'a, LN, RG> RoutingProblem<LN> for SimpleRoutingProblem<'a, LN, RG>where
LN: L2NBase,
impl<'a, LN, RG> RoutingProblem<LN> for SimpleRoutingProblem<'a, LN, RG>where
LN: L2NBase,
Source§fn fused_layout_netlist(&self) -> &LN
fn fused_layout_netlist(&self) -> &LN
Get the base layout/netlist structure.
Source§fn nets(&self) -> Box<dyn Iterator<Item = LN::NetId> + '_>
fn nets(&self) -> Box<dyn Iterator<Item = LN::NetId> + '_>
Return the nets which should be routed.
Source§fn net_weight(&self, net: &LN::NetId) -> f64
fn net_weight(&self, net: &LN::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.
Place and route algorithms may or may not use the net weight.Source§fn blockages(
&self,
) -> Box<dyn Iterator<Item = (LN::LayerId, SimpleRPolygon<LN::Coord>)>>
fn blockages( &self, ) -> Box<dyn Iterator<Item = (LN::LayerId, SimpleRPolygon<LN::Coord>)>>
Shapes where routes should not pass.
Source§fn boundary(&self) -> Option<SimpleRPolygon<LN::Coord>>
fn boundary(&self) -> Option<SimpleRPolygon<LN::Coord>>
Routes must remain within this boundary.
Source§fn arc_weight(
&self,
_signal_source: &TerminalId<C>,
_signal_destination: &TerminalId<C>,
) -> f64
fn arc_weight( &self, _signal_source: &TerminalId<C>, _signal_destination: &TerminalId<C>, ) -> f64
Weight of an ‘arc’, i.e. a net segment which starts at
signal_source and ends at signal_destination. Default weight is 1.0`.
Place and route algorithms may or may not use the arc weight.impl<'a, LN: L2NBase, RG> GlobalRoutingProblem<LN> for SimpleRoutingProblem<'a, LN, RG>
Auto Trait Implementations§
impl<'a, LN, RoutingGuide> Freeze for SimpleRoutingProblem<'a, LN, RoutingGuide>
impl<'a, LN, RoutingGuide> RefUnwindSafe for SimpleRoutingProblem<'a, LN, RoutingGuide>where
<LN as HierarchyBase>::CellId: RefUnwindSafe,
LN: RefUnwindSafe,
<LN as NetlistBase>::NetId: RefUnwindSafe,
<LN as LayoutBase>::Coord: RefUnwindSafe,
RoutingGuide: RefUnwindSafe,
impl<'a, LN, RoutingGuide> Send for SimpleRoutingProblem<'a, LN, RoutingGuide>where
<LN as HierarchyBase>::CellId: Send,
LN: Sync,
<LN as NetlistBase>::NetId: Send,
RoutingGuide: Send,
<LN as LayoutBase>::Coord: Send,
impl<'a, LN, RoutingGuide> Sync for SimpleRoutingProblem<'a, LN, RoutingGuide>where
<LN as HierarchyBase>::CellId: Sync,
LN: Sync,
<LN as NetlistBase>::NetId: Sync,
RoutingGuide: Sync,
<LN as LayoutBase>::Coord: Sync,
impl<'a, LN, RoutingGuide> Unpin for SimpleRoutingProblem<'a, LN, RoutingGuide>where
<LN as HierarchyBase>::CellId: Unpin,
<LN as NetlistBase>::NetId: Unpin,
<LN as LayoutBase>::Coord: Unpin,
RoutingGuide: Unpin,
impl<'a, LN, RoutingGuide> UnwindSafe for SimpleRoutingProblem<'a, LN, RoutingGuide>where
<LN as HierarchyBase>::CellId: UnwindSafe,
LN: RefUnwindSafe,
<LN as NetlistBase>::NetId: UnwindSafe,
RoutingGuide: UnwindSafe,
<LN 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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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