Skip to content

[AP][GlobalPlacment] Added Bound2Bound Solver #2949

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 33 additions & 5 deletions doc/src/vpr/command_line_usage.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1195,15 +1195,43 @@ Analytical Placement is generally split into three stages:

Analytical Placement is experimental and under active development.

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

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

* ``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.
* ``qp-hybrid`` Solves for a placement that minimizes the quadratic HPWL of
the flat placement using a hybrid clique/star net model (as described in
FastPlace :cite:`Viswanathan2005_FastPlace`).
Uses the legalized solution as anchor-points to pull the solution to a
more legal solution (similar to the approach from SimPL :cite:`Kim2013_SimPL`).

* ``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.
* ``lp-b2b`` Solves for a placement that minimizes the linear HPWL of the
flat placement using the Bound2Bound net model (as described in Kraftwerk2 :cite:`Spindler2008_Kraftwerk2`).
Uses the legalized solution as anchor-points to pull the solution to a
more legal solution (similar to the approach from SimPL :cite:`Kim2013_SimPL`).

**Default:** ``quadratic-bipartitioning-lookahead``
**Default:** ``qp-hybrid``

.. option:: --ap_partial_legalizer {bipartitioning | flow-based}

Controls which Partial Legalizer the Global Placer will use in the AP Flow.
The Partial Legalizer legalizes a placement generated by an Analytical Solver.
It is used within the Global Placer to guide the solver to a more legal
solution.

* ``bipartitioning`` Creates minimum windows around over-dense regions of
the device bi-partitions the atoms in these windows such that the region
is no longer over-dense and the atoms are in tiles that they can be placed
into.

* ``flow-based`` Flows atoms from regions that are overfilled to regions that
are underfilled.

**Default:** ``bipartitioning``

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

Expand Down
43 changes: 43 additions & 0 deletions doc/src/z_references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -436,3 +436,46 @@ @inproceedings{kosar2024parallel
booktitle={The 23rd International Conference on Field-Programmable Technology},
year={2024}
}

@ARTICLE{Viswanathan2005_FastPlace,
author={Viswanathan, N. and Chu, C.C.-N.},
journal={IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems},
title={{FastPlace}: efficient analytical placement using cell shifting, iterative local refinement,and a hybrid net model},
year={2005},
volume={24},
number={5},
month=may,
pages={722-733},
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},
doi={10.1109/TCAD.2005.846365}
}

@article{Kim2013_SimPL,
author = {Kim, Myung-Chul and Lee, Dong-Jin and Markov, Igor L.},
journal = {Commun. ACM},
title = {{SimPL}: an algorithm for placing {VLSI} circuits},
year = {2013},
issue_date = {June 2013},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {56},
number = {6},
issn = {0001-0782},
doi = {10.1145/2461256.2461279},
month = jun,
pages = {105–113},
numpages = {9}
}

@ARTICLE{Spindler2008_Kraftwerk2,
author={Spindler, Peter and Schlichtmann, Ulf and Johannes, Frank M.},
journal={IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems},
title={Kraftwerk2—A Fast Force-Directed Quadratic Placement Approach Using an Accurate Net Model},
year={2008},
volume={27},
number={8},
month=aug,
pages={1398-1411},
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},
doi={10.1109/TCAD.2008.925783}
}
3 changes: 2 additions & 1 deletion vpr/src/analytical_place/analytical_placement_flow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,8 @@ static PartialPlacement run_global_placer(const t_ap_opts& ap_opts,
return p_placement;
} else {
// Run the Global Placer
std::unique_ptr<GlobalPlacer> global_placer = make_global_placer(ap_opts.global_placer_type,
std::unique_ptr<GlobalPlacer> global_placer = make_global_placer(ap_opts.analytical_solver_type,
ap_opts.partial_legalizer_type,
ap_netlist,
prepacker,
atom_nlist,
Expand Down
Loading