Skip to content

Commit c40f578

Browse files
authored
Merge branch 'master' into ipa_end_user_doc
2 parents 0157aa8 + a76e61b commit c40f578

File tree

399 files changed

+30764
-7584
lines changed

Some content is hidden

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

399 files changed

+30764
-7584
lines changed

.github/workflows/containers.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
steps:
1717

1818
- name: 🧰 Repository Checkout
19-
uses: actions/checkout@v3
19+
uses: actions/checkout@v4
2020
with:
2121
submodules: 'true'
2222

.github/workflows/labeler.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ jobs:
66
triage:
77
runs-on: ubuntu-latest
88
steps:
9-
- uses: actions/checkout@v3
9+
- uses: actions/checkout@v4
1010
- uses: actions/labeler@master
1111
with:
1212
repo-token: "${{ secrets.GITHUB_TOKEN }}"

.github/workflows/test.yml

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ jobs:
5151

5252
steps:
5353

54+
# TODO: This runnner is running on a self-hosted CPU. In order to upgrade
55+
# to v4, need to upgrade the machine to support node20.
5456
- uses: actions/checkout@v3
5557
with:
5658
submodules: 'true'
@@ -71,9 +73,15 @@ jobs:
7173
VTR_CMAKE_PARAMS: ${{ matrix.cmake }}
7274
NUM_CORES: ${{ matrix.cores }}
7375

74-
- uses: actions/upload-artifact@v3
76+
- name: Upload test results
77+
# We always want the test results to be uploaded, even when cancelled.
78+
# https://docs.github.com/en/actions/learn-github-actions/expressions#always
7579
if: ${{ always() }}
80+
# TODO: This runnner is running on a self-hosted CPU. In order to upgrade
81+
# to v4, need to upgrade the machine to support node20.
82+
uses: actions/upload-artifact@v3
7683
with:
84+
name: ${{matrix.test}}_test_results
7785
path: |
7886
**/results*.gz
7987
**/plot_*.svg
@@ -92,10 +100,10 @@ jobs:
92100
- { build_type: 'debug', verbose: '1' }
93101
steps:
94102

95-
- uses: actions/setup-python@v4
103+
- uses: actions/setup-python@v5
96104
with:
97105
python-version: 3.10.10
98-
- uses: actions/checkout@v3
106+
- uses: actions/checkout@v4
99107
with:
100108
submodules: 'true'
101109
- run: ./.github/scripts/install_dependencies.sh
@@ -122,10 +130,10 @@ jobs:
122130
name: 'F: ${{ matrix.name }}'
123131
steps:
124132

125-
- uses: actions/setup-python@v4
133+
- uses: actions/setup-python@v5
126134
with:
127135
python-version: 3.10.10
128-
- uses: actions/checkout@v3
136+
- uses: actions/checkout@v4
129137
- run: ./.github/scripts/install_dependencies.sh
130138

131139
- name: Test
@@ -137,10 +145,10 @@ jobs:
137145
runs-on: ubuntu-22.04
138146
steps:
139147

140-
- uses: actions/setup-python@v4
148+
- uses: actions/setup-python@v5
141149
with:
142150
python-version: 3.10.10
143-
- uses: actions/checkout@v3
151+
- uses: actions/checkout@v4
144152
with:
145153
submodules: 'true'
146154
- run: ./.github/scripts/install_dependencies.sh
@@ -156,10 +164,10 @@ jobs:
156164
runs-on: ubuntu-22.04
157165
steps:
158166

159-
- uses: actions/setup-python@v4
167+
- uses: actions/setup-python@v5
160168
with:
161169
python-version: 3.10.10
162-
- uses: actions/checkout@v3
170+
- uses: actions/checkout@v4
163171
with:
164172
submodules: 'true'
165173
- run: ./.github/scripts/install_dependencies.sh
@@ -236,10 +244,10 @@ jobs:
236244
name: 'R: ${{ matrix.name }}'
237245
steps:
238246

239-
- uses: actions/setup-python@v4
247+
- uses: actions/setup-python@v5
240248
with:
241249
python-version: 3.10.10
242-
- uses: actions/checkout@v3
250+
- uses: actions/checkout@v4
243251
with:
244252
submodules: 'true'
245253
- run: ./.github/scripts/install_dependencies.sh
@@ -255,7 +263,7 @@ jobs:
255263
./run_reg_test.py ${{ matrix.suite }} -show_failures -j2
256264
257265
- name: Upload regression run files
258-
uses: actions/upload-artifact@v3
266+
uses: actions/upload-artifact@v4
259267
with:
260268
name: ${{matrix.name}}_run_files
261269
path: |
@@ -266,7 +274,7 @@ jobs:
266274
vtr_flow/**/*.r
267275
268276
- name: Upload regression results
269-
uses: actions/upload-artifact@v3
277+
uses: actions/upload-artifact@v4
270278
with:
271279
name: ${{matrix.name}}_results
272280
path: |
@@ -291,10 +299,10 @@ jobs:
291299
name: 'S: ${{ matrix.name }}'
292300
steps:
293301

294-
- uses: actions/setup-python@v4
302+
- uses: actions/setup-python@v5
295303
with:
296304
python-version: 3.10.10
297-
- uses: actions/checkout@v3
305+
- uses: actions/checkout@v4
298306
with:
299307
submodules: 'true'
300308

@@ -325,10 +333,10 @@ jobs:
325333
runs-on: ubuntu-22.04
326334
steps:
327335

328-
- uses: actions/setup-python@v4
336+
- uses: actions/setup-python@v5
329337
with:
330338
python-version: 3.10.10
331-
- uses: actions/checkout@v3
339+
- uses: actions/checkout@v4
332340
with:
333341
submodules: 'true'
334342
- run: ./.github/scripts/install_dependencies.sh
@@ -350,10 +358,10 @@ jobs:
350358
runs-on: ubuntu-22.04
351359
steps:
352360

353-
- uses: actions/setup-python@v4
361+
- uses: actions/setup-python@v5
354362
with:
355363
python-version: 3.10.10
356-
- uses: actions/checkout@v3
364+
- uses: actions/checkout@v4
357365
with:
358366
submodules: 'true'
359367
- run: ./.github/scripts/install_dependencies.sh
@@ -376,10 +384,10 @@ jobs:
376384
runs-on: ubuntu-22.04
377385
steps:
378386

379-
- uses: actions/setup-python@v4
387+
- uses: actions/setup-python@v5
380388
with:
381389
python-version: 3.10.10
382-
- uses: actions/checkout@v3
390+
- uses: actions/checkout@v4
383391
with:
384392
submodules: 'true'
385393
- run: ./.github/scripts/install_dependencies.sh
@@ -411,10 +419,10 @@ jobs:
411419
name: 'B: ${{ matrix.name }}'
412420
steps:
413421

414-
- uses: actions/setup-python@v4
422+
- uses: actions/setup-python@v5
415423
with:
416424
python-version: 3.10.10
417-
- uses: actions/checkout@v3
425+
- uses: actions/checkout@v4
418426
with:
419427
submodules: 'true'
420428
- run: ./.github/scripts/install_dependencies.sh
@@ -447,10 +455,10 @@ jobs:
447455
runs-on: ubuntu-22.04
448456
steps:
449457

450-
- uses: actions/setup-python@v4
458+
- uses: actions/setup-python@v5
451459
with:
452460
python-version: 3.10.10
453-
- uses: actions/checkout@v3
461+
- uses: actions/checkout@v4
454462
with:
455463
submodules: 'true'
456464
- run: ./.github/scripts/install_dependencies.sh

.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

README.developers.md

Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1330,7 +1330,7 @@ Instead changes should be made in the relevant up-stream repository, and then sy
13301330

13311331
For example to update the `libtatum` subtree:
13321332
```shell
1333-
./dev/external_subtrees.py --update libtatum
1333+
./dev/external_subtrees.py --update libtatum -m "commit message describing why component is being updated"
13341334
```
13351335

13361336
## Adding a new Subtree
@@ -1372,8 +1372,66 @@ To add a new external subtree to VTR do the following:
13721372
This will create two commits to the repository.
13731373
The first will squash all the upstream changes, the second will merge those changes into the current branch.
13741374

1375+
## Pushing VTR Changes Back to Upstream Subtree
13751376

1376-
## Subtree Rational
1377+
If there are changes in the VTR repo in a subtree that should be merged back
1378+
into the source repo of the subtree, the changes can be pushed back manually.
1379+
1380+
The instructions above used a Python script to simplify updating subtrees in
1381+
VTR. This is fine for pulling in changes from a remote repo; however, it is not
1382+
good for pushing changes back. This is because these changes need to be pushed
1383+
somewhere, and it is not a good idea to just push it back to the master branch
1384+
directly. Instead, it should be pushed to a temporary branch. Then a PR can be
1385+
made to bring the changes into the target repo.
1386+
1387+
To push changes VTR made to a subtree do the following:
1388+
1389+
1. Create a fork of the target repo. Optionally you can create a branch to be
1390+
the target of the push, or you can just use master.
1391+
1392+
2. Run:
1393+
```shell
1394+
cd $VTR_ROOT
1395+
git subtree push --prefix=<subtree_path> <forked_repo_url> <branch_name>
1396+
```
1397+
The prefix is the internal path to the subtree, as written in
1398+
`dev/subtree_config.xml`.
1399+
1400+
3. Create a PR from your forked repo to the main repo, sharing the amazing
1401+
changes with the world.
1402+
1403+
## Tutorial: Syncing Tatum with VTR
1404+
1405+
This tutorial will show you how to synchronize `libtatum` in VTR and
1406+
[Tatum](https://github.com/verilog-to-routing/tatum); however, similar steps
1407+
can be done to synchronize any subtree in VTR.
1408+
1409+
First, we will pull in (update) any changes in Tatum that are not in VTR yet.
1410+
On a clean branch (based off master), execute the following:
1411+
```shell
1412+
cd $VTR_ROOT
1413+
./dev/external_subtrees.py --update libtatum -m "Pulling in changes from Tatum."
1414+
```
1415+
If the output in the terminal says `Subtree is already at commit <commit_hash>`,
1416+
then there is nothing to pull in. If it says changes were pulled in, a commit
1417+
would have already been made for you. Push these changes to your branch and
1418+
raise a PR on VTR to merge these changes in.
1419+
1420+
After pulling in all the changes from Tatum, without changing branches, we will
1421+
push our VTR changes to Tatum. This is a bit more complicated since, as stated
1422+
in the section on pushing to subtrees, the changes cannot just be pushed to
1423+
master.
1424+
1425+
Create a fork of Tatum and make sure the master branch of that fork is
1426+
synchronized with Tatum's master branch. Then execute the following:
1427+
```shell
1428+
cd $VTR_ROOT
1429+
git subtree push --prefix=libs/EXTERNAL/libtatum <forked_repo_url> master
1430+
```
1431+
After that command finishes, raise a PR from your forked repo onto the Tatum
1432+
repo for the changes to be reviewed and merged in.
1433+
1434+
## Subtree Rationale
13771435
13781436
VTR uses subtrees to allow easy tracking of upstream dependencies.
13791437
@@ -1469,4 +1527,5 @@ The following outlines the procedure to following when making an official VTR re
14691527
* GitHub will automatically create a release based on the tag
14701528
* Add the new change log entry to the [GitHub release description](https://github.com/verilog-to-routing/vtr-verilog-to-routing/releases)
14711529
* Update the [ReadTheDocs configuration](https://readthedocs.org/projects/vtr/versions/) to build and serve documentation for the relevant tag (e.g. `v8.0.0`)
1472-
* Send a release announcement email to the [vtr-announce](mailto:[email protected]) mailing list (make sure to thank all contributors!)
1530+
* Send a release announcement email to the [vtr-announce](mailto:[email protected]) mailing list (make sure to thank all contributors!)
1531+

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/arch/reference.rst

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1955,7 +1955,7 @@ Wire Segments
19551955
The content within the ``<segmentlist>`` tag consists of a group of ``<segment>`` tags.
19561956
The ``<segment>`` tag and its contents are described below.
19571957
1958-
.. arch:tag:: <segment axis="{x|y}" name="unique_name" length="int" type="{bidir|unidir}" freq="float" Rmetal="float" Cmetal="float">content</segment>
1958+
.. arch:tag:: <segment axis="{x|y}" name="unique_name" length="int" type="{bidir|unidir}" res_type="{GCLK|GENERAL}" freq="float" Rmetal="float" Cmetal="float">content</segment>
19591959
19601960
19611961
:opt_param axis:
@@ -1975,6 +1975,10 @@ The ``<segment>`` tag and its contents are described below.
19751975
19761976
.. note:: ``longline`` is only supported on with ``bidir`` routing
19771977
1978+
:opt_param res_type:
1979+
Specifies whether the segment belongs to the general or a clock routing network. If this tag is not specified, the resource type for
1980+
the segment is considered to be GENERAL (i.e. regular routing).
1981+
19781982
:req_param freq:
19791983
The supply of routing tracks composed of this type of segment.
19801984
VPR automatically determines the percentage of tracks for each segment type by taking the frequency for the type specified and dividing with the sum of all frequencies.
@@ -2026,15 +2030,15 @@ The ``<segment>`` tag and its contents are described below.
20262030
20272031
.. arch:tag:: <mux name="string"/>
20282032
2029-
:req_param name: Name of the mux switch type used to drive this type of segment.
2033+
:req_param name: Name of the mux switch type used to drive this type of segment by default, from both block outputs and other wires. This information is used during rr-graph construction, and a custom switch block can override this switch type for specific connections if desired.
20302034
20312035
.. note:: For UNIDIRECTIONAL only.
20322036
20332037
Tag must be included and ``name`` must be the same as the name you give in ``<switch type="mux" name="...``
20342038
20352039
.. arch:tag:: <wire_switch name="string"/>
20362040
2037-
:req_param name: Name of the switch type used by other wires to drive this type of segment.
2041+
:req_param name: Name of the switch type used by other wires to drive this type of segment by default. This information is used during rr-graph construction, and a custom switch block can override this switch type for specific connections if desired.
20382042
20392043
.. note:: For BIDIRECTIONAL only.
20402044
@@ -2092,6 +2096,7 @@ Specifing a Clock Architecture
20922096

20932097
The element ``<clocknetworks>`` contains three sub-elements that collectively describe the clock architecture: the wiring parameters ``<metal_layers>``, the clock distribution ``<clock_network>``, and the clock connectivity ``<clock_routing>``.
20942098

2099+
.. note:: The clock network architecture defined in this structure is assigned the fixed default name ``"clock_network"``. When the user wants to specify a net to be routed through the defined clock architecture using a :ref:`global routing constraints file <global_routing_constraints>`, the network name attribute in the constraint tag must be set to ``"clock_network"``.
20952100

20962101
.. _clock_arch_example:
20972102

doc/src/conf.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
"sphinx_markdown_tables",
4646
"sdcdomain",
4747
"archdomain",
48+
"constraintsdomain",
4849
"rrgraphdomain",
4950
"myst_parser",
5051
"sphinx.ext.autodoc",

0 commit comments

Comments
 (0)