44 std::vector<std::pair<int, geom::Box>>
pads;
64 std::vector<std::vector<std::uint8_t>>
corridor;
70 std::vector<std::uint8_t>
util;
The board model (design doc 02 §3): every object TraceMaker reads from a .kicad_pcb,...
std::uint64_t LayerMask
bit i = copper layer i in stack order (0 = F.Cu, last = B.Cu)
GlobalResult global_route(const Obstacles &obs, const geom::Box &bounds, int layers, const std::vector< GlobalNet > &nets, const GlobalOptions &opt)
std::int64_t Coord
Engine coordinate: signed 64-bit nanometres.
Integer-nanometre points and KiCad-compatible rotation.
A straight line across the whole board and what has to cross it (escalation rung R6,...
bool vertical
a line x = at (false: y = at)
geom::Box box_b
copper of the two end pads (cut lines: which side of a line an end is on)
int net
connections with the same net (> 0) share edges; 0 = shares with nothing
model::LayerMask layers_b
copper layers each end can start on
model::LayerMask layers_a
geom::Point a
< one two-pin connection
Coord pitch
track pitch (width + clearance) used for capacities
Coord tile
tile size; 0 = 8 x (narrowest width + clearance), clamped to 1.5..5 mm
Coord via_pitch
spacing of the via sites sampled in a tile (via diameter + clearance)
double via_cost_tiles
cost of a via, in tile lengths
int iterations
negotiation rounds after the first pass
std::vector< std::pair< int, geom::Box > > pads
Every pad of the nets being routed, as (net, copper box): a pad that straddles a cut line carries its...
Coord via_drill
via used for the via capacity of a tile; 0 = no via capacity
std::vector< int > vias
global vias per connection
double seconds_route
set-up (obstacle sampling) and routing + negotiation
std::vector< std::array< int, 4 > > corridor_box
Bounding box of each corridor in tiles (x0, y0, x1, y1, inclusive); the detailed router's confined wi...
int tile_of_y(Coord y) const
CutLine tightest
the line with the highest demand / capacity (capacity 0 counts as over-full)
int overflow_via_tiles
tiles with more planned vias than free via sites
std::vector< CutLine > over_cuts
lines with demand > capacity, tightest line of each over-full tile boundary
int overflow_edges
edges still over capacity after negotiation
std::vector< std::vector< std::uint8_t > > corridor
corridor[k][(l * tiles_y + ty) * tiles_x + tx] != 0: tile on layer l is in connection k's corridor.
int tile_of_x(Coord x) const
std::vector< std::uint8_t > util
util[(l * tiles_y + ty) * tiles_x + tx]: planned tracks through the tile's four boundaries on layer l...