-
Notifications
You must be signed in to change notification settings - Fork 418
Added Optional Attribute to RRGraph #2378
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
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.
I think you can store this more efficiently, since a tileable architecture is fundamentally a flyweight.
(x,y,layer) -> rr_tile_data
rr_tile_data stores the ptc_twist_incr for each ptc_num.
We can land this in the interim if you like, but we should explore this flyweight. It would allow efficient storage of additional openFPGA data, as well as saving storage for this entry.
@vaughnbetz all suggestions applied, ready to be merged. |
It looks like this new vector is always allocated, so we'll have a memory footprint increase.
|
The vector is defined but won't be allocated unless the graph type is UNIDIR_TILEABLE (rr_graph.cpp line 1371). I just checked for the normal flow and the memory foot print is the same. I will attach the titan benchmark shortly. I agree that we can move to fly-weighting at some point, but it can take time (I will create an issue for it to track it) |
OK. In that case I think it's important to check the storage is allocate before accessing a member -- see my comment above. |
Thanks for adding the check. This is good to merge once CI passes. |
Thanks for adding twist="#". Your picture at the start of this convo says 0,1,2,3,4, but your code comment says: Since Mahdi's original change altered e.g. I noticed the convo about "flyweight" attributes and saving memory. Since twist = (ptc of adjacent coordinate) - (ptc of xlow,ylow), there are reduction possibilities someday. Thanks again. |
@vaughnbetz updated with master branch, ready to merge |
Merging, but I think the long term solution should be to use a flyweight ... there is significant repeated data in this solution. |
Description
Using tileable option with openfpga branch, we have different ptc assignment in CHANX/CHANY nodes. To generate the same format rr graph while having tileable="true" and tileable="false", We added a new tag to tag while writing the rr graph.
The picture below shows the difference in ptc assignment in CHANX/CHANY nodes. The ptc number for each part of wire increase linearly with starting point ptc number (0) and a twist number (in this case would be 1)
So, the new generated rr graph looks like this:
<node dir="" id="" type="CHANX"><loc ptc="0" twist="1" layer="" xlow="" xhigh="" ylow="" yhigh">
To be backward compatible with previously generated rrgraphs for master branch (where the ptc number doesn't change across the CHANX/CHANY nodes), the twist attribute is not required value (it is optional).
Related Issue
@ganeshgore
Types of changes
Checklist: