Trait libreda_pnr::route::simple_router::SimpleRouter[][src]

pub trait SimpleRouter {
    fn name(&self) -> &str;
fn compute_routes_impl(
        &self,
        boundary: Rect<SInt>,
        net_terminals: &HashMap<usize, Vec<Vec<(SimpleRPolygon<SInt>, u8)>>>,
        obstacles: &Vec<(SimpleRPolygon<SInt>, u8)>
    ) -> HashMap<usize, SimpleRoutedNet>; fn compute_routes(
        &self,
        boundary: Rect<SInt>,
        net_terminals: &HashMap<usize, Vec<Vec<(SimpleRPolygon<SInt>, u8)>>>,
        obstacles: &Vec<(SimpleRPolygon<SInt>, u8)>
    ) -> HashMap<usize, SimpleRoutedNet> { ... }
fn draw_routes<LN: L2NEdit<Coord = SInt>>(
        &self,
        chip: &mut LN,
        routes: HashMap<usize, SimpleRoutedNet>,
        routes_cell: LN::CellId,
        routing_layers: &Vec<LN::LayerId>,
        via_layers: &Vec<LN::LayerId>
    ) { ... }
fn route_all_nets<LN: L2NEdit<Coord = SInt>>(
        &self,
        chip: &mut LN,
        top_cell: LN::CellId,
        routing_layers: &Vec<LN::LayerId>,
        via_layers: &Vec<LN::LayerId>
    ) -> Result<(), Vec<LN::NetId>> { ... }
fn route_nets<LN: L2NEdit<Coord = SInt>>(
        &self,
        chip: &mut LN,
        top_cell: LN::CellId,
        routing_layers: &Vec<LN::LayerId>,
        via_layers: &Vec<LN::LayerId>,
        nets: &Vec<LN::NetId>
    ) -> Result<(), Vec<LN::NetId>> { ... } }
Expand description

Basic trait for a router with a simplified interface.

The simplified router gets as an input an already flattened set of net terminal shapes that need to be connected.

Required methods

Get the name of the routing engine.

Routing algorithm implementation.

Provided methods

Wrapper around compute_route_impl(). Does some sanity checks before and after.

  • boundary: Boundary of the area that can be used for the routing.
  • net_terminals: Pin shapes for each net together with the layer number. Lowest layer is 0.
  • obstacles: Obstacle shapes together with the layer number.

Returns all freshly drawn routes.

Draw the computed routes into the layout.

  • routes: Routes computed with compute_routes().
  • routes_cell: The cell where to draw the routes into.
  • routing_layers: The metal layer stack starting with the layer ID of the lowest metal layer.
  • via_layers: IDs of the via layers, starting with the lowest via layer which is the via layer between the first two metal layers.

Route all nets in the top_cell.

  • top_cell: The cell containing the layout to be routed.
  • routing_layers: The metal layer stack starting with the layer ID of the lowest metal layer.
  • via_layers: IDs of the via layers, starting with the lowest via layer which is the via layer between the first two metal layers.
Returns
  • On success returns Ok(()).
  • On failure, when some nets could not be routed returns a list of the unrouted nets Err(unrouted nets).

Route a set of nets and creates a new cell that contains the shapes of the routes. Also outputs the routing terminal shapes to this cell (for debugging).

  • top_cell: The cell containing the layout to be routed.
  • routing_layers: The metal layer stack starting with the layer ID of the lowest metal layer.
  • via_layers: IDs of the via layers, starting with the lowest via layer which is the via layer between the first two metal layers.
  • nets: The nets to be routed.
Returns
  • On success returns Ok(()).
  • On failure, when some nets could not be routed returns a list of the unrouted nets Err(unrouted nets).

Implementors