65 const EscapeOptions& o = {}, FlowEscapeStats* stats =
nullptr);
Escape (fanout) planning, version 1 (roadmap M9; design doc 05 §3).
std::int32_t NetId
0 = no net
std::vector< EscapeCorridor > plan_escapes_flow(const model::Board &b, const std::vector< char > &needs, const FlowEscapeInput &in, const EscapeOptions &o={}, FlowEscapeStats *stats=nullptr)
Plans the deep arrays by min-cost flow and every other dense package as version 1 does (plan_escapes)...
std::vector< int > array_rings(const model::Board &b, const std::vector< char > &needs, const EscapeOptions &o={})
Deep arrays: SMD pads of one footprint on a regular square grid (every pad within pitch / 8 of a grid...
std::int64_t Coord
Engine coordinate: signed 64-bit nanometres.
std::vector< int > per_layer
escapes planned per copper layer
std::vector< RingPlan > rings
index 0 = ring 1
Per ring (1 = perimeter) of the planned arrays: how the pins that need routing were assigned.
int pad_layer
escape on the pad layer through planned channels
int none
no channel and no via site
int other_layer
dog-bone via, then planned channels on another layer
int via_only
dog-bone via site, but no layer had room to leave the array