Skip to content
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

CBx/CBy support input ports from grid outputs #1644

Closed
tangxifan opened this issue May 2, 2024 · 3 comments
Closed

CBx/CBy support input ports from grid outputs #1644

tangxifan opened this issue May 2, 2024 · 3 comments

Comments

@tangxifan
Copy link
Collaborator

tangxifan commented May 2, 2024

Is your feature request related to a problem? Please describe.
Driven by the intensive needs on routing architecture, there is a trend that the feedback connections are moved to global routing, instead of local routing.
As a result, the feedback connections are merged into connection blocks, driving the routing multiplexers inside.

Describe the solution you'd like

VPR has already supported the routing architecture by using the existing syntax directlist.
See an example here

To be more specific, the direction connections can start and end at the same programmable block. See the example below:

    <direct name="LAB_self_sneak0" from_pin="LAB.data_out[0:0]" from_side="top" to_pin="LAB.data_in[0:0]" to_side="top" x_offset="0" y_offset="0" z_offset="0"/>
    <direct name="LAB_self_sneak1" from_pin="LAB.data_out[0:0]" from_side="top" to_pin="LAB.data_in[1:1]" to_side="top" x_offset="0" y_offset="0" z_offset="0"/>
    <direct name="LAB_self_sneak2" from_pin="LAB.data_out[3:1]" from_side="top" to_pin="LAB.data_in[4:2]" to_side="top" x_offset="0" y_offset="0" z_offset="0"/>

In such cases, the direct connections can no longer be treated a point-to-point connection, but another connection in CB.
Currently, OpenFPGA add these direct connections in the top-level module one by one.
This is due to that the direct connections can be very random, only applied to a small region or even 1 programmable block.
So, additional syntax should be applied or auto-detection should be enabled on such self-connections.

image

@tangxifan
Copy link
Collaborator Author

tangxifan commented May 3, 2024

Some modification will be applied on the feature branch openfpga of vtr:

  • Use the switch index from direct connection in architecture XML when building tileable rr graph

As a result, when building fabric, the direct connection will be handled in two ways

  • For delayless switch, the direction connection will be added to the top-level module
  • For connection block switch (must be same as the cb mux defined in VPR arch), the direct connection will be inside CB as part of routing multiplexers

@tangxifan
Copy link
Collaborator Author

In OpenFPGA's architecture description, a new attribute built_in_cb=<bool> should be added. This is to

  • Identify that the direct connection is part of CB routing multiplexers. It should not be considered as point-to-point connections.

@tangxifan
Copy link
Collaborator Author

tangxifan commented May 20, 2024

Restriction:

  • Currently only support input/outputs on the bottom and right sides of programmable blocks
  • Feedback connections from the same side of a programmable block is ok.

Will release a figure about the restrictions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant