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

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.

Detailed Description

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.