-
Notifications
You must be signed in to change notification settings - Fork 423
Add Parsing Code For Scatter-Gather Patterns #3212
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
5aff27d
to
52caa36
Compare
52caa36
to
827e72b
Compare
To make sure I didn't accidentally break anything else, checked the generated RRGraphs for Titan and Titan-S10 and the diffs were identical other than the very first line with the tool_version attribute. Here's the diff for Titan for example:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! Various comments embedded.
--------------------- | ||
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. | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Give high-level context on why we need this (specify multi-level switch patterns, rather than the direct wire-to-wire switch patterns of conventional switch blocks). 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.
The number of any additional wires or muxes created by scatter-gather specifications will not vary with routing channel width.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
High-level spec needs a picture showing the gather pattern, the scatter-gather node, and the scatter pattern. Link that to the high-level description.
.. code-block:: xml | ||
<scatter_gather_list> | ||
<sg_pattern name="name" type="unidir"> <!-- segment: attribute or tag? --> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Delete self-comment.
<scatter_gather_list> | ||
<sg_pattern name="name" type="unidir"> <!-- segment: attribute or tag? --> | ||
<gather> | ||
<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 --> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clarify in the comment that rltb allowed as source sides, but not other layers (above/under).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you want this example to describe what it is doing and describe limitations later in the detailed sections?
<gather/> | ||
<scatter> | ||
<wireconn num_conns="30" to_type="L16" to_switchpoint="0" side="rtlb"/> <!-- Illegal to have from_type and from_switchpoint --> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggest describing what you are doing here, and leaving legality rules for the detailed section later.
<scatter/> | ||
<sg_link_list> | ||
<sg_link name="L_UP" z_offset="1" x_offset="0" y_offset="0" mux="3D_SB_MUX" seg_type="TSV"/> <!-- One hot offsets --> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggest explaining what you're doing. Instead of one-hot, either leave for detailed legality later or say only one of x,y,z offset can be non-zero.
const pugiutil::loc_data& loc_data) { | ||
std::vector<t_sg_location> sg_location_list; | ||
for (pugi::xml_node node : sg_pattern_tag.children()) { | ||
if (strcmp(node.name(), "sg_location") != 0) continue; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't this be an error message instead of a skip?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or an assert if schema checking would have already caught this?
<clock buffer_size="auto" C_wire="2.5e-10"/> | ||
</clocks> | ||
|
||
<scatter_gather_list> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Comment what this is doing.
This is a 2D architecture, so this 3D pattern should eventually be moved to a 3D arch (or maybe moved now?)
Adds xml parsing code for scatter-gather patterns, with a sample architecture (That doesn't quite make sense) and test to make sure the code actually runs.
Note that scatter-gather patterns are not implemented in VPR and adding the tag does nothing other than parsing the information in the architecture file.
Information about what scatter-gather patterns and what the tag means is available in the documentation for this PR.