Trait libreda_pnr::route::routing_problem::RoutingProblem
source · [−]pub trait RoutingProblem<C: L2NBase> {
fn fused_layout_netlist(&self) -> &C;
fn top_cell(&self) -> C::CellId;
fn nets(&self) -> Box<dyn Iterator<Item = C::NetId>>;
fn boundary(&self) -> Option<SimpleRPolygon<C::Coord>>;
fn net_weight(&self, _net: &C::NetId) -> f64 { ... }
fn arc_weight(
&self,
_signal_source: &TerminalId<C>,
_signal_destination: &TerminalId<C>
) -> f64 { ... }
fn blockages(
&self
) -> Box<dyn Iterator<Item = (C::LayerId, SimpleRPolygon<C::Coord>)>> { ... }
}
Expand description
Representation of the routing problem.
This excludes information directly related to the technology such as design rules.
Required methods
fn fused_layout_netlist(&self) -> &C
fn fused_layout_netlist(&self) -> &C
Get the base layout/netlist structure.
fn boundary(&self) -> Option<SimpleRPolygon<C::Coord>>
fn boundary(&self) -> Option<SimpleRPolygon<C::Coord>>
Routes must remain within this boundary.
Provided methods
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.
Place and route algorithms may or may not use the net weight.
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.