35 std::function<bool(
const BundleConn&,
const std::vector<std::pair<
int, std::vector<geom::Point>>>&,
const std::vector<geom::Point>&)>
place_tunnel;
37 std::function<bool(
const BundleConn&,
int layer,
const std::vector<geom::Point>&)>
place;
The board model (design doc 02 §3): every object TraceMaker reads from a .kicad_pcb,...
std::int32_t NetId
0 = no net
BundleStats route_bundles(const model::Board &b, const std::vector< BundleConn > &conns, const BundleHooks &h, const BundleOptions &o={})
Plans and places the bundles of conns (unrouted two-pad connections). Deterministic: groups,...
TunnelStats route_tunnels(const model::Board &b, const std::vector< BundleConn > &conns, const BundleHooks &h, const BundleOptions &o={})
std::vector< int > perimeter_directions(const model::Board &b, const BundleOptions &o)
Pins on the perimeter of a dense package and the direction they leave in (index into the 8 octilinear...
std::int64_t Coord
Engine coordinate: signed 64-bit nanometres.
Integer-nanometre points and KiCad-compatible rotation.
int pad_b
board pads; the one on a dense package's perimeter is the source
int ci
the router's connection index
std::function< bool(const BundleConn &, int layer, const std::vector< geom::Point > &)> place
Places the lane of a connection: the polyline from the centre of one pad to the centre of the other,...
std::function< Coord(model::NetId)> width
track width of a net
std::function< bool(const BundleConn &, const std::vector< std::pair< int, std::vector< geom::Point > > > &, const std::vector< geom::Point > &)> place_tunnel
Places the tunnel of a connection: tracks (layer, polyline) and the vias that join them....
std::function< bool(geom::Point, geom::Point, int layer, Coord width, model::NetId)> free
May a track of net and width run a-b on layer? The router's exact check against everything placed (fi...
std::function< Coord(model::NetId)> via_diameter
std::function< bool(geom::Point, model::NetId)> via_ok
A via of net at p (the class via, not necked): may it go there? (exact check, strict).
std::function< Coord(model::NetId)> clearance
clearance of a net
std::function< bool(int layer, model::NetId)> layer_ok
Coord grid
spine grid step
int min_lanes
a group of fewer connections is left to the router
Coord peel_step
places along a lane where it may leave the block
Coord extend
how far a lane may run on straight past the end of the spine
Coord max_pitch
pin pitch up to which a footprint counts as a dense package (as the escape plan)
int groups
(package side, destination side) groups with enough connections
int spines
groups for which the search found a spine
int lanes
connections in those groups
Package tunnels (doc 05 §52): a connection between two perimeter pins of one dense package on the sam...