Skip to content

Commit d2bd953

Browse files
Merge branch 'master' into add_parallel_docs
2 parents 0ea6700 + 8bc845f commit d2bd953

File tree

257 files changed

+3459
-2979
lines changed

Some content is hidden

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

257 files changed

+3459
-2979
lines changed

.github/scripts/install_dependencies.sh

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,32 @@
22

33
sudo apt update
44

5+
# Required packages specifically for the CI and not VTR in general.
56
sudo apt install -y \
67
autoconf \
78
automake \
89
bash \
9-
bison \
1010
binutils \
1111
binutils-gold \
12-
build-essential \
1312
capnproto \
1413
exuberant-ctags \
1514
curl \
1615
doxygen \
17-
flex \
1816
fontconfig \
1917
gdb \
20-
git \
2118
gperf \
2219
libcairo2-dev \
2320
libcapnp-dev \
24-
libgtk-3-dev \
2521
libevent-dev \
2622
libfontconfig1-dev \
2723
liblist-moreutils-perl \
2824
libncurses5-dev \
29-
libx11-dev \
3025
libxft-dev \
3126
libxml2-utils \
3227
libxml++2.6-dev \
33-
libreadline-dev \
3428
tcllib \
3529
tcl8.6-dev \
36-
libffi-dev \
3730
perl \
38-
pkg-config \
3931
texinfo \
4032
time \
4133
valgrind \
@@ -54,9 +46,10 @@ sudo apt install -y \
5446
clang-15 \
5547
clang-16 \
5648
clang-17 \
57-
clang-18 \
58-
clang-format-18 \
59-
libtbb-dev
49+
clang-18
50+
51+
# Standard packages install script.
52+
./install_apt_packages.sh
6053

6154
pip install -r requirements.txt
6255

.github/scripts/install_jammy_dependencies.sh

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,32 @@
22

33
sudo apt update
44

5+
# Required packages specifically for the CI and not VTR in general.
56
sudo apt install -y \
67
autoconf \
78
automake \
89
bash \
9-
bison \
1010
binutils \
1111
binutils-gold \
12-
build-essential \
1312
capnproto \
1413
exuberant-ctags \
1514
curl \
1615
doxygen \
17-
flex \
1816
fontconfig \
1917
gdb \
20-
git \
2118
gperf \
2219
libcairo2-dev \
2320
libcapnp-dev \
24-
libgtk-3-dev \
2521
libevent-dev \
2622
libfontconfig1-dev \
2723
liblist-moreutils-perl \
2824
libncurses5-dev \
29-
libx11-dev \
3025
libxft-dev \
3126
libxml2-utils \
3227
libxml++2.6-dev \
33-
libreadline-dev \
3428
tcllib \
3529
tcl8.6-dev \
36-
libffi-dev \
3730
perl \
38-
pkg-config \
3931
texinfo \
4032
time \
4133
valgrind \
@@ -50,9 +42,10 @@ sudo apt install -y \
5042
g++-11 \
5143
gcc-11 \
5244
g++-12 \
53-
gcc-12 \
54-
clang-format-14 \
55-
libtbb-dev
45+
gcc-12
46+
47+
# Standard packages install script.
48+
./install_apt_packages.sh
5649

5750
pip install -r requirements.txt
5851

Dockerfile

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,15 @@ ENV PIP_BREAK_SYSTEM_PACKAGES=1
1111
# Install and cleanup is done in one command to minimize the build cache size
1212
RUN apt-get update -qq \
1313
# Extract package names from install_apt_packages.sh
14-
&& sed '/sudo/d' install_apt_packages.sh | sed '/#/d' | sed 's/ \\//g' | sed '/^$/d' | sed '/^[[:space:]]*$/d' \
14+
&& sed '/sudo/d' install_apt_packages.sh | sed '/#/d' | sed '/if\s.*then$/d' | sed '/else$/d' | sed '/fi$/d' | sed '/echo\s/d' | sed 's/ \\//g' | sed '/^$/d' | sed '/^[[:space:]]*$/d' | sed 's/\s//g' \
1515
# Install packages
1616
| xargs apt-get -y install --no-install-recommends \
1717
# Additional packages not listed in install_apt_packages.sh
1818
&& apt-get -y install --no-install-recommends \
1919
wget \
2020
ninja-build \
21-
default-jre \
2221
libeigen3-dev \
23-
libtbb-dev \
2422
python3-pip \
25-
git \
2623
time \
2724
# Install python packages
2825
&& pip install -r requirements.txt \

README.developers.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,29 @@ For large scale reformatting (should only be performed by VTR maintainers) the s
179179

180180
Python files are automatically checked using `pylint` to ensure they follow established Python conventions. You can run `pylint` on the entire repository by running `./dev/pylint_check.py`. Certain files which were created before we adopted Python lint checking are grandfathered and are not checked. To check *all* files, provide the `--check_grandfathered` argument. You can also manually check individual files using `./dev/pylint_check.py <path_to_file1> <path_to_file2> ...`.
181181

182+
# Sanitizing Includes
183+
184+
You can use include-what-you-use or the clangd language server to make sure includes are correct and you don't have missing or unused includes.
185+
186+
## include-what-you-use
187+
188+
First, install include-what-you-use. Ubuntu/Debian users can run `sudo apt install iwyu` and Fedora/RHEL users can run `sudo dnf install iwyu`. You can then compile VTR with include-what-you-use enabled to get diagnostic messages about includes in all files with the following command:
189+
190+
```
191+
make CMAKE_PARAMS="-DCMAKE_CXX_INCLUDE_WHAT_YOU_USE=include-what-you-use"
192+
```
193+
194+
Note that this method checks all source files and the diagnostic messages can be very long.
195+
196+
## clangd language server
197+
198+
Alternatively, if your editor supports clangd, you can use it to get diagnostic messages for the specific file you are working with. Visual Studio Code users can use the clangd extension to use clangd instead of Microsoft's C/C++ extension. To enable include diagnostics, create a file named `.clangd` in VTR root directory and add the following lines to it:
199+
```
200+
Diagnostics:
201+
UnusedIncludes: Strict
202+
MissingIncludes: Strict
203+
```
204+
182205
# Running Tests
183206

184207
VTR has a variety of tests which are used to check for correctness, performance and Quality of Result (QoR).

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ See the [full license](LICENSE.md) for details.
3636
## How to Cite
3737
The following paper may be used as a general citation for VTR:
3838

39-
M. A. Elgammal, A. Mohaghegh, S. G. Shahrouz, F. Mahmoudi, F. Kosar, K. Talaei, J. Fife, D. Khadivi, K. Murray, A. Boutros, K. B. Kent, J. Geoders, and V. Betz "VTR 9: Open-Source CAD for Fabric and Beyond FPGA Architecture Exploration", ACM TRETS, 2025.
39+
M. A. Elgammal, A. Mohaghegh, S. G. Shahrouz, F. Mahmoudi, F. Kosar, K. Talaei, J. Fife, D. Khadivi, K. Murray, A. Boutros, K. B. Kent, J. Goeders, and V. Betz "VTR 9: Open-Source CAD for Fabric and Beyond FPGA Architecture Exploration", ACM TRETS, 2025. [PDF](https://dl.acm.org/doi/epdf/10.1145/3734798)
4040

4141
Bibtex:
4242
```

doc/src/vpr/command_line_usage.rst

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1523,6 +1523,35 @@ VPR uses a negotiated congestion algorithm (based on Pathfinder) to perform rout
15231523
* `swns` - setup Worst Negative Slack (sWNS) [ns]
15241524
* `stns` - Setup Total Negative Slack (sTNS) [ns]
15251525

1526+
1527+
.. option:: --generate_net_timing_report {on | off}
1528+
1529+
Generates a report that lists the bounding box, slack, and delay of every routed connection in a design in CSV format (``report_net_timing.csv``). Each row in the CSV corresponds to a single net.
1530+
1531+
The report can later be used by other tools to enable further optimizations. For example, the Synopsys synthesis tool (Synplify) can use this information to re-synthesize the design and improve the Quality of Results (QoR).
1532+
1533+
Fields in the report are:
1534+
1535+
.. code-block:: none
1536+
1537+
netname : The name assigned to the net in the atom netlist
1538+
Fanout : Net's fanout (number of sinks)
1539+
bb_xmin : X coordinate of the net's bounding box's bottom-left corner
1540+
bb_ymin : Y coordinate of the net's bounding box's bottom-left corner
1541+
bb_layer_min : Lowest layer number of the net's bounding box
1542+
bb_xmax : X coordinate of the net's bounding box's top-right corner
1543+
bb_ymax : Y coordinate of the net's bounding box's top-right corner
1544+
bb_layer_max : Highest layer number of the net's bounding box
1545+
src_pin_name : Name of the net's source pin
1546+
src_pin_slack : Setup slack of the net's source pin
1547+
sinks : A semicolon-separated list of sink pin entries, each in the format:
1548+
<sink_pin_name>,<sink_pin_slack>,<sink_pin_delay>
1549+
1550+
Example value for the ``sinks`` field:
1551+
``"U2.B,0.12,0.5;U3.C,0.10,0.6;U4.D,0.08,0.7"``
1552+
1553+
**Default:** ``off``
1554+
15261555
.. option:: --route_verbosity <int>
15271556

15281557
Controls the verbosity of routing output.

doc/src/zreferences.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
Publications & References
22
=========================
33

4+
How to cite
5+
-----------
6+
`M. A. Elgammal`, `A. Mohaghegh`, `S. G. Shahrouz`, `F. Mahmoudi`, `F. Kosar`, `K. Talaei`, `J. Fife`, `D. Khadivi`, `K. Murray`, `A. Boutros`, `K. B. Kent`, `J. Goeders`, and `V. Betz`, "VTR 9: Open-Source CAD for Fabric and Beyond FPGA Architecture Exploration," *ACM TRETS*, 2025. [`PDF <https://dl.acm.org/doi/epdf/10.1145/3734798>`__]
7+
8+
Previous Publications
9+
---------------------
10+
* `K. E. Murray`, `O. Petelin`, `S. Zhong`, `J. M. Wang`, `M. ElDafrawy`, `J.-P. Legault`, `E. Sha`, `A. G. Graham`, `J. Wu`, `M. J. P. Walker`, `H. Zeng`, `P. Patros`, `J. Luu`, `K. B. Kent` and `V. Betz`, "VTR 8: High Performance CAD and Customizable FPGA Architecture Modelling", *ACM TRETS*, 2020.
11+
12+
* `J. LUU`, `J. Goeders`, `M. Wainberg`, `A. Somerville`, `T. Yu`, `K. Nasartschuk`, `M. Nasr`, `S. Wang`, `T. L`, `N. Ahmed`, `K. B. Kent`, `J. Anderson`, `J. Rose`, `V. Betz`, "VTR 7.0: Next Generation Architecture and CAD System for FPGAs", *ACM TRETS*, 2014.
13+
14+
References
15+
----------
16+
417
.. bibliography:: z_references.bib
518
:all:

install_apt_packages.sh

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ sudo apt-get install -y \
1010
flex \
1111
python3-dev \
1212
python3-venv
13-
13+
14+
# Packages for more complex features of VTR that most people will use.
15+
sudo apt-get install -y \
16+
libtbb-dev
17+
1418
# Required for graphics
1519
sudo apt-get install -y \
1620
libgtk-3-dev \
@@ -42,6 +46,11 @@ sudo apt-get install -y \
4246
sphinx-common
4347

4448
# Required for code formatting
45-
sudo apt-get install -y \
46-
clang-format-18
47-
49+
# NOTE: clang-format-18 may only be found on specific distributions. Only
50+
# install it if the distribution has this version of clang format.
51+
if apt-cache search '^clang-format-18$' | grep -q 'clang-format-18'; then
52+
sudo apt-get install -y \
53+
clang-format-18
54+
else
55+
echo "clang-format-18 not found in apt-cache. Skipping installation."
56+
fi

libs/librrgraph/src/base/rr_graph_builder.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,31 +31,29 @@ void RRGraphBuilder::add_node_to_all_locs(RRNodeId node) {
3131
short node_layer = node_storage_.node_layer(node);
3232
short node_twist = node_storage_.node_ptc_twist(node);
3333
int node_offset = 0;
34+
3435
for (int ix = node_storage_.node_xlow(node); ix <= node_storage_.node_xhigh(node); ix++) {
3536
for (int iy = node_storage_.node_ylow(node); iy <= node_storage_.node_yhigh(node); iy++) {
3637
node_ptc_num += node_twist * node_offset;
3738
node_offset++;
39+
3840
switch (node_type) {
3941
case e_rr_type::SOURCE:
4042
case e_rr_type::SINK:
4143
case e_rr_type::CHANY:
42-
node_lookup_.add_node(node, node_layer, ix, iy, node_type, node_ptc_num, TOTAL_2D_SIDES[0]);
43-
break;
4444
case e_rr_type::CHANX:
45-
/* Currently need to swap x and y for CHANX because of chan, seg convention
46-
* TODO: Once the builders is reworked for use consistent (x, y) convention,
47-
* the following swapping can be removed
48-
*/
49-
node_lookup_.add_node(node, node_layer, iy, ix, node_type, node_ptc_num, TOTAL_2D_SIDES[0]);
45+
node_lookup_.add_node(node, node_layer, ix, iy, node_type, node_ptc_num, TOTAL_2D_SIDES[0]);
5046
break;
47+
5148
case e_rr_type::OPIN:
5249
case e_rr_type::IPIN:
53-
for (const e_side& side : TOTAL_2D_SIDES) {
50+
for (const e_side side : TOTAL_2D_SIDES) {
5451
if (node_storage_.is_node_on_specific_side(node, side)) {
5552
node_lookup_.add_node(node,node_layer, ix, iy, node_type, node_ptc_num, side);
5653
}
5754
}
5855
break;
56+
5957
default:
6058
VTR_LOG_ERROR("Invalid node type for node '%lu' in the routing resource graph file", size_t(node));
6159
break;

libs/librrgraph/src/base/rr_graph_view.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ class RRGraphView {
351351

352352
start_x = " (" + std::to_string(node_xhigh(node)) + ","; //start coordinates have large value
353353
start_y = std::to_string(node_yhigh(node)) + ",";
354-
start_layer_str = std::to_string(node_layer_num);
354+
start_layer_str = std::to_string(node_layer_num) + ")";
355355
end_x = " (" + std::to_string(node_xlow(node)) + ","; //end coordinates have smaller value
356356
end_y = std::to_string(node_ylow(node)) + ",";
357357
end_layer_str = std::to_string(node_layer_num) + ")";
@@ -360,7 +360,7 @@ class RRGraphView {
360360
else { // signal travels in increasing direction, stays at same point, or can travel both directions
361361
start_x = " (" + std::to_string(node_xlow(node)) + ","; //start coordinates have smaller value
362362
start_y = std::to_string(node_ylow(node)) + ",";
363-
start_layer_str = std::to_string(node_layer_num);
363+
start_layer_str = std::to_string(node_layer_num) + ")";
364364
end_x = " (" + std::to_string(node_xhigh(node)) + ","; //end coordinates have larger value
365365
end_y = std::to_string(node_yhigh(node)) + ",";
366366
end_layer_str = std::to_string(node_layer_num) + ")"; //layer number

0 commit comments

Comments
 (0)