Skip to content

Commit 284699c

Browse files
Merge branch 'master' into temp_place_macro_static
2 parents ea74465 + b5d01dc commit 284699c

File tree

74 files changed

+4944
-2298
lines changed

Some content is hidden

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

74 files changed

+4944
-2298
lines changed

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,8 @@ tags
155155
cmake-build-debug
156156
cmake-build-release
157157
/.metadata/
158+
159+
#
160+
# Clangd
161+
#
162+
compile_commands.json

doc/src/api/vpr/route_tree.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,10 @@ RouteTreeNode
2020
.. doxygenclass:: RouteTreeNode
2121
:project: vpr
2222
:members:
23+
24+
RTExploredNode
25+
-------------
26+
27+
.. doxygenclass:: RTExploredNode
28+
:project: vpr
29+
:members:

doc/src/api/vprinternals/router_heap.rst

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,13 @@
22
Router Heap
33
==============
44

5-
t_heap
6-
----------
7-
.. doxygenstruct:: t_heap
8-
:project: vpr
9-
:members:
10-
115
HeapInterface
126
----------
137
.. doxygenclass:: HeapInterface
148
:project: vpr
159
:members:
1610

17-
HeapStorage
18-
----------
19-
.. doxygenclass:: HeapStorage
20-
:project: vpr
21-
:members:
22-
23-
KAryHeap
11+
DAryHeap
2412
----------
25-
.. doxygenclass:: KAryHeap
13+
.. doxygenclass:: DAryHeap
2614
:project: vpr
27-
28-
FourAryHeap
29-
----------
30-
.. doxygenclass:: FourAryHeap
31-
:project: vpr

doc/src/vpr/command_line_usage.rst

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -200,12 +200,14 @@ General Options
200200

201201
.. option:: --device <string>
202202

203-
Specifies which device layout/floorplan to use from the architecture file.
203+
Specifies which device layout/floorplan to use from the architecture file. Valid values are:
204204

205-
``auto`` uses the smallest device satisfying the circuit's resource requirements.
206-
Other values are assumed to be the names of device layouts defined in the :ref:`arch_grid_layout` section of the architecture file.
205+
* ``auto`` VPR uses the smallest device satisfying the circuit's resource requirements. This option will use the ``<auto_layout>`` tag if it is present in the architecture file in order to construct the smallest FPGA that has sufficient resources to fit the design. If the ``<auto_layout>`` tag is not present, the ``auto`` option chooses the smallest device amongst all the architecture file's ``<fixed_layout>`` specifications into which the design can be packed.
206+
* Any string matching ``name`` attribute of a device layout defined with a ``<fixed_layout>`` tag in the :ref:`arch_grid_layout` section of the architecture file.
207207

208-
.. note:: If the architecture contains both ``<auto_layout>`` and ``<fixed_layout>`` specifications, specifying an ``auto`` device will use the ``<auto_layout>``.
208+
If the value specified is neither ``auto`` nor matches the ``name`` attribute value of a ``<fixed_layout>`` tag, VPR issues an error.
209+
210+
.. note:: If the only layout in the architecture file is a single device specified using ``<fixed_layout>``, it is recommended to always specify the ``--device`` option; this prevents the value ``--device auto`` from interfering with operations supported only for ``<fixed_layout>`` grids.
209211

210212
**Default:** ``auto``
211213

@@ -1394,15 +1396,17 @@ The following options are only valid when the router is in timing-driven mode (t
13941396

13951397
**Default:** ``safe``
13961398

1397-
.. option:: --routing_budgets_algorithm { disable | minimax | scale_delay }
1399+
.. option:: --routing_budgets_algorithm { disable | minimax | yoyo | scale_delay }
13981400

13991401
.. warning:: Experimental
14001402

14011403
Controls how the routing budgets are created. Routing budgets are used to guid VPR's routing algorithm to consider both short path and long path timing constraints :cite:`RCV_algorithm`.
14021404

14031405
``disable`` is used to disable the budget feature. This uses the default VPR and ignores hold time constraints.
14041406

1405-
``minimax`` sets the minimum and maximum budgets by distributing the long path and short path slacks depending on the the current delay values. This uses the routing cost valleys and Minimax-PERT algorithm :cite:`minimax_pert,RCV_algorithm`.
1407+
``minimax`` sets the minimum and maximum budgets by distributing the long path and short path slacks depending on the the current delay values. This uses the Minimax-PERT algorithm :cite:`minimax_pert`.
1408+
1409+
``yoyo`` allocates budgets using minimax algorithm (as above), and enables hold slack resolution in the router using the Routing Cost Valleys (RCV) algorithm :cite:`RCV_algorithm`.
14061410

14071411
``scale_delay`` has the minimum budgets set to 0 and the maximum budgets is set to the delay of a net scaled by the pin criticality (net delay/pin criticality).
14081412

@@ -1879,6 +1883,8 @@ The following options are used to enable server mode in VPR.
18791883

18801884
**Default:** ``60555``
18811885

1886+
.. seealso:: :ref:`interactive_path_analysis_client`
1887+
18821888
Command-line Auto Completion
18831889
----------------------------
18841890

doc/src/vtr/server_mode/index.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,19 @@ Draw selected critical path elements example
202202
203203
.. note:: If status is not 1, the field ***DATA*** contains error string.
204204

205+
`The interactive path analysis (IPA) client <https://github.com/w0lek/IPAClient>`_ is useful for viewing timing paths, and to test VPR's server mode functionality.
205206

207+
.. _interactive_path_analysis_client:
208+
209+
Interactive Path Analysis Client (IPA)
210+
====================================================
211+
212+
The interactive path analysis (IPA) client connects to VPR's server mode and allows interactive visualization of timing paths and their placement and routing. This client application is called **IPAClient** and can also be used to test VPR's server mode functionality. It is available in a public Git repository:
213+
`https://github.com/w0lek/IPAClient <https://github.com/w0lek/IPAClient>`_.
214+
215+
This UI application is designed to generate requests for VPR in server mode and display the responses in a readable format, acting as a result viewer.
216+
217+
More details on how to build and use **IPAClient** can be found in the `README <https://github.com/w0lek/IPAClient/blob/main/README.md>`_.
206218

207219

208220

libs/libarchfpga/src/physical_types.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1382,7 +1382,7 @@ class t_pb_graph_pin {
13821382
float tco_max = std::numeric_limits<float>::quiet_NaN(); /* For sequential logic elements the maximum clock to output time */
13831383
t_pb_graph_pin* associated_clock_pin = nullptr; /* For sequential elements, the associated clock */
13841384

1385-
/* This member is used when flat-routing and has_choking_spot are enabled.
1385+
/* This member is used when flat-routing and router_opt_choke_points are enabled.
13861386
* It is used to identify choke points.
13871387
* This is only valid for IPINs, and it only contains the pins that are reachable to the pin by a forwarding path.
13881388
* It doesn't take into account feed-back connection.

utils/route_diag/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ static void do_one_route(const Netlist<>& net_list,
114114
is_flat);
115115
enable_router_debug(router_opts, ParentNetId(), sink_node, 1, &router);
116116
bool found_path;
117-
t_heap cheapest;
117+
RTExploredNode cheapest;
118118
ConnectionParameters conn_params(ParentNetId::INVALID(),
119119
-1,
120120
false,

vpr/src/base/SetupVPR.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ void SetupVPR(const t_options* options,
317317
vtr::ScopedStartFinishTimer timer("Allocate intra-cluster resources");
318318
// The following two functions should be called when the data structured related to t_pb_graph_node, t_pb_type,
319319
// and t_pb_graph_edge are initialized
320-
alloc_and_load_intra_cluster_resources(routerOpts->has_choking_spot);
320+
alloc_and_load_intra_cluster_resources(routerOpts->has_choke_point);
321321
add_intra_tile_switches();
322322
}
323323

@@ -508,7 +508,7 @@ static void SetupRouterOpts(const t_options& Options, t_router_opts* RouterOpts)
508508
RouterOpts->max_logged_overused_rr_nodes = Options.max_logged_overused_rr_nodes;
509509
RouterOpts->generate_rr_node_overuse_report = Options.generate_rr_node_overuse_report;
510510
RouterOpts->flat_routing = Options.flat_routing;
511-
RouterOpts->has_choking_spot = Options.has_choking_spot;
511+
RouterOpts->has_choke_point = Options.router_opt_choke_points;
512512
RouterOpts->custom_3d_sb_fanin_fanout = Options.custom_3d_sb_fanin_fanout;
513513
RouterOpts->with_timing_analysis = Options.timing_analysis;
514514
}

vpr/src/base/ShowSetup.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -255,11 +255,11 @@ static void ShowRouterOpts(const t_router_opts& RouterOpts) {
255255
VTR_LOG("false\n");
256256
}
257257

258-
VTR_LOG("RouterOpts.has_choking_spot: ");
259-
if (RouterOpts.has_choking_spot) {
260-
VTR_LOG("true\n");
258+
VTR_LOG("RouterOpts.choke_points: ");
259+
if (RouterOpts.has_choke_point) {
260+
VTR_LOG("on\n");
261261
} else {
262-
VTR_LOG("false\n");
262+
VTR_LOG("off\n");
263263
}
264264

265265
VTR_ASSERT(GLOBAL == RouterOpts.route_type || DETAILED == RouterOpts.route_type);
@@ -468,9 +468,6 @@ static void ShowRouterOpts(const t_router_opts& RouterOpts) {
468468
case e_heap_type::FOUR_ARY_HEAP:
469469
VTR_LOG("FOUR_ARY_HEAP\n");
470470
break;
471-
case e_heap_type::BUCKET_HEAP_APPROXIMATION:
472-
VTR_LOG("BUCKET_HEAP_APPROXIMATION\n");
473-
break;
474471
default:
475472
VPR_FATAL_ERROR(VPR_ERROR_UNKNOWN, "Unknown router_heap\n");
476473
}

vpr/src/base/place_and_route.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ int binary_search_place_and_route(const Netlist<>& placement_net_list,
395395

396396
init_route_structs(router_net_list,
397397
router_opts.bb_factor,
398-
router_opts.has_choking_spot,
398+
router_opts.has_choke_point,
399399
is_flat);
400400

401401
restore_routing(best_routing,

0 commit comments

Comments
 (0)