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: doc/src/arch/reference.rst
+109-1Lines changed: 109 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2485,7 +2485,7 @@ The full format is documented below.
2485
2485
Defined under the ``<switchfuncs>`` XML node, one or more ``<func...>`` entries is used to specify permutation functions that connect different sides of a switch block.
Specifies how many connections should be created between the from_type/from_switchpoint set and the to_type/to_switchpoint set.
@@ -2592,6 +2592,10 @@ The full format is documented below.
2592
2592
By using a zero-delay and zero-resistance switch one can also create T and L shaped wire segments.
2593
2593
2594
2594
**Default:** If no override is specified, the usual wire_switch that drives the ``to`` wire will be used.
2595
+
2596
+
:opt_param side:
2597
+
Specifies the sides that connections are gathered from or scattered to. Valid sides are right, left, top and bottom and are represented by characters 'r', 'l', 't' and 'b'.
2598
+
For example, to select connections from right, left and bottom set this attribute to "rlb". Note that this attribute is used only for :ref:`scatter_gather_patterns` and does not do anything for other usages of this tag.
@@ -2634,6 +2638,110 @@ The full format is documented below.
2634
2638
The 'to' set is all L4 switchpoint 0's.
2635
2639
Note that since different switchpoints are selected from different segment types it is not possible to specify this without using ``<from>`` sub-tags.
2636
2640
2641
+
.. _scatter_gather_patterns:
2642
+
2643
+
Scatter-Gather Patterns
2644
+
---------------------
2645
+
2646
+
The content under the ``<scatter_gather_list>`` tag consists of one or more ``<sg_pattern>`` tags that are used to specify a scatter-gather pattern.
2647
+
Scatter-gather patterns can be used to specify multi-level switch patterns, rather than the direct wire-to-wire switch patterns of conventional switch blocks.
2648
+
These additional switches, wires and/or muxes will be added to the architecture, augmenting wires created using segment specifications and swiches created using switch box specifications.
2649
+
The number of any additional wires or muxes created by scatter-gather specifications will not vary with routing channel width.
Overview of how scatter-gather patterns work. First, connections from a switchblock location are selected according to the specification.
2654
+
These selected connection are then muxed and passed through the scatter-gather node, which is typically a wire segment. The scatter-gather node then fans out or scatters in another switchblock location.
2655
+
2656
+
.. note:: Scatter-Gather patterns are work in progress and experimental. Currently, VPR does not support this specification and using this tag would not result in any modifications to the RR-Graph.
2657
+
2658
+
When instantiated, a scatter-gather pattern gathers connections from a switchblock and passes the connection through a multiplexer and the scatter-gather node which is typically a wire segment, then scatters or fans out somewhere else in the device. These patterns can be used to define 3D switchblocks. An example is shown below:
2659
+
2660
+
.. code-block:: xml
2661
+
2662
+
<scatter_gather_list>
2663
+
<sg_pattern name="name" type="unidir">
2664
+
<gather>
2665
+
<!-- Gather 30 connections from the 0, 4, 8 or 12 position of L16 wires of all four sides of a switchblock location -->
<!-- Link going up one layer, using the '3D_SB_MUX' multiplexer to gather connections from the bottom layer and using the 'TSV' node/wire to move up one layer -->
'unidir': Added connections are unidirectional; all the gather connections are combined in a mux that then drives the scatter-gather node which in turn drives the wires specified in the scatter specification.
2698
+
2699
+
'bidir': The gather and scatter connections are mirrored; the same scatter pattern is implemented at each end of the scatter-gather pattern. This implies the two muxes driving the scatter-gather node can have their outputs tri-stated.
2700
+
2701
+
.. arch:tag:: <gather>
2702
+
2703
+
Contains a <wireconn> tag specifying how the fan-in or gather connections are selected. See ``wireconn`` for the relevant specification.
2704
+
This <wireconn> tag supports an additioinal 'side' attribute which selects the sides that connections are gathered from (e.g. any of the top, bottom, left and right).
2705
+
2706
+
.. arch:tag:: <scatter>
2707
+
2708
+
Contains a <wireconn> tag specifying how the fan-out or scatter connections are selected. See ``wireconn`` for the relevant specification.
2709
+
This <wireconn> tag supports an additioinal 'side' attribute which selects the sides that connections are scattered to (e.g. any of the top, bottom, left and right).
2710
+
2711
+
.. arch:tag:: <sg_link_list>
2712
+
2713
+
Contains one or more <sg_link> tags specifying how the pattern of how connections move from the gather location to the scatter location i.e. defines the used mux and scatter-gather node.
2714
+
2715
+
.. note:: <sg_link> tags are not instantiations of the pattern and would not result in any changes to the device. instead, the <sg_location> tag instantiates the pattern and selects one of the <sg_link> tags to be used for the instantiation.
:req_param mux: Name of the multiplexer used to gather connections
2721
+
:req_param seg_type: Name of the segment/wire used to move through the device to the scatter location (i.e. the type of the scatter-gather node)
2722
+
2723
+
:opt_param x_offset: Offset of the scatter relative to the gather in the x-axis
2724
+
:opt_param y_offset: Offset of the scatter relative to the gather in the y-axis
2725
+
:opt_param z_offset: Offset of the scatter relative to the gather in the z-axis
2726
+
2727
+
.. note:: One and only one of the offset fields for the sg_link tag should be set. The magnitude of the offset will generally be chosen by the architecture file creator to match the length of the sg_link segment type.
Controls which Partial Legalizer the Global Placer will use in the AP Flow.
1267
1272
The Partial Legalizer legalizes a placement generated by an Analytical Solver.
1268
1273
It is used within the Global Placer to guide the solver to a more legal
1269
1274
solution.
1270
1275
1276
+
* ``none`` Does not partially legalize the global placement solution and just
1277
+
passes the last solved solution through. This partial legalizer is only
1278
+
used for testing and debugging and should not be part of any real AP flow.
1279
+
1271
1280
* ``bipartitioning`` Creates minimum windows around over-dense regions of
1272
1281
the device bi-partitions the atoms in these windows such that the region
1273
1282
is no longer over-dense and the atoms are in tiles that they can be placed
@@ -1882,6 +1891,9 @@ The following options are only valid when the router is in timing-driven mode (t
1882
1891
1883
1892
* ``classic``: The classic VPR lookahead
1884
1893
* ``map``: A more advanced lookahead which accounts for diverse wire types and their connectivity
1894
+
* ``compressed_map``: The algorithm is similar to map lookahead with the exception of sparse sampling of the chip to reduce the run-time to build the router lookahead and also its memory footprint.
1895
+
* ``extended_map``: A more advanced and extended lookahead which accounts for a more exhaustive node sampling method.
1896
+
* ``simple``: A purely distance-based lookahead loaded from an external file using :option:`--read_router_lookahead`. This lookahead returns a cost estimate for channel nodes by querying a lookup table, while for any other node type it returns zero.
0 commit comments