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
+23-13Lines changed: 23 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2640,42 +2640,52 @@ Scatter-Gather Patterns
2640
2640
---------------------
2641
2641
2642
2642
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.
2643
+
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.
2644
+
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.
2645
+
The number of any additional wires or muxes created by scatter-gather specifications will not vary with routing channel width.
2643
2646
2644
2647
When instantiated, a scatter-gather pattern gathers connections from a switchblock and passes the connection through a multiplexer and 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:
2645
2648
2646
2649
.. code-block:: xml
2647
2650
2648
2651
<scatter_gather_list>
2649
-
<sg_pattern name="name" type="unidir"> <!-- segment: attribute or tag? -->
2652
+
<sg_pattern name="name" type="unidir">
2650
2653
<gather>
2651
-
<wireconn num_conns="30" from_type="L16" from_switchpoint="0,12,8,4" side="rltb"/> <!-- Illegal to have to_type and to_switchpoint --> <!-- No above/under side -->
2654
+
<!-- Gather 30 connections from the 0, 4, 8 or 12 position of L16 wires of all four sides of a switchblock location -->
<sg_link name="L_UP" z_offset="1" x_offset="0" y_offset="0" mux="3D_SB_MUX" seg_type="TSV"/> <!-- One hot offsets -->
2664
+
<!-- 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.
2687
+
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.
2688
+
2679
2689
.. arch:tag:: <gather>
2680
2690
2681
2691
Contains a <wireconn> tag specifying how the fan-in or gather connections are selected. See ``wireconn`` for the relevant specification.
@@ -2686,27 +2696,27 @@ This format allows users to specify complex switchblock patterns without the ver
2686
2696
2687
2697
.. arch:tag:: <sg_link_list>
2688
2698
2689
-
Contains one or more <sg_link> tags specifying how the connections move from the gather location to the scatter location.
2699
+
Contains one or more <sg_link> tags specifying how the pattern of how connections move from the gather location to the scatter location.
2690
2700
2691
2701
.. note:: These <sg_link> tags are not instantiations of the pattern. instead, the instantiations select one of the sg_link tags to use.
:req_param mux: Name of the multiplexer used to gather connections
2697
-
:req_param seg_type: Name of the segment/wire used to move through the device to the scatter location
2707
+
: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)
2698
2708
2699
2709
:opt_param x_offset: Offset of the scatter relative to the gather in the x-axis
2700
2710
:opt_param x_offset: Offset of the scatter relative to the gather in the y-axis
2701
2711
:opt_param x_offset: Offset of the scatter relative to the gather in the z-axis
2702
2712
2703
-
.. note:: One and only one of the offset fields for the sg_link tag must be set.
2713
+
.. note:: One and only one of the offset fields for the sg_link tag must 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.
0 commit comments