-
Notifications
You must be signed in to change notification settings - Fork 414
Add a new API set_node_coordinates() to RRGraphBuilder #1853
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
Add a new API set_node_coordinates() to RRGraphBuilder #1853
Conversation
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.
See https://docs.verilogtorouting.org/en/latest/dev/developing/#evaluating-quality-of-result-qor-changes for how to evaluate a change like this that might affect cpu time. Please post the relevant spreadsheets (vtr benchmarks and titan benchmarks) showing no quality degradation; the key metrics to watch will be the routing times (min_channel_width_route_time and crit_path_route_time) and placement time.
I don't think this routine is called enough to affect cpu time; if in doubt, it can be inlined.
@@ -55,6 +55,9 @@ class RRGraphBuilder { | |||
/** @brief Clear all the underlying data storage */ | |||
void clear(); | |||
|
|||
/** @brief Set the node coordinate */ |
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.
This probably isn't too cpu critical so can leave here. But should get a QoR spreadsheet to check we haven't slowed things down noticably; if there's a slowdown, marking this function as inline and adding the function body to the header should recapture the speed. For very short functions like this, inline works well.
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.
I have shared the QoR sheets. Please let me know if this needs to be inlined after seenig QoR comparisons.
@vaughnbetz This is the PR from my team at Rapidsilicon. They will keep contributing PR during our refactoring effort. Can you add @hamzakhan-rs as a contributor for now or trigger the kokoro manually? Many Thanks. |
Invitation sent. |
If you need help, feel free to ask. |
I am attaching the spreadsheets of comparison between baseline branch https://github.com/verilog-to-routing/vtr-verilog-to-routing/tree/test_sanity_basic and this PR for three different benchmark tests.
Please let me know this is acceptable tolerance in key metrics.
|
I have accepted the invitation and joined this repo. I have added the label kokoro:force-run @tangxifan. Can you confirm it is triggered correctly? |
@hamzakhan-rs Thanks for the help. Kokoro is running well now. Regarding the QoR check,
|
The basic_sanity designs are really small, and subject to high noise in ratios. So I wouldn't worry about them. A few designs get different placements, which is odd but has been happening in other PRs too. I suspect we have some behaviour (unrelated to this PR) where someone is making a decision that is address dependent (sorting or hashing on pointers) so we're getting different results with no significant change, but again I do not believe that is related to this PR. So I think this is fine, but I agree with @tangxifan that it is good if you summarize the key QoR data / conclusions you see in the PR as well as it makes it easier to review. |
I had run the more than one regression tests in parallel and some other people are also working on the same server so this slight irregularity might be due to the server workload change. In future, I will try to run the tests at time of lesser/even workload and one regression at a time so it dosent affect results too much due to load changes of server. Also I will summarize/conclude the metrics of each QoR results first thing in the morning. |
Here is a summary of the QoR results mentiond above. I will sumarize in this form for future PR as well. Basic sanity test vtr_reg_qor_chain_depop test titan_quick_qor test: |
@hamzakhan-rs Thanks. This is a good template to follow (reuse the template in next pull requests). This PR has been merged. Good work. |
Thanks @hamzakhan-rs . I agree with @tangxifan : this is a good template to follow in terms of how to report QoR. There is a small route time increase on the titan and vtr designs. It may be noise, but I think it's worth making a small change: inline this function (move the function body to the header and put the keyword inline in the function header) to see if it gets us a little bit of speed. If it does, it would be good to merge that change in a new PR. |
@tangxifan -- It would be awesome if we could figure out a way to automatically generate your template in pull requests. The team at @antmicro set this up for sv-tests, see an example @ chipsalliance/sv-tests#1719 (comment) If we knew what the commands needed to be run to create them, then @antmicro could make that happen.... |
This is really useful. @hamzakhan-rs Can you look into it? It will make our life easier. |
Thanks for the guidance. I will Inline this function and check if the route time and other metrics improve. If so, I will create the new PR with inline function. |
@mithro https://docs.verilogtorouting.org/en/latest/dev/developing/#automated-qor-comparison-script this is the command needed to run to create a comparison xlsx sheet. qor_compare.py is in scripts folder https://github.com/verilog-to-routing/vtr-verilog-to-routing/blob/master/vtr_flow/scripts/qor_compare.py and parse_results1.txt is the baseline results and parse_results2.txt is the PR results. PR creater then need to upload both thses results txt files for all QoR tests. |
@mithro some effort is needed to set this up, but once you know how to approach this it is relatively simple (initial testing is cumbersome, but nothing that can't be done). Namely, it needs to be split into at least two workflows:
@hamzakhan-rs @tangxifan please let us know if this is enough for you to reproduce this here. We can also help you set up the comment posting mechanism, but it would be nice if you could get this to at least generate the desired .md file (or if the report is already visible in the CI logs somewhere, then just point to it directly so we know what needs to be uploaded) |
Link to #1868 So that we keep tracking. |
Description
This PR focuses on updating routing resource graph builder functions, where we use the refactored data structure
RRGraphBuilder
to shadow the discreted data structurerr_graph_storage
.This PR aims to fully deprecate the direct use of the legacy API
set_coordinates()
fromrr_node
data structure.After this PR, the
set_coordinates
API is fully deprecated and theset_node_coordinates
from the refactored data structureRRGraphBuilder
is the only way to use.Checklist:
set_coordinates()
fromrr_node.cpp
andrr_node.h
set_node_coordinates
to data structuresRRGraphBuilder
, whose comments are Doxygen compatibleset_coordinates()
in builder functions byset_node_coordinates()
Related Issue
This pull request is a follow-up PR on the routing resource graph refactoring effort #1805
Motivation and Context
This PR is the continuation to the refactoring effort with a focus on shadowing the
rr_graph_storage
APIs inRRGraphBuilder
data structure.This PR reworks the set_node_coordinates() API among the other APIs in #1847
How Has This Been Tested?
Types of changes
Checklist: