-
Notifications
You must be signed in to change notification settings - Fork 415
Fix inconsistent buffering #1568
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
Fix inconsistent buffering #1568
Conversation
@litghost @vaughnbetz FYI |
@acomodi What is the impact on arch-defs with this change? Do things seem okay? |
@litghost I am running several tests to assess the impact on arch-defs. From preliminary results, I can tell with confidence that the bug reported yesterday at the meeting impacts on the overall routing run-time, reaching ~2x w.r.t. to baseline. As reported yesterday, in the symbiflow arch defs we are not averaging the delay values when calculating the indexed data (relevant code).
I am assessing whether this happens as well when using the connection box map lookahead, to check whether it is a generic problem. I have also notices that, during the calculation of the lookahead itself, the base cost type is left to the default value, while at run-time, the base cost type is |
Having different base costs during lookahead creation and at route time sounds bad to me; that will create a misalignment between the lookahead's base cost/cong cost prediction and reality. So it creates and inaccuracy in the lookahead that will impact non-timing-critical nets; likely to lead to bad behaviour and certainly hard to reason about. So I think that's important to fix / align. |
@vaughnbetz Sure, initial tests seem to actually be in favour on the current behaviour (different base_cost_types during lookahead and run-time). Apart from this, which is more a symbiflow-related issue rather than a VPR one, there are two issues still pending:
Given that both these issues are not-related to the fixes in this PR, would it be good to go ahead and merge this one, so that the hard failure on the buffering state is fixed? @litghost thoughts? |
The fix looks fine to me. I suspect we shouldn't even print a warning; this isn't really a problem, just an rr-node topology that mixes buffered and unbuffered switches. |
Signed-off-by: Alessandro Comodi <[email protected]>
Signed-off-by: Alessandro Comodi <[email protected]>
Signed-off-by: Alessandro Comodi <[email protected]>
746bdae
to
f4d1c26
Compare
@vaughnbetz Ok, I have removed the warnings related to the buffering state. |
@vaughnbetz All CIs went green, is this good to merge? |
Description
This PR fixes an issue related to buffered nodes.
During the rr_graph_indexed_data calculation, the state of the switches of different segment type nodes are being checked and, currently, if two different computation of the buffering state of two nodes belonging to the same cost_index (e.g. same segment type), VTR throws an error.
The changes in this PR prevent VTR to throw the error, but instead, as the buffered switches "win" against the non-buffered ones, if a conflict is found when checking the buffering state of the switches of two nodes of the same segment type.
In case of conflict then, the buffered state of a node is set to one as there is no other possibility (e.g. the conflict can only be between zero and one).
Related Issue
#1564 (comment)
Motivation and Context
Complex RR graph structure fail due to this too restrict check on the buffering state of some segments.
How Has This Been Tested?
Strong reg tests
Types of changes
Checklist: