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

Where a track is over a void of its reference plane (issue #24, docs/05-routing.md §44, D117). More...

#include <cstddef>
#include <cstdint>
#include <vector>
#include "geom/clip.hpp"
#include "geom/point.hpp"
#include "model/board.hpp"

Go to the source code of this file.

Classes

struct  tmk::route::ReferenceMap

Namespaces

namespace  tmk
namespace  tmk::route

Functions

ReferenceMap tmk::route::build_reference_map (const model::Board &b, const geom::Box &lat, Coord pitch, int nx, int ny, double min_coverage=0.3)
 lat is the lattice box (cell (x, y) is at lat.x0 + x * pitch, lat.y0 + y * pitch), nx x ny its size.
std::vector< std::uint8_t > tmk::route::rasterise (const geom::Rings &region, const geom::Box &lat, Coord pitch, int nx, int ny)
 Rasterises a region (rings under the non-zero rule, holes included): 1 where the cell centre is inside.

Detailed Description

Where a track is over a void of its reference plane (issue #24, docs/05-routing.md §44, D117).

A fast signal wants solid copper under it on the adjacent layer: where the plane has a split, a slot, a cut-out or an antipad field the return current has to go round (docs/05 §42 measures the detour after the route). Here the same question is asked before the route, for every cell of the router's lattice: on each copper layer that has a plane next to it (an adjacent layer whose zone fills cover a good part of the board), is the cell's centre over the plane's copper? The router charges critical nets for the cells where it is not.

The map is a cost, not a rule: the exact check of every commit is unchanged. Vias a route adds make antipads the fills in the file do not have yet; the audit after the route (analysis/return_path.hpp, on a refilled board) sees those.

Definition in file ref_map.hpp.