Skip to content

Commit ba2656d

Browse files
Merge branch 'master' into ingest_per_edge_delay
2 parents 43bde82 + 64ab163 commit ba2656d

File tree

410 files changed

+7704
-4376
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

410 files changed

+7704
-4376
lines changed

.clang-format

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ AllowShortIfStatementsOnASingleLine: true
1515
AllowShortLoopsOnASingleLine: false
1616
AlwaysBreakAfterDefinitionReturnType: None
1717
AlwaysBreakAfterReturnType: None
18-
AlwaysBreakBeforeMultilineStrings: true
18+
AlwaysBreakBeforeMultilineStrings: false
1919
AlwaysBreakTemplateDeclarations: true
2020
BinPackArguments: true
2121
BinPackParameters: false
@@ -34,7 +34,7 @@ BraceWrapping:
3434
SplitEmptyFunction: false
3535
SplitEmptyRecord: true
3636
SplitEmptyNamespace: true
37-
BreakBeforeBinaryOperators: All
37+
BreakBeforeBinaryOperators: NonAssignment
3838
BreakBeforeBraces: Custom
3939
BreakBeforeInheritanceComma: false
4040
BreakBeforeTernaryOperators: true
@@ -68,10 +68,10 @@ IncludeIsMainRegex: '([-_](test|unittest))?$'
6868
IndentCaseLabels: true
6969
IndentWidth: 4
7070
IndentWrappedFunctionNames: false
71-
IndentPPDirectives: AfterHash
71+
IndentPPDirectives: None
7272
JavaScriptQuotes: Leave
7373
JavaScriptWrapImports: true
74-
KeepEmptyLinesAtTheStartOfBlocks: false
74+
KeepEmptyLinesAtTheStartOfBlocks: true
7575
MacroBlockBegin: ''
7676
MacroBlockEnd: ''
7777
MaxEmptyLinesToKeep: 1

.github/scripts/install_dependencies.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ sudo apt install -y \
5555
clang-16 \
5656
clang-17 \
5757
clang-18 \
58-
clang-format-14 \
58+
clang-format-18 \
5959
libtbb-dev
6060

6161
pip install -r requirements.txt

.github/workflows/test.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ jobs:
8989
with:
9090
python-version: 3.10.10
9191
- uses: actions/checkout@v4
92+
with:
93+
submodules: 'true'
9294

9395
- name: Install dependencies
9496
run: ./.github/scripts/install_dependencies.sh

cmake/modules/AutoClangFormat.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ add_custom_target(format-cpp-files
2121
COMMAND find ${DIRS_TO_FORMAT_CPP} ${FIND_TO_FORMAT_CPP})
2222

2323
#
24-
# Use clang-format-14 for code format
24+
# Use clang-format for code format
2525
#
2626
add_custom_target(format-cpp
2727
COMMAND find ${DIRS_TO_FORMAT_CPP} ${FIND_TO_FORMAT_CPP} |
28-
xargs -P ${CPU_COUNT} clang-format-14 -style=file -i)
28+
xargs -P ${CPU_COUNT} clang-format-18 -style=file -i)
2929

3030
#
3131
# Use simple python script for fixing C like boxed comments

dev/pylint_check.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ def expand_paths():
132132
"""Build a list of all python files to process by going through 'paths_to_lint'"""
133133

134134
paths = []
135-
for (path, is_recursive) in paths_to_lint:
135+
for path, is_recursive in paths_to_lint:
136136
# Make sure all hard-coded paths point to .py files
137137
if path.is_file():
138138
if path.suffix.lower() != ".py":

dev/submit_slurm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ def get_resource_estimates(filepath):
188188
mem_bytes = float(match.groupdict()["mem_bytes"])
189189

190190
time_minutes = time_sec / 60
191-
mem_mb = mem_bytes / (1024 ** 2)
191+
mem_mb = mem_bytes / (1024**2)
192192

193193
return time_minutes, mem_mb
194194

dev/vtr_gdb_pretty_printers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
88
https://docs.verilogtorouting.org/en/latest/dev/developing#vtr-pretty-printers
99
"""
10+
1011
import re
1112

13+
1214
# VTR related
1315
class VtrStrongIdPrinter:
1416
def __init__(self, val, typename="vtr::StrongId"):

doc/src/vpr/command_line_usage.rst

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -926,6 +926,13 @@ If any of init_t, exit_t or alpha_t is specified, the user schedule, with a fixe
926926

927927
**Default:** ``move_block_type``
928928

929+
.. option:: --place_quench_only {on | off}
930+
931+
If this option is set to ``on``, the placement will skip the annealing phase and only perform the placement quench.
932+
This option is useful when the the quality of initial placement is good enough and there is no need to perform the
933+
annealing phase.
934+
935+
**Default:** ``off``
929936

930937

931938
.. option:: --placer_debug_block <int>
@@ -1188,15 +1195,43 @@ Analytical Placement is generally split into three stages:
11881195

11891196
Analytical Placement is experimental and under active development.
11901197

1191-
.. option:: --ap_global_placer {quadratic-bipartitioning-lookahead | quadratic-flowbased-lookahead}
1198+
.. option:: --ap_analytical_solver {qp-hybrid | lp-b2b}
1199+
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.
1205+
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`).
1211+
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`).
1216+
1217+
**Default:** ``qp-hybrid``
1218+
1219+
.. option:: --ap_partial_legalizer {bipartitioning | flow-based}
11921220

1193-
Controls which Global Placer to use in the AP Flow.
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.
11941225

1195-
* ``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.
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.
11961230

1197-
* ``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.
1231+
* ``flow-based`` Flows atoms from regions that are overfilled to regions that
1232+
are underfilled.
11981233

1199-
**Default:** ``quadratic-bipartitioning-lookahead``
1234+
**Default:** ``bipartitioning``
12001235

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

doc/src/vpr/placement_constraints.rst

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ A Placement Constraints File Example
1818
<partition_list>
1919
<partition name="Part0">
2020
<add_atom name_pattern="li354"/>
21-
<add_atom name_pattern="alu*"/> <!-- Regular expressions can be used to provide name patterns of the primitives to be added -->
21+
<add_atom name_pattern="alu.*"/> <!-- Regular expressions can be used to provide name patterns of the primitives to be added -->
2222
<add_atom name_pattern="n877"/>
2323
<add_region x_low="3" y_low="1" x_high="7" y_high="2"/> <!-- Two rectangular regions are specified, together describing an L-shaped region -->
2424
<add_region x_low="7" y_low="3" x_high="7" y_high="6"/>
@@ -78,7 +78,10 @@ An ``<add_atom>`` tag is used to add an atom that must be constrained to the par
7878
:req_param name_pattern:
7979
The name of the atom.
8080

81-
The ``name_pattern`` can be the exact name of the atom from the input atom netlist that was passed to VPR. It can also be a regular expression, in which case VPR will add all atoms from the netlist which have a portion of their name matching the regular expression to the partition. For example, if a module contains primitives named in the pattern of "alu[0]", "alu[1]", and "alu[2]", the regular expression "alu*" would add all of the primitives from that module.
81+
The ``name_pattern`` can either be the exact name of an atom from the input atom netlist passed to VPR, or a regular expression pattern matching one or more atom names. VPR first searches the netlist for an exact match. If no exact match is found, it then assumes that the given name is a regex pattern and searches for atoms whose names match the pattern.
82+
83+
For example, to add all atoms ``alu[0]``, ``alu[1]``, and ``alu[2]`` to the partition ``Part0``, the user can use ``alu.*`` as the ``name_pattern`` in the ``<add_atom>`` tag.
84+
8285

8386
Region
8487
^^^^^^
@@ -124,12 +127,3 @@ It is strongly recommended that different partitions do not overlap. The packing
124127
blocks and the number of physical blocks in a region to decide pack atoms inside a partition more aggressively when
125128
there are not enough resources in a partition. Overlapping partitions causes some physical blocks to be counted in more
126129
than one partition.
127-
128-
129-
130-
131-
132-
133-
134-
135-

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+
}

libs/libarchfpga/src/device_grid.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ struct t_grid_tile {
1919
const t_metadata_dict* meta = nullptr;
2020
};
2121

22-
2322
//TODO: All of the functions that use helper functions of this class should pass the layer_num to the functions, and the default value of layer_num should be deleted eventually.
2423
/**
2524
* @class DeviceGrid

libs/libarchfpga/src/echo_arch.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ void PrintArchInfo(FILE* Echo, const t_arch* arch) {
297297
int num_layers = (int)layout.layers.size();
298298
if (num_layers > 1) {
299299
fprintf(Echo, "\t\t\t\ttype unidir mux_name for between two dice connections: %s\n",
300-
arch->switches[seg.arch_opin_between_dice_switch].name.c_str());
300+
arch->switches[seg.arch_inter_die_switch].name.c_str());
301301
}
302302
}
303303
} else { //Should be bidir

0 commit comments

Comments
 (0)