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.
1276
1276
The Partial Legalizer legalizes a placement generated by an Analytical Solver.
1277
1277
It is used within the Global Placer to guide the solver to a more legal
1278
1278
solution.
1279
1279
1280
+
* ``none`` Does not partially legalize the global placement solution and just
1281
+
passes the last solved solution through. This partial legalizer is only
1282
+
used for testing and debugging and should not be part of any real AP flow.
1283
+
1280
1284
* ``bipartitioning`` Creates minimum windows around over-dense regions of
1281
1285
the device bi-partitions the atoms in these windows such that the region
1282
1286
is no longer over-dense and the atoms are in tiles that they can be placed
@@ -1897,6 +1901,9 @@ The following options are only valid when the router is in timing-driven mode (t
1897
1901
1898
1902
* ``classic``: The classic VPR lookahead
1899
1903
* ``map``: A more advanced lookahead which accounts for diverse wire types and their connectivity
1904
+
* ``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.
1905
+
* ``extended_map``: A more advanced and extended lookahead which accounts for a more exhaustive node sampling method.
1906
+
* ``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.
Copy file name to clipboardExpand all lines: doc/src/vpr/graphics.rst
+61-25Lines changed: 61 additions & 25 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -67,27 +67,36 @@ If the **Placement Macros** drop down is set, any placement macros (e.g. carry c
67
67
68
68
Placement with macros (carry chains) highlighted
69
69
70
-
Visualizing Netlist Connectivity
71
-
--------------------------------
72
-
The **Toggle Nets** drop-down list under the **Net Settings** tab toggles the nets in the circuit to be visible/invisible. Options include **Cluster Nets** and **Primitive Nets**.
70
+
Visualizing Nets
71
+
----------------
72
+
To visualize nets, first enable the **Display Nets** switch under the **Net** Tab.
73
+
74
+
The user can choose between drawing nets as **Flylines** (direct connections between sources and sinks) or as **Routing** (the actual routed path of the net).
75
+
Only the **Flylines** option is available during placement, as routing has not yet been performed.
76
+
77
+
The Inter-Cluster Nets and Intra-Cluster Nets options allow the user to choose whether to visualize nets between clbs or within a clb, respectively. The Intra-Cluster Routed Nets option is currently only available when **flat routing is enabled**.
73
78
74
79
.. figure:: ../Images/Net_Settings.png
75
80
:align:center
76
-
:height:200
77
81
78
-
Toggle Nets drop-down under Net Settings tab
82
+
Net Tab
79
83
80
-
When a placement is being displayed, routing information is not yet known so nets are simply drawn as a “star;” that is, a straight line is drawn from the net source to each of its sinks.
81
-
Click on any clb in the display, and it will be highlighted in green, while its fanin and fanout are highlighted in blue and red, respectively.
82
-
Once a circuit has been routed the true path of each net will be shown.
84
+
If routing is shown, clicking on a pin or channel wire will highlight the whole net in magenta.
85
+
Multiple nets can be highlighted by pressing ctrl + mouse click.
If the nets routing are shown, click on a clb or pad to highlight its fanins and fanouts, or click on a pin or channel wire to highlight a whole net in magenta.
90
-
Multiple nets can be highlighted by pressing ctrl + mouse click.
92
+
When the **Highlight Block Fan-in and Fan-out** option is enabled, clicking on an internal block will draw its fan-in, fan-out, and internal flylines in blue, red, and yellow, respectively.
93
+
94
+
.. figure:: ../Images/highlight_flylines.png
95
+
:align:center
96
+
97
+
Highlight Block Fan-in and Fan-out Flylines
98
+
99
+
Clicking on a clb (not the internal physical blocks) will also highlight all the fan-in and fan-out routed nets in blue and red, respectively.
91
100
92
101
Visualizing the Critical Path
93
102
-----------------------------
@@ -113,33 +122,60 @@ The **Crit. Path** drop-down will toggle through the various visualizations:
113
122
Visualizing Routing Architecture
114
123
--------------------------------
115
124
116
-
When a routing is on screen, the **Routing Options** tab provides various options to gain more visual information.
125
+
During the route stage, the **Route** tab provides various options to visualize router resources and statistics.
117
126
118
127
.. figure:: ../Images/Routing_Options.png
119
128
:align:center
120
129
:height:300
121
130
122
131
Routing Options
123
132
124
-
Clicking on **Toggle RR** lets you to choose between various views of the routing resources available in the FPGA.
133
+
To visualize routing architecture, first enable the **Display Routing Resources** switch under the Route tab. Then, click on the checkboxes below to show/hide the types of nodes and edges you want to visualize.
The intra-cluster options are currently only available when **flat routing is enabled**.
136
+
137
+
The **Highlight Fan-In Fan-Out Edges** option will highlight the fan-in and fan-out edges of the selected routing resource in blue and red, respectively.
128
138
129
-
Routing Architecture Views
139
+
Multiple routing resources can be highlighted by pressing ctrl + mouse click.
140
+
141
+
.. figure:: ../Images/show_rr_graph.gif
142
+
:align:center
130
143
131
-
The routing resource view can be very useful in ensuring that you have correctly described your FPGA in the architecture description file -- if you see switches where they shouldn’t be or pins on the wrong side of a clb, your architecture description needs to be revised.
144
+
Visualizing Routing Architecture
145
+
146
+
**Node Colors**:
147
+
148
+
+------------+--------+
149
+
| Node Type | Color |
150
+
+============+========+
151
+
| Channel | Black |
152
+
+------------+--------+
153
+
| Input Pin | Purple |
154
+
+------------+--------+
155
+
| Output Pin | Pink |
156
+
+------------+--------+
157
+
158
+
**Edge Colors**:
159
+
160
+
+-----------------------+---------------+
161
+
| Edge Type | Color |
162
+
+=======================+===============+
163
+
| Pin to Output Pin | Light Pink |
164
+
+-----------------------+---------------+
165
+
| Pin to Input Pin | Medium Purple |
166
+
+-----------------------+---------------+
167
+
| Output Pin to Channel | Pink |
168
+
+-----------------------+---------------+
169
+
| Channel to Input Pin | Purple |
170
+
+-----------------------+---------------+
171
+
| Channel to Channel | Dark Green |
172
+
+-----------------------+---------------+
173
+
| Non-Configurable Edge | Dark Grey |
174
+
+-----------------------+---------------+
132
175
133
-
Wiring segments are drawn in black, input pins are drawn in sky blue, and output pins are drawn in pink.
134
-
Sinks are drawn in dark slate blue, and sources in plum.
135
-
Direct connections between output and input pins are shown in medium purple.
136
-
Connections from wiring segments to input pins are shown in sky blue, connections from output pins to wiring segments are shown in pink, and connections between wiring segments are shown in green.
137
176
The points at which wiring segments connect to clb pins (connection box switches) are marked with an ``x``.
138
177
139
178
Switch box connections will have buffers (triangles) or pass transistors (circles) drawn on top of them, depending on the type of switch each connection uses.
140
-
Clicking on a clb or pad will overlay the routing of all nets connected to that block on top of the drawing of the FPGA routing resources, and will label each of the pins on that block with its pin number.
141
-
Clicking on a routing resource will highlight it in magenta, and its fanouts will be highlighted in red and fanins in blue.
142
-
Multiple routing resources can be highlighted by pressing ctrl + mouse click.
0 commit comments