|
TraceMaker
C++ API of the engine
|
Internal: the incremental annealing state shared by simulated annealing, parallel tempering, large- neighbourhood search and exact windows (anneal.cpp, tempering.cpp, lns.cpp). More...
#include <array>#include <chrono>#include <cmath>#include <cstdint>#include <vector>#include "core/rng.hpp"#include "place/anneal.hpp"#include "place/congestion.hpp"#include "place/wirelength.hpp"Go to the source code of this file.
Classes | |
| struct | tmk::place::detail::Move |
| struct | tmk::place::detail::Slot |
| Temperature slot: the temperature and the shift-radius adaptation that belongs to it (parallel tempering exchanges slots between replicas, so a replica arriving at a temperature inherits its tuned radius). More... | |
| struct | tmk::place::detail::WindowStats |
| class | tmk::place::detail::Annealer |
Namespaces | |
| namespace | tmk |
| namespace | tmk::place |
| namespace | tmk::place::detail |
Functions | |
| Coord | tmk::place::detail::snap (Coord v) |
| Point | tmk::place::detail::snap (Point q) |
| std::int64_t | tmk::place::detail::alpha_units (double alpha_mm) |
| std::int64_t | tmk::place::detail::via_units (double via_mm) |
| Cost of one nm of RUDY overflow: β (mm of signal HPWL per mm of overflow) × signal weight; resolution 0.1. | |
| std::int64_t | tmk::place::detail::beta_units (double beta) |
| Point | tmk::place::detail::body_centre (const Part &pt, int rot) |
| AnnealResult | tmk::place::detail::anneal_tempering (const Problem &p, const std::vector< std::vector< int > > &pn, const Placement &start, const AnnealOptions &o, std::uint64_t moves) |
| Parallel-tempering driver (tempering.cpp). | |
| void | tmk::place::detail::finish_result (const Problem &p, const AnnealOptions &o, AnnealResult &res) |
| Fills the result fields shared by both drivers from the winning replica. | |
Variables | |
| constexpr Coord | tmk::place::detail::kLattice = 10'000 |
| committed positions on a 10 µm lattice | |
| constexpr int | tmk::place::detail::kMaxMove = 12 |
| parts in one compound move (LNS windows) | |
| constexpr double | tmk::place::detail::kLnsPhase = 0.3 |
| LNS windows run in the last 30 % of an annealing budget. | |
Internal: the incremental annealing state shared by simulated annealing, parallel tempering, large- neighbourhood search and exact windows (anneal.cpp, tempering.cpp, lns.cpp).
Not part of the public API.
The state is always legal for the movable parts (every committed move passed the exact test). Its cost is an exact integer, kept incrementally: Σ w·HPWL + α·crossings + β·RUDY overflow.
Definition in file anneal_state.hpp.