|
TraceMaker
C++ API of the engine
|
Escape (fanout) planning, version 1 (roadmap M9; design doc 05 §3). More...
#include <functional>#include <string>#include <vector>#include "model/board.hpp"#include "model/rules.hpp"Go to the source code of this file.
Classes | |
| struct | tmk::route::EscapeCorridor |
| struct | tmk::route::EscapeOptions |
| struct | tmk::route::EscapeStats |
| struct | tmk::route::DeadPin |
| Escape feasibility (M9 analysis): can each pin of a dense package leave it at all under the board's rules? More... | |
| struct | tmk::route::PartEscape |
| struct | tmk::route::EscapeAnalysisOptions |
| struct | tmk::route::Point |
Namespaces | |
| namespace | tmk |
| namespace | tmk::route |
Functions | |
| std::pair< Coord, Coord > | tmk::route::pad_half_extents (const model::Pad &p) |
| Half extents of a pad's bounding box along x and y (rotation applied). | |
| std::vector< EscapeCorridor > | tmk::route::plan_escapes (const model::Board &b, const std::vector< char > &needs, const std::function< Coord(model::NetId)> &keep, const EscapeOptions &o={}, EscapeStats *stats=nullptr, const std::function< Coord(model::NetId)> &channel={}) |
| Plans corridors for the pads with needs[pad] != 0. | |
| std::vector< PartEscape > | tmk::route::analyse_escapes (const model::Board &b, const model::DesignRules &r, Obstacles &obs, const EscapeAnalysisOptions &o={}, const EscapeOptions &eo={}) |
Escape (fanout) planning, version 1 (roadmap M9; design doc 05 §3).
Dense packages (QFP/TSOP/SOIC rows, BGA/LGA arrays) fail in the router's strict first pass when other nets' routes take the channels a pin needs to leave its package: the pin is then "boxed in" until negotiation, which large boards often do not reach within the budget. The plan reserves, for every pin that has to be routed, a short escape corridor: straight out of the package for pins on its perimeter, and a dog-bone stub to the diagonal interstitial via site for the inner balls of an SMD array (the classic BGA fanout; Yan & Wong, "Recent research development in PCB layout", ICCAD 2010, §3; Kong, Yan & Wong, "Optimal simultaneous pin assignment and escape routing for dense PCBs", ASP-DAC 2010, for the escape model). The router treats another net's corridor as blocked in strict passes and as costly in negotiated passes, and releases a corridor once its pin is connected. Reservations only remove options: every commit is still checked exactly, so the plan cannot introduce violations.
Definition in file escape.hpp.