|
TraceMaker
C++ API of the engine
|
Files | |
| anneal.hpp | |
| (E) Detailed placement by simulated annealing (design doc 04 §3 E; Kirkpatrick, Gelatt, Vecchi, Science 1983; move set after TimberWolf, Sechen & Sangiovanni-Vincentelli, IEEE JSSC 1985). | |
| anneal_state.hpp | |
| Internal: the incremental annealing state shared by simulated annealing, parallel tempering, large- neighbourhood search and exact windows (anneal.cpp, tempering.cpp, lns.cpp). | |
| congestion.hpp | |
| Routability estimate for placement (design doc 04 §3 B R(x), E β·RUDY overflow, G). | |
| global.hpp | |
| Global placement (design doc 04 §3 A–C). | |
| legality.hpp | |
| Placement legality (design doc 04 §3 D/E): exact integer tests of courtyards, through-hole obstacles, the board outline, keepouts and pad-to-edge clearance, plus a bucket index of placed parts and a conservative occupancy raster used as a fast path by the legaliser. | |
| legalize.hpp | |
| (D) Legalisation (design doc 04 §3 D): Tetris-style greedy, largest parts first, each part moved to the nearest legal position (minimum Euclidean displacement over a lattice searched in rings) from its target. | |
| lower_bound.hpp | |
| Exact lower bound on weighted HPWL (design doc 04 §1 level L4). | |
| placer.hpp | |
| 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. | |
| problem.hpp | |
| Placement problem extracted from a board (design doc 04 §2): parts with courtyards, holes and pins per rotation, weighted nets, the board outline, keepouts and spacing rules. | |
| routable.hpp | |
| Router-in-the-loop placement (design doc 04 §3 G) and ECO placement (doc 04 §4). | |
| wirelength.hpp | |
| Wirelength and airwire metrics: weighted half-perimeter wirelength (HPWL) and crossings between the minimum-spanning-tree airwires of different signal nets (doc 04 §3 E). | |