You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.developers.md
+13-1
Original file line number
Diff line number
Diff line change
@@ -301,17 +301,29 @@ For the very large runs, you can submit your runs on a large cluster. A template
301
301
a Slurm-managed cluster can be found under vtr_flow/tasks/slurm/
302
302
303
303
## Continuous integration (CI)
304
+
305
+
### Automatic (Github runner) CI tests
306
+
304
307
For the following tests, you can use remote servers instead of running them locally. Once the changes are pushed into the
305
308
remote repository, or a PR is created, the [Test Workflow](https://github.com/verilog-to-routing/vtr-verilog-to-routing/blob/master/.github/workflows/test.yml)
306
309
will be triggered. Many tests are included in the workflow, including:
instructions on how to gather QoR results of CI runs can be found [here](#example-extracting-qor-data-from-ci-runs).
314
317
318
+
### Manual Nightly Tests
319
+
320
+
You can use remote servers to run the [vtr_reg_nightly_test1-7](#vtr_reg_nightly_test1-n) tests. These tests are triggered manually by going to the GitHub Actions menu, selecting the NightlyTestManual workflow and selecting run workflow on the branch you want to test. Once you do that, the [Nightly Test Manual Workflow](https://github.com/verilog-to-routing/vtr-verilog-to-routing/blob/master/.github/workflows/nightly_test_manual.yml) will be triggered. This run will take approximately 15 hours to complete and will cancel all other workflow runs for the same branch.
<imgsrc="https://raw.githubusercontent.com/verilog-to-routing/vtr-verilog-to-routing/master/doc/src/dev/run_ci_manual/select_workflow.png"alt="Select the NightlyTestManual workflow"width="30%"/>
325
+
<imgsrc="https://raw.githubusercontent.com/verilog-to-routing/vtr-verilog-to-routing/master/doc/src/dev/run_ci_manual/run_workflow.png"alt="Run the Workflow"width="30%"/>
326
+
315
327
#### Re-run CI Tests
316
328
In the case that you want to re-run the CI tests, due to certain issues such as infrastructure failure,
317
329
go to the "Action" tab and find your workflow under Test Workflow.
Copy file name to clipboardExpand all lines: doc/src/vpr/command_line_usage.rst
+37-1
Original file line number
Diff line number
Diff line change
@@ -89,6 +89,8 @@ VPR runs all stages of (pack, place, route, and analysis) if none of :option:`--
89
89
as such, the :option:`--pack` and :option:`--place` options should not be set when this option is set.
90
90
This flow requires that the device has a fixed size and some of the primitive blocks are fixed somewhere on the device grid.
91
91
92
+
.. seealso:: See :ref:`analytical_placement_options` for the options for this flow.
93
+
92
94
.. seealso:: See :ref:`Fixed FPGA Grid Layout <fixed_arch_grid_layout>` and :option:`--device` for how to fix the device size.
93
95
94
96
.. seealso:: See :ref:`VPR Placement Constraints <placement_constraints>` for how to fix primitive blocks in a design to the device grid.
@@ -1163,6 +1165,40 @@ The following options are only used when FPGA device and netlist contain a NoC r
1163
1165
1164
1166
**Default:** ``vpr_noc_placement_output.txt``
1165
1167
1168
+
1169
+
.. _analytical_placement_options:
1170
+
1171
+
Analytical Placement Options
1172
+
^^^^^^^^^^^^^^^
1173
+
Instead of Packing atoms into clusters and placing the clusters into valid tile
1174
+
sites on the FPGA, Analytical Placement uses analytical techniques to place atoms
1175
+
on the FPGA device by relaxing the constraints on where they can be placed. This
1176
+
atom-level placement is then legalized into a clustered placement and passed into
1177
+
the router in VPR.
1178
+
1179
+
Analytical Placement is generally split into three stages:
1180
+
1181
+
* Global Placement: Uses analytical techniques to place atoms on the FPGA grid.
1182
+
1183
+
* Full Legalization: Legalizes a flat (atom) placement into legal clusters placed on the FPGA grid.
1184
+
1185
+
* Detailed Placement: While keeping the clusters legal, performs optimizations on the clustered placement.
1186
+
1187
+
.. warning::
1188
+
1189
+
Analytical Placement is experimental and under active development.
1190
+
1191
+
.. option:: --ap_full_legalizer{naive|appack}
1192
+
1193
+
Controls which Full Legalizer to use in the AP Flow.
1194
+
1195
+
* ``naive`` Use a Naive Full Legalizer which will try to create clusters exactly where their atoms are placed.
1196
+
1197
+
* ``appack`` Use APPack, which takes the Packer in VPR and uses the flat atom placement to create better clusters.
1198
+
1199
+
**Default:** ``appack``
1200
+
1201
+
1166
1202
.. _router_options:
1167
1203
1168
1204
Router Options
@@ -1179,7 +1215,7 @@ VPR uses a negotiated congestion algorithm (based on Pathfinder) to perform rout
1179
1215
This means that during the routing stage, all nets, both intra- and inter-cluster, are routed directly from one primitive pin to another primitive pin.
1180
1216
This increases routing time but can improve routing quality by re-arranging LUT inputs and exposing additional optimization opportunities in architectures with local intra-cluster routing that is not a full crossbar.
Copy file name to clipboardExpand all lines: libs/libarchfpga/src/device_grid.h
+6-2
Original file line number
Diff line number
Diff line change
@@ -19,8 +19,12 @@ struct t_grid_tile {
19
19
const t_metadata_dict* meta = nullptr;
20
20
};
21
21
22
-
///@brief DeviceGrid represents the FPGA fabric. It is used to get information about different layers and tiles.
23
-
// TODO: All of the function 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.
22
+
23
+
//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.
24
+
/**
25
+
* @class DeviceGrid
26
+
* @brief Represents the FPGA fabric. It is used to get information about different layers and tiles.
Copy file name to clipboardExpand all lines: requirements.txt
+1-1
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ numpy
6
6
scipy
7
7
# Python linter and formatter
8
8
click==8.0.2# Our version of black needs an older version of click (https://stackoverflow.com/questions/71673404/importerror-cannot-import-name-unicodefun-from-click)
* @brief Enumerations used by the Analytical Placement Flow.
6
+
*/
7
+
8
+
#pragma once
9
+
10
+
/**
11
+
* @brief The type of a Full Legalizer.
12
+
*
13
+
* The Analytical Placement flow may implement different Full Legalizers. This
14
+
* enum can select between these different Full Legalizers.
15
+
*/
16
+
enumclasse_ap_full_legalizer {
17
+
Naive, ///< The Naive Full Legalizer, which clusters atoms placed in the same tile and tries to place them in that tile according to the flat placement.
18
+
APPack///< The APPack Full Legalizer, which uses the flat placement to improve the Packer and Placer.
0 commit comments