-
Notifications
You must be signed in to change notification settings - Fork 414
Dashboard for RRGraph API refactoring status #1868
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
Comments
@ethanroj23 @hariszafar-lm @hamzakhan-rs |
@tangxifan There are some new APIs which do not exist in rr_node.h or anywhere you mentioned above and we will implement them in RRGraphView or RRGraphBuilder, right? |
@baberali-rs I am currently working on |
@ethanroj23 Thanks for the update. While are you working these APIs, would you mind the Rapidsilicon team working on merging the |
@tangxifan I would not mind. That would be very helpful, thanks! |
@baberali-rs Yes. I have discussed with @vaughnbetz and @kmurray. We agree to
vtr-verilog-to-routing/vpr/src/device/rr_graph_view.h Lines 257 to 269 in 7ec9f74
See details in #1843 I believe you and your team can start developing the step 1 & 2 in the checklist and create pull requests. Let me know if you have any questions. |
As discussed with @vaughnbetz, once the API refactoring is done. We should do the follow-up refactoring
|
@vaughnbetz If I misunderstood your message, feel free to comment. I will formulate the problem. |
As discussed with @ethanroj23 , some of the remaining tasks on the APIs will be assigned to Rapidsilicon team
|
Thanks @tangxifan. You captured my thoughts well. Basically refactoring into a separate library may not be desirable with a low-level function interface (which is what we have) as we may need inlining for acceptable performance, and that will be left the linker and may not be possible or reliable. |
@tangxifan which API are you referencing above called |
@ethanroj23 You are right.
vtr-verilog-to-routing/vpr/src/route/rr_graph_storage.h Lines 345 to 364 in e6c2049
It is designed when we consider the context of
You can refer to my implementation at vtr-verilog-to-routing/vpr/src/device/rr_graph_obj.h Lines 227 to 250 in e6c2049
It will help you when implementing the method vtr-verilog-to-routing/vpr/src/device/rr_graph_obj.cpp Lines 18 to 20 in e6c2049
For other APIs, we may consider to deprecate them. Since current APIs always relay on an id to get the information you want, we no long return a data structure For Let me know what you think. |
@tangxifan Thank you for the explanation, this makes more sense now! I will begin implementation of this new API and look for feedback once I have done enough for a WIP PR. |
Hi @ethanroj23 I believe you can try the ``vtr::make_range(begin(), end())``, since the existing APIs ``begin()`` and ``end()`` are already there. You can refer to the ``rr_graph_ohj.h``
https://github.com/verilog-to-routing/vtr-verilog-to-routing/blob/e6c20492832f1950247c8db7b58274664d190992/vpr/src/device/rr_graph_obj.h#L215-L224
The ``begin()`` and ``end()`` are actually iterators. Just need to find a way to use the ``make_range()`` function
|
@behzadmehmood-rs @umariqbal-rs
Please let me know which step you want to take the ownership. |
@tangxifan Thank you for your support. We are ready to own the first four tasks. |
@tangxifan : I think this can be closed. Agreed? |
Or maybe it's waiting for the last item: unit tests? |
@vaughnbetz The unit tests have been built in #2150 but not yet merged. Feel sorry for the delayed review. I will catch that this summer. I am o.k. to close the PR and create a new one on the unit tests. |
Uh oh!
There was an error while loading. Please reload this page.
Motivation of Refactoring effort
A detailed technical plan can be found at link
The overall refactoring effort aims to
RRGraphView
as a centralized storage for all the routing resource graph -related information. See Fig. 1RRGraph
for client functions, which are suitable forrr_graph builder
,placer
,router
,GUI
,timing analyzer
etc. See Fig. 2.Fig. 1 Illustration of the relationship between data structures
Fig. 2 Different levels of frame views of routing resource graphs to satisfy various needs from client functions.
The result/benefits of the refactoring efforts is
RRGraph
. A routing resource graph builder can be a library, decoupled from VPR's core engine. Many checking codes can be efficiently merged into the data structure and developers can save a lot of efforts in writing the atom-level sanity checks.RRGraphView
. In other words, routing resource graph will be read-only and only accessors are exposed to client functions. Developers have no worries on developing their own placer/router etc.Checklist
RRGraphBuilder API to be refactored:
set_node_type()
toRRGraphBuilder
#1847add_node()Removed because it is not currently used in rr_graph builder; Will think it later.RRGraphView API to be refactored:
The text was updated successfully, but these errors were encountered: