TraceMaker
C++ API of the engine
Loading...
Searching...
No Matches
escape.hpp File Reference

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={})

Detailed Description

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.