|
TraceMaker
C++ API of the engine
|
The placement pipeline (design doc 04 §3): full runs A (quadratic B2B) → B (SimPL spreading) → C (rotations) → D (legalisation) → E (annealing); refine starts from the current placement and runs D (only for illegal parts) → E. More...
#include <array>#include <cstdint>#include <functional>#include <optional>#include <string>#include <nlohmann/json_fwd.hpp>#include "place/anneal.hpp"#include "place/legality.hpp"Go to the source code of this file.
Classes | |
| struct | tmk::place::PlaceOptions |
| struct | tmk::place::Metrics |
| struct | tmk::place::PlaceReport |
Namespaces | |
| namespace | tmk |
| namespace | tmk::place |
Functions | |
| Metrics | tmk::place::measure (const Problem &p, const Placement &pl, const Placement *reference=nullptr) |
| std::optional< Placement > | tmk::place::repaired (const Problem &p, const Placement &pl, int *moved=nullptr) |
| Minimal repair: re-place only conflicting movable parts at the nearest legal spot (refine's legaliser). | |
| PlaceReport | tmk::place::place (const Problem &p, Placement &pl, const PlaceOptions &o) |
| nlohmann::json | tmk::place::report_json (const Problem &p, const PlaceReport &r) |
The placement pipeline (design doc 04 §3): full runs A (quadratic B2B) → B (SimPL spreading) → C (rotations) → D (legalisation) → E (annealing); refine starts from the current placement and runs D (only for illegal parts) → E.
Both report the exact lower bounds of doc 04 §1 (L4) and what was achieved.
Definition in file placer.hpp.