|
TraceMaker
C++ API of the engine
|
Critical nets, from what the board's parts are (issue #24, docs/05-routing.md §44, D117). More...
#include <string>#include <utility>#include <vector>#include "crules/catalogue.hpp"#include "crules/detect.hpp"#include "model/board.hpp"Go to the source code of this file.
Classes | |
| struct | tmk::crules::CriticalNet |
| struct | tmk::crules::CriticalRole |
| The table itself, for the docs and the tests: (category id, role, tier). More... | |
Namespaces | |
| namespace | tmk |
| namespace | tmk::crules |
Functions | |
| std::vector< CriticalNet > | tmk::crules::critical_nets (const model::Board &b, const Catalogue &cat, const Detection &det, const std::vector< std::pair< model::NetId, model::NetId > > &diff_pairs) |
| The nets playing a critical role in a detected category instance, and diff_pairs (named pairs, tier 2) that no role claimed. | |
| const std::vector< CriticalRole > & | tmk::crules::critical_roles () |
Critical nets, from what the board's parts are (issue #24, docs/05-routing.md §44, D117).
JLCPCB's first rule of routing is to route the critical signals first. Which signals are critical is not in the netlist, but the component rules (doc 15) know the roles the nets play: the data lines of a USB port, the pairs of an Ethernet PHY, a crystal's two pins, the clock of a memory interface. This turns the roles into tiers: 1 clocks, crystals and RF lines (the signals that radiate and that nothing may disturb), 2 high-speed differential links, 3 memory and other fast parallel buses. A tier is the order of routing; the user's own list (--critical-nets) is tier 1.
Definition in file critical.hpp.