Skip to content

Change RRG storage to keep (drive pt, direction) instead of (start, end) #2491

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

Open
duck2 opened this issue Feb 20, 2024 · 2 comments
Open
Labels

Comments

@duck2
Copy link
Contributor

duck2 commented Feb 20, 2024

The current expansion pruning in the router uses the drive point of every RRNode ((xlow ,ylow) for non-directional nodes). This check is inside a hot loop (in connection_router.cpp), so there may be performance benefits to store (xdrive, ydrive, dir) in the RRG storage, since the router will only fetch two values instead of three + a branch.

For bidir wires (xdrive, ydrive) can be just (xlow, ylow).

@rs-dhow
Copy link

rs-dhow commented Jun 11, 2024

If by drive point you mean the coordinate containing the driving mux (for unidir case), note that it's more complex than you write:

  1. if DEC_DIR, (xhigh, yhigh) is the drive point else
  2. if CHANX, (xlow-1, ylow) is the drive point else
  3. (CHANY) (xlow, ylow-1) is the drive point.
    This is a rather basic property of some fundamental data structures. Is there really a chance this will be changed?
    The standard at 5 FPGA companies not including Altera was (essentially) to store (driving point, farthest sink) on every wire. The difference between these two was the physical length. (Logical length is the length of the segment TYPE.)

Copy link

This issue has been inactive for a year and has been marked as stale. It will be closed in 15 days if it continues to be stale. If you believe this is still an issue, please add a comment.

@github-actions github-actions bot added the Stale label Jun 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants