48 std::vector<WidenNet>
nets;
57 const std::vector<model::Via>& vias,
const WidenOptions& opt);
The board model (design doc 02 §3): every object TraceMaker reads from a .kicad_pcb,...
std::int32_t NetId
0 = no net
WidenResult widen_tracks(const model::Board &board, const model::DesignRules &rules, std::vector< model::Track > &tracks, const std::vector< model::Via > &vias, const WidenOptions &opt)
board is the board as the router saw it (without the new copper); tracks and vias are the run's new c...
std::int64_t Coord
Engine coordinate: signed 64-bit nanometres.
Design rules as KiCad defines them (design doc 08 §3–4): board minimums and net classes from the ....
std::map< Coord, Coord > after
track width -> length at that width, nm
std::string source
"net class" (neck-down restored), "option", or a rule id
int tracks
tracks below the target before the pass
std::map< Coord, Coord > before
int widened
of them: made wider (to the target or part of the way)
Coord widened_length
length of the tracks made wider
int at_target
of them: at the target (or at a pad's or via's size, see the doc) afterwards
Width targets by net (explicit options and component rules); a target below a track's width changes n...
std::string source
"option", or the component rule that asked for it
int steps
Candidate widths per track: the target, then steps - 1 evenly spaced widths below it,...
std::vector< model::NetId > skip_nets
Nets left alone: coupled differential pairs are routed at their pair width on purpose.
std::vector< Target > targets
long work_limit
Work budget in exact checks (rule 5). When it runs out the remaining tracks keep their width.
bool soft_zones
as RouterOptions::soft_zones: stale fills do not block (the caller refills and judges)
bool restore_necked
Tracks narrower than their net class's width (the router's neck-down) go back up to the class width.
long checks
exact checks done (the pass's work)
std::vector< WidenNet > nets
nets with at least one track below its target, by net id