|
TraceMaker
C++ API of the engine
|
Buses (design doc 05 §38): groups of nets that belong together (a data bus, an address bus, a parallel display interface). More...
#include <optional>#include <string>#include <string_view>#include <vector>#include "drc/rule_engine.hpp"#include "model/board.hpp"#include "model/rules.hpp"Go to the source code of this file.
Classes | |
| struct | tmk::route::BusGroup |
| struct | tmk::route::ViaHeights |
| The length a via adds to its net in KiCad's length calculation, which its skew check uses (KiCad 10, BOARD_STACKUP::GetLayerDistance): the stackup between the two copper layers the via joins, with the copper of an outer layer in full and of an inner layer by half. More... | |
| struct | tmk::route::BusMember |
| A group as routed, measured on copper. More... | |
| struct | tmk::route::BusStats |
Namespaces | |
| namespace | tmk |
| namespace | tmk::route |
Functions | |
| bool | tmk::route::natural_less (std::string_view a, std::string_view b) |
| Natural order of two names: runs of digits compare as numbers, everything else byte by byte. | |
| bool | tmk::route::bus_pattern_match (const std::string &pattern, const std::string &net_name) |
| Bus patterns select nets by their full name (KiCad's, with the sheet path: "/D0", "/MEM/DQ3"). | |
| BusGroup | tmk::route::bus_from_option (const model::Board &b, const std::string &spec) |
| "NAME=PATTERN" as given to –bus. | |
| std::vector< BusGroup > | tmk::route::detect_buses (const model::Board &b, int min_members=4) |
| Automatic detection (–buses), conservative: nets whose names differ only in a trailing decimal index ("D0", "A[3]", "/MEM/DQ12"), at least min_members of them with pads on the same two components. | |
| std::optional< Coord > | tmk::route::bus_rule_skew (const drc::RuleEngine &re, const BusGroup &g) |
| The skew limit the board's custom rules give a group: every member must match a rule with a skew constraint (the smallest maximum wins); rules restricted to differential pairs (within_diff_pairs) do not count. | |
| ViaHeights | tmk::route::via_heights (const model::Board &b, const model::DesignRules &rules) |
| double | tmk::route::net_via_length (const model::Board &b, const ViaHeights &vh, model::NetId net, const std::vector< model::Track > &tracks, const std::vector< model::ArcTrack > &arcs, const std::vector< model::Via > &vias) |
| The via length of one net on the given copper, as KiCad sums it: each via counts between the outermost layers on which a track of the net ends inside the via's pad, or a pad of the net touches the via (a surface pad's own layer, its footprint's side for a through-hole pad); a via that joins nothing on a second layer adds nothing. | |
| BusStats | tmk::route::measure_bus (const model::Board &b, const ViaHeights &vh, const std::vector< model::Track > &tracks, const std::vector< model::ArcTrack > &arcs, const std::vector< model::Via > &vias, const std::vector< std::uint8_t > &net_routed, const BusGroup &g) |
| net_routed[net]: nets_joined() of the board the copper belongs to; b gives the pads, vh its via heights. | |
| std::vector< std::uint8_t > | tmk::route::nets_joined (const model::Board &b, const model::DesignRules &rules) |
| Per net: 1 when all its pads are joined by copper (the router's own connectivity; nets without pads count as joined). | |
Buses (design doc 05 §38): groups of nets that belong together (a data bus, an address bus, a parallel display interface).
This file holds what does not need the router: how a group is named on the command line, how groups are found in the net names, which skew limit the board's rules give a group, and the measurement of a routed group. The routing of a group lives in the router (route/router.cpp, "buses").
Definition in file bus.hpp.