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

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)

Detailed Description

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.