Skip to content

Commit 64ab163

Browse files
Merge pull request #2949 from AlexandreSinger/feature-ap-solver
[AP][GlobalPlacment] Added Bound2Bound Solver
2 parents c43f4b3 + b9a458c commit 64ab163

File tree

36 files changed

+1119
-169
lines changed

36 files changed

+1119
-169
lines changed

doc/src/vpr/command_line_usage.rst

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,15 +1195,43 @@ Analytical Placement is generally split into three stages:
11951195

11961196
Analytical Placement is experimental and under active development.
11971197

1198-
.. option:: --ap_global_placer {quadratic-bipartitioning-lookahead | quadratic-flowbased-lookahead}
1198+
.. option:: --ap_analytical_solver {qp-hybrid | lp-b2b}
11991199

1200-
Controls which Global Placer to use in the AP Flow.
1200+
Controls which Analytical Solver the Global Placer will use in the AP Flow.
1201+
The Analytical Solver solves for a placement which optimizes some objective
1202+
function, ignorant of the FPGA legality constraints. This provides a "lower-
1203+
bound" solution. The Global Placer will legalize this solution and feed it
1204+
back to the analytical solver to make its solution more legal.
12011205

1202-
* ``quadratic-bipartitioning-lookahead`` Use a Global Placer which uses a quadratic solver and a bi-partitioning lookahead legalizer. Anchor points are used to spread the solved solution to the legalized solution.
1206+
* ``qp-hybrid`` Solves for a placement that minimizes the quadratic HPWL of
1207+
the flat placement using a hybrid clique/star net model (as described in
1208+
FastPlace :cite:`Viswanathan2005_FastPlace`).
1209+
Uses the legalized solution as anchor-points to pull the solution to a
1210+
more legal solution (similar to the approach from SimPL :cite:`Kim2013_SimPL`).
12031211

1204-
* ``quadratic-flowbased-lookahead`` Use a Global Placer which uses a quadratic solver and a multi-commodity-flow-based lookahead legalizer. Anchor points are used to spread the solved solution to the legalized solution.
1212+
* ``lp-b2b`` Solves for a placement that minimizes the linear HPWL of the
1213+
flat placement using the Bound2Bound net model (as described in Kraftwerk2 :cite:`Spindler2008_Kraftwerk2`).
1214+
Uses the legalized solution as anchor-points to pull the solution to a
1215+
more legal solution (similar to the approach from SimPL :cite:`Kim2013_SimPL`).
12051216

1206-
**Default:** ``quadratic-bipartitioning-lookahead``
1217+
**Default:** ``qp-hybrid``
1218+
1219+
.. option:: --ap_partial_legalizer {bipartitioning | flow-based}
1220+
1221+
Controls which Partial Legalizer the Global Placer will use in the AP Flow.
1222+
The Partial Legalizer legalizes a placement generated by an Analytical Solver.
1223+
It is used within the Global Placer to guide the solver to a more legal
1224+
solution.
1225+
1226+
* ``bipartitioning`` Creates minimum windows around over-dense regions of
1227+
the device bi-partitions the atoms in these windows such that the region
1228+
is no longer over-dense and the atoms are in tiles that they can be placed
1229+
into.
1230+
1231+
* ``flow-based`` Flows atoms from regions that are overfilled to regions that
1232+
are underfilled.
1233+
1234+
**Default:** ``bipartitioning``
12071235

12081236
.. option:: --ap_full_legalizer {naive | appack}
12091237

doc/src/z_references.bib

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,3 +436,46 @@ @inproceedings{kosar2024parallel
436436
booktitle={The 23rd International Conference on Field-Programmable Technology},
437437
year={2024}
438438
}
439+
440+
@ARTICLE{Viswanathan2005_FastPlace,
441+
author={Viswanathan, N. and Chu, C.C.-N.},
442+
journal={IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems},
443+
title={{FastPlace}: efficient analytical placement using cell shifting, iterative local refinement,and a hybrid net model},
444+
year={2005},
445+
volume={24},
446+
number={5},
447+
month=may,
448+
pages={722-733},
449+
keywords={Clustering algorithms;Partitioning algorithms;Algorithm design and analysis;Integrated circuit interconnections;Large-scale systems;Minimization;Delay;Simulated annealing;Iterative algorithms;Acceleration;Analytical placement;computer-aided design;net models;standard cell placement},
450+
doi={10.1109/TCAD.2005.846365}
451+
}
452+
453+
@article{Kim2013_SimPL,
454+
author = {Kim, Myung-Chul and Lee, Dong-Jin and Markov, Igor L.},
455+
journal = {Commun. ACM},
456+
title = {{SimPL}: an algorithm for placing {VLSI} circuits},
457+
year = {2013},
458+
issue_date = {June 2013},
459+
publisher = {Association for Computing Machinery},
460+
address = {New York, NY, USA},
461+
volume = {56},
462+
number = {6},
463+
issn = {0001-0782},
464+
doi = {10.1145/2461256.2461279},
465+
month = jun,
466+
pages = {105–113},
467+
numpages = {9}
468+
}
469+
470+
@ARTICLE{Spindler2008_Kraftwerk2,
471+
author={Spindler, Peter and Schlichtmann, Ulf and Johannes, Frank M.},
472+
journal={IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems},
473+
title={Kraftwerk2—A Fast Force-Directed Quadratic Placement Approach Using an Accurate Net Model},
474+
year={2008},
475+
volume={27},
476+
number={8},
477+
month=aug,
478+
pages={1398-1411},
479+
keywords={Cost function;Central Processing Unit;Runtime;Quality control;Convergence;Computational efficiency;Integrated circuit synthesis;Stochastic processes;Circuit simulation;Bound2Bound;force-directed;half-perimeter wirelength (HPWL);Kraftwerk2;quadratic placement;Kraftwerk2;force-directed;quadratic placement;Bound2Bound;HPWL},
480+
doi={10.1109/TCAD.2008.925783}
481+
}

vpr/src/analytical_place/analytical_placement_flow.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,8 @@ static PartialPlacement run_global_placer(const t_ap_opts& ap_opts,
131131
return p_placement;
132132
} else {
133133
// Run the Global Placer
134-
std::unique_ptr<GlobalPlacer> global_placer = make_global_placer(ap_opts.global_placer_type,
134+
std::unique_ptr<GlobalPlacer> global_placer = make_global_placer(ap_opts.analytical_solver_type,
135+
ap_opts.partial_legalizer_type,
135136
ap_netlist,
136137
prepacker,
137138
atom_nlist,

0 commit comments

Comments
 (0)