|
TraceMaker
C++ API of the engine
|
Bundle (river) escapes (design doc 05 §50). More...
Go to the source code of this file.
Classes | |
| struct | tmk::route::BundleConn |
| struct | tmk::route::BundleHooks |
| struct | tmk::route::BundleOptions |
| struct | tmk::route::BundleStats |
| struct | tmk::route::TunnelStats |
| Package tunnels (doc 05 §52): a connection between two perimeter pins of one dense package on the same net (the core rail's three pins, the supply pins of a package) goes where the designer puts it: a short stub and a via straight out of each pin, and the run between the two vias on the other layer, under the package. More... | |
Namespaces | |
| namespace | tmk |
| namespace | tmk::route |
Functions | |
| std::vector< int > | tmk::route::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 directions: 0 +x, 2 +y, 4 -x, 6 -y). | |
| TunnelStats | tmk::route::route_tunnels (const model::Board &b, const std::vector< BundleConn > &conns, const BundleHooks &h, const BundleOptions &o={}) |
| BundleStats | tmk::route::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, lanes and searches are in a fixed order. | |
Bundle (river) escapes (design doc 05 §50).
The connections that leave one side of a dense package (QFN, QFP, SO) for one side of another part are routed as one block, the way a designer draws them: parallel straight tracks at the pin pitch, in the order of the pins, for as long as the board has room, and each track peels off toward its own pad at the last moment. Not a search per connection: ONE search for the spine of the block (a track as wide as the whole block, on an octilinear grid, turns spaced so that the inner tracks of a turn keep their length), then every lane is the spine offset by the lane's distance from the middle (rigid offsets: the order of the pins is the order of the lanes, so lanes cannot cross), and a last leg from the lane to its pad. A lane is placed only when every piece of it passes the router's own exact check; a connection that does not get a lane is left to the ordinary router. Related work: river routing (Hsu, "A new approach to channel routing"; Tsukiyama and Kuh, "Single-layer routing"); the generalisation of the router's coupled-pair legs (doc 05 §15) from two tracks to n.
Definition in file bundle.hpp.