Skip to content

Commit 05beae3

Browse files
resolve conflicts with master
2 parents 5625dcb + 4c7d5ff commit 05beae3

File tree

421 files changed

+31724
-6399
lines changed

Some content is hidden

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

421 files changed

+31724
-6399
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#!/usr/bin/env bash
2+
3+
sudo apt update
4+
5+
sudo apt install -y \
6+
autoconf \
7+
automake \
8+
bash \
9+
bison \
10+
binutils \
11+
binutils-gold \
12+
build-essential \
13+
capnproto \
14+
exuberant-ctags \
15+
curl \
16+
doxygen \
17+
flex \
18+
fontconfig \
19+
gdb \
20+
git \
21+
gperf \
22+
libcairo2-dev \
23+
libcapnp-dev \
24+
libgtk-3-dev \
25+
libevent-dev \
26+
libfontconfig1-dev \
27+
liblist-moreutils-perl \
28+
libncurses5-dev \
29+
libx11-dev \
30+
libxft-dev \
31+
libxml2-utils \
32+
libxml++2.6-dev \
33+
libreadline-dev \
34+
tcllib \
35+
tcl8.6-dev \
36+
libffi-dev \
37+
perl \
38+
pkg-config \
39+
texinfo \
40+
time \
41+
valgrind \
42+
zip \
43+
qtbase5-dev \
44+
uuid-dev \
45+
default-jdk \
46+
g++-9 \
47+
gcc-9 \
48+
g++-10 \
49+
gcc-10 \
50+
g++-11 \
51+
gcc-11 \
52+
g++-12 \
53+
gcc-12 \
54+
g++-13 \
55+
gcc-13 \
56+
clang-14 \
57+
clang-18 \
58+
clang-format-14 \
59+
libtbb-dev
60+
61+
pip install -r requirements.txt
62+
63+
git clone https://github.com/capnproto/capnproto-java.git $GITHUB_WORKSPACE/env/capnproto-java
64+
pushd $GITHUB_WORKSPACE/env/capnproto-java
65+
make
66+
sudo make install
67+
popd

.github/workflows/containers.yml

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,34 @@
11
name: Containers
22

33
on:
4+
# We want to run the CI when anything is pushed to master.
5+
# Since master is a protected branch this only happens when a PR is merged.
6+
# This is a double check in case the PR was stale and had some issues.
47
push:
8+
branches:
9+
- master
10+
paths-ignore: # Prevents from running if only docs are updated
11+
- 'doc/**'
12+
- '**/*README*'
13+
- '**.md'
14+
- '**.rst'
515
pull_request:
16+
paths-ignore: # Prevents from running if only docs are updated
17+
- 'doc/**'
18+
- '**/*README*'
19+
- '**.md'
20+
- '**.rst'
621
workflow_dispatch:
722
schedule:
823
- cron: '0 0 * * 0' # weekly
924

25+
# We want to cancel previous runs for a given PR or branch / ref if another CI
26+
# run is requested.
27+
# See: https://docs.github.com/en/actions/using-jobs/using-concurrency
28+
concurrency:
29+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
30+
cancel-in-progress: true
31+
1032
jobs:
1133

1234
Image:
@@ -24,7 +46,7 @@ jobs:
2446
id: generate
2547
run: |
2648
REPO='${{ github.repository }}'
27-
echo "::set-output name=image::ghcr.io/${REPO,,}/ubuntu/focal/build"
49+
echo "image=ghcr.io/${REPO,,}/ubuntu/focal/build" >> $GITHUB_OUTPUT
2850
2951
- name: ⛴️ Build container image
3052
run: docker build -t ${{ steps.generate.outputs.image }} -f Dockerfile .

.github/workflows/noble.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# This workflow is designed to test that VTR can run on Ubuntu 24.04. Since
2+
# the Ubuntu 24.04 GitHub runners are still in Beta, this is left as a workflow
3+
# that must be dispatched manually. In the future this workflow should be
4+
# removed and made the default (integrated into test.yml).
5+
name: Noble
6+
7+
on:
8+
workflow_dispatch:
9+
schedule:
10+
- cron: '0 0 * * *' # daily
11+
12+
# We want to cancel previous runs for a given PR or branch / ref if another CI
13+
# run is requested.
14+
# See: https://docs.github.com/en/actions/using-jobs/using-concurrency
15+
concurrency:
16+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
17+
cancel-in-progress: true
18+
19+
env:
20+
MATRIX_EVAL: "CC=gcc-13 && CXX=g++-13"
21+
22+
jobs:
23+
FutureCompatibility:
24+
runs-on: ubuntu-24.04
25+
strategy:
26+
fail-fast: false
27+
matrix:
28+
include:
29+
- { name: 'GCC 13 (Ubuntu Noble - 24.04)', eval: 'CC=gcc-13 && CXX=g++-13', }
30+
- { name: 'Clang 18 (Ubuntu Noble - 24.04)', eval: 'CC=clang-18 && CXX=clang++-18', }
31+
name: 'B: ${{ matrix.name }}'
32+
steps:
33+
- uses: actions/setup-python@v5
34+
with:
35+
python-version: 3.12.3
36+
- uses: actions/checkout@v4
37+
with:
38+
submodules: 'true'
39+
- run: ./.github/scripts/install_noble_dependencies.sh
40+
41+
- uses: hendrikmuhs/[email protected]
42+
43+
- name: Test
44+
env:
45+
CMAKE_PARAMS: "-DVTR_ASSERT_LEVEL=3 -DVTR_IPO_BUILD=off"
46+
MATRIX_EVAL: ${{ matrix.eval }}
47+
BUILD_TYPE: release
48+
run: |
49+
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
50+
./.github/scripts/build.sh
51+

.github/workflows/test.yml

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,34 @@
11
name: Test
22

33
on:
4+
# We want to run the CI when anything is pushed to master.
5+
# Since master is a protected branch this only happens when a PR is merged.
6+
# This is a double check in case the PR was stale and had some issues.
47
push:
8+
branches:
9+
- master
10+
paths-ignore: # Prevents from running if only docs are updated
11+
- 'doc/**'
12+
- '**/*README*'
13+
- '**.md'
14+
- '**.rst'
515
pull_request:
16+
paths-ignore: # Prevents from running if only docs are updated
17+
- 'doc/**'
18+
- '**/*README*'
19+
- '**.md'
20+
- '**.rst'
621
workflow_dispatch:
722
schedule:
823
- cron: '0 0 * * *' # daily
924

25+
# We want to cancel previous runs for a given PR or branch / ref if another CI
26+
# run is requested.
27+
# See: https://docs.github.com/en/actions/using-jobs/using-concurrency
28+
concurrency:
29+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
30+
cancel-in-progress: true
31+
1032
env:
1133
# default compiler for all non-compatibility tests
1234
MATRIX_EVAL: "CC=gcc-11 && CXX=g++-11"
@@ -74,6 +96,10 @@ jobs:
7496
NUM_CORES: ${{ matrix.cores }}
7597

7698
- name: Upload test results
99+
# If the job was not cancelled, we want to save the result (this includes
100+
# when the job fails). See warning here:
101+
# https://docs.github.com/en/actions/learn-github-actions/expressions#always
102+
if: ${{ !cancelled() }}
77103
# TODO: This runnner is running on a self-hosted CPU. In order to upgrade
78104
# to v4, need to upgrade the machine to support node20.
79105
uses: actions/upload-artifact@v3
@@ -260,17 +286,19 @@ jobs:
260286
./run_reg_test.py ${{ matrix.suite }} -show_failures -j2
261287
262288
- name: Upload regression run files
289+
if: ${{ !cancelled() }}
263290
uses: actions/upload-artifact@v4
264291
with:
265292
name: ${{matrix.name}}_run_files
266293
path: |
267294
vtr_flow/**/*.out
268-
vtr_flow/**/*.blif
295+
# vtr_flow/**/*.blif # Removed since it was taking too much space and was hardly used.
269296
vtr_flow/**/*.p
270297
vtr_flow/**/*.net
271298
vtr_flow/**/*.r
272299
273300
- name: Upload regression results
301+
if: ${{ !cancelled() }}
274302
uses: actions/upload-artifact@v4
275303
with:
276304
name: ${{matrix.name}}_results
@@ -406,9 +434,9 @@ jobs:
406434
matrix:
407435
include:
408436
- { name: 'GCC 9 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-9 && CXX=g++-9', }
409-
- { name: 'GCC 10 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-10 && CXX=g++-10', }
410-
- { name: 'GCC 11 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-11 && CXX=g++-11', }
411-
- { name: 'GCC 12 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-12 && CXX=g++-12', }
437+
- { name: 'GCC 10 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-10 && CXX=g++-10', }
438+
- { name: 'GCC 11 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-11 && CXX=g++-11', }
439+
- { name: 'GCC 12 (Ubuntu Jammy - 22.04)', eval: 'CC=gcc-12 && CXX=g++-12', }
412440
- { name: 'Clang 11 (Ubuntu Jammy - 22.04)', eval: 'CC=clang-11 && CXX=clang++-11', }
413441
- { name: 'Clang 12 (Ubuntu Jammy - 22.04)', eval: 'CC=clang-12 && CXX=clang++-12', }
414442
- { name: 'Clang 13 (Ubuntu Jammy - 22.04)', eval: 'CC=clang-13 && CXX=clang++-13', }
@@ -435,7 +463,6 @@ jobs:
435463
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
436464
./.github/scripts/build.sh
437465
438-
439466
Coverity:
440467
name: 'Coverity Scan'
441468
needs:

.gitmodules

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,4 @@
33
url = https://github.com/catchorg/Catch2.git
44
[submodule "libs/EXTERNAL/sockpp"]
55
path = libs/EXTERNAL/sockpp
6-
#url = [email protected]:fpagliughi/sockpp.git
7-
url = [email protected]:w0lek/sockpp.git # fork where in branch v1.0.0_no_complication_warnings there are compilation warnings fixes for upstream tag v1.0.0 of sockpp
6+
url = https://github.com/w0lek/sockpp.git # fork where in branch v1.0.0_no_complication_warnings there are compilation warnings fixes for upstream tag v1.0.0 of sockpp

CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ option(VPR_USE_SERVER "Specify whether vpr enables the server mode" ON)
4646
#VPR option --enable_analytic_placer is also required for Analytic Placement
4747
option(VPR_ANALYTIC_PLACE "Enable analytic placement in VPR." ON)
4848
option(VPR_ENABLE_INTERCHANGE "Enable FPGA interchange." ON)
49+
option(VPR_ENABLE_NOC_SAT_ROUTING "Enable NoC SAT routing." OFF)
4950

5051
option(WITH_BLIFEXPLORER "Enable build with blifexplorer" OFF)
5152

@@ -220,12 +221,12 @@ endforeach()
220221
set(FLEX_BISON_WARN_SUPPRESS_FLAGS "")
221222
set(FLEX_BISON_WARN_SUPPRESS_FLAGS_TO_CHECK
222223
"-Wno-redundant-decls" #Flex/bison generate code with redundant declarations
223-
"-Wno-switch-default" #Flex/bison generate switch statments w/o default cases
224+
"-Wno-switch-default" #Flex/bison generate switch statements w/o default cases
224225
"-Wno-unused-parameter" #Flex produces functions with unused params in re-entrant mode
225226
"-Wno-missing-declarations" #Flex misses some declarations in re-entrant mode
226227
"-Wimplicit-fallthrough=0" #Bison produces some cases with explicit
227228
"-Wno-sign-compare" #Flex generates code which performs some signed/unsigned comparison
228-
"-Wno-null-dereference" #Bison produces some cases with potenetial null derefs
229+
"-Wno-null-dereference" #Bison produces some cases with potential null derefs
229230
)
230231
foreach(flag ${FLEX_BISON_WARN_SUPPRESS_FLAGS_TO_CHECK})
231232
CHECK_CXX_COMPILER_FLAG(${flag} CXX_COMPILER_SUPPORTS_${flag})

README.developers.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1326,13 +1326,51 @@ Code included in VTR by subtrees should *not be modified within the VTR source t
13261326
Instead changes should be made in the relevant up-stream repository, and then synced into the VTR tree.
13271327

13281328
## Updating an existing Subtree
1329+
1330+
The following are instructions on how to pull in external changes from an
1331+
existing subtree. Which instructions to follow depend on if you are changing
1332+
the external ref or not.
1333+
1334+
### External Ref Does Not Change
1335+
1336+
These instructions are for if the subtree is tracking a ref of a repo which has
1337+
changes we want to pull in. For example, if the subtree is tracking main/master.
1338+
13291339
1. From the VTR root run: `./dev/external_subtrees.py $SUBTREE_NAME`, where `$SUBTREE_NAME` is the name of an existing subtree.
13301340

13311341
For example to update the `libtatum` subtree:
13321342
```shell
13331343
./dev/external_subtrees.py --update libtatum -m "commit message describing why component is being updated"
13341344
```
13351345

1346+
### External Ref Changes
1347+
1348+
These instructions are for if you want to change the ref that a subtree is
1349+
tracking. For example, if you want to change the version of a subtree (which
1350+
exists on a different branch).
1351+
1352+
1. Update `./dev/subtree_config.xml` with the new external ref.
1353+
1354+
2. Run `git log <internal_path>` and take note of any local changes to the
1355+
subtree. It is bad practice to have local changes to subtrees you cannot
1356+
modify; however, some changes must be made to allow the library to work in
1357+
VTR. The next step will clear all these changes, and they may be important
1358+
and need to be recreated.
1359+
1360+
3. Delete the subtree folder (the internal path) entirely and commit it to git.
1361+
The issue is that changing the external ref basically creates a new subtree,
1362+
so the regular way of updating the subtree does not work. You need to
1363+
completely wipe all of the code from the old subtree. NOTE: This will remove
1364+
all changes locally made to the subtree.
1365+
1366+
4. Run `./dev/external_subtrees.py --update $SUBTREE_NAME`. This will pull in
1367+
the most recent version of the subtree, squash the changes, and raise a
1368+
commit.
1369+
1370+
5. Recreate the local changes from step 2 above, such that the library builds
1371+
without issue; preferrably in a concise way such that the library can be
1372+
easily updated in the future.
1373+
13361374
## Adding a new Subtree
13371375

13381376
To add a new external subtree to VTR do the following:

dev/pylint_check.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
repo_path / "doc/_exts/rrgraphdomain/__init__.py",
6161
repo_path / "doc/_exts/sdcdomain/__init__.py",
6262
repo_path / "doc/_exts/archdomain/__init__.py",
63+
repo_path / "doc/_exts/constraintsdomain/__init__.py",
6364
repo_path / "vpr/scripts/compare_timing_reports.py",
6465
repo_path / "vpr/scripts/profile/util.py",
6566
repo_path / "vpr/scripts/profile/parse_and_plot_detailed.py",

dev/subtree_config.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
name="capnproto"
3434
internal_path="libs/EXTERNAL/capnproto"
3535
external_url="https://github.com/capnproto/capnproto.git"
36-
default_external_ref="v0.9.1"/>
36+
default_external_ref="v1.0.2"/>
3737
<subtree
3838
name="libinterchange"
3939
internal_path="libs/EXTERNAL/libinterchange"
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from sphinxcontrib.domaintools import custom_domain
2+
from sphinx.util.docfields import *
3+
4+
5+
def setup(app):
6+
app.add_domain(
7+
custom_domain(
8+
"VPRConstraintsDomain",
9+
name="vpr_constraints",
10+
label="Place and Route Constraints",
11+
elements=dict(
12+
tag=dict(
13+
objname="Attribute",
14+
indextemplate="pair: %s; Tag Attribute",
15+
fields=[
16+
GroupedField(
17+
"required_parameter", label="Required Attributes", names=["req_param"]
18+
),
19+
GroupedField(
20+
"optional_parameter", label="Optional Attributes", names=["opt_param"]
21+
),
22+
Field("required", label="Tag Required", names=["required"]),
23+
],
24+
),
25+
),
26+
)
27+
)

doc/src/api/vpr/contexts.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,7 @@ Structures
4343
.. doxygenstruct:: TimingContext
4444
:project: vpr
4545
:members:
46+
47+
.. doxygenstruct:: ServerContext
48+
:project: vpr
49+
:members:

doc/src/api/vpr/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ VPR API
1111
netlist
1212
route_tree
1313
rr_graph
14+
server

0 commit comments

Comments
 (0)